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 |
---|
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... Mer 11 Avr 2018 - 8:34 | |
| Bonjour à tous, @Fhoest, Je viens de tester la version 6 (l'exe) Cette fois, on est bien. Tout est fluide et la difficulté est progressive, SUPER Je n'ai pas encore regardé le code, et ce ne sera pas aujourd'hui.... En attendant, je te félicite car depuis le début de l'aventure tu as fait d'énormes progrès. 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... Mer 11 Avr 2018 - 12:00 | |
| Finalement, je viens de prendre 1/4 d'heure sur le code. J'ai vu 2 choses:1) tu peux supprimer la variable "F_Width%" en changeant la partie du code ci dessous - Code:
-
' Fin de boucle masquer le texte d'accueil HIDE 1 :Left 1,(width(0)-50)
2) la variable speed% n'est pas utilisée. J'ai joué une partie de 5 mn environ avec le casque (Musique étrange, mais sympa). Tout à fonctionné parfaitement. Suggestions: 1) pour le comptage des points, tu pourrais compter les ennemis qui réussisse à passer sans être abattus. Ensuite (à la fin) tu fait un décompte pour calculer la note 2) une touche pause pour que je puisse répondre au téléphone et reprendre la partie après avoir envoyé paître le vendeur de cuisines... Bon courage pour la suite, bravo | |
| | | 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... Mer 11 Avr 2018 - 17:46 | |
| Salut et merci pour les compliments. musique étrange mais sympa, oui en fait j'aime ce genre de musique et c'est assez difficile de trouver une musique de jeu qui plait à tous. En effet j'avais mis au début de code des variables qui peuvent être enlevées tel que speed% et l'autre que tu as suggéré d'enlever. je vais voir pour faire ces modifications, et ensuite je ferais évoluer le jeu suite à tes recommandations intéressantes. j'ai aussi envie de donner un peu de style au compteur car une simple boite de texte n'est pas à mon gout pour cette décoration de jeu. mais le design pour moi doit être secondaire au fonctionnement du code. Alors tu vas la changer ta cuisine ?? bonne fin de journée ,sur ce je vais profiter un peu du rayon de soleil car je ne suis pas dans le VAR. et ici le temps est variable comme si Panoramic avait nommer une Variable Temps et que dans le nord elle est bloquée en boucle sur "Mauvais temps" @ 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... Mer 11 Avr 2018 - 18:30 | |
| Question Temps, dans le var on prépare la prochaine sécheresse. En clair, il pleut sans discontinuer depuis hier et ça ne s’arrêtera que samedi, d'après Météo-France. Pour le vendeur de cuisine je luis ai dit de rappeler dans 10 ans... 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... Mer 11 Avr 2018 - 23:12 | |
| Bonsoir, voici la version N°7 en fichier zip: Jeu avion V7Ajout des différentes performances de la partie comme suggéré par Jean Claude. visible en fin de partie. Réorganisation complète des numéros d'objet et suppression des variables inutiles du programme. Mise en place d'un bouton de reprise après une pause téléphonique suite au démarcheur de vente de cuisine, sur l'appui de la touche P, pour pause durant la partie. reprise du jeu par le bouton reprise sur le bas à gauche. Ce qu'il y a encore à corriger (la gestion complète du non retour avion ennemi en marche arrière et vitesse maxi des deux avions (ami et ennemi) Chez moi toujours un bug en fin de partie qui nécessite une intervention dans le gestionnaire de tâches, malgré le "Terminate" pour la décharge des objets, et libération de la mémoire. Bonne amusement et à bientôt pour de précieux conseils. | |
| | | 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... Jeu 12 Avr 2018 - 7:52 | |
| Salut, Je regarde ça dans la journée. 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... Jeu 12 Avr 2018 - 9:26 | |
| Voici mon compte rendu: 1) les 3 variables couleurR,couleurG,couleurB ne sont pas utilisées. 2) Dans le code ci_dessous, tu verras que j'ai déplacé la création de l'ALPHA 1 en ligne 133. La raison est que si on passe l'intro, l'ALPHA n'est pas crée et donc ça coince quand le programme arrive à la ligne 697 (caption 1 ,"": show 1). 3) tu peux te passer de la variable key% voir ligne 521 du code ci-dessous. 4) J'ai eu le plantage dont tu parles, sans bien comprendre comment j'ai fait. Mais je pense qu'il est possible que se soit à cause d'une tentative de fermeture du programme par la croix rouge de FORM 0, mais ça ne le fait pas à tous les coups. Pour palier à ce problème il existe la commande ON_CLOSE Dans le code ci_dessous, j'ai déclaré le label Quit (ligne 69), j'ai ajouté cet événement on_close 0,Quit (en ligne 122). Le sous-programme Quit: est à la fin du code (ligne 738). Avantage de ON_CLOSE, on sort sans heurt... - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' gestion des couleurs par RGB dim couleurR,couleurG,couleurB
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Variables de statistiques du jeu ' Objet Ennemy destruction ok dim Kills%
' Tir missile droit sans destructions dim TirDroitRate%
' Tir missile oblique sans destructions dim TirObliqueRate%
' Tir missile droit avec destructions dim TirDroitOk%
' Tir missile oblique avec destructions dim TirObliqueOk%
' Avion enemmi passé sans destruction dim AvionEnnemyOk%
' 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%
' variable de memoire appuie touche
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse 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,reprise,Quit
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 Edit ' Numéro 10 - 20 Son ' Numéro 1 - xx Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer ' Numéro 70 Boutons ' à 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
' empêcher le redimensionnement border_small 0
' sortie par la croix rouge on_close 0,Quit
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== 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
' 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 60 on_timer 60,animation timer_interval 60,50 ' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 70 top 70,(height(50)-40):left 70,(width (0) -150) caption 70, "Exit" on_click 70,fin
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu Button 71 top 71,(height(50)-40):left 71,80 caption 71,"Reprise jeu" on_click 71,Reprise show 71 ' **********************************************************************
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 (5)> (width(50)-130) then exit_sub if valeur% <0 and sprite_x_position (6)< 80 then exit_sub
x%=x%+valeur% :P_left% = sprite_x_position(5)
sprite_x_position 1,(250 +x%) :sprite_x_position 2,(250 +x%) sprite_x_position 5,(250 +x%) :sprite_x_position 6,(250 +x%) p_left%=250+x%
if scancode=0 sprite_hide 1:sprite_hide 5:sprite_hide 6 pause 1 sprite_show 2 end_if end_sub
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu Sub annonce_jeu()
compteur%=0
While compteur% < 4
play 14 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,(width(0)-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 1 Sprite_File_load 1,"img/Plane_down.bmp" Sprite_position 1,250,(height(50)-150) sprite_hide 1
' Sprite avion d'attaque Sprite 2 Sprite_File_load 2,"img/Plane_up.bmp" Sprite_position 2,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 (2) : P_left% = sprite_X_position (2)
' 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 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 avion d'attaque Sprite 5 Sprite_File_load 5,"img/Plane_right.bmp" Sprite_position 5,250,(height(50)-150) Sprite_hide 5
' Sprite avion d'attaque Sprite 6 Sprite_File_load 6,"img/Plane_left.bmp" Sprite_position 6,250,(height(50)-150) Sprite_hide 6
' 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)
' ********************************************************************** ' 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
Sprite 10 Sprite_File_load 10,"img/Bullet_Diag2.bmp" Sprite_hide 10
Sprite 11 Sprite_File_load 11,"img/Bullet_Diag1.bmp" Sprite_hide 11 ' Mise en place d'un contrôle sprite explosion 1 Sprite 12 Sprite_File_load 12,"img/Explosion_2.bmp" Sprite_hide 12
' Mise en place d'un contrôle sprite explosion 2 Sprite 13 Sprite_File_load 13,"img/Explosion_3.bmp" Sprite_hide 13
' Mise en place d'un contrôle sprite explosion 3 Sprite 14 Sprite_File_load 14,"img/Explosion_4.bmp" Sprite_hide 14
' Mise en place d'un contrôle sprite explosion 4 Sprite 15 Sprite_File_load 15,"img/Explosion_5.bmp" Sprite_hide 15
' Mise en place d'un contrôle sprite explosion 5 Sprite 16 Sprite_File_load 16,"img/Explosion_6.bmp" Sprite_hide 16
' Mise en place d'un contrôle sprite explosion 6 Sprite 17 Sprite_File_load 17,"img/Explosion_7.bmp" Sprite_hide 17
' Mise en place d'un contrôle sprite explosion 7 Sprite 18 Sprite_File_load 18,"img/Explosion_8.bmp" Sprite_hide 18
' ********************************************************************** ' **********************************************************************
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' chargement des sons du jeu'
sound 11 ' chargement du son N=11 lancement du missile double file_load 11,"son/Missile_launch.wav"
' ***********************************************************************
' *********************************************************************** ' chargement musique du jeu'
sound 12 ' chargement du son N=17 file_load 12,"son/Bullet Train.mp3" play 12
sound 13 file_load 13,"son/SFB-rocket.mp3"
sound 14 file_load 14,"son/lettre_ecran.mp3" end_sub
Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
timer_on 60 play 10
sprite_show 9: pause 10: sprite_hide 9 sprite_position 12,sprite_x_position (3) ,sprite_y_position (3) sprite_show 12: pause 10: sprite_hide 12 sprite_position 13,sprite_x_position (3) ,sprite_y_position (3) sprite_show 13: pause 10: sprite_hide 13 sprite_position 14,sprite_x_position (3) ,sprite_y_position (3) sprite_show 14: pause 10: sprite_hide 14 sprite_position 15 ,sprite_x_position (3),sprite_y_position (3) sprite_show 15: pause 10: sprite_hide 15 sprite_position 16 ,sprite_x_position (3),sprite_y_position (3) sprite_show 16: pause 10: sprite_hide 16 sprite_hide 3 sprite_position 17,sprite_x_position (3) ,sprite_y_position (3) sprite_show 17: pause 10: sprite_hide 17 sprite_show 3:pause 3 :sprite_hide 3 sprite_position 18,sprite_x_position (3) ,sprite_y_position (3) sprite_show 18: pause 10: sprite_hide 18 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
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(2)< 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 AvionEnnemyOk%=AvionEnnemyOk%+1
end_if
' vérification d'un crash avion_missile if sprite_y_position(2)=<(E_top% +60)
if E_left% < (P_left% +50) and E_left% >(P_left% -50) timer_off 60 sprite_hide 2: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:
select key_down_code
case 27 :' arrêt des boucles gosub fin
case 32 :' barre espace timer_off 60
play 11
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 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)
TirDroitOk% =TirDroitOk% +1 explosion_animation() : RETURN
else TirDroitRate% =TirDroitRate% +1 end_if timer_on 60
case 37 : ' gauche
' appel du sub deplacement(valeur%) vit%=(-5)*multiple_vit% sprite_show 6:sprite_hide 1:sprite_hide 2:sprite_hide 5 deplacement(vit%):display:return
case 38 :' haut p%=1*(multiple_p%) sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 multiple_vit%=multiple_vit% +1 multiple_p%= multiple_p% +1
case 39 : ' droite vit%=5*(multiple_vit%) sprite_show 5:sprite_hide 1:sprite_hide 2:sprite_hide 6 deplacement(vit%):display:return
case 40:' bas
p%=(-1)*(multiple_p%) sprite_show 1:sprite_hide 2:sprite_hide 5 :sprite_hide 6 multiple_vit%=multiple_vit% -1 multiple_p%= multiple_p% +1 case 80: ' Pause téléphone pour commande cuisine de JC
timer_off 60 off_key_down 0
' deplacement(p%):display:return
case 87 : ' code de la touche W mettre un autre missile et un autre son
timer_off 60 play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 10,(P_top%-25) :sprite_x_position 10,(P_left% +10) M_top% = sprite_y_position(10) sprite_show 10
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 10,M_top% :M_left% = sprite_x_position(10) sprite_x_position 10,sprite_x_position(10)-20
OFF_KEY_DOWN 0 end_while
sprite_hide 10
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() :RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if timer_on 60
case 88:' code de la touche X mettre un autre missile et un autre son
timer_off 60 play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 11,(P_top%-25) :sprite_x_position 11,(P_left% +10) M_top% = sprite_y_position(11)
sprite_show 11
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 11,M_top% :M_left% = sprite_x_position(11) sprite_x_position 11,sprite_x_position(11)+20
OFF_KEY_DOWN 0 end_while
sprite_hide 11
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() : RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if timer_on 60
end_select
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1: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 ============================================================================ ' *************************Cuisine JC commandée **********************************
reprise: set_focus 0 on_key_down 0,move timer_on 60 Return
Rem =====================================================================
Rem ============================================================================ ' ***********************************************************************
fin:
hide 70 : hide 71 timer_off 60 hide 50 caption 1 ,"": show 1 FOR i%=50 to 250 step 2 color 0,i%,i%,i% pause 30 NEXT i%
' Résultat du jeu monTexte$(0)= "Statistiques de la partie:" monTexte$(1)= " Tir de missile de face avec destruction = " + Str$(TirDroitOk%) + " Contre " + Str$(TirDroitRate%) + " sans destruction..." monTexte$(2)= " Tir de missile en diagonale avec destruction = " + Str$(TirObliqueOk%) + " Contre " + Str$(TirObliqueRate%) + " sans destruction..." monTexte$(3)=" Nombre d'avion ennemi détruit = " + Str$(Kills%)+ " Contre " + str$(AvionEnnemyOk%)+ " passé sans être détruit..."
compteur%=0
While compteur% < 4
play 14 pause 150 for j%=1 to len(MonTexte$ (compteur%))
lettre$=left$(Montexte$(compteur%),j%)
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10)
caption 1,lettre$
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10) pause 200: display
next j% compteur% =compteur% +1
End_While
message "Merci d'avoir pris le temps de jouer"
terminate
return
Quit: terminate return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
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... Jeu 12 Avr 2018 - 20:48 | |
| Bonsoir, merci pour les précisions de codes à modifier et du Quit ,je vais essayer et revenir vers toi à ce sujet car chez moi j'ai le souci trés souvent. au sujet de la variable Key% je l'ai mis au début du développement après avoir déjà utiliser la proposition que tu me donnes, il faut que je regarde le fil afin de voir qui m'avais donner le code de select case, car plusieurs d'entre vous m'ont aidé et je ne sais plus qui avait déjà donner ce code avec le Key_down_code le fait est que je dois enlever les variables qui ne servent plus à rien, du au remaniement du code. Je reviendrai vers toi, afin de poster cette nouvelle version avec tes modifications. 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... Ven 13 Avr 2018 - 8:16 | |
| Bonjour Fhoest, Pour SELECT/CASE c'est au tout début de ce post. C'est notre ami Papydall, qui te l'a suggéré. Je reviens sur ON_CLOSE: Quand l'utilisateur clique sur la croix rouge du FORM, le programme va exécuter le sous-programme indiqué et fermer le programme. Ce qui veut dire que tu peux te passer du bouton "Exit". Exemple dans le code ci-dessous: - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' gestion des couleurs par RGB dim couleurR,couleurG,couleurB
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Variables de statistiques du jeu ' Objet Ennemy destruction ok dim Kills%
' Tir missile droit sans destructions dim TirDroitRate%
' Tir missile oblique sans destructions dim TirObliqueRate%
' Tir missile droit avec destructions dim TirDroitOk%
' Tir missile oblique avec destructions dim TirObliqueOk%
' Avion enemmi passé sans destruction dim AvionEnnemyOk%
' 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%
' variable de memoire appuie touche
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse 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,reprise,Quit
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 Edit ' Numéro 10 - 20 Son ' Numéro 1 - xx 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
' empêcher le redimensionnement border_small 0
' sortie par la croix rouge on_close 0,fin
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== 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
' 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 60 on_timer 60,animation timer_interval 60,50 ' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem =====================================================================
Rem ===================================================================== ' creation d'un bouton de sortie du jeu Button 71 top 71,(height(50)-40):left 71,80 caption 71,"Reprise jeu" on_click 71,Reprise show 71 ' **********************************************************************
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 (5)> (width(50)-130) then exit_sub if valeur% <0 and sprite_x_position (6)< 80 then exit_sub
x%=x%+valeur% :P_left% = sprite_x_position(5)
sprite_x_position 1,(250 +x%) :sprite_x_position 2,(250 +x%) sprite_x_position 5,(250 +x%) :sprite_x_position 6,(250 +x%) p_left%=250+x%
if scancode=0 sprite_hide 1:sprite_hide 5:sprite_hide 6 pause 1 sprite_show 2 end_if end_sub
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu Sub annonce_jeu()
compteur%=0
While compteur% < 4
play 14 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,(width(0)-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 1 Sprite_File_load 1,"img/Plane_down.bmp" Sprite_position 1,250,(height(50)-150) sprite_hide 1
' Sprite avion d'attaque Sprite 2 Sprite_File_load 2,"img/Plane_up.bmp" Sprite_position 2,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 (2) : P_left% = sprite_X_position (2)
' 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 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 avion d'attaque Sprite 5 Sprite_File_load 5,"img/Plane_right.bmp" Sprite_position 5,250,(height(50)-150) Sprite_hide 5
' Sprite avion d'attaque Sprite 6 Sprite_File_load 6,"img/Plane_left.bmp" Sprite_position 6,250,(height(50)-150) Sprite_hide 6
' 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)
' ********************************************************************** ' 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
Sprite 10 Sprite_File_load 10,"img/Bullet_Diag2.bmp" Sprite_hide 10
Sprite 11 Sprite_File_load 11,"img/Bullet_Diag1.bmp" Sprite_hide 11 ' Mise en place d'un contrôle sprite explosion 1 Sprite 12 Sprite_File_load 12,"img/Explosion_2.bmp" Sprite_hide 12
' Mise en place d'un contrôle sprite explosion 2 Sprite 13 Sprite_File_load 13,"img/Explosion_3.bmp" Sprite_hide 13
' Mise en place d'un contrôle sprite explosion 3 Sprite 14 Sprite_File_load 14,"img/Explosion_4.bmp" Sprite_hide 14
' Mise en place d'un contrôle sprite explosion 4 Sprite 15 Sprite_File_load 15,"img/Explosion_5.bmp" Sprite_hide 15
' Mise en place d'un contrôle sprite explosion 5 Sprite 16 Sprite_File_load 16,"img/Explosion_6.bmp" Sprite_hide 16
' Mise en place d'un contrôle sprite explosion 6 Sprite 17 Sprite_File_load 17,"img/Explosion_7.bmp" Sprite_hide 17
' Mise en place d'un contrôle sprite explosion 7 Sprite 18 Sprite_File_load 18,"img/Explosion_8.bmp" Sprite_hide 18
' ********************************************************************** ' **********************************************************************
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' chargement des sons du jeu'
sound 11 ' chargement du son N=11 lancement du missile double file_load 11,"son/Missile_launch.wav"
' ***********************************************************************
' *********************************************************************** ' chargement musique du jeu'
sound 12 ' chargement du son N=17 file_load 12,"son/Bullet Train.mp3" play 12
sound 13 file_load 13,"son/SFB-rocket.mp3"
sound 14 file_load 14,"son/lettre_ecran.mp3" end_sub
Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
timer_on 60 play 10
sprite_show 9: pause 10: sprite_hide 9 sprite_position 12,sprite_x_position (3) ,sprite_y_position (3) sprite_show 12: pause 10: sprite_hide 12 sprite_position 13,sprite_x_position (3) ,sprite_y_position (3) sprite_show 13: pause 10: sprite_hide 13 sprite_position 14,sprite_x_position (3) ,sprite_y_position (3) sprite_show 14: pause 10: sprite_hide 14 sprite_position 15 ,sprite_x_position (3),sprite_y_position (3) sprite_show 15: pause 10: sprite_hide 15 sprite_position 16 ,sprite_x_position (3),sprite_y_position (3) sprite_show 16: pause 10: sprite_hide 16 sprite_hide 3 sprite_position 17,sprite_x_position (3) ,sprite_y_position (3) sprite_show 17: pause 10: sprite_hide 17 sprite_show 3:pause 3 :sprite_hide 3 sprite_position 18,sprite_x_position (3) ,sprite_y_position (3) sprite_show 18: pause 10: sprite_hide 18 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
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(2)< 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 AvionEnnemyOk%=AvionEnnemyOk%+1
end_if
' vérification d'un crash avion_missile if sprite_y_position(2)=<(E_top% +60)
if E_left% < (P_left% +50) and E_left% >(P_left% -50) timer_off 60 sprite_hide 2: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:
select key_down_code
case 27 :' arrêt des boucles gosub quit
case 32 :' barre espace timer_off 60
play 11
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 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)
TirDroitOk% =TirDroitOk% +1 explosion_animation() : RETURN
else TirDroitRate% =TirDroitRate% +1 end_if timer_on 60
case 37 : ' gauche
' appel du sub deplacement(valeur%) vit%=(-5)*multiple_vit% sprite_show 6:sprite_hide 1:sprite_hide 2:sprite_hide 5 deplacement(vit%):display:return
case 38 :' haut p%=1*(multiple_p%) sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 multiple_vit%=multiple_vit% +1 multiple_p%= multiple_p% +1
case 39 : ' droite vit%=5*(multiple_vit%) sprite_show 5:sprite_hide 1:sprite_hide 2:sprite_hide 6 deplacement(vit%):display:return
case 40:' bas
p%=(-1)*(multiple_p%) sprite_show 1:sprite_hide 2:sprite_hide 5 :sprite_hide 6 multiple_vit%=multiple_vit% -1 multiple_p%= multiple_p% +1 case 80: ' Pause téléphone pour commande cuisine de JC
timer_off 60 off_key_down 0
' deplacement(p%):display:return
case 87 : ' code de la touche W mettre un autre missile et un autre son
timer_off 60 play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 10,(P_top%-25) :sprite_x_position 10,(P_left% +10) M_top% = sprite_y_position(10) sprite_show 10
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 10,M_top% :M_left% = sprite_x_position(10) sprite_x_position 10,sprite_x_position(10)-20
OFF_KEY_DOWN 0 end_while
sprite_hide 10
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() :RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if timer_on 60
case 88:' code de la touche X mettre un autre missile et un autre son
timer_off 60 play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 11,(P_top%-25) :sprite_x_position 11,(P_left% +10) M_top% = sprite_y_position(11)
sprite_show 11
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 11,M_top% :M_left% = sprite_x_position(11) sprite_x_position 11,sprite_x_position(11)+20
OFF_KEY_DOWN 0 end_while
sprite_hide 11
if M_left% < (E_left% +40) and M_left% >(E_left% -40)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() : RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if timer_on 60
end_select
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1: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 ============================================================================ ' *************************Cuisine JC commandée **********************************
reprise: set_focus 0 on_key_down 0,move timer_on 60 Return
Rem =====================================================================
Rem ============================================================================ ' ***********************************************************************
fin:
hide 71 timer_off 60 hide 50 caption 1 ,"": show 1 FOR i%=50 to 250 step 2 color 0,i%,i%,i% pause 30 NEXT i%
' Résultat du jeu monTexte$(0)= "Statistiques de la partie:" monTexte$(1)= " Tir de missile de face avec destruction = " + Str$(TirDroitOk%) + " Contre " + Str$(TirDroitRate%) + " sans destruction..." monTexte$(2)= " Tir de missile en diagonale avec destruction = " + Str$(TirObliqueOk%) + " Contre " + Str$(TirObliqueRate%) + " sans destruction..." monTexte$(3)=" Nombre d'avion ennemi détruit = " + Str$(Kills%)+ " Contre " + str$(AvionEnnemyOk%)+ " passé sans être détruit..."
compteur%=0
While compteur% < 4
play 14 pause 150 for j%=1 to len(MonTexte$ (compteur%))
lettre$=left$(Montexte$(compteur%),j%)
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10)
caption 1,lettre$
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10) pause 200: display
next j% compteur% =compteur% +1
End_While
message "Merci d'avoir pris le temps de jouer"
terminate
return
Quit: terminate return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' Tu vois que j'ai redirigé la touche [Echap] pour une sortie "brutale" par terminate du programme et si l'utilisateur sort par la croix rouge il a droit aux résultats. Et il n'y plus de bouton "Exit". Tout ça, ce sont des propositions, à toi de les valider ou pas suivant ce que tu as besoin. | |
| | | 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 13 Avr 2018 - 20:56 | |
| Bonjour Jean Claude ,le forum pour ce qui est du bouton exit c'est sympa mais je souhaite le garder je changerai sa form dans le futur on y mettant un contrôle Picture ou Sprite ( je vais voir leurs événements). une question me vient à l'esprit vu que l'on parle de cette croix de fermeture. Y a t il possibilité de l'ôter Bien sur c'est une question ou il ne faut pas se précipiter pour me répondre car je vais regarder si je trouve cette solution et ce même si quelqu'un d'entre vous me donne la réponse entre temps. Pour revenir au bouton Exit , ta solution est tout de même intéressante, dans la sortie pour le code: Car si je joue avec un Joystick , cela serait fort intéressant d'utiliser comme fin de jeu non pas un bouton,mais une touche du clavier. Ainsi il n'y aura pas une multitude d'outils pour le jeu. le clavier + le joystick et la souris Ce sont des choix à faire. A bientôt pour une nouvelle version avec la gestion maxi et ennemi sous contrôle correcte quasiment prête. | |
| | | 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... Ven 13 Avr 2018 - 21:15 | |
| - Fhoest a écrit:
- pour ce qui est du bouton exit c'est sympa mais je souhaite le garder je changerai sa form dans le futur on y mettant un contrôle Picture ou Sprite ( je vais voir leurs événements).
une question me vient à l'esprit vu que l'on parle de cette croix de fermeture. Y a t il possibilité de l'ôter Oui il y a des possibilités (par DLL), mais il y a aussi la commande BORDER_HIDE à la place de BORDER_SMALL. Dans le cas où tu utilises cette commande, le bouton "Exit" ou une sortie par le clavier est indispensable. Je te laisse le soins de la tester. A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 14 Avr 2018 - 0:23 | |
| - Fhoest a écrit:
- une question me vient à l'esprit vu que l'on parle de cette croix de fermeture.
Y a t il possibilité de l'ôter Je te propose de faire un petit détour par ici; tu y trouveras peut-être de quoi satisfaire ta curiosité | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 14 Avr 2018 - 16:10 | |
| Ouh, oui, ça commence à devenir joli, bravo ! | |
| | | 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 14 Avr 2018 - 19:33 | |
| Bonsoir, merci à vous trois. Jean claude,Papydall,Jjn4 je vais regarder vos propositions et ,j'ai vite fais jeté un oeil pendant que mon épouse était dans la cabine d'essayage sur le sujet que papydall à proposer et il me semble que c'est exactement cela que je cherche. je vais tenter ce soir d'adapter cela au code. A+ tard. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le ptit plus du jeu panoramic plane suite... Sam 14 Avr 2018 - 20:00 | |
| - Citation :
- j'ai vite fais jeté un oeil pendant que ...
Question : Quand on jette son œil, comment peut-on le récupérer ? Bon, du calme, je sors! | |
| | | 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 14 Avr 2018 - 20:19 | |
| En fait, on ne sait pas bien où Fhoest à jeté son œil ! Si c'est "dans la cabine d'essayage", je comprends qu'il n'a pas trop le temps de jeter l'autre sur le code. Bon, je sors aussi ! | |
| | | 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 14 Avr 2018 - 21:07 | |
| bande de petit je vous adore.... En fait mon oeil à glisser sous le rideau et Ops, comment voulez vous que je m'en sorte avec le code,pas possible de faire une analyse avec ces formes, elles sont tout de même mieux que la form de Panoramic et me maintiennent bien en forme. Je vais cesser ces belles formules et me remettre au code. 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 14 Avr 2018 - 21:12 | |
| | |
| | | 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 14 Avr 2018 - 23:23 | |
| Bonsoir, voici le code de la version 10 - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Variables de statistiques du jeu ' Objet Ennemy destruction ok dim Kills%,resultatmission$ resultatmission$ = "ratée"
' Tir missile droit sans destructions dim TirDroitRate%
' Tir missile oblique sans destructions dim TirObliqueRate%
' Tir missile droit avec destructions dim TirDroitOk%
' Tir missile oblique avec destructions dim TirObliqueOk%
' Avion enemmi passé sans destruction dim AvionEnnemyOk%
' munition pour atteindre votre objectif dim Totalmissile% ,TotalTireMissile%
' 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%
' variable de memoire appuie touche
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse 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$ ' Objectifs dim NBRAVION%
' <<<<<<<<<<<<<<<<<<<< Fin de déclaration variables >>>>>>>>>>>>>>>>>>>>
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,erreur,reprise,Quit
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 Edit ' Numéro 10 - 20 Son ' Numéro 1 - xx Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer ' Numéro 70 Boutons ' à 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
' empêcher le redimensionnement
border_hide 0
' sortie par la croix rouge on_close 0,Quit
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== ALPHA 1 :TOP 1 ,100 : LEFT 1,210 :font_size 1,50 font_bold 1:font_color 1,255,0,0 ' mettre en place cette liste ici pour avoir l'objectif < 0 ' Objectif de la mission while NBRAVION% < 15 NBRAVION%= rnd(25) end_while Totalmissile% = NBRAVION% + rnd(20) ' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= "Bienvenue..." monTexte$(1)= "Panoramic Plane" monTexte$(2)= "Objectif de votre mission " + str$(NBRAVION%) + " à détruire" monTexte$(3)= "Munition disponnible pour cette mission = " + str$(Totalmissile%)
' ----------------------------------------------------------- ' 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 60 on_timer 60,animation timer_interval 60,50 ' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 70 top 70,(height(50)-40):left 70,(width (0) -150) caption 70, "Exit" on_click 70,fin
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de reprise du jeu Button 71 top 71,(height(50)-40):left 71,80 caption 71,"Reprise jeu" on_click 71,Reprise show 71 ' **********************************************************************
End_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ---------------------------------------------------------------------- Rem ===================================================================== ' Creation d'un sub déplacement de l'avion ennemi sub deplacement_ennemi(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 (5)> (width(50)-130) then exit_sub if valeur% <0 and sprite_x_position (6)< 80 then exit_sub
x%=x%+valeur% :P_left% = sprite_x_position(5)
sprite_x_position 1,(250 +x%) :sprite_x_position 2,(250 +x%) sprite_x_position 5,(250 +x%) :sprite_x_position 6,(250 +x%) p_left%=250+x%
if scancode=0 sprite_hide 1:sprite_hide 5:sprite_hide 6 pause 1 sprite_show 2 end_if end_sub
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu Sub annonce_jeu()
compteur%=0
While compteur% < 4 pause 300 play 14 pause 300
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,(width(0)-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 1 Sprite_File_load 1,"img/Plane_down.bmp" Sprite_position 1,250,(height(50)-150) sprite_hide 1
' Sprite avion d'attaque Sprite 2 Sprite_File_load 2,"img/Plane_up.bmp" Sprite_position 2,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 (2) : P_left% = sprite_X_position (2)
' 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 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 avion d'attaque Sprite 5 Sprite_File_load 5,"img/Plane_right.bmp" Sprite_position 5,250,(height(50)-150) Sprite_hide 5
' Sprite avion d'attaque Sprite 6 Sprite_File_load 6,"img/Plane_left.bmp" Sprite_position 6,250,(height(50)-150) Sprite_hide 6
' 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)
' ********************************************************************** ' 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
Sprite 10 Sprite_File_load 10,"img/Bullet_Diag2.bmp" Sprite_hide 10
Sprite 11 Sprite_File_load 11,"img/Bullet_Diag1.bmp" Sprite_hide 11 ' Mise en place d'un contrôle sprite explosion 1 Sprite 12 Sprite_File_load 12,"img/Explosion_2.bmp" Sprite_hide 12
' Mise en place d'un contrôle sprite explosion 2 Sprite 13 Sprite_File_load 13,"img/Explosion_3.bmp" Sprite_hide 13
' Mise en place d'un contrôle sprite explosion 3 Sprite 14 Sprite_File_load 14,"img/Explosion_4.bmp" Sprite_hide 14
' Mise en place d'un contrôle sprite explosion 4 Sprite 15 Sprite_File_load 15,"img/Explosion_5.bmp" Sprite_hide 15
' Mise en place d'un contrôle sprite explosion 5 Sprite 16 Sprite_File_load 16,"img/Explosion_6.bmp" Sprite_hide 16
' Mise en place d'un contrôle sprite explosion 6 Sprite 17 Sprite_File_load 17,"img/Explosion_7.bmp" Sprite_hide 17
' Mise en place d'un contrôle sprite explosion 7 Sprite 18 Sprite_File_load 18,"img/Explosion_8.bmp" Sprite_hide 18
' ********************************************************************** ' **********************************************************************
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' chargement des sons du jeu'
sound 11 ' chargement du son N=11 lancement du missile double file_load 11,"son/Missile_launch.wav"
' ***********************************************************************
' *********************************************************************** ' chargement musique du jeu'
sound 12 ' chargement du son N=17 file_load 12,"son/Bullet Train.mp3" play 12
sound 13 file_load 13,"son/SFB-rocket.mp3"
sound 14 file_load 14,"son/lettre_ecran.mp3" end_sub
Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
timer_on 60 play 10
sprite_show 9: pause 10: sprite_hide 9 sprite_position 12,sprite_x_position (3) ,sprite_y_position (3) sprite_show 12: pause 10: sprite_hide 12 sprite_position 13,sprite_x_position (3) ,sprite_y_position (3) sprite_show 13: pause 10: sprite_hide 13 sprite_position 14,sprite_x_position (3) ,sprite_y_position (3) sprite_show 14: pause 10: sprite_hide 14 sprite_position 15 ,sprite_x_position (3),sprite_y_position (3) sprite_show 15: pause 10: sprite_hide 15 sprite_position 16 ,sprite_x_position (3),sprite_y_position (3) sprite_show 16: pause 10: sprite_hide 16 sprite_hide 3 sprite_position 17,sprite_x_position (3) ,sprite_y_position (3) sprite_show 17: pause 10: sprite_hide 17 sprite_show 3:pause 3 :sprite_hide 3 sprite_position 18,sprite_x_position (3) ,sprite_y_position (3) sprite_show 18: pause 10: sprite_hide 18 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
if TotalTireMissile% => Totalmissile%
if kills% = nbravion% resultatmission$= "accomplie" gosub fin end_if
resultatmission$= "ratée, épuisement du stock de missiles" gosub fin
end_if
if kills% = nbravion% resultatmission$= "accomplie" gosub fin end_if
END_SUB
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
' <<<<<<<<<<<<<<<<<<<<<< FIN DES SUB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
Rem ====================== Les Labels ==========================
Rem ============================================================================ ' **********************************************************************
Animation:
ON_KEY_DOWN 0,move deplacement_ennemi(p%)
' Vérification position avion dessus ennemi if sprite_y_position(2)< 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 AvionEnnemyOk%=AvionEnnemyOk%+1
end_if
' vérification d'un crash avion_missile if sprite_y_position(2)=<(E_top% +60)
if E_left% < (P_left% +50) and E_left% >(P_left% -50) timer_off 60 sprite_hide 2: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:
select key_down_code
case 27 :' arrêt des boucles gosub fin
case 32 :' barre espace timer_off 60 TotalTireMissile% = TotalTireMissile% +1 play 11
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 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)
TirDroitOk% =TirDroitOk% +1 explosion_animation() : RETURN
else TirDroitRate% =TirDroitRate% +1 end_if
timer_on 60
case 37 : ' gauche
' appel du sub deplacement(valeur%) vit%=(-5)*multiple_vit% sprite_show 6:sprite_hide 1:sprite_hide 2:sprite_hide 5 deplacement(vit%):display:return
case 38 :' haut
p%=multiple_p% sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 if multiple_vit%=<5 then multiple_vit%=multiple_vit% +1 if multiple_p%=<5 then multiple_p%= multiple_p% +1
case 39 : ' droite
vit%=5*(multiple_vit%) sprite_show 5:sprite_hide 1:sprite_hide 2:sprite_hide 6 deplacement(vit%):display:return
case 40:' bas
p%=(multiple_p%) sprite_show 1:sprite_hide 2:sprite_hide 5 :sprite_hide 6 if multiple_vit%=>2 then multiple_vit%=multiple_vit% -1 if multiple_p%=>2 then multiple_p%= multiple_p% -1
case 80: ' Pause téléphone pour commande cuisine de JC
timer_off 60 off_key_down 0
' deplacement(p%):display:return
case 87 : ' code de la touche W mettre un autre missile et un autre son
timer_off 60 TotalTireMissile% =TotalTireMissile%+1 play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 10,(P_top%-25) :sprite_x_position 10,(P_left% +10) M_top% = sprite_y_position(10) sprite_show 10
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 10,M_top% :M_left% = sprite_x_position(10) sprite_x_position 10,sprite_x_position(10)-20
OFF_KEY_DOWN 0 end_while
sprite_hide 10
if M_left% < (E_left% +50) and M_left% >(E_left% -50)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() :RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if
timer_on 60
case 88:' code de la touche X mettre un autre missile et un autre son
timer_off 60 TotalTireMissile%=TotalTireMissile%+1 play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 11,(P_top%-25) :sprite_x_position 11,(P_left% +10) M_top% = sprite_y_position(11)
sprite_show 11
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 11,M_top% :M_left% = sprite_x_position(11) sprite_x_position 11,sprite_x_position(11)+20
OFF_KEY_DOWN 0 end_while
sprite_hide 11
if M_left% < (E_left% +50) and M_left% >(E_left% -50)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() : RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if timer_on 60
end_select
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1: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 ============================================================================ ' *************************Cuisine JC commandée **********************************
reprise: set_focus 0 on_key_down 0,move timer_on 60 Return
Rem =====================================================================
Rem ============================================================================ ' ***********************************************************************
fin:
hide 70 : hide 71 timer_off 60 hide 50 caption 1 ,"": show 1 FOR i%=50 to 250 step 2 color 0,i%,i%,i% pause 30 NEXT i%
' Résultat du jeu monTexte$(0)= "Mission " + resultatmission$ monTexte$(1)= " Tir de missile de face avec destruction = " + Str$(TirDroitOk%) + " Contre " + Str$(TirDroitRate%) + " sans destruction..." monTexte$(2)= " Tir de missile en diagonale avec destruction = " + Str$(TirObliqueOk%) + " Contre " + Str$(TirObliqueRate%) + " sans destruction..." monTexte$(3)=" Nombre d'avion ennemi détruit = " + Str$(Kills%)+ " Contre " + str$(AvionEnnemyOk%)+ " passé sans être détruit..."
compteur%=0
While compteur% < 4
play 14 pause 150 for j%=1 to len(MonTexte$ (compteur%))
lettre$=left$(Montexte$(compteur%),j%)
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10)
caption 1,lettre$
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10) pause 200: display
next j% compteur% =compteur% +1
End_While
message "Merci d'avoir pris le temps de jouer"
terminate
return
Quit: terminate return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' Ajout du masquage de la croix de la form avec instruction border_hide (conseillé par jean claude) cette solution correspond meiux pour moi que la proposition de Papydall néanmoins la solution de papydall reste très intéressante pour ma culture panoramic. ensuite ajout d'objectif de mission avec quantité de missile afin d'augmenter la difficulté du jeu j'adapterai le texte de fin plus tard puis je proposerai une relance du jeu. La suite à laquelle j'ai pensé est une barre d'animation en fonction des ennemis abattus. 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... Dim 15 Avr 2018 - 9:05 | |
| Bonjour, Version testée et approuvée. J'ai rempli la mission 24 ennemis abattus pour 26 tirs. Aucun ennemis n'est passés. Rien à signalé dans le code, sauf un commentaire sur une commande cuisine... 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 15 Avr 2018 - 22:49 | |
| Bonsoir, voici la version 11: - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Variables de statistiques du jeu ' Objet Ennemy destruction ok dim Kills%,resultatmission$ resultatmission$ = "ratée"
' Tir missile droit sans destructions dim TirDroitRate%
' Tir missile oblique sans destructions dim TirObliqueRate%
' Tir missile droit avec destructions dim TirDroitOk%
' Tir missile oblique avec destructions dim TirObliqueOk%
' Avion enemmi passé sans destruction dim AvionEnnemyOk%
' munition pour atteindre votre objectif dim Totalmissile% ,TotalTireMissile%
' 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%
' variable de memoire appuie touche
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse Dim p% p%=5 ' vitesse de déplacement du vaisseau "ami" DIM vit% , multiple_vit% ,multiple_p% vit%=5 multiple_vit%=1 multiple_p% = 1 ' ----------------------------------------------------------- Dim lettre$ ' Objectifs dim NBRAVION%
dim decoupeprogbarM% ,decoupeprogbarK% ' <<<<<<<<<<<<<<<<<<<< Fin de déclaration variables >>>>>>>>>>>>>>>>>>>>
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,erreur,reprise,Quit
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 Edit ' Numéro 10 - 20 Son ' Numéro 1 - xx Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer ' Numéro 70 Boutons ' à 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
' empêcher le redimensionnement
border_hide 0
' sortie par la croix rouge on_close 0,Quit
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== ALPHA 1 :TOP 1 ,100 : LEFT 1,210 :font_size 1,50 font_bold 1:font_color 1,255,0,0 ' mettre en place cette liste ici pour avoir l'objectif < 0 ' Objectif de la mission while NBRAVION% < 15 NBRAVION%= rnd(25) end_while Totalmissile% = NBRAVION% + rnd(20)
' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= "Bienvenue..." monTexte$(1)= "Panoramic Plane" monTexte$(2)= "Objectif de votre mission " + str$(NBRAVION%) + " à détruire" monTexte$(3)= "Munition disponnible pour cette mission = " + str$(Totalmissile%)
' ----------------------------------------------------------- ' 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 60 on_timer 60,animation timer_interval 60,50 ' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 70 top 70,(height(50)-40):left 70,(width (0) -150) caption 70, "Exit" on_click 70,fin
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de reprise du jeu Button 71 top 71,(height(50)-40):left 71,80 caption 71,"Reprise jeu" on_click 71,Reprise show 71
Rem ===================================================================== Progress_bar 61: ' Munition width 61,(((width(0)/2) - width(71))-80):height 61,25 top 61,(height(50)-40):left 61, left(71) +5 + width(71) Position 61,width (61) decoupeprogbarM% =((width(61)/position(61))*Totalmissile%)
Progress_bar 62: ' AvionAbattu width 62,width(61):height 62,25 top 62,(height(50)-40):left 62,(left(70)-width(62)-5) position 62, width (62) decoupeprogbarK% =((width(62)/position(62))*NBRAVION%) position 62,0
' **********************************************************************
End_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ---------------------------------------------------------------------- Rem ===================================================================== ' Creation d'un sub déplacement de l'avion ennemi sub deplacement_ennemi(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 (5)> (width(50)-130) then exit_sub if valeur% <0 and sprite_x_position (6)< 80 then exit_sub
x%=x%+valeur% :P_left% = sprite_x_position(5)
sprite_x_position 1,(250 +x%) :sprite_x_position 2,(250 +x%) sprite_x_position 5,(250 +x%) :sprite_x_position 6,(250 +x%) p_left%=250+x%
if scancode=0 sprite_hide 1:sprite_hide 5:sprite_hide 6 pause 1 sprite_show 2 end_if end_sub
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu Sub annonce_jeu()
compteur%=0
While compteur% < 4 pause 300 play 14 pause 300
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,(width(0)-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 1 Sprite_File_load 1,"img/Plane_down.bmp" Sprite_position 1,250,(height(50)-150) sprite_hide 1
' Sprite avion d'attaque Sprite 2 Sprite_File_load 2,"img/Plane_up.bmp" Sprite_position 2,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 (2) : P_left% = sprite_X_position (2)
' 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 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 avion d'attaque Sprite 5 Sprite_File_load 5,"img/Plane_right.bmp" Sprite_position 5,250,(height(50)-150) Sprite_hide 5
' Sprite avion d'attaque Sprite 6 Sprite_File_load 6,"img/Plane_left.bmp" Sprite_position 6,250,(height(50)-150) Sprite_hide 6
' 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)
' ********************************************************************** ' 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
Sprite 10 Sprite_File_load 10,"img/Bullet_Diag2.bmp" Sprite_hide 10
Sprite 11 Sprite_File_load 11,"img/Bullet_Diag1.bmp" Sprite_hide 11 ' Mise en place d'un contrôle sprite explosion 1 Sprite 12 Sprite_File_load 12,"img/Explosion_2.bmp" Sprite_hide 12
' Mise en place d'un contrôle sprite explosion 2 Sprite 13 Sprite_File_load 13,"img/Explosion_3.bmp" Sprite_hide 13
' Mise en place d'un contrôle sprite explosion 3 Sprite 14 Sprite_File_load 14,"img/Explosion_4.bmp" Sprite_hide 14
' Mise en place d'un contrôle sprite explosion 4 Sprite 15 Sprite_File_load 15,"img/Explosion_5.bmp" Sprite_hide 15
' Mise en place d'un contrôle sprite explosion 5 Sprite 16 Sprite_File_load 16,"img/Explosion_6.bmp" Sprite_hide 16
' Mise en place d'un contrôle sprite explosion 6 Sprite 17 Sprite_File_load 17,"img/Explosion_7.bmp" Sprite_hide 17
' Mise en place d'un contrôle sprite explosion 7 Sprite 18 Sprite_File_load 18,"img/Explosion_8.bmp" Sprite_hide 18
' ********************************************************************** ' **********************************************************************
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' chargement des sons du jeu'
sound 11 ' chargement du son N=11 lancement du missile double file_load 11,"son/Missile_launch.wav"
' ***********************************************************************
' *********************************************************************** ' chargement musique du jeu'
sound 12 ' chargement du son N=17 file_load 12,"son/Bullet Train.mp3" play 12
sound 13 file_load 13,"son/SFB-rocket.mp3"
sound 14 file_load 14,"son/lettre_ecran.mp3" end_sub
Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
timer_on 60 play 10
sprite_show 9: pause 10: sprite_hide 9 sprite_position 12,sprite_x_position (3) ,sprite_y_position (3) sprite_show 12: pause 10: sprite_hide 12 sprite_position 13,sprite_x_position (3) ,sprite_y_position (3) sprite_show 13: pause 10: sprite_hide 13 sprite_position 14,sprite_x_position (3) ,sprite_y_position (3) sprite_show 14: pause 10: sprite_hide 14 sprite_position 15 ,sprite_x_position (3),sprite_y_position (3) sprite_show 15: pause 10: sprite_hide 15 sprite_position 16 ,sprite_x_position (3),sprite_y_position (3) sprite_show 16: pause 10: sprite_hide 16 sprite_hide 3 sprite_position 17,sprite_x_position (3) ,sprite_y_position (3) sprite_show 17: pause 10: sprite_hide 17 sprite_show 3:pause 3 :sprite_hide 3 sprite_position 18,sprite_x_position (3) ,sprite_y_position (3) sprite_show 18: pause 10: sprite_hide 18 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
if TotalTireMissile% => Totalmissile%
if kills% = nbravion% resultatmission$= "accomplie" gosub fin end_if
resultatmission$= "ratée, épuisement du stock de missiles" gosub fin
end_if
if kills% = nbravion% resultatmission$= "accomplie" gosub fin end_if
position 62, (position(62) + width(62)/decoupeprogbarK% )
END_SUB
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
' <<<<<<<<<<<<<<<<<<<<<< FIN DES SUB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
Rem ====================== Les Labels ==========================
Rem ============================================================================ ' **********************************************************************
Animation:
ON_KEY_DOWN 0,move deplacement_ennemi(p%)
' Vérification position avion dessus ennemi if sprite_y_position(2)< 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 AvionEnnemyOk%=AvionEnnemyOk%+1
end_if
' vérification d'un crash avion_missile if sprite_y_position(2)=<(E_top% +60)
if E_left% < (P_left% +50) and E_left% >(P_left% -50) timer_off 60 sprite_hide 2: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:
select key_down_code
case 27 :' arrêt des boucles gosub fin
case 32 :' barre espace timer_off 60 TotalTireMissile% = TotalTireMissile% +1 position 61, (position(61) - width(61)/decoupeprogbarM% ) :display
play 11
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 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)
TirDroitOk% =TirDroitOk% +1 explosion_animation() : RETURN
else TirDroitRate% =TirDroitRate% +1 end_if
timer_on 60
case 37 : ' gauche
' appel du sub deplacement(valeur%) vit%=(-5)*multiple_vit% sprite_show 6:sprite_hide 1:sprite_hide 2:sprite_hide 5 deplacement(vit%):display:return
case 38 :' haut
if multiple_p% <4 then p%=multiple_p% sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 if multiple_vit%=<5 then multiple_vit%=multiple_vit% +1 if multiple_p%=<8 then multiple_p%= multiple_p% +1
case 39 : ' droite
vit%=5*(multiple_vit%) sprite_show 5:sprite_hide 1:sprite_hide 2:sprite_hide 6 deplacement(vit%):display:return
case 40:' bas
p%=(multiple_p%) sprite_show 1:sprite_hide 2:sprite_hide 5 :sprite_hide 6 if multiple_vit%=>2 then multiple_vit%=multiple_vit% -1 if multiple_p%=>2 then multiple_p%= multiple_p% -1
case 80: ' Pause téléphone pour commande cuisine de JC
timer_off 60 off_key_down 0
' deplacement(p%):display:return
case 87 : ' code de la touche W mettre un autre missile et un autre son
timer_off 60 TotalTireMissile% =TotalTireMissile%+1 position 61, (position(61) - width(61)/decoupeprogbarM% ) :display play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 10,(P_top%-25) :sprite_x_position 10,(P_left% +10) M_top% = sprite_y_position(10) sprite_show 10
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 10,M_top% :M_left% = sprite_x_position(10) sprite_x_position 10,sprite_x_position(10)-20
OFF_KEY_DOWN 0 end_while
sprite_hide 10
if M_left% < (E_left% +50) and M_left% >(E_left% -50)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() :RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if
timer_on 60
case 88:' code de la touche X mettre un autre missile et un autre son
timer_off 60 TotalTireMissile%=TotalTireMissile%+1 position 61, (position(61) - width(61)/decoupeprogbarM% ) :display play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 11,(P_top%-25) :sprite_x_position 11,(P_left% +10) M_top% = sprite_y_position(11)
sprite_show 11
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 11,M_top% :M_left% = sprite_x_position(11) sprite_x_position 11,sprite_x_position(11)+20
OFF_KEY_DOWN 0 end_while
sprite_hide 11
if M_left% < (E_left% +50) and M_left% >(E_left% -50)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() : RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if timer_on 60
end_select
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1: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 ============================================================================ ' *************************Cuisine JC commandée **********************************
reprise: set_focus 0 on_key_down 0,move timer_on 60 Return
Rem =====================================================================
Rem ============================================================================ ' ***********************************************************************
fin:
hide 70 : hide 71 timer_off 60 hide 50 caption 1 ,"": show 1 FOR i%=50 to 250 step 2 color 0,i%,i%,i% pause 30 NEXT i%
' Résultat du jeu monTexte$(0)= "Mission " + resultatmission$ monTexte$(1)= " Tir de missile de face avec destruction = " + Str$(TirDroitOk%) + " Contre " + Str$(TirDroitRate%) + " sans destruction..." monTexte$(2)= " Tir de missile en diagonale avec destruction = " + Str$(TirObliqueOk%) + " Contre " + Str$(TirObliqueRate%) + " sans destruction..." monTexte$(3)=" Nombre d'avion ennemi détruit = " + Str$(Kills%)+ " Contre " + str$(AvionEnnemyOk%)+ " passé sans être détruit..."
compteur%=0
While compteur% < 4
play 14 pause 150 for j%=1 to len(MonTexte$ (compteur%))
lettre$=left$(Montexte$(compteur%),j%)
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10)
caption 1,lettre$
TOP 1 ,250 : LEFT 1,(width (0)/2) -(width (1)/2) -(j% * 10) pause 200: display
next j% compteur% =compteur% +1
End_While
message "Merci d'avoir pris le temps de jouer"
terminate
return
Quit: terminate return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' Ajout de progressbar gestion des missiles disponibles et destruction d'avion. mon seul regret si cela pourrait être mis en place serait la gestion des couleurs des progressbars 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... Lun 16 Avr 2018 - 9:22 | |
| Bonjour, J'ai testé et je n'ai pas réussi la mission. Le vitesse de déplacement du vaisseau ami est trop lente. Puis je me suis souvenu qu'on pouvait tirer en diagonale et là ça devient possible. Une remarque: on ne peut plus utiliser [Echap] pour passer les résultats. Si tu veux que cela reste ainsi, il faut que tu places OFF_KEY_DOWN 0 au début du sous-programme fin:, pour éviter des bizarreries d'affichage des résultats. Pour les progress_bar, je ne comprends pas bien l' utilité de celle de gauche, elle est pleine dès le départ. 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 16 Avr 2018 - 17:54 | |
| Bonjour et merci de prendre le temps de regarder oui ,ok pour la gestion de echap, c'est à améliorer, afin d'augmenter la vitesse du vaisseau ami comme celle de ennemi il suffit d'appuyer sur la flèche du haut, puis bas pour diminuer cette vitesse. La vitesse ami sera toujours inférieure pour augmenter la difficulté mais c'est possible de l'augmenter ainsi. les progress bar ne sont pas encore top, celle de gauche est le décompte des missiles disponibles (elle est pleine au début car on à X missiles dans la réserve), ensuite elle décompte. l'autre progress bar est à l'inverse elle compte le nombre d'avion abattu et leurs longueur dépendent des valeurs avion à détruire et missiles dispo. C'est un test ,il faut encore améliorer la communication des valeurs des barres de progressions,puis la mise en forme hide etc... comme les bouton, je dois également déplacer le code de fin de mission qui ne doit pas obligatoirement se trouver dans le sous programme "explosion". 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 16 Avr 2018 - 18:25 | |
| Bonsoir Fhoest,
Je pense qu'il est temps maintenant de faire une aide qui indique les touches à utiliser et leur utilité. Tu as plusieurs possibilité pour visualiser cette aide: 1) un simple message au début, juste avant le message pour l'intro. ou 2) un bouton "Aide" ou 3) une touche clavier: par exemple [A] ou [F1]
Bon courage pour la suite.
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 16 Avr 2018 - 22:45 | |
| Oui pas une bête idée, je vais voir pour manipuler une fichier texte,et par la suite je pourrais même faire plusieurs comptes avec des résultats enregistrés sur le fichier texte. mais chaque choses en son temps. voici la dernière version V12: - Code:
-
Rem ========================================================== ' Les Variables ' ************************************************************
' Variables de comptage ' Boucles dim i%,compteur%,j%
' Variables de statistiques du jeu ' Objet Ennemy destruction ok dim Kills%,resultatmission$ resultatmission$ = "ratée"
' Tir missile droit sans destructions dim TirDroitRate%
' Tir missile oblique sans destructions dim TirObliqueRate%
' Tir missile droit avec destructions dim TirDroitOk%
' Tir missile oblique avec destructions dim TirObliqueOk%
' Avion enemmi passé sans destruction dim AvionEnnemyOk%
' munition pour atteindre votre objectif dim Totalmissile% ,TotalTireMissile%
' 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%
' variable de memoire appuie touche
' Variable position minimale left ennemy Dim PosMin%
' variable vitesse Dim p% p%=5 ' vitesse de déplacement du vaisseau "ami" DIM vit% , multiple_vit% ,multiple_p% vit%=5 multiple_vit%=1 multiple_p% = 1 ' ----------------------------------------------------------- Dim lettre$ ' Objectifs dim NBRAVION%
dim decoupeprogbarM% ,decoupeprogbarK% ' <<<<<<<<<<<<<<<<<<<< Fin de déclaration variables >>>>>>>>>>>>>>>>>>>>
REM définition des LABELS ' ====================================== LABEL Move,fin,animation,erreur,reprise,Quit
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 Edit ' Numéro 10 - 20 Son ' Numéro 1 - xx Sprite = image ' Numéro 50 Scene2D ' Numéro 60 Timer ' Numéro 70 Boutons ' à 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
' empêcher le redimensionnement
border_hide 0
' sortie par la croix rouge on_close 0,Quit
' **********************************************************************
Rem ===================================================================== ' Mise en place d'un texte d'accueil et de gestion des points merci à Jean Claude
' ********************************************************************** Rem ===================================================================== ALPHA 1 :TOP 1 ,100 : LEFT 1,210 :font_size 1,25 font_bold 1:font_color 1,255,0,0 ' mettre en place cette liste ici pour avoir l'objectif < 0 ' Objectif de la mission while NBRAVION% < 15 NBRAVION%= rnd(25) end_while Totalmissile% = NBRAVION% + rnd(20)
' Tableau de valeur String dim monTexte$(3)
monTexte$(0)= "Bienvenue..." monTexte$(1)= "Panoramic Plane" monTexte$(2)= "Objectif de votre mission " + str$(NBRAVION%) + " à détruire" monTexte$(3)= "Munition disponnible pour cette mission = " + str$(Totalmissile%)
' ----------------------------------------------------------- ' 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 60 on_timer 60,animation timer_interval 60,50 ' **********************************************************************
Rem ===================================================================== ' Appel de la routine des sprites pour images Creation_des_sprites()
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de sortie du jeu
Button 70 top 70,(height(50)-40):left 70,(width (0) -150) caption 70, "Exit" on_click 70,fin
' **********************************************************************
Rem ===================================================================== ' creation d'un bouton de reprise du jeu Button 71 top 71,(height(50)-40):left 71,80 caption 71,"Reprise jeu" on_click 71,Reprise show 71
Rem ===================================================================== Progress_bar 61: ' Munition width 61,(((width(0)/2) - width(71))-80):height 61,25 top 61,(height(50)-40):left 61, left(71) +5 + width(71) Position 61,width (61) decoupeprogbarM% =((width(61)/position(61))*Totalmissile%)
Progress_bar 62: ' AvionAbattu width 62,width(61):height 62,25 top 62,(height(50)-40):left 62,(left(70)-width(62)-5) position 62, width (62) decoupeprogbarK% =((width(62)/position(62))*NBRAVION%) position 62,0
' **********************************************************************
End_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ---------------------------------------------------------------------- Rem ===================================================================== ' Creation d'un sub déplacement de l'avion ennemi sub deplacement_ennemi(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 (5)> (width(50)-130) then exit_sub if valeur% <0 and sprite_x_position (6)< 80 then exit_sub
x%=x%+valeur% :P_left% = sprite_x_position(5)
sprite_x_position 1,(250 +x%) :sprite_x_position 2,(250 +x%) sprite_x_position 5,(250 +x%) :sprite_x_position 6,(250 +x%) p_left%=250+x%
if scancode=0 sprite_hide 1:sprite_hide 5:sprite_hide 6 pause 1 sprite_show 2 end_if end_sub
Rem ===================================================================== ' Creation d'un annonce d'accueil pour le jeu Sub annonce_jeu()
compteur%=0
While compteur% < 4 pause 300 play 14 pause 300
for j%=1 to len(MonTexte$ (compteur%))
lettre$=left$(Montexte$(compteur%),j%)
TOP 1 ,300 : LEFT 1,( width (0)-( 350 + len(montexte$(compteur%)))) -(width (1)/2) -(j% * 10)
caption 1,lettre$
TOP 1 ,300 : LEFT 1,(width (0)-( 350 + len(montexte$(compteur%)))) -(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,(width(0)-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 1 Sprite_File_load 1,"img/Plane_down.bmp" Sprite_position 1,250,(height(50)-150) sprite_hide 1
' Sprite avion d'attaque Sprite 2 Sprite_File_load 2,"img/Plane_up.bmp" Sprite_position 2,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 (2) : P_left% = sprite_X_position (2)
' 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 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 avion d'attaque Sprite 5 Sprite_File_load 5,"img/Plane_right.bmp" Sprite_position 5,250,(height(50)-150) Sprite_hide 5
' Sprite avion d'attaque Sprite 6 Sprite_File_load 6,"img/Plane_left.bmp" Sprite_position 6,250,(height(50)-150) Sprite_hide 6
' 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)
' ********************************************************************** ' 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
Sprite 10 Sprite_File_load 10,"img/Bullet_Diag2.bmp" Sprite_hide 10
Sprite 11 Sprite_File_load 11,"img/Bullet_Diag1.bmp" Sprite_hide 11 ' Mise en place d'un contrôle sprite explosion 1 Sprite 12 Sprite_File_load 12,"img/Explosion_2.bmp" Sprite_hide 12
' Mise en place d'un contrôle sprite explosion 2 Sprite 13 Sprite_File_load 13,"img/Explosion_3.bmp" Sprite_hide 13
' Mise en place d'un contrôle sprite explosion 3 Sprite 14 Sprite_File_load 14,"img/Explosion_4.bmp" Sprite_hide 14
' Mise en place d'un contrôle sprite explosion 4 Sprite 15 Sprite_File_load 15,"img/Explosion_5.bmp" Sprite_hide 15
' Mise en place d'un contrôle sprite explosion 5 Sprite 16 Sprite_File_load 16,"img/Explosion_6.bmp" Sprite_hide 16
' Mise en place d'un contrôle sprite explosion 6 Sprite 17 Sprite_File_load 17,"img/Explosion_7.bmp" Sprite_hide 17
' Mise en place d'un contrôle sprite explosion 7 Sprite 18 Sprite_File_load 18,"img/Explosion_8.bmp" Sprite_hide 18
' ********************************************************************** ' **********************************************************************
end_sub
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
Rem ============================================================================ ' ***************************************************************************** Sub Creation_des_sons()
' chargement du son explosion'
sound 10 ' chargement du son N=10 file_load 10,"son/Explosion.wav"
' chargement des sons du jeu'
sound 11 ' chargement du son N=11 lancement du missile double file_load 11,"son/Missile_launch.wav"
' ***********************************************************************
' *********************************************************************** ' chargement musique du jeu'
sound 12 ' chargement du son N=17 file_load 12,"son/Bullet Train.mp3" play 12
sound 13 file_load 13,"son/SFB-rocket.mp3"
sound 14 file_load 14,"son/lettre_ecran.mp3" end_sub
Rem ===================================================================== ' *********************************************************************** SUB explosion_animation()
timer_on 60 play 10
sprite_show 9: pause 10: sprite_hide 9 sprite_position 12,sprite_x_position (3) ,sprite_y_position (3) sprite_show 12: pause 10: sprite_hide 12 sprite_position 13,sprite_x_position (3) ,sprite_y_position (3) sprite_show 13: pause 10: sprite_hide 13 sprite_position 14,sprite_x_position (3) ,sprite_y_position (3) sprite_show 14: pause 10: sprite_hide 14 sprite_position 15 ,sprite_x_position (3),sprite_y_position (3) sprite_show 15: pause 10: sprite_hide 15 sprite_position 16 ,sprite_x_position (3),sprite_y_position (3) sprite_show 16: pause 10: sprite_hide 16 sprite_hide 3 sprite_position 17,sprite_x_position (3) ,sprite_y_position (3) sprite_show 17: pause 10: sprite_hide 17 sprite_show 3:pause 3 :sprite_hide 3 sprite_position 18,sprite_x_position (3) ,sprite_y_position (3) sprite_show 18: pause 10: sprite_hide 18 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
verification_statistiques()
position 62, (position(62) + width(62)/decoupeprogbarK% )
END_SUB
SUB verification_statistiques() if TotalTireMissile% => Totalmissile%
if kills% = nbravion% resultatmission$= "accomplie" gosub fin end_if
resultatmission$= "ratée, épuisement du stock de missiles" gosub fin
end_if
if kills% = nbravion% resultatmission$= "accomplie" gosub fin end_if
END_SUB
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' ----------------------------------------------------------------------
' <<<<<<<<<<<<<<<<<<<<<< FIN DES SUB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
Rem ====================== Les Labels ==========================
Rem ============================================================================ ' **********************************************************************
Animation:
ON_KEY_DOWN 0,move deplacement_ennemi(p%)
' Vérification position avion dessus ennemi if sprite_y_position(2)< 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 AvionEnnemyOk%=AvionEnnemyOk%+1
end_if
' vérification d'un crash avion_missile if sprite_y_position(2)=<(E_top% +60)
if E_left% < (P_left% +50) and E_left% >(P_left% -50) timer_off 60 sprite_hide 2: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:
select key_down_code
case 27 :' arrêt des boucles gosub fin
case 32 :' barre espace timer_off 60 TotalTireMissile% = TotalTireMissile% +1 verification_statistiques() position 61, (position(61) - width(61)/decoupeprogbarM% ) :display
play 11
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 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)
TirDroitOk% =TirDroitOk% +1 explosion_animation() : RETURN
else TirDroitRate% =TirDroitRate% +1 end_if
timer_on 60
case 37 : ' gauche
' appel du sub deplacement(valeur%) vit%=(-5)*multiple_vit% sprite_show 6:sprite_hide 1:sprite_hide 2:sprite_hide 5 deplacement(vit%):display:return
case 38 :' haut
p%=multiple_p% sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 if multiple_vit%=<8 then multiple_vit%=multiple_vit% +1 if multiple_p%=<8 then multiple_p%= multiple_p% +3
case 39 : ' droite
vit%=5*(multiple_vit%) sprite_show 5:sprite_hide 1:sprite_hide 2:sprite_hide 6 deplacement(vit%):display:return
case 40:' bas
p%=(multiple_p%) sprite_show 1:sprite_hide 2:sprite_hide 5 :sprite_hide 6 if multiple_vit%=>2 then multiple_vit%=multiple_vit% -1 if multiple_p%=>2 then multiple_p%= multiple_p% -1
case 80: ' Pause téléphone pour commande cuisine de JC
timer_off 60 off_key_down 0
' deplacement(p%):display:return
case 87 : ' code de la touche W mettre un autre missile et un autre son
timer_off 60 TotalTireMissile% =TotalTireMissile%+1 verification_statistiques() position 61, (position(61) - width(61)/decoupeprogbarM% ) :display play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 10,(P_top%-25) :sprite_x_position 10,(P_left% +10) M_top% = sprite_y_position(10) sprite_show 10
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 10,M_top% :M_left% = sprite_x_position(10) sprite_x_position 10,sprite_x_position(10)-20
OFF_KEY_DOWN 0 end_while
sprite_hide 10
if M_left% < (E_left% +50) and M_left% >(E_left% -50)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() :RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if
timer_on 60
case 88:' code de la touche X mettre un autre missile et un autre son
timer_off 60 TotalTireMissile%=TotalTireMissile%+1 verification_statistiques() position 61, (position(61) - width(61)/decoupeprogbarM% ) :display play 13
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1 sprite_y_position 11,(P_top%-25) :sprite_x_position 11,(P_left% +10) M_top% = sprite_y_position(11)
sprite_show 11
while M_top% > E_top% OFF_KEY_DOWN 0 M_top% = M_top% -20 :sprite_y_position 11,M_top% :M_left% = sprite_x_position(11) sprite_x_position 11,sprite_x_position(11)+20
OFF_KEY_DOWN 0 end_while
sprite_hide 11
if M_left% < (E_left% +50) and M_left% >(E_left% -50)
TirObliqueOk% =TirObliqueOk% +1 explosion_animation() : RETURN
else TirObliqueRate% =TirObliqueRate% +1 end_if timer_on 60
end_select
sprite_Show 2:sprite_hide 5:sprite_hide 6 :sprite_hide 1: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 ============================================================================ ' *************************Cuisine JC commandée **********************************
reprise: set_focus 0 on_key_down 0,move timer_on 60 Return
Rem =====================================================================
Rem ============================================================================ ' ***********************************************************************
fin:
hide 70 : hide 71:hide 61:hide 62 timer_off 60 hide 50 if message_confirmation_yes_no ("Afficher les statistiques de la partie ?")=1 caption 1 ,"": show 1
FOR i%=50 to 250 step 2 color 0,i%,i%,i% pause 30 NEXT i%
' Résultat du jeu monTexte$(0)= "Mission " + resultatmission$ monTexte$(1)= " Tir de missile de face avec destruction = " + Str$(TirDroitOk%) + " Contre " + Str$(TirDroitRate%) + " sans destruction..." monTexte$(2)= " Tir de missile en diagonale avec destruction = " + Str$(TirObliqueOk%) + " Contre " + Str$(TirObliqueRate%) + " sans destruction..." monTexte$(3)=" Nombre d'avion ennemi détruit = " + Str$(Kills%)+ " Contre " + str$(AvionEnnemyOk%)+ " passé sans être détruit..."
compteur%=0
While compteur% < 4
play 14 pause 150 for j%=1 to len(MonTexte$ (compteur%))
lettre$=left$(Montexte$(compteur%),j%)
TOP 1 ,250 : LEFT 1,(width (0)-( 150 + len(montexte$(compteur%)))) -(width (1)/2) -(j% * 10)
caption 1,lettre$
TOP 1 ,250 : LEFT 1,(width (0)-( 150 + len(montexte$(compteur%)))) -(width (1)/2) -(j% * 10) pause 200: display
next j% compteur% =compteur% +1
End_While
end_if message "Merci d'avoir pris le temps de jouer"
terminate
return
Quit: terminate return
Rem ============================================================================ ' <<<<<<<<<<<<<<<<<<<<<< FIN DES LABELS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' A bientôt. | |
| | | 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
| |
| |
| |