Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Le ptit plus du jeu panoramic plane suite... | |
|
+4Jean Claude jjn4 papydall Fhoest 8 participants | |
Auteur | Message |
---|
Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Ven 6 Avr 2018 - 22:39 | |
| Bonsoir, voici la nouvelle version en scene2d,tout est dans le zip même le ".bas" je réorganiserai les numéros et le code plus tard Jeuil y a deux options de plus, les touches "w" et "x" = tir en diagonale touche haut et bas toujours pour la gestion de vitesse de l'ennemie, puis explosion sur contact entre avion et alien. touche espace missile double. pour le moment les sons de missile sont identique, il ne le seront plus après. l'animation de l'explosion est différente. elle passe par plusieurs sprite afin de donner un effet. Pour information les Bmp ne sont pas de moi. A bientôt amusez vous bien.... car le code et l'amélioration du jeu n'est pas terminée. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 9:06 | |
| Bonjour Fhoest, et tous Je viens regarder rapidement, mais j'y reviendrai dans la journée. Le "générique" ne s'affiche pas: la raison est que tu as créer ton scene2d avant. (voir code) D'autre part: il faudrait que tu mettes un peu d'ordre pour faciliter l'analyse du code. Par exemple faire plusieurs SUBs à la place de la SUB (Init), une pour pour le générique, une autre pour les sons, puis les objets 2D.... etc. - Code:
-
Rem ==========================================================
' Variables ' ************************************************************ ' gestion des couleurs par RGB dim couleurR,couleurG,couleurB ' Variables de comptage dim i%,compteur%,j% :' Boucles dim Kills% : ' Objet Ennemy destruction ok dim x%,y% : ' variable increntation ou décrémentation de déplacememnt objet Plane ' Variable de position objets dim P_top%,P_left% ,M_top%,E_Top%,E_left%,M_left%,F_Width% dim positionFormx%,positionFormy% ' variable de memoire image Dim memimg% ' variable de memoire appuie touche Dim key% ' Variable position minimale left ennemy Dim PosMin% ' variable vitesse Dim speed% :Dim p% ' ----------------------------------------------------------- Rem ==========================================================
' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= " Bonjour à tous " monTexte$(1)= " Bienvenue " monTexte$(2)= " Sur " monTexte$(3)= "Panoramic Plane "
' -----------------Fin de déclaration variables -------------
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,explosion_animation
Rem ===================================================================== ' Appel de la routine d'initialisation du jeu init()
' Evènement appuie des touches de direction clavier du clavier ' Sont pris en compte flèche de droite,gauche,haut,bas et barre espace. ON_KEY_DOWN 0,move
end
Rem ===================================================================== ' *********************************************************************** ' Initialisation de la form ' *********************************************************************** ' *********************************************************************** ' Ordre des controles et fichiers ' Numéro 50 Scene2D ' Numéro 10 - 20 Son ' Numéro 30 - 40 Sprite ' à modifier après vérification du code sur scene2D, afin de ne pas altérer le fonctionnement' Rem ===================================================================== ' *********************************************************************** sub Init()
' chargement des sons du jeu' sound 6 ' chargement du son N=6 lancement du missile double file_load 6,"son/Missile_launch.wav" ' chargement du son explosion' sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav" ' *********************************************************************** ' chargement musique du jeu' sound 17 ' chargement du son N=10 file_load 17,"son/PIEGE.mp3" play 17 ' Localisation milieu écran de la form rem positionFormx% =screen_x/8 :' en fonction de la form. division par paire rem positionFormy% =screen_y/2 rem TOP 0,positionFormx% : LEFT 0,positionFormy% full_space 0 ' ********************************************************************** ' Instancier la variable en fonction de la largeur de la forme F_Width%=width (0)
' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude ALPHA 1 :TOP 1 ,0 : LEFT 1,210 :font_size 1,20 : font_bold 1:Caption 1,"Bonjour à tous" color 1,255,255,255 ' Mise en forme du formulaire acceuil. compteur%=0 While compteur% < 4 caption 1,monTexte$(compteur%) FOR i%=50 to 250 step 2 color 0,i%,i%,i% TOP 1 ,i% : LEFT 1,210 pause 30 NEXT i% compteur% =compteur% +1 End_While ' Fin de boucle masquer le texte d'accueil HIDE 1 :Left 1,(F_width%-50)
' ********************************************************************** ' ********************************************************************** ' Installation d'une scene 2 dimensions Scene2d ------------- Scene2d 50 ' Dimension de la scene2D width 50,1550 height 50,850 left 50,20 top 50,20
' Mise en place d'un contrôle picture N=2 P_pour Plane Sprite 12 Sprite_File_load 12,"img/Plane_down.bmp" Sprite_position 12,250,(height(50)-150) sprite_hide 12
Sprite 13 Sprite_File_load 13,"img/Plane_up.bmp" Sprite_position 13,250,(height(50)-150) ' Attribution des valeurs de position x et y du sprite 13 au valeurs objet sprite ancienne P pour picture' P_top% = Sprite_Y_position (13) : P_left% = sprite_X_position (13)
Sprite 14 Sprite_File_load 14,"img/Plane_right.bmp" Sprite_position 14,250,(height(50)-150) Sprite_hide 14
Sprite 15 Sprite_File_load 15,"img/Plane_left.bmp" Sprite_position 15,250,(height(50)-150) Sprite_hide 14
Button 16 top 16,(height(50)-80):left 16,1500 caption 16, "Exit" on_click 16,fin
' ********************************************************************** ' **********************************************************************
' Mise en place d'un contrôle picture N=3 E_pour Ennemy Sprite 3 Sprite_File_load 3,"img/Ennemy.bmp" : ' E_top% pour booum !! Sprite_position 3,82,10 Sprite_y_position 3, 10 : Sprite_x_position 3,82 : E_top% = Sprite_y_position (3): E_left% = Sprite_x_position (3)
Sprite 9 Sprite_File_load 9,"img/Explosion_1.bmp" : ' E_top% pour booum !! sprite_position 9,82,10 sprite_hide 9
' ********************************************************************** ' ********************************************************************** ' Mise en place d'un contrôle picture N=4 M_pour missile Sprite 4 Sprite_File_load 4,"img/Fire_double.bmp" : ' M_top% pour Booum !! sprite_position 4,(p_left% +10),(p_top%-25) : m_left% = sprite_x_position (4) sprite_hide 4 ' ********************************************************************** ' ********************************************************************** ' mise en place effet de vitesse N=7 et N= 8 Sprite 7 Sprite_File_load 7,"img/galaxie.bmp" : ' effet gauche ' width 7,70 ' height 7,(height(50)*5)
Sprite 8 Sprite_File_load 8,"img/galaxie.bmp" : ' effet droite sprite_x_position 8,(width(50) -70) ' width 8,70 ' height 8,(height(50)*5)
' terminer le jeu en cas d'erreur rem on_error_goto fin
timer 20 on_timer 20,animation
Sprite 21 Sprite_File_load 21,"img/Bullet_Diag2.bmp" Sprite_hide 21
Sprite 22 Sprite_File_load 22,"img/Bullet_Diag1.bmp" Sprite_hide 22
Sprite 23 Sprite_File_load 23,"img/Explosion_2.bmp" Sprite_hide 23
Sprite 24 Sprite_File_load 24,"img/Explosion_3.bmp" Sprite_hide 24
Sprite 25 Sprite_File_load 25,"img/Explosion_4.bmp" Sprite_hide 25
Sprite 26 Sprite_File_load 26,"img/Explosion_5.bmp" Sprite_hide 26
Sprite 27 Sprite_File_load 27,"img/Explosion_6.bmp" Sprite_hide 27
Sprite 28 Sprite_File_load 28,"img/Explosion_7.bmp" Sprite_hide 28
Sprite 29 Sprite_File_load 29,"img/Explosion_8.bmp" Sprite_hide 29
End_sub
rem ============================================================================
Animation: ' vérification d'un crash avion_missile if sprite_y_position(13)=<(E_top% +40) timer_off 20 if E_left% < (P_left% +30) and E_left% >(P_left% -30) sprite_hide 13:sprite_hide 3:sprite_show 9:play 10 message "Game over" goto fin end_if end_if rem on_error_goto fin if p%<1 then p%=10 if p%=>80 then p%=80 j% =j% + 5 sprite_y_position 7,(sprite_y_position(7)-j%) sprite_y_position 8,(sprite_y_position (8)-j%) if sprite_y_position(3)< height(50) sprite_y_position 3, (sprite_y_position(3)+p%) sprite_y_position 9, sprite_y_position(3):E_top% = sprite_y_position(3) else sprite_y_position 3,10 :sprite_y_position 9,sprite_y_position(3) E_top%= sprite_y_position(3) end_if if j%=50 j%=0 sprite_y_position 7,0 :sprite_y_position 8,0 end_if return
rem ====================== Les Labels ========================== rem ============================================================================
Move:
key% = key_down_code
select key%
case 27 :' arrêt des boucles case 38 :p%=P%+10:if memimg% <> 4 then sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:memimg%=4 :' haut case 40 :p%=p%-10:if memimg% <> 3 then sprite_show 12:sprite_hide 13:sprite_hide 14 :sprite_hide 15:memimg%=3 :' bas
case 39
while sprite_x_position (14)=< (width(50)-130) if key_up_code=27 or key_down_code=37 or key_down_code=38 or key_down_code=40 or key_down_code=32 then exit_while x%=x%+10 :P_left% = sprite_x_position(14):if memimg% <> 1 then sprite_show 14:sprite_hide 12:sprite_hide 13:sprite_hide 15:memimg%=1 :' droite sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%) : sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) :p_left%=250+x% end_while
case 37
while sprite_x_position(15)=> 80 if key_up_code=27 or key_down_code=39 or key_down_code=38 or key_down_code=40 or key_down_code=32 then exit_while x%=x%-10 :P_left% = sprite_x_position(15):if memimg% <> 2 then sprite_show 15:sprite_hide 12:sprite_hide 13:sprite_hide 14:memimg%=2 :' gauche sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) : sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%):p_left%=250+x% end_while
case 32
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12
sprite_y_position 4,(P_top%-25) :sprite_x_position 4,(P_left% +10) M_top% = sprite_y_position(4) sprite_show 4
while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 4,M_top% :M_left% = sprite_x_position(4) : pause 1 end_while sprite_hide 4 if M_left% < (E_left% +30) and M_left% >(E_left% -30) Goto explosion_animation end_if case 87 : ' code de la touche W mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12
sprite_y_position 21,(P_top%-25) :sprite_x_position 21,(P_left% +10) M_top% = sprite_y_position(21) sprite_show 21 while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 21,M_top% :M_left% = sprite_x_position(21) : pause 1 sprite_x_position 21,sprite_x_position(21)-20 end_while sprite_hide 21 if M_left% < (E_left% +40) and M_left% >(E_left% -40) Goto explosion_animation end_if
case 88:' code de la touche X mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12
sprite_y_position 22,(P_top%-25) :sprite_x_position 22,(P_left% +10) M_top% = sprite_y_position(22) sprite_show 22 while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 22,M_top% :M_left% = sprite_x_position(22) : pause 1 sprite_x_position 22,sprite_x_position(22)+20 end_while sprite_hide 22 if M_left% < (E_left% +40) and M_left% >(E_left% -40) Goto explosion_animation end_if
end_select
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:pause 10 ' Mise en place de l'avion à la position demandée
Return Rem ===================================================================== ' *********************************************************************** explosion_animation:
play 10
sprite_hide 3:sprite_y_position 3,10:pause 10 sprite_show 9: pause 10: sprite_hide 9 sprite_position 23,sprite_x_position (9) ,sprite_y_position (9) sprite_show 23: pause 10: sprite_hide 23 sprite_position 24,sprite_x_position (9) ,sprite_y_position (9) sprite_show 24: pause 10: sprite_hide 24 sprite_position 25,sprite_x_position (9) ,sprite_y_position (9) sprite_show 25: pause 10: sprite_hide 25 sprite_position 26 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 26: pause 10: sprite_hide 26 sprite_position 27 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 27: pause 10: sprite_hide 27 sprite_position 28,sprite_x_position (9) ,sprite_y_position (9) sprite_show 28: pause 10: sprite_hide 28 sprite_position 29,sprite_x_position (9) ,sprite_y_position (9) sprite_show 29: pause 10: sprite_hide 29
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81
sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) E_left% = sprite_x_position(3):sprite_show 3:Kills%=Kills%+1 caption 1,STR$(Kills%):show 1:top 1,(height(50)-80) :left 1,(width(50)-100) key%=0
Return rem ============================================================================ fin:
message "Merci d'avoir pris le temps de jouer" message "Vous avez éliminé " +str$(kills%)+ " Ennemy !!!" terminate return rem ============================================================================ A+ | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 13:55 | |
| Bonjour à tous, oui Jean claude je vais faire ce que tu dis certainement durant le weekend,c'est d'ailleurs une raison pour laquelle j'ai écris plus haut que je dois encore: - Citation :
- je réorganiserai les numéros et le code plus tard
Merci d'avoir regarder je ne comprenais pas pourquoi mon texte ne s'affichait plus ,et maintenant j'ai compris grâce à tes conseils. Je voulais mettre la nouvelle version 2d avant le début de weekend afin d'obtenir des commentaires tels que tu viens de le faire dans le but d'améliorer cette version. Bonne journée ensoleillée. (ou que ça fait du bien) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 14:13 | |
| Te casses pas la tête pour la restructuration du code. Je l'ai fait pour toi . C'est cadeaux ! Grace à cette restructuration, tu peux maintenant passer le générique pour faciliter tes essais. Il suffit de mettre en commentaire la ligne 15 du code ci_dessous. - Code:
-
' Panoramic Plane Foest Avril 2018
Rem ========================================================== Commentaires et suivi du chantier ' Ordre des controles et fichiers ' Numéro 10 - 20 Son ' Numéro 30 - 40 Sprite ' (REMARQUE: les sprites ont un numéro indépendant des objets Panoramic, on peut donc commencer à un) ' Numéro 50 Scene2D ' Sont pris en compte flèche de droite,gauche,haut,bas et barre espace.
Rem ========================================================== MISE EN PLACE Variables() : ' contient les variables nécessaires Labels() : ' contient les label(s) nécessaires Objets() : ' contient les Objets nécessaires (sauf les Sprites) Generique(): ' générique au démarrage (optionnnel) ' Installation d'une scene 2 dimensions Scene2d (après le générique) Scene2d 50 : full_space 50 LesSprites() :' Mise en place des Sprites ' Bouton QUITTER Button 16 : top 16,(height(50)-80):left 16,width(50)-(width(16)+10) caption 16, "Exit" : on_click 16,fin Son() :' gestion du son ' Evènement appuie des touches de direction clavier du clavier ON_KEY_DOWN 0,move ' Terminer le jeu en cas d'erreur rem on_error_goto fin ' Timer timer 20 : on_timer 20,animation
Rem ========================================================== FIN DE LA MISE EN PLACE END :' ******************************************************* rem ========================================================== LES SOUS-PROGRAMMES (label et sub) ' Animation: ' vérification d'un crash avion_missile if sprite_y_position(13)=<(E_top% +40) timer_off 20 if E_left% < (P_left% +30) and E_left% >(P_left% -30) sprite_hide 13:sprite_hide 3:sprite_show 9:play 10 message "Game over" goto fin end_if end_if rem on_error_goto fin if p%<1 then p%=10 if p%=>80 then p%=80 j% =j% + 5 sprite_y_position 7,(sprite_y_position(7)-j%) sprite_y_position 8,(sprite_y_position (8)-j%) if sprite_y_position(3)< height(50) sprite_y_position 3, (sprite_y_position(3)+p%) sprite_y_position 9, sprite_y_position(3):E_top% = sprite_y_position(3) else sprite_y_position 3,10 :sprite_y_position 9,sprite_y_position(3) E_top%= sprite_y_position(3) end_if if j%=50 j%=0 sprite_y_position 7,0 :sprite_y_position 8,0 end_if RETURN
rem ============================================================================ Move: key% = key_down_code
select key%
case 27 :' arrêt des boucles case 38 :p%=P%+10:if memimg% <> 4 then sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:memimg%=4 :' haut case 40 :p%=p%-10:if memimg% <> 3 then sprite_show 12:sprite_hide 13:sprite_hide 14 :sprite_hide 15:memimg%=3 :' bas
case 39
while sprite_x_position (14)=< (width(50)-130) if key_up_code=27 or key_down_code=37 or key_down_code=38 or key_down_code=40 or key_down_code=32 then exit_while x%=x%+10 :P_left% = sprite_x_position(14):if memimg% <> 1 then sprite_show 14:sprite_hide 12:sprite_hide 13:sprite_hide 15:memimg%=1 :' droite sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%) : sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) :p_left%=250+x% end_while
case 37
while sprite_x_position(15)=> 80 if key_up_code=27 or key_down_code=39 or key_down_code=38 or key_down_code=40 or key_down_code=32 then exit_while x%=x%-10 :P_left% = sprite_x_position(15):if memimg% <> 2 then sprite_show 15:sprite_hide 12:sprite_hide 13:sprite_hide 14:memimg%=2 :' gauche sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) : sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%):p_left%=250+x% end_while
case 32
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12
sprite_y_position 4,(P_top%-25) :sprite_x_position 4,(P_left% +10) M_top% = sprite_y_position(4) sprite_show 4
while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 4,M_top% :M_left% = sprite_x_position(4) : pause 1 end_while sprite_hide 4 if M_left% < (E_left% +30) and M_left% >(E_left% -30) Goto explosion_animation end_if case 87 : ' code de la touche W mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12
sprite_y_position 21,(P_top%-25) :sprite_x_position 21,(P_left% +10) M_top% = sprite_y_position(21) sprite_show 21 while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 21,M_top% :M_left% = sprite_x_position(21) : pause 1 sprite_x_position 21,sprite_x_position(21)-20 end_while sprite_hide 21 if M_left% < (E_left% +40) and M_left% >(E_left% -40) Goto explosion_animation end_if
case 88:' code de la touche X mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12
sprite_y_position 22,(P_top%-25) :sprite_x_position 22,(P_left% +10) M_top% = sprite_y_position(22) sprite_show 22 while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 22,M_top% :M_left% = sprite_x_position(22) : pause 1 sprite_x_position 22,sprite_x_position(22)+20 end_while sprite_hide 22 if M_left% < (E_left% +40) and M_left% >(E_left% -40) Goto explosion_animation end_if
end_select
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:pause 10 ' Mise en place de l'avion à la position demandée
RETURN Rem ===================================================================== ' *********************************************************************** explosion_animation:
play 10
sprite_hide 3:sprite_y_position 3,10:pause 10 sprite_show 9: pause 10: sprite_hide 9 sprite_position 23,sprite_x_position (9) ,sprite_y_position (9) sprite_show 23: pause 10: sprite_hide 23 sprite_position 24,sprite_x_position (9) ,sprite_y_position (9) sprite_show 24: pause 10: sprite_hide 24 sprite_position 25,sprite_x_position (9) ,sprite_y_position (9) sprite_show 25: pause 10: sprite_hide 25 sprite_position 26 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 26: pause 10: sprite_hide 26 sprite_position 27 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 27: pause 10: sprite_hide 27 sprite_position 28,sprite_x_position (9) ,sprite_y_position (9) sprite_show 28: pause 10: sprite_hide 28 sprite_position 29,sprite_x_position (9) ,sprite_y_position (9) sprite_show 29: pause 10: sprite_hide 29
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81
sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) E_left% = sprite_x_position(3):sprite_show 3:Kills%=Kills%+1 caption 1,STR$(Kills%):show 1:top 1,(height(50)-80) :left 1,(width(50)-100) key%=0
RETURN
rem ============================================================================= SUB LesSprites() ' Mise en place des sprites Sprite 12 Sprite_File_load 12,"img/Plane_down.bmp" Sprite_position 12,250,(height(50)-150) sprite_hide 12 Sprite 13 Sprite_File_load 13,"img/Plane_up.bmp" Sprite_position 13,250,(height(50)-150) ' Attribution des valeurs de position x et y du sprite 13 au valeurs objet sprite ancienne P pour picture' P_top% = Sprite_Y_position (13) : P_left% = sprite_X_position (13) Sprite 14 Sprite_File_load 14,"img/Plane_right.bmp" Sprite_position 14,250,(height(50)-150) Sprite_hide 14 Sprite 15 Sprite_File_load 15,"img/Plane_left.bmp" Sprite_position 15,250,(height(50)-150) Sprite_hide 14 ' Mise en place d'un contrôle picture N=3 E_pour Ennemy Sprite 3 Sprite_File_load 3,"img/Ennemy.bmp" : ' E_top% pour booum !! Sprite_position 3,82,10 Sprite_y_position 3, 10 : Sprite_x_position 3,82 : E_top% = Sprite_y_position (3): E_left% = Sprite_x_position (3) Sprite 9 Sprite_File_load 9,"img/Explosion_1.bmp" : ' E_top% pour booum !! sprite_position 9,82,10 sprite_hide 9 ' Mise en place d'un contrôle picture N=4 M_pour missile Sprite 4 Sprite_File_load 4,"img/Fire_double.bmp" : ' M_top% pour Booum !! sprite_position 4,(p_left% +10),(p_top%-25) : m_left% = sprite_x_position (4) sprite_hide 4 ' mise en place effet de vitesse N=7 et N= 8 Sprite 7 Sprite_File_load 7,"img/galaxie.bmp" : ' effet gauche Sprite 8 Sprite_File_load 8,"img/galaxie.bmp" : ' effet droite sprite_x_position 8,(width(50) -70)
Sprite 21 Sprite_File_load 21,"img/Bullet_Diag2.bmp" Sprite_hide 21
Sprite 22 Sprite_File_load 22,"img/Bullet_Diag1.bmp" Sprite_hide 22
Sprite 23 Sprite_File_load 23,"img/Explosion_2.bmp" Sprite_hide 23
Sprite 24 Sprite_File_load 24,"img/Explosion_3.bmp" Sprite_hide 24
Sprite 25 Sprite_File_load 25,"img/Explosion_4.bmp" Sprite_hide 25
Sprite 26 Sprite_File_load 26,"img/Explosion_5.bmp" Sprite_hide 26
Sprite 27 Sprite_File_load 27,"img/Explosion_6.bmp" Sprite_hide 27
Sprite 28 Sprite_File_load 28,"img/Explosion_7.bmp" Sprite_hide 28
Sprite 29 Sprite_File_load 29,"img/Explosion_8.bmp" Sprite_hide 29 END_SUB
rem ============================================================================= SUB Objets() ' FORM 0 full_space 0 ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude ALPHA 1 :TOP 1 ,0 : LEFT 1,210 :font_size 1,20 : font_bold 1:Caption 1,"Bonjour à tous" END_SUB
rem ============================================================================= SUB Variables() ' Variables ' ************************************************************ ' gestion des couleurs par RGB dim couleurR,couleurG,couleurB ' Variables de comptage dim i%,compteur%,j% :' Boucles dim Kills% : ' Objet Ennemy destruction ok dim x%,y% : ' variable increntation ou décrémentation de déplacememnt objet Plane ' Variable de position objets dim P_top%,P_left% ,M_top%,E_Top%,E_left%,M_left% ' Instancier la variable en fonction de la largeur de la forme dim F_Width% : F_Width%=width (0) dim positionFormx%,positionFormy% ' variable de memoire image Dim memimg% ' variable de memoire appuie touche Dim key% ' Variable position minimale left ennemy Dim PosMin% ' variable vitesse Dim speed% :Dim p% ' Tableau de valeur String dim monTexte$(3) monTexte$(0)= " Bonjour à tous " monTexte$(1)= " Bienvenue " monTexte$(2)= " Sur " monTexte$(3)= "Panoramic Plane " END_SUB
rem ============================================================================= SUB Labels() REM définition des LABELS LABEL Move,fin,animation,explosion_animation END_SUB
rem ============================================================================= SUB Son() ' chargement des sons du jeu' sound 6 ' chargement du son N=6 lancement du missile double file_load 6,"son/Missile_launch.wav" ' chargement du son explosion' sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav" ' *********************************************************************** ' chargement musique du jeu' sound 17 ' chargement du son N=10 file_load 17,"son/PIEGE.mp3" play 17 END_SUB
rem ============================================================================= SUB Generique() color 1,255,255,255 ' Mise en forme du formulaire acceuil. compteur%=0 WHILE compteur% < 4 caption 1,monTexte$(compteur%) FOR i%=50 to 250 step 2 color 0,i%,i%,i% TOP 1 ,i% : LEFT 1,210 pause 30 NEXT i% compteur% =compteur% +1 END_WHILE ' Fin de boucle masquer le texte d'accueil HIDE 1 :Left 1,(F_width%-50) END_SUB
rem ============================================================================ fin: message "Merci d'avoir pris le temps de jouer" message "Vous avez éliminé " +str$(kills%)+ " Ennemy !!!" terminate RETURN
rem ============================================================================
Il te reste du travail ! A+ PS: j'ai un peu changé les tailles et position de FORM 0, du Scene2D, et du bouton "exit", car mon écran est plus petit que le tien. J'ai rendu le code utilisable pour tous les écrans. A toi d'explorer .
Dernière édition par Jean Claude le Sam 7 Avr 2018 - 14:19, édité 1 fois | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 14:15 | |
| Bonjour Fhoest ! Je vois que ça avance bien. Bravo ! Par contre je suis tombé sur une erreur dans la boucle WHILE - END_WHILE. Je pense qui faut que tu désactive la détection des touches dès le début de ton traitement des touches. Et tu le réactive à la fin. Sinon comme l'avait exposé Silverman, tu te retrouves avec un second traitement Alors que le premier n'est pas terminé et 'Boum' il y a un bug Bon courage... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 14:29 | |
| Exact Minibug,
@Fhoest, il faut pour cela utiliser OFF_KEY_DOWN 0 avant la boucle et remettre en service après la boucle par ON_KEY_DOWN 0,move Il faut que tu cherches la ou lesquelles boucles causent le bug (voir peut-être: de le faire à l'entrée du sous-programme et remise en service à la fin, plutôt qu'à chaque boucle)
A+ | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 20:10 | |
| @ Jean claude, merci pour la restauration du code,je viens quasiment de terminer la mienne et je me rend compte que tu l'as fait, Du coups on fera un mix si il faut. pour la gestion off et on des touches je ne l'ai pas encore fait car une petite chose me dérange hormis le bogue, c'est que je suis du coup obligé d'aller au bout et en plus je peux donc plus tirer avant d'être au bout. je vais voir ce que je peux faire de mieux. Cool pour le tuyau des numéros indépendant des sprites cela va me faciliter la tâche pour le reste.
@ Minibug, oui j'avais vu pour les boucles While et End while je cherche une solution intermédiaire pour le souci que j'ai évoquer juste au dessus (réponse souligné @Jean Claude) Encore un peu de code et je vous remet la version que j'ai modeler. normalement ce soir (après test chez moi - sans le mix pour taille écran et toutes les bonnes idées de Jean claude) A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 20:51 | |
| - Fohest a écrit:
- c'est que je suis du coup obligé d'aller au bout et en plus je peux donc plus tirer avant d'être au bout.
Il faudrait que tu précises, au bout de quoi et dans quelle circonstance. Je pense que tu devrais ralentir le SPRITE du vaisseau commandé par l'utilisateur, car avec les sprites c'est plus rapide qu'avec le PICTURE. Pour cela il faut que tu places une PAUSE (valeur à définir) dans le sous-programme de déplacement. Observer le résultat et voir si l'appuis d'une touche est encore fonctionnelle et peut stopper le vaisseau. Une fois le problème trouvé tu remets la vitesse que tu veux au vaisseau en diminuant ou en supprimant la PAUSE. A demain. | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 7 Avr 2018 - 23:06 | |
| Resoir, voici le code toujours avec le même souci de boucle While. j'ai essayer de mettre les Off et ON mais pas concluant. j'ai encore quelque bogue si on joue un moment en ne respectant pas que l'avion n'aille jusqu'au bout de sa trajectoire droite ou gauche sans relancer la boucle While. - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' gestion des couleurs par RGB dim couleurR,couleurG,couleurB
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Objet Ennemy destruction ok dim Kills%
' variable increntation ou décrémentation de déplacememnt objet Plane dim x% ,y%
' Variable de position objets dim P_top%,P_left% ,M_top%,E_Top%,E_left%,M_left%,F_Width% dim positionFormx%,positionFormy%
' variable de memoire image Dim memimg%
' variable de memoire appuie touche Dim key%
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse Dim speed% :Dim p%
' -----------------------------------------------------------
' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= " Bonjour à tous " monTexte$(1)= " Bienvenue " monTexte$(2)= " Sur " monTexte$(3)= "Panoramic Plane "
' ----------------------------------------------------------- ' <<<<<<<<<<<<<<<<<<<< Fin de déclaration variables >>>>>>>>>>>>>>>>>>>>
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,explosion_animation
Rem ===================================================================== ' Appel de la routine d'initialisation du jeu Init()
' Evènement appuie des touches de direction clavier du clavier ' Sont pris en compte flèche de droite,gauche,haut,bas et barre espace. ON_KEY_DOWN 0,move
end
Rem ===================================================================== ' *********************************************************************** ' Initialisation de la form ' *********************************************************************** ' *********************************************************************** ' Ordre des controles et fichiers
' Numéro 1-9 Alpha et Boutons ' Numéro 10 - 20 Son ' Numéro 30 - 40 Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer
' à modifier après vérification du code sur scene2D, ' afin de ne pas altérer le fonctionnement
Rem ===================================================================== ' Appel de la routine intialisation
sub Init() ' ***********************************************************************
Rem ===================================================================== ' Appel de la routine des sons
Creation_des_sons() ' ***********************************************************************
Rem ===================================================================== ' mise en forme de la Form principale N=0
' Agrandir la forme au maximum' full_space 0
' Instancier la variable en fonction de la largeur de la forme F_Width%=width (0)
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
ALPHA 1 :TOP 1 ,0 : LEFT 1,210 :font_size 1,20 : font_bold 1:Caption 1,"Bonjour à tous" color 1,255,255,255
' ********************************************************************** Rem ===================================================================== ' Appel de la procedure accueil du jeu
annonce_jeu()
' **********************************************************************
Rem ===================================================================== ' terminer le jeu en cas d'erreur
on_error_goto move
' **********************************************************************
Rem ===================================================================== ' Installation d'une scene 2 dimensions Scene2d -------------
Scene2d 50
' Dimension de la scene2D width 50,1550 : height 50,850 : left 50,20 : top 50,20
' ***********************************************************************
Rem ===================================================================== ' Creation d'un timer pour utiliser le label animation timer 20 on_timer 20,animation
' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 16 top 16,(height(50)-80):left 16,1500 caption 16, "Exit" on_click 16,fin
' **********************************************************************
End_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu
Sub annonce_jeu()
compteur%=0
While compteur% < 4 caption 1,monTexte$(compteur%)
FOR i%=50 to 250 step 2 color 0,i%,i%,i% TOP 1 ,i% : LEFT 1,210 pause 30 NEXT i%
compteur% =compteur% +1
End_While
' Fin de boucle masquer le texte d'accueil HIDE 1 :Left 1,(F_width%-50)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' **********************************************************************
Rem ===================================================================== ' Creation d'une procedure pour les images.
Sub Creation_des_sprites()
' Mise en place d'un contrôle Sprite N=2 --- debut variable P_pour Plane ---
' Sprite avion d'attaque Sprite 12 Sprite_File_load 12,"img/Plane_down.bmp" Sprite_position 12,250,(height(50)-150) sprite_hide 12
' Sprite avion d'attaque Sprite 13 Sprite_File_load 13,"img/Plane_up.bmp" Sprite_position 13,250,(height(50)-150) ' Attribution des valeurs de position x et y du sprite 13 au valeurs objet sprite ancienne P pour picture' P_top% = Sprite_Y_position (13) : P_left% = sprite_X_position (13)
' Sprite avion d'attaque Sprite 14 Sprite_File_load 14,"img/Plane_right.bmp" Sprite_position 14,250,(height(50)-150) Sprite_hide 14
' Sprite avion d'attaque Sprite 15 Sprite_File_load 15,"img/Plane_left.bmp" Sprite_position 15,250,(height(50)-150) Sprite_hide 14
' Mise en place d'un contrôle sprite N=3 E_pour Ennemy Sprite 3 Sprite_File_load 3,"img/Ennemy.bmp" : ' E_top% pour booum !! Sprite_position 3,82,10 Sprite_y_position 3, 10 : Sprite_x_position 3,82 : E_top% = Sprite_y_position (3): E_left% = Sprite_x_position (3)
' ********************************************************************** ' Mise en place d'un contrôle sprite explosion 1 Sprite 9 Sprite_File_load 9,"img/Explosion_1.bmp" : ' E_top% pour booum !! sprite_position 9,82,10 sprite_hide 9
' Mise en place d'un contrôle sprite explosion 1 Sprite 23 Sprite_File_load 23,"img/Explosion_2.bmp" Sprite_hide 23
' Mise en place d'un contrôle sprite explosion 2 Sprite 24 Sprite_File_load 24,"img/Explosion_3.bmp" Sprite_hide 24
' Mise en place d'un contrôle sprite explosion 3 Sprite 25 Sprite_File_load 25,"img/Explosion_4.bmp" Sprite_hide 25
' Mise en place d'un contrôle sprite explosion 4 Sprite 26 Sprite_File_load 26,"img/Explosion_5.bmp" Sprite_hide 26
' Mise en place d'un contrôle sprite explosion 5 Sprite 27 Sprite_File_load 27,"img/Explosion_6.bmp" Sprite_hide 27
' Mise en place d'un contrôle sprite explosion 6 Sprite 28 Sprite_File_load 28,"img/Explosion_7.bmp" Sprite_hide 28
' Mise en place d'un contrôle sprite explosion 7 Sprite 29 Sprite_File_load 29,"img/Explosion_8.bmp" Sprite_hide 29
' ********************************************************************** ' Mise en place d'un contrôle picture N=4 M_pour missile
Sprite 4 Sprite_File_load 4,"img/Fire_double.bmp" : ' M_top% pour Booum !! sprite_position 4,(p_left% +10),(p_top%-25) : m_left% = sprite_x_position (4) sprite_hide 4
Sprite 21 Sprite_File_load 21,"img/Bullet_Diag2.bmp" Sprite_hide 21
Sprite 22 Sprite_File_load 22,"img/Bullet_Diag1.bmp" Sprite_hide 22
' ********************************************************************** ' mise en place effet de vitesse N=7 et N= 8 Sprite 7 Sprite_File_load 7,"img/galaxie.bmp" : ' effet gauche
Sprite 8 Sprite_File_load 8,"img/galaxie.bmp" : ' effet droite sprite_x_position 8,(width(50) -70)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement des sons du jeu'
sound 6 ' chargement du son N=6 lancement du missile double file_load 6,"son/Missile_launch.wav"
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' *********************************************************************** ' *********************************************************************** ' chargement musique du jeu'
sound 17 ' chargement du son N=10 file_load 17,"son/PIEGE.mp3" play 17
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
' <<<<<<<<<<<<<<<<<<<<<< FIN DES SUB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
Rem ====================== Les Labels ==========================
Rem ============================================================================ ' **********************************************************************
Animation: ' Vérification position avion dessus ennemi if sprite_y_position(13)< sprite_y_position (3)
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81 sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) sprite_y_position 3,0 E_left% = sprite_x_position(3):sprite_show 3
end_if
' vérification d'un crash avion_missile
if sprite_y_position(13)=<(E_top% +40)
if E_left% < (P_left% +30) and E_left% >(P_left% -30) timer_off 20 sprite_hide 13:sprite_hide 3:sprite_show 9:play 10 message "Game over" goto fin end_if
end_if
on_error_goto move if p%<1 then p%=10 if p%=>80 then p%=80 j% =j% + 5 sprite_y_position 7,(sprite_y_position(7)-j%) sprite_y_position 8,(sprite_y_position (8)-j%) if sprite_y_position(3)< height(50) sprite_y_position 3, (sprite_y_position(3)+p%) sprite_y_position 9, sprite_y_position(3):E_top% = sprite_y_position(3) else sprite_y_position 3,10 :sprite_y_position 9,sprite_y_position(3) E_top%= sprite_y_position(3) end_if if j%=50 j%=0 sprite_y_position 7,0 :sprite_y_position 8,0
end_if return
Rem ============================================================================ ' **********************************************************************
Move:
key% = key_down_code
select key%
case 27 :' arrêt des boucles
case 32
play 6
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 4,(P_top%-25) :sprite_x_position 4,(P_left% +10) M_top% = sprite_y_position(4) sprite_show 4
while M_top% > E_top%
M_top% = M_top% -20 :sprite_y_position 4,M_top% :M_left% = sprite_x_position(4)
end_while
sprite_hide 4
if M_left% < (E_left% +30) and M_left% >(E_left% -30)
Goto explosion_animation
end_if case 37 : ' gauche
while sprite_x_position(15)=> 80
x%=x%-10 :P_left% = sprite_x_position(15):if memimg% <> 2 then sprite_show 15:sprite_hide 12:sprite_hide 13:sprite_hide 14:memimg%=2 :' gauche sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) : sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%):p_left%=250+x%
end_while
case 38 :p%=P%+10:if memimg% <> 4 then sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:memimg%=4 :' haut case 39 : ' droite
while sprite_x_position (14)=< (width(50)-130)
x%=x%+10 :P_left% = sprite_x_position(14):if memimg% <> 1 then sprite_show 14:sprite_hide 12:sprite_hide 13:sprite_hide 15:memimg%=1 :' droite sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%) : sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) :p_left%=250+x% end_while
case 40 :p%=p%-10:if memimg% <> 3 then sprite_show 12:sprite_hide 13:sprite_hide 14 :sprite_hide 15:memimg%=3 :' bas
case 87 : ' code de la touche W mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 21,(P_top%-25) :sprite_x_position 21,(P_left% +10) M_top% = sprite_y_position(21) sprite_show 21 while M_top% > E_top%
M_top% = M_top% -20 :sprite_y_position 21,M_top% :M_left% = sprite_x_position(21) sprite_x_position 21,sprite_x_position(21)-20
end_while
sprite_hide 21 if M_left% < (E_left% +40) and M_left% >(E_left% -40) Goto explosion_animation end_if
case 88:' code de la touche X mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 22,(P_top%-25) :sprite_x_position 22,(P_left% +10) M_top% = sprite_y_position(22) sprite_show 22
while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 22,M_top% :M_left% = sprite_x_position(22) sprite_x_position 22,sprite_x_position(22)+20
end_while
sprite_hide 22 if M_left% < (E_left% +40) and M_left% >(E_left% -40)
Goto explosion_animation
end_if
end_select
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:pause 10 ' Mise en place de l'avion à la position demandée
Return
Rem ===================================================================== ' *********************************************************************** explosion_animation:
play 10
sprite_hide 3:sprite_y_position 3,10:pause 10 sprite_show 9: pause 10: sprite_hide 9 sprite_position 23,sprite_x_position (9) ,sprite_y_position (9) sprite_show 23: pause 10: sprite_hide 23 sprite_position 24,sprite_x_position (9) ,sprite_y_position (9) sprite_show 24: pause 10: sprite_hide 24 sprite_position 25,sprite_x_position (9) ,sprite_y_position (9) sprite_show 25: pause 10: sprite_hide 25 sprite_position 26 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 26: pause 10: sprite_hide 26 sprite_position 27 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 27: pause 10: sprite_hide 27 sprite_position 28,sprite_x_position (9) ,sprite_y_position (9) sprite_show 28: pause 10: sprite_hide 28 sprite_position 29,sprite_x_position (9) ,sprite_y_position (9) sprite_show 29: pause 10: sprite_hide 29
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81
sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) E_left% = sprite_x_position(3):sprite_show 3:Kills%=Kills%+1 caption 1,STR$(Kills%):show 1:top 1,(height(50)-80) :left 1,(width(50)-100) key%=0
Return
Rem ============================================================================ ' ***********************************************************************
fin: timer_off 20 message "Merci d'avoir pris le temps de jouer" message "Vous avez éliminé " +str$(kills%)+ " ennemis !!!" terminate
return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' A bientôt. (espérant trouver cette solution) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 10:04 | |
| Bonjour Fhoest. Je viens de regarder ton code. Il y a plusieurs choses qui sont à corriger. 1) ALPHA 1 Doit être placé au début de la Sub annonce_jeu() ce qui permet de ne pas le voir si on décide de passer l'annonce 2) Tu es resté sur une taille d'écran unique: - Code:
-
' Dimension de la scene2D width 50,1550 : height 50,850 : left 50,20 : top 50,20
C'est embêtant pour jouer si on a pas la même taille, le mieux (à mon avis) c'est de te baser sur un FULL_SPACE 0 et 50, puis tu ramène le bouton exit en bas à droite. Regarde comment j'ai fait dans le code que j'ai posté plus haut. 3) ON_ERROR_GOTO,move . C'est le genre de truc à éviter, car en cas d'erreur détectée tu relances le programme sans rien faire !? Regarde le code ci-dessous, j'ai ajouté un label erreur et en jouant je n'ai jamais eu le message, donc il n'y a jamais eu d'erreur. 4) GOTO explosion_animation. Là aussi, quant il y a un GOTO, c'est souvent pas bon, (mais pas toujours). Dans le code ci-dessous, j'ai transformé le sous-prgramme explosion_animation: en SUB explosion_animation() . Pour finir, j'ai ajouté une variable pour maîtriser la vitesse du vaisseau "ami". Son nom: vit% , tu la trouveras en ligne 34, 35, 448, 463 Voici ton code en partie retouché (sauf Dimension de la scene2D) - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' gestion des couleurs par RGB dim couleurR,couleurG,couleurB
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Objet Ennemy destruction ok dim Kills%
' variable increntation ou décrémentation de déplacememnt objet Plane dim x% ,y%
' Variable de position objets dim P_top%,P_left% ,M_top%,E_Top%,E_left%,M_left%,F_Width% dim positionFormx%,positionFormy%
' variable de memoire image Dim memimg%
' variable de memoire appuie touche Dim key%
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse Dim speed% :Dim p%
DIM vit% :' vitesse de déplacement du vaisseau "ami" vit%=5 ' -----------------------------------------------------------
' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= " Bonjour à tous " monTexte$(1)= " Bienvenue " monTexte$(2)= " Sur " monTexte$(3)= "Panoramic Plane "
' ----------------------------------------------------------- ' <<<<<<<<<<<<<<<<<<<< Fin de déclaration variables >>>>>>>>>>>>>>>>>>>>
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,erreur
Rem ===================================================================== ' Appel de la routine d'initialisation du jeu Init()
' Evènement appuie des touches de direction clavier du clavier ' Sont pris en compte flèche de droite,gauche,haut,bas et barre espace. ON_KEY_DOWN 0,move
end
Rem ===================================================================== ' *********************************************************************** ' Initialisation de la form ' *********************************************************************** ' *********************************************************************** ' Ordre des controles et fichiers
' Numéro 1-9 Alpha et Boutons ' Numéro 10 - 20 Son ' Numéro 30 - 40 Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer
' à modifier après vérification du code sur scene2D, ' afin de ne pas altérer le fonctionnement
Rem ===================================================================== ' Appel de la routine intialisation
sub Init() ' ***********************************************************************
Rem ===================================================================== ' Appel de la routine des sons
Creation_des_sons() ' ***********************************************************************
Rem ===================================================================== ' mise en forme de la Form principale N=0
' Agrandir la forme au maximum' full_space 0
' Instancier la variable en fonction de la largeur de la forme F_Width%=width (0)
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== ' Appel de la procedure accueil du jeu
' annonce_jeu()
' **********************************************************************
Rem ===================================================================== ' terminer le jeu en cas d'erreur
on_error_goto erreur
' **********************************************************************
Rem ===================================================================== ' Installation d'une scene 2 dimensions Scene2d -------------
Scene2d 50
' Dimension de la scene2D width 50,1550 : height 50,850 : left 50,20 : top 50,20
' ***********************************************************************
Rem ===================================================================== ' Creation d'un timer pour utiliser le label animation timer 20 on_timer 20,animation
' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 16 top 16,(height(50)-80):left 16,1500 caption 16, "Exit" on_click 16,fin
' **********************************************************************
End_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu
Sub annonce_jeu() ALPHA 1 :TOP 1 ,0 : LEFT 1,210 :font_size 1,20 : font_bold 1:Caption 1,"Bonjour à tous" color 1,255,255,255
compteur%=0
While compteur% < 4 caption 1,monTexte$(compteur%)
FOR i%=50 to 250 step 2 color 0,i%,i%,i% TOP 1 ,i% : LEFT 1,210 pause 30 NEXT i%
compteur% =compteur% +1
End_While
' Fin de boucle masquer le texte d'accueil HIDE 1 :Left 1,(F_width%-50)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' **********************************************************************
Rem ===================================================================== ' Creation d'une procedure pour les images.
Sub Creation_des_sprites()
' Mise en place d'un contrôle Sprite N=2 --- debut variable P_pour Plane ---
' Sprite avion d'attaque Sprite 12 Sprite_File_load 12,"img/Plane_down.bmp" Sprite_position 12,250,(height(50)-150) sprite_hide 12
' Sprite avion d'attaque Sprite 13 Sprite_File_load 13,"img/Plane_up.bmp" Sprite_position 13,250,(height(50)-150) ' Attribution des valeurs de position x et y du sprite 13 au valeurs objet sprite ancienne P pour picture' P_top% = Sprite_Y_position (13) : P_left% = sprite_X_position (13)
' Sprite avion d'attaque Sprite 14 Sprite_File_load 14,"img/Plane_right.bmp" Sprite_position 14,250,(height(50)-150) Sprite_hide 14
' Sprite avion d'attaque Sprite 15 Sprite_File_load 15,"img/Plane_left.bmp" Sprite_position 15,250,(height(50)-150) Sprite_hide 14
' Mise en place d'un contrôle sprite N=3 E_pour Ennemy Sprite 3 Sprite_File_load 3,"img/Ennemy.bmp" : ' E_top% pour booum !! Sprite_position 3,82,10 Sprite_y_position 3, 10 : Sprite_x_position 3,82 : E_top% = Sprite_y_position (3): E_left% = Sprite_x_position (3)
' ********************************************************************** ' Mise en place d'un contrôle sprite explosion 1 Sprite 9 Sprite_File_load 9,"img/Explosion_1.bmp" : ' E_top% pour booum !! sprite_position 9,82,10 sprite_hide 9
' Mise en place d'un contrôle sprite explosion 1 Sprite 23 Sprite_File_load 23,"img/Explosion_2.bmp" Sprite_hide 23
' Mise en place d'un contrôle sprite explosion 2 Sprite 24 Sprite_File_load 24,"img/Explosion_3.bmp" Sprite_hide 24
' Mise en place d'un contrôle sprite explosion 3 Sprite 25 Sprite_File_load 25,"img/Explosion_4.bmp" Sprite_hide 25
' Mise en place d'un contrôle sprite explosion 4 Sprite 26 Sprite_File_load 26,"img/Explosion_5.bmp" Sprite_hide 26
' Mise en place d'un contrôle sprite explosion 5 Sprite 27 Sprite_File_load 27,"img/Explosion_6.bmp" Sprite_hide 27
' Mise en place d'un contrôle sprite explosion 6 Sprite 28 Sprite_File_load 28,"img/Explosion_7.bmp" Sprite_hide 28
' Mise en place d'un contrôle sprite explosion 7 Sprite 29 Sprite_File_load 29,"img/Explosion_8.bmp" Sprite_hide 29
' ********************************************************************** ' Mise en place d'un contrôle picture N=4 M_pour missile
Sprite 4 Sprite_File_load 4,"img/Fire_double.bmp" : ' M_top% pour Booum !! sprite_position 4,(p_left% +10),(p_top%-25) : m_left% = sprite_x_position (4) sprite_hide 4
Sprite 21 Sprite_File_load 21,"img/Bullet_Diag2.bmp" Sprite_hide 21
Sprite 22 Sprite_File_load 22,"img/Bullet_Diag1.bmp" Sprite_hide 22
' ********************************************************************** ' mise en place effet de vitesse N=7 et N= 8 Sprite 7 Sprite_File_load 7,"img/galaxie.bmp" : ' effet gauche
Sprite 8 Sprite_File_load 8,"img/galaxie.bmp" : ' effet droite sprite_x_position 8,(width(50) -70)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement des sons du jeu'
sound 6 ' chargement du son N=6 lancement du missile double file_load 6,"son/Missile_launch.wav"
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' *********************************************************************** ' *********************************************************************** ' chargement musique du jeu'
sound 17 ' chargement du son N=10 file_load 17,"son/PIEGE.mp3" play 17
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
' <<<<<<<<<<<<<<<<<<<<<< FIN DES SUB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
Rem ====================== Les Labels ==========================
Rem ============================================================================ ' **********************************************************************
Animation: ' Vérification position avion dessus ennemi if sprite_y_position(13)< sprite_y_position (3)
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81 sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) sprite_y_position 3,0 E_left% = sprite_x_position(3):sprite_show 3
end_if
' vérification d'un crash avion_missile
if sprite_y_position(13)=<(E_top% +40)
if E_left% < (P_left% +30) and E_left% >(P_left% -30) timer_off 20 sprite_hide 13:sprite_hide 3:sprite_show 9:play 10 message "Game over" goto fin end_if
end_if
on_error_goto move if p%<1 then p%=10 if p%=>80 then p%=80 j% =j% + 5 sprite_y_position 7,(sprite_y_position(7)-j%) sprite_y_position 8,(sprite_y_position (8)-j%) if sprite_y_position(3)< height(50) sprite_y_position 3, (sprite_y_position(3)+p%) sprite_y_position 9, sprite_y_position(3):E_top% = sprite_y_position(3) else sprite_y_position 3,10 :sprite_y_position 9,sprite_y_position(3) E_top%= sprite_y_position(3) end_if if j%=50 j%=0 sprite_y_position 7,0 :sprite_y_position 8,0
end_if return
Rem ============================================================================ ' **********************************************************************
Move:
key% = key_down_code
select key%
case 27 :' arrêt des boucles gosub fin
case 32
play 6
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 4,(P_top%-25) :sprite_x_position 4,(P_left% +10) M_top% = sprite_y_position(4) sprite_show 4
while M_top% > E_top%
M_top% = M_top% -20 :sprite_y_position 4,M_top% :M_left% = sprite_x_position(4)
end_while
sprite_hide 4
if M_left% < (E_left% +30) and M_left% >(E_left% -30)
explosion_animation() : RETURN
end_if case 37 : ' gauche
while sprite_x_position(15)=> 80
x%=x%-vit% :P_left% = sprite_x_position(15) if memimg% <> 2 then sprite_show 15:sprite_hide 12:sprite_hide 13:sprite_hide 14:memimg%=2 :' gauche sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%): p_left%=250+x%
end_while
case 38 :p%=P%+10:if memimg% <> 4 then sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:memimg%=4 :' haut case 39 : ' droite
while sprite_x_position (14)=< (width(50)-130)
x%=x%+vit% :P_left% = sprite_x_position(14):if memimg% <> 1 then sprite_show 14:sprite_hide 12:sprite_hide 13:sprite_hide 15:memimg%=1 :' droite sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%) : sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) :p_left%=250+x% end_while
case 40 :p%=p%-10:if memimg% <> 3 then sprite_show 12:sprite_hide 13:sprite_hide 14 :sprite_hide 15:memimg%=3 :' bas
case 87 : ' code de la touche W mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 21,(P_top%-25) :sprite_x_position 21,(P_left% +10) M_top% = sprite_y_position(21) sprite_show 21 while M_top% > E_top%
M_top% = M_top% -20 :sprite_y_position 21,M_top% :M_left% = sprite_x_position(21) sprite_x_position 21,sprite_x_position(21)-20
end_while
sprite_hide 21 if M_left% < (E_left% +40) and M_left% >(E_left% -40) explosion_animation() : RETURN end_if
case 88:' code de la touche X mettre un autre missile et un autre son
play 6 sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 22,(P_top%-25) :sprite_x_position 22,(P_left% +10) M_top% = sprite_y_position(22) sprite_show 22
while M_top% > E_top% M_top% = M_top% -20 :sprite_y_position 22,M_top% :M_left% = sprite_x_position(22) sprite_x_position 22,sprite_x_position(22)+20
end_while
sprite_hide 22 if M_left% < (E_left% +40) and M_left% >(E_left% -40)
explosion_animation() : RETURN
end_if
end_select
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:pause 10 ' Mise en place de l'avion à la position demandée
Return Rem =====================================================================
erreur: message "Erreur" Return Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
play 10
sprite_hide 3:sprite_y_position 3,10:pause 10 sprite_show 9: pause 10: sprite_hide 9 sprite_position 23,sprite_x_position (9) ,sprite_y_position (9) sprite_show 23: pause 10: sprite_hide 23 sprite_position 24,sprite_x_position (9) ,sprite_y_position (9) sprite_show 24: pause 10: sprite_hide 24 sprite_position 25,sprite_x_position (9) ,sprite_y_position (9) sprite_show 25: pause 10: sprite_hide 25 sprite_position 26 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 26: pause 10: sprite_hide 26 sprite_position 27 ,sprite_x_position (9) ,sprite_y_position (9) sprite_show 27: pause 10: sprite_hide 27 sprite_position 28,sprite_x_position (9) ,sprite_y_position (9) sprite_show 28: pause 10: sprite_hide 28 sprite_position 29,sprite_x_position (9) ,sprite_y_position (9) sprite_show 29: pause 10: sprite_hide 29
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81
sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) E_left% = sprite_x_position(3):sprite_show 3:Kills%=Kills%+1 caption 1,STR$(Kills%):show 1:top 1,(height(50)-80) :left 1,(width(50)-100) key%=0
END_SUB
Rem ============================================================================ ' ***********************************************************************
fin: timer_off 20 message "Merci d'avoir pris le temps de jouer" message "Vous avez éliminé " +str$(kills%)+ " ennemis !!!" terminate
return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' Essaies-le et prends ce qui te parait bon. A+ | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 11:54 | |
| @Fhoest Comme suggéré plus haut, il faut utiliser OFF_KEY_DOWN/ON_KEY_DOWN. Si ça bloque après avoir tiré, c'est parcequ'il faut utiliser ON_KEY_DOWN dans la routine "explosion_animation", puisque tu y accède par un goto et qu'un RETURN est atteind sans que la commande ON_KEY_DOWN ai été déclenché. Si tu peux, remplace GOTO par GOSUB. Ce n'est pas obligatoire, mais le code est plus simple à gérer. Dans les CASE 37/39, tu peux arrèter les boucles WHILE prématurément en ajoutant "AND SCANCODE" 37/39, cela évitera que le vaisseau avance tant que la boucle n'est pas fini. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 13:36 | |
| Merci Silverman pour le coup de main. Je vais tester ce que tu proposes, car pour le moment j'en suis resté à la restructuration du code plutôt que de rechercher la solution. C'est ma façon de faire, traiter les problèmes les plus simples avant d'aller plus loin. En tous cas, c'est bon d'avoir une aide car je ne suis pas forcément de bon conseil. A+ | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 15:05 | |
| Bonjour, merci pour les corrections et modifications du code. Sympa. j'ai modifié pour le full_space j'avais effectivement oublié de supprimer la ligne top,width,etc... de la scene 2d oui,le Gosub et le Sub c'est une bonne idée. (j'avais oublié le gosub). j'ai parfois encore des erreurs,mais c'est vraiment aléatoire. il faut que je change ma musique du jeu car elle casse la tête. je pense que je vais mettre un choix dans sa propre librairie avec une boite de dialogue, ça me permettra d'aller plus loin avec panoramic. J'ai une question sur les numéros N. Puis je utiliser le même numéros pour des contrôles différents ou bien je peux car j'utilise une scene2d et une forme (en contrôle parents ) Edit je viens juste de voir la proposition de silverman car mon message que je viens de mettre était rédiger ce matin mais pas encore envoyé. je vais étudier cette proposition dès que j'en aurais l'occasion ce soir. Merci à vous. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 20:26 | |
| - Fhoest a écrit:
- J'ai une question sur les numéros N.
Puis je utiliser le même numéros pour des contrôles différents ou bien je peux car j'utilise une scene2d et une forme (en contrôle parents ) Je ne comprend pas bien ta question, mais je vais tenter une réponse. Un objet est désigné par un numéro (button 1) ce numéro lui est réservé et tu ne peux pas l'utiliser pour un autre objet. SAUF si c'est pour un sprite, car les sprites ont une numérotation indépendante (à condition bien sur qu'il y ai un SCENE2D existant). Dans le cas de notre bouton 1, tu peux reprendre son numéro pour un ALPHA par exemple. Mais attention ! si dans le code il y a des instructions pour ce bouton elles deviendront valables pour le nouvel objet. Ici c'est un ALPHA donc c'est une possibilité de changer un bouton par un alpha qui supporte les mêmes commandes. Dans d'autre cas le mieux est de supprimer le bouton par DELETE 1. Le bouton n'existe plus et le numéro d'objet est de nouveau libre. Mais il faut revoir toutes les instructions correspondantes au numéro 1. Par exemple, si tu changes ton bouton par une DLIST toutes commande du genre TOP, LEFT, WIDTH, HEIGHT déclencheront une erreur. Si tu créer un deuxième SCENE2D sur le même FORM c'est possible mais il y a des conditions. - Code:
-
scene2d 10 sprite_target_is 10 sprite 11
scene2d 20 : left 20,220 sprite_target_is 20 sprite 21
Les numéros de sprite utilisés par le premier scene2d ne doivent pas être utilisés pour le deuxième. Il faut désigner la cible (scene2d) pour créer les sprites dans leur scene2d respectif, avec la commande sprite_target_is En tous cas, pas commande PARENT pour un sprite. AUTRE POSSIBILITÉ: 2 FORM(s) avec chacun son scene2d - Code:
-
caption 0,"FORM 0" scene2d 10 sprite_target_is 10 sprite 11
form 30 : left 30,500 : caption 30,"FORM 30" scene2d 20 : parent 20,30 sprite_target_is 20 sprite 21
Ici, on voit que SCENE2D accepte la commande PARENT. J'espère avoir répondu à ta question. | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 22:55 | |
| Oui Jean claude tu as bien répondu à ma question, et à vrai dire quand je me relis ,je me dis que tu as pas mal de talent pour avoir réussit à la comprendre cette question. j'ai bien avancer sur le code ,sauf que j'ai encore quelques soucis (je vais tenter de le corriger mais avant je vais vous donner les messages erreur que je rencontre,pour vous cela sera peut être plus clair. voici le nouveau code: - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' gestion des couleurs par RGB dim couleurR,couleurG,couleurB
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Objet Ennemy destruction ok dim Kills%
' variable increntation ou décrémentation de déplacememnt objet Plane dim x% ,y%
' Variable de position objets dim P_top%,P_left% ,M_top%,E_Top%,E_left%,M_left%,F_Width% dim positionFormx%,positionFormy%
' variable de memoire image Dim memimg%
' variable de memoire appuie touche Dim key%
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse Dim speed% :Dim p%
' vitesse de déplacement du vaisseau "ami" DIM vit% , multiple_vit% vit%=5 multiple_vit%=1 ' -----------------------------------------------------------
' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= " Bonjour à tous " monTexte$(1)= " Bienvenue " monTexte$(2)= " Sur " monTexte$(3)= "Panoramic Plane "
' ----------------------------------------------------------- ' <<<<<<<<<<<<<<<<<<<< Fin de déclaration variables >>>>>>>>>>>>>>>>>>>>
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,erreur
Rem ===================================================================== ' Appel de la routine d'initialisation du jeu
Init()
' Evènement appuie des touches de direction clavier du clavier ' Sont pris en compte flèche de droite,gauche,haut,bas et barre espace. ON_KEY_DOWN 0,move
end
Rem ===================================================================== ' *********************************************************************** ' Initialisation de la form ' *********************************************************************** ' *********************************************************************** ' Ordre des controles et fichiers
' Numéro 1-9 Alpha et Boutons ' Numéro 10 - 20 Son ' Numéro 30 - 40 Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer
' à modifier après vérification du code sur scene2D, ' afin de ne pas altérer le fonctionnement
Rem ===================================================================== ' Appel de la routine intialisation
sub Init() ' ***********************************************************************
Rem ===================================================================== ' Appel de la routine des sons
Creation_des_sons() ' ***********************************************************************
Rem ===================================================================== ' mise en forme de la Form principale N=0
' Agrandir la forme au maximum' full_space 0
' Instancier la variable en fonction de la largeur de la forme F_Width%=width (0)
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== ' Appel de la procedure accueil du jeu
if message_confirmation_yes_no ("Passer l'intro ?")=0 then annonce_jeu()
' **********************************************************************
Rem ===================================================================== ' terminer le jeu en cas d'erreur
on_error_goto erreur
' **********************************************************************
Rem ===================================================================== ' Installation d'une scene 2 dimensions Scene2d -------------
Scene2d 50
' Dimension de la scene2D
Full_space 50 ' ***********************************************************************
Rem ===================================================================== ' Creation d'un timer pour utiliser le label animation timer 20 on_timer 20,animation
' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 16 top 16,(height(50)-40):left 16,(width (0) -150) caption 16, "Exit" on_click 16,fin
' ********************************************************************** Edit 2:hide 2 top 2,(height(50)-40) left 2,(width (0) -170) width 2,20 height 2,height (16) show 2
End_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ---------------------------------------------------------------------- Rem ===================================================================== ' Creation d'un sub déplacement de l'avion ami
sub deplacement(valeur%)
if valeur% >0 and sprite_x_position (14)> (width(50)-130) then exit_sub if valeur% <0 and sprite_x_position (15)< 80 then exit_sub ' while sprite_x_position (14)=< (width(50)-130) ' repeat
x%=x%+valeur% :P_left% = sprite_x_position(14)
sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%) p_left%=250+x%
if scancode=0 sprite_hide 12:sprite_hide 14:sprite_hide 15 pause 1 sprite_show 13 end_if end_sub
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu
Sub annonce_jeu()
ALPHA 1 :TOP 1 ,100 : LEFT 1,210 :font_size 1,20 font_bold 1:font_color 1,255,0,0:Caption 1,"Bonjour à tous"
' color 1,255,255,255
compteur%=0
While compteur% < 4
caption 1,monTexte$(compteur%)
FOR i%=50 to 250 step 2 color 0,i%,i%,i% color 1,i%,i%,i% TOP 1 ,i%+100 : LEFT 1,(width (0)/2) -(width (1)/2) pause 30 NEXT i%
compteur% =compteur% +1
End_While
' Fin de boucle masquer le texte d'accueil HIDE 1 :Left 1,(F_width%-50)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' **********************************************************************
Rem ===================================================================== ' Creation d'une procedure pour les images.
Sub Creation_des_sprites()
' Mise en place d'un contrôle Sprite N=2 --- debut variable P_pour Plane ---
' Sprite avion d'attaque Sprite 12 Sprite_File_load 12,"img/Plane_down.bmp" Sprite_position 12,250,(height(50)-150) sprite_hide 12
' Sprite avion d'attaque Sprite 13 Sprite_File_load 13,"img/Plane_up.bmp" Sprite_position 13,250,(height(50)-150) ' Attribution des valeurs de position x et y du sprite 13 au valeurs objet sprite ancienne P pour picture' P_top% = Sprite_Y_position (13) : P_left% = sprite_X_position (13)
' Sprite avion d'attaque Sprite 14 Sprite_File_load 14,"img/Plane_right.bmp" Sprite_position 14,250,(height(50)-150) Sprite_hide 14
' Sprite avion d'attaque Sprite 15 Sprite_File_load 15,"img/Plane_left.bmp" Sprite_position 15,250,(height(50)-150) Sprite_hide 15
' Mise en place d'un contrôle sprite N=3 E_pour Ennemy Sprite 3 Sprite_File_load 3,"img/Ennemy.bmp" : ' E_top% pour booum !! Sprite_position 3,82,10 Sprite_y_position 3, 10 : Sprite_x_position 3,82 : E_top% = Sprite_y_position (3): E_left% = Sprite_x_position (3)
' ********************************************************************** ' Mise en place d'un contrôle sprite explosion 1 Sprite 9 Sprite_File_load 9,"img/Explosion_1.bmp" : ' E_top% pour booum !! sprite_position 9,82,10 sprite_hide 9
' Mise en place d'un contrôle sprite explosion 1 Sprite 23 Sprite_File_load 23,"img/Explosion_2.bmp" Sprite_hide 23
' Mise en place d'un contrôle sprite explosion 2 Sprite 24 Sprite_File_load 24,"img/Explosion_3.bmp" Sprite_hide 24
' Mise en place d'un contrôle sprite explosion 3 Sprite 25 Sprite_File_load 25,"img/Explosion_4.bmp" Sprite_hide 25
' Mise en place d'un contrôle sprite explosion 4 Sprite 26 Sprite_File_load 26,"img/Explosion_5.bmp" Sprite_hide 26
' Mise en place d'un contrôle sprite explosion 5 Sprite 27 Sprite_File_load 27,"img/Explosion_6.bmp" Sprite_hide 27
' Mise en place d'un contrôle sprite explosion 6 Sprite 28 Sprite_File_load 28,"img/Explosion_7.bmp" Sprite_hide 28
' Mise en place d'un contrôle sprite explosion 7 Sprite 29 Sprite_File_load 29,"img/Explosion_8.bmp" Sprite_hide 29
' ********************************************************************** ' Mise en place d'un contrôle sprite N=4 M_pour missile
Sprite 4 Sprite_File_load 4,"img/Fire_double.bmp" : ' M_top% pour Booum !! sprite_position 4,(p_left% +10),(p_top%-25) : m_left% = sprite_x_position (4) sprite_hide 4
Sprite 21 Sprite_File_load 21,"img/Bullet_Diag2.bmp" Sprite_hide 21
Sprite 22 Sprite_File_load 22,"img/Bullet_Diag1.bmp" Sprite_hide 22
' ********************************************************************** ' mise en place effet de vitesse N=7 et N= 8 Sprite 7 Sprite_File_load 7,"img/galaxie.bmp" : ' effet gauche
Sprite 8 Sprite_File_load 8,"img/galaxie.bmp" : ' effet droite sprite_x_position 8,(width(50) -70)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement des sons du jeu'
sound 6 ' chargement du son N=6 lancement du missile double file_load 6,"son/Missile_launch.wav"
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' *********************************************************************** ' *********************************************************************** ' chargement musique du jeu'
sound 17 ' chargement du son N=10 file_load 17,"son/ORAS.mp3" play 17
end_sub
Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
play 10
sprite_hide 3:sprite_y_position 3,10:pause 10 sprite_show 9: pause 10: sprite_hide 9 sprite_position 23,sprite_x_position (9) ,sprite_y_position (9) sprite_show 23: pause 10: sprite_hide 23 sprite_position 24,sprite_x_position (9) ,sprite_y_position (9) sprite_show 24: pause 10: sprite_hide 24 sprite_position 25,sprite_x_position (9) ,sprite_y_position (9) sprite_show 25: pause 10: sprite_hide 25 sprite_position 26 ,sprite_x_position (9),sprite_y_position (9) sprite_show 26: pause 10: sprite_hide 26 sprite_position 27 ,sprite_x_position (9),sprite_y_position (9) sprite_show 27: pause 10: sprite_hide 27 sprite_position 28,sprite_x_position (9) ,sprite_y_position (9) sprite_show 28: pause 10: sprite_hide 28 sprite_position 29,sprite_x_position (9) ,sprite_y_position (9) sprite_show 29: pause 10: sprite_hide 29
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81
sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) E_left% = sprite_x_position(3):sprite_show 3:Kills%=Kills%+1 TEXT 2,STR$(Kills%) key%=0
END_SUB
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
' <<<<<<<<<<<<<<<<<<<<<< FIN DES SUB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
Rem ====================== Les Labels ==========================
Rem ============================================================================ ' **********************************************************************
Animation: ON_KEY_DOWN 0,move
' Vérification position avion dessus ennemi if sprite_y_position(13)< sprite_y_position (3)
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81 sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) sprite_y_position 3,0 E_left% = sprite_x_position(3):sprite_show 3
end_if
' vérification d'un crash avion_missile
if sprite_y_position(13)=<(E_top% +40)
if E_left% < (P_left% +30) and E_left% >(P_left% -30) timer_off 20 sprite_hide 13:sprite_hide 3:sprite_show 9:play 10 message "Game over" goto fin
end_if
end_if
if p%<1 then p%=10
if p%=>80 then p%=80
j% =j% + 5 sprite_y_position 7,(sprite_y_position(7)-j%) sprite_y_position 8,(sprite_y_position (8)-j%)
if sprite_y_position(3)< height(50)
sprite_y_position 3, (sprite_y_position(3)+p%) sprite_y_position 9, sprite_y_position(3):E_top% = sprite_y_position(3)
else
sprite_y_position 3,10 :sprite_y_position 9,sprite_y_position(3) E_top%= sprite_y_position(3)
end_if
if j%=50
j%=0 sprite_y_position 7,0 :sprite_y_position 8,0
end_if
return
Rem ============================================================================ ' **********************************************************************
Move:
key% = key_down_code
select key%
case 27 :' arrêt des boucles gosub fin
case 32
play 6
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 4,(P_top%-25) :sprite_x_position 4,(P_left% +10) M_top% = sprite_y_position(4) sprite_show 4
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 4,M_top% :M_left% = sprite_x_position(4)
end_while
sprite_hide 4
if M_left% < (E_left% +30) and M_left% >(E_left% -30)
explosion_animation() : RETURN
end_if
case 37 : ' gauche ' appel du sub deplacement(valeur%) vit%=(-5)*multiple_vit% sprite_show 15:sprite_hide 12:sprite_hide 13:sprite_hide 14 deplacement(vit%):display:return
case 38 p%=P%+10:if memimg% <> 4 then sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:memimg%=4 :' haut multiple_vit%=multiple_vit% +1
case 39 : ' droite vit%=5*(multiple_vit%) sprite_show 14:sprite_hide 12:sprite_hide 13:sprite_hide 15 deplacement(vit%):display::return
case 40 p%=p%-10:if memimg% <> 3 then sprite_show 12:sprite_hide 13:sprite_hide 14 :sprite_hide 15:memimg%=3 :' bas multiple_vit%=multiple_vit% -1 case 87 : ' code de la touche W mettre un autre missile et un autre son
play 6
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 21,(P_top%-25) :sprite_x_position 21,(P_left% +10) M_top% = sprite_y_position(21) sprite_show 21
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 21,M_top% :M_left% = sprite_x_position(21) sprite_x_position 21,sprite_x_position(21)-20
end_while
sprite_hide 21
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
explosion_animation() :RETURN
end_if
case 88:' code de la touche X mettre un autre missile et un autre son
play 6
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 22,(P_top%-25) :sprite_x_position 22,(P_left% +10) M_top% = sprite_y_position(22)
sprite_show 22
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 22,M_top% :M_left% = sprite_x_position(22) sprite_x_position 22,sprite_x_position(22)+20
end_while
sprite_hide 22
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
explosion_animation() : RETURN
end_if
end_select
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:pause 10 ' Mise en place de l'avion à la position demandée
Return Rem =====================================================================
erreur: message "Erreur" Return
Rem ============================================================================ ' ***********************************************************************
fin: timer_off 20 message "Merci d'avoir pris le temps de jouer" message "Vous avez éliminé " +str$(kills%)+ " ennemis !!!" terminate
return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' Les nouveautés du code sont les mises en place des ON et OFF KEY. Un meilleur rendu de l'affichage de la form 2 , de la scene2d (en full_space) une gestion des couleurs de l'intro différentes des précédentes version. un nouveau sub avec variable passer en paramètre. un choix de passer l'intro. par message yes no. si la musique du jeu n'est pas dans l'ancien zip mettre en commentaire. une variable de multiplication de vitesse du vaisseau ami un nouveau compteur et placement du bouton exit. Merci pour vos précieux conseil qui me font avancer . A bientôt. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 23:09 | |
| Salut Fhoest ! Très belle progression dans ton code. J'ai testé et tué 34 ennemis avant de quitter le jeu. Bonne continuation ! | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Dim 8 Avr 2018 - 23:13 | |
| Bonsoir Marc et merci. voici l'erreur que je rencontre parfois: fichier erreurMais je ne travaille pas sur la dernière version de panoramic ,j'ai toujours celle de 2015. c'est peut être pour ça. A bientôt. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Lun 9 Avr 2018 - 8:45 | |
| Bonjour à tous, @Fhoest, Oui ! ça progresse. J'ai joué sans problème. J'ai découvert ceci: if message_confirmation_yes_no ("Passer l'intro ?")=0 then annonce_jeu()Bonne idée, mais la bonne valeur pour ce message devrait être 2, car 2 correspond au bouton "No" La nouvelle intro est plus sympa. Pour le fichier erreur, cela ne m'apporte rien. Par contre remplace le sous-programme erreur par celui-ci - Code:
-
erreur: error_french message "Erreur à la ligne "+str$(error_line)+" "+error_type$ Return
De cette façon tu auras la ligne qui provoque l'erreur et la cause. A+ | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Lun 9 Avr 2018 - 19:39 | |
| Bonsoir, - Citation :
- Bonne idée, mais la bonne valeur pour ce message devrait être 2, car 2 correspond au bouton "No"
merci Jean claude, oui je n'ai pas tester le code avec 0 pour le message j'avais fait le test avec 1 et ensuite je me suis dit Ah ouais c'est pas 1 mais le contraire que je dois mettre donc je me suis dit que c'était automatiquement 0. Bin !!! je me suis trompé zut ... pas grave vous êtes de bon conseil en cas d'erreur (vous ,pluriel bien sur je vais également suivre tes recommandations pour le message d'erreur. et faire progresser le jeu. A bientôt et merci pour tout vos compliments et encouragements. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Lun 9 Avr 2018 - 20:51 | |
| Bonsoir à tous. Je pense, Fhoest, que tu peux maintenant voir les déplacements des "attaquants". Le vaisseau (ou avion) qui descend vers la bas de l'écran le fait de manière saccadée. Il faut que tu lui trouves une autre façon de se déplacer. Le but: il doit se déplacer de 1 pixel à la fois mais on doit pouvoir maîtriser sa vitesse de déplacement. C'est en fait le même problème que le déplacement de l'avion "tireur", car lui il se déplace de manière fluide. Si tu introduis une variable qui gère la vitesse du SPRITE vaisseau (ou avion) qui descend tu pourras ensuite augmenter progressivement sa vitesse et en conséquence la difficulté du jeu. C'est ici (je le présent) que l'on peut s’interroger sur le TIMER qui gère le sous-programme "animation"1) Le nom du sous-programme n'est pas adapté, je vois plutôt DeplacementAvionEnnemi, pour bien cibler à quoi sert ce sous-programme de type LABEL. A moins que ce ne soit pas ici qu'on déplace le vaisseau (ou avion) qui descend . 2) Il faut vérifier que le TIMER soit stopper chaque fois qu'il y a un tir vainqueur et qu'il reparte dès que le traitement du tir soit terminé. Pour cela il y a TIMER_OFF N (N=20, dans ton code) comme tu l'as fait, mais ensuite il faut le réactiver par TIMER_ON N (20). Sinon il n'y a plus d’animation (je veux dire de déplacement). Voir aussi TIMER_INTERVAL: regardes dans le manuel de référence, à quoi il sert. Réfléchis à tout ça, et ensuite... on verra... En tous cas, Bravo ! Car tu avances... A+ | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Lun 9 Avr 2018 - 23:30 | |
| Bonsoir, voici la dernière version avec les derniers conseil de Jean claude, sans une difficulté de jeu automatique ,pour l'instant elle se gère manuellement avec les boutons up et down (flèche du clavier),oups ça se complique et se peaufine en un jeu qui me donne de plus en plus de fil à retordre et aussi l'envie d'y jouer. prochainement il y aura une gestion de difficulté en temps et les points afficher seront de meilleurs qualité pour donner un effet plus sérieux avec des paliers pour obtenir un niveau dans le jeu. A bientôt et amusez vous bien voici le zip avec les fichiers évolution la version V5 est la dernière. zip dernière versionedit pour ceux qui veulent déjà la V6 en .bas - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' gestion des couleurs par RGB dim couleurR,couleurG,couleurB
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Objet Ennemy destruction ok dim Kills%
' variable increntation ou décrémentation de déplacememnt objet Plane dim x% ,y%
' Variable de position objets dim P_top%,P_left% ,M_top%,E_Top%,E_left%,M_left%,F_Width% dim positionFormx%,positionFormy%
' variable de memoire image Dim memimg%
' variable de memoire appuie touche Dim key%
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse Dim speed% :Dim p% p%=3 ' vitesse de déplacement du vaisseau "ami" DIM vit% , multiple_vit% ,multiple_p% vit%=5 multiple_vit%=1 multiple_p% = 1 ' ----------------------------------------------------------- Dim lettre$
' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= " Bonjour à tous " monTexte$(1)= " Bienvenue " monTexte$(2)= " Sur " monTexte$(3)= "Panoramic Plane "
' ----------------------------------------------------------- ' <<<<<<<<<<<<<<<<<<<< Fin de déclaration variables >>>>>>>>>>>>>>>>>>>>
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,erreur
Rem ===================================================================== ' Appel de la routine d'initialisation du jeu
Init()
' Evènement appuie des touches de direction clavier du clavier ' Sont pris en compte flèche de droite,gauche,haut,bas et barre espace. ON_KEY_DOWN 0,move
end
Rem ===================================================================== ' *********************************************************************** ' Initialisation de la form ' *********************************************************************** ' *********************************************************************** ' Ordre des controles et fichiers
' Numéro 1-9 Alpha et Boutons ' Numéro 10 - 20 Son ' Numéro 30 - 40 Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer
' à modifier après vérification du code sur scene2D, ' afin de ne pas altérer le fonctionnement
Rem ===================================================================== ' Appel de la routine intialisation
sub Init() ' ***********************************************************************
Rem ===================================================================== ' Appel de la routine des sons
Creation_des_sons() ' ***********************************************************************
Rem ===================================================================== ' mise en forme de la Form principale N=0
' Agrandir la forme au maximum' full_space 0
' Instancier la variable en fonction de la largeur de la forme F_Width%=width (0)
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== ' Appel de la procedure accueil du jeu
if message_confirmation_yes_no ("Passer l'intro ?")=2 then annonce_jeu()
' **********************************************************************
Rem ===================================================================== ' terminer le jeu en cas d'erreur
on_error_goto erreur
' **********************************************************************
Rem ===================================================================== ' Installation d'une scene 2 dimensions Scene2d -------------
Scene2d 50
' Dimension de la scene2D
Full_space 50 ' ***********************************************************************
Rem ===================================================================== ' Creation d'un timer pour utiliser le label animation timer 20 on_timer 20,animation timer_interval 20,50 ' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 16 top 16,(height(50)-40):left 16,(width (0) -150) caption 16, "Exit" on_click 16,fin
' ********************************************************************** Edit 2:hide 2 top 2,(height(50)-40) left 2,(width (0) -170) width 2,20 height 2,height (16) show 2
End_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ---------------------------------------------------------------------- Rem ===================================================================== ' Creation d'un sub déplacement de l'avion ennemie sub deplacement_ennemie(valeur%)
if sprite_y_position(3)< height(50)
sprite_y_position 3, (sprite_y_position(3)+valeur%) sprite_y_position 9, sprite_y_position(3):E_top% = sprite_y_position(3)
else
sprite_y_position 3,10 :sprite_y_position 9,sprite_y_position(3) E_top%= sprite_y_position(3)
end_if
end_sub ' ----------------------------------------------------------------------
Rem ===================================================================== ' Creation d'un sub déplacement de l'avion ami
sub deplacement(valeur%)
if valeur% >0 and sprite_x_position (14)> (width(50)-130) then exit_sub if valeur% <0 and sprite_x_position (15)< 80 then exit_sub ' while sprite_x_position (14)=< (width(50)-130) ' repeat
x%=x%+valeur% :P_left% = sprite_x_position(14)
sprite_x_position 12,(250 +x%) :sprite_x_position 13,(250 +x%) sprite_x_position 14,(250 +x%) :sprite_x_position 15,(250 +x%) p_left%=250+x%
if scancode=0 sprite_hide 12:sprite_hide 14:sprite_hide 15 pause 1 sprite_show 13 end_if end_sub
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu Sub annonce_jeu()
ALPHA 1 :TOP 1 ,100 : LEFT 1,210 :font_size 1,50 font_bold 1:font_color 1,255,0,0:' Caption 1,"Bonjour à tous"
' color 1,255,255,255
compteur%=0
While compteur% < 4
play 19 pause 100 for j%=1 to len(MonTexte$ (compteur%)) lettre$=left$(Montexte$(compteur%),j%)
TOP 1 ,300 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10)
caption 1,lettre$
TOP 1 ,300 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10) pause 150: display
next j% compteur% =compteur% +1
End_While
FOR i%=50 to 250 step 2 color 0,i%,i%,i% pause 30 NEXT i% ' Fin de boucle masquer le texte d'accueil HIDE 1 :Left 1,(F_width%-50)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' **********************************************************************
Rem ===================================================================== ' Creation d'une procedure pour les images.
Sub Creation_des_sprites()
' Mise en place d'un contrôle Sprite N=2 --- debut variable P_pour Plane ---
' Sprite avion d'attaque Sprite 12 Sprite_File_load 12,"img/Plane_down.bmp" Sprite_position 12,250,(height(50)-150) sprite_hide 12
' Sprite avion d'attaque Sprite 13 Sprite_File_load 13,"img/Plane_up.bmp" Sprite_position 13,250,(height(50)-150) ' Attribution des valeurs de position x et y du sprite 13 au valeurs objet sprite ancienne P pour picture' P_top% = Sprite_Y_position (13) : P_left% = sprite_X_position (13)
' Sprite avion d'attaque Sprite 14 Sprite_File_load 14,"img/Plane_right.bmp" Sprite_position 14,250,(height(50)-150) Sprite_hide 14
' Sprite avion d'attaque Sprite 15 Sprite_File_load 15,"img/Plane_left.bmp" Sprite_position 15,250,(height(50)-150) Sprite_hide 15
' Mise en place d'un contrôle sprite N=3 E_pour Ennemy Sprite 3 Sprite_File_load 3,"img/Ennemy.bmp" : ' E_top% pour booum !! Sprite_position 3,82,10 Sprite_y_position 3, 10 : Sprite_x_position 3,82 : E_top% = Sprite_y_position (3): E_left% = Sprite_x_position (3)
' ********************************************************************** ' Mise en place d'un contrôle sprite explosion 1 Sprite 9 Sprite_File_load 9,"img/Explosion_1.bmp" : ' E_top% pour booum !! sprite_position 9,82,10 sprite_hide 9
' Mise en place d'un contrôle sprite explosion 1 Sprite 23 Sprite_File_load 23,"img/Explosion_2.bmp" Sprite_hide 23
' Mise en place d'un contrôle sprite explosion 2 Sprite 24 Sprite_File_load 24,"img/Explosion_3.bmp" Sprite_hide 24
' Mise en place d'un contrôle sprite explosion 3 Sprite 25 Sprite_File_load 25,"img/Explosion_4.bmp" Sprite_hide 25
' Mise en place d'un contrôle sprite explosion 4 Sprite 26 Sprite_File_load 26,"img/Explosion_5.bmp" Sprite_hide 26
' Mise en place d'un contrôle sprite explosion 5 Sprite 27 Sprite_File_load 27,"img/Explosion_6.bmp" Sprite_hide 27
' Mise en place d'un contrôle sprite explosion 6 Sprite 28 Sprite_File_load 28,"img/Explosion_7.bmp" Sprite_hide 28
' Mise en place d'un contrôle sprite explosion 7 Sprite 29 Sprite_File_load 29,"img/Explosion_8.bmp" Sprite_hide 29
' ********************************************************************** ' Mise en place d'un contrôle sprite N=4 M_pour missile
Sprite 4 Sprite_File_load 4,"img/Fire_double.bmp" : ' M_top% pour Booum !! sprite_position 4,(p_left% +10),(p_top%-25) : m_left% = sprite_x_position (4) sprite_hide 4
Sprite 21 Sprite_File_load 21,"img/Bullet_Diag2.bmp" Sprite_hide 21
Sprite 22 Sprite_File_load 22,"img/Bullet_Diag1.bmp" Sprite_hide 22
' ********************************************************************** ' mise en place effet de vitesse N=7 et N= 8 Sprite 7 Sprite_File_load 7,"img/galaxie.bmp" : ' effet gauche
Sprite 8 Sprite_File_load 8,"img/galaxie.bmp" : ' effet droite sprite_x_position 8,(width(50) -70)
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement des sons du jeu'
sound 6 ' chargement du son N=6 lancement du missile double file_load 6,"son/Missile_launch.wav"
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' *********************************************************************** ' *********************************************************************** ' chargement musique du jeu'
sound 17 ' chargement du son N=17 file_load 17,"son/Bullet Train.mp3" play 17
sound 18 file_load 18,"son/SFB-rocket.mp3"
sound 19 file_load 19,"son/lettre_ecran.mp3" end_sub
Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
timer_on 20 play 10
sprite_show 9: pause 10: sprite_hide 9 sprite_position 23,sprite_x_position (3) ,sprite_y_position (3) sprite_show 23: pause 10: sprite_hide 23 sprite_position 24,sprite_x_position (3) ,sprite_y_position (3) sprite_show 24: pause 10: sprite_hide 24 sprite_position 25,sprite_x_position (3) ,sprite_y_position (3) sprite_show 25: pause 10: sprite_hide 25 sprite_position 26 ,sprite_x_position (3),sprite_y_position (3) sprite_show 26: pause 10: sprite_hide 26 sprite_position 27 ,sprite_x_position (3),sprite_y_position (3) sprite_show 27: pause 10: sprite_hide 27 sprite_hide 3 sprite_position 28,sprite_x_position (3) ,sprite_y_position (3) sprite_show 28: pause 10: sprite_hide 28 sprite_show 3:pause 3 :sprite_hide 3 sprite_position 29,sprite_x_position (3) ,sprite_y_position (3) sprite_show 29: pause 10: sprite_hide 29 sprite_y_position 3,10:pause 10 PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81
sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) E_left% = sprite_x_position(3):sprite_show 3:Kills%=Kills%+1 TEXT 2,STR$(Kills%) key%=0
END_SUB
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
' <<<<<<<<<<<<<<<<<<<<<< FIN DES SUB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
Rem ====================== Les Labels ==========================
Rem ============================================================================ ' **********************************************************************
Animation: ON_KEY_DOWN 0,move deplacement_ennemie(p%)
' Vérification position avion dessus ennemi if sprite_y_position(13)< sprite_y_position (3)
PosMin%= rnd((Width(50) -100)):if PosMin%=<80 then PosMin%=81 sprite_x_position 3,PosMin%:sprite_x_position 9,sprite_x_position(3) sprite_y_position 3,0 E_left% = sprite_x_position(3):sprite_show 3
end_if
' vérification d'un crash avion_missile if sprite_y_position(13)=<(E_top% +60)
if E_left% < (P_left% +50) and E_left% >(P_left% -50) timer_off 20 sprite_hide 13:sprite_hide 3:sprite_show 9:play 10 message "Game over" goto fin
end_if
end_if
j% =j% + 1 ' bande d'effet de vitesse sprite_y_position 7,(sprite_y_position(7)-j%) sprite_y_position 8,(sprite_y_position (8)-j%)
if j%=100
j%=0 sprite_y_position 7,0 :sprite_y_position 8,0
end_if
return
Rem ============================================================================ ' **********************************************************************
Move:
key% = key_down_code
select key%
case 27 :' arrêt des boucles gosub fin
case 32 :' barre espace timer_off 20
play 6
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 4,(P_top%-25) :sprite_x_position 4,(P_left% +10) M_top% = sprite_y_position(4) sprite_show 4
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -30 :sprite_y_position 4,M_top% :M_left% = sprite_x_position(4) pause 1 :display OFF_KEY_DOWN 0 end_while
sprite_hide 4
if M_left% < (E_left% +30) and M_left% >(E_left% -30)
explosion_animation() : RETURN
end_if timer_on 20
case 37 : ' gauche
' appel du sub deplacement(valeur%) vit%=(-5)*multiple_vit% sprite_show 15:sprite_hide 12:sprite_hide 13:sprite_hide 14 deplacement(vit%):display:return
case 38 :' haut p%=1*(multiple_p%) sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 multiple_vit%=multiple_vit% +1 multiple_p%= multiple_p% +1
case 39 : ' droite vit%=5*(multiple_vit%) sprite_show 14:sprite_hide 12:sprite_hide 13:sprite_hide 15 deplacement(vit%):display:return
case 40:' bas
p%=(-1)*(multiple_p%) sprite_show 12:sprite_hide 13:sprite_hide 14 :sprite_hide 15 multiple_vit%=multiple_vit% -1 multiple_p%= multiple_p% +1
' deplacement(p%):display:return
case 87 : ' code de la touche W mettre un autre missile et un autre son
timer_off 20 play 18
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 21,(P_top%-25) :sprite_x_position 21,(P_left% +10) M_top% = sprite_y_position(21) sprite_show 21
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 21,M_top% :M_left% = sprite_x_position(21) sprite_x_position 21,sprite_x_position(21)-20
OFF_KEY_DOWN 0 end_while
sprite_hide 21
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
explosion_animation() :RETURN
end_if timer_on 20
case 88:' code de la touche X mettre un autre missile et un autre son
timer_off 20 play 18
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12 sprite_y_position 22,(P_top%-25) :sprite_x_position 22,(P_left% +10) M_top% = sprite_y_position(22)
sprite_show 22
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 22,M_top% :M_left% = sprite_x_position(22) sprite_x_position 22,sprite_x_position(22)+20
OFF_KEY_DOWN 0 end_while
sprite_hide 22
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
explosion_animation() : RETURN
end_if timer_on 20
end_select
sprite_Show 13:sprite_hide 14:sprite_hide 15 :sprite_hide 12:pause 10 ' Mise en place de l'avion à la position demandée
Return Rem =====================================================================
erreur: error_french message "Erreur à la ligne "+str$(error_line)+" "+error_type$ Return
Rem ============================================================================ ' ***********************************************************************
fin: timer_off 20
message "Merci d'avoir pris le temps de jouer" message "Vous avez éliminé " +str$(kills%)+ " ennemis !!!" terminate
return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Mar 10 Avr 2018 - 8:46 | |
| Bonjour Fhoest,
J'ai un problème, Il manque des images et des sons dans le nouveau ZIP que tu as mis à disposition.
Impossible de tester.
A+ | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Mar 10 Avr 2018 - 13:02 | |
| Bonjour à tous !
Salut Fhoest et Jean-Claude !
J'ai voulu tester aussi, la nuit dernière, mais comme dit Jean-Claude, il manque les nouveaux fichiers externes de la version 6.
En effet, le zip disponible concerne uniquement la version 5 mais sans le code source...
Et le code source ci-dessus est la version 6 sans les nouveaux fichiers...
Bonne continuation ! | |
| | | Fhoest
Nombre de messages : 97 Age : 48 Localisation : Nord Date d'inscription : 04/01/2015
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Mar 10 Avr 2018 - 20:05 | |
| Bonjour, Oups j'ai pas mis le bon zip. en même temps on est pas loin de la fête des cloches donc je suis excusé. voici le zip: Bon zip avec V6 et V5 bas et exeA bientôt. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Mar 10 Avr 2018 - 20:08 | |
| Pas grave, je regarderai demain... A+ | |
| | | Contenu sponsorisé
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... | |
| |
| | | | Le ptit plus du jeu panoramic plane suite... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |