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 |
|
|
| PANGINE2D | |
| | |
Auteur | Message |
---|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Jeu 18 Juin 2015 - 22:53 | |
| Non, ça se ferme tout seul car il doit y avoir une erreur quelque part.
Le truc c'est que le debuggage est vraiment fastidieux car tu n'as aucune indication te mettant sur la voie (pas de message d'erreur), donc pour le moment moi j'attendrais pour m'y remettre | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: PANGINE2D Jeu 18 Juin 2015 - 23:52 | |
| @Jicehel: Le bug se situe en ligne 39: - Code:
-
vit_ast%=160 : ' + => plus lent La variable vit_ast% n'est pas définie. Méthode de détection: placer une commande "END" dans le texte, progressivement de plus en plus loin, en revenant en arrière pour diviser l'intervalle ajouté par 2 en cas de plantage, etc - jusqu'à trouver la ligne concernée. Méthode classique. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: PANGINE2D Jeu 18 Juin 2015 - 23:53 | |
| Jicehel j'ai cherché, cherché, etc... Le problème vient de la ligne41 - Code:
-
vit_ast%=160 :' + => plus lent Et de la ligne 108 - Code:
-
wait vit_ast% La variable vit_ast% n’est déclarée par DIM nulle part !!! Aussi il est préférable d'utilise pause à la place de wait.EDIT :Comme toujours, Klaus est le plus rapide !!! J’ai utilisé exactement la même technique : mettre des END, c’est pourquoi j’ai perdu la numérotation exacte des lignes EDIT 2 La ligne 146 pose problème - Code:
-
px2%=sprite_X_position(nsp2%) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 1:11 | |
| Merci à vous deux pour le debuggage. Du coup j'ai modifié le programme de Jean-Claude. Il est tard, je n'ai pas ajouté une tonne de commentaires, mais si tu as besoin d'explications, demande et je t'expliquerais. - Code:
-
' essai8.bas avec tir, collision, explosion (Jean Claude, Jicehel, Papydall) rem ============================================================================ caption "Utilisez les touches du panneau numérique (1,2,3,4,6,7,8,9) ** SPACE pour tirer ** ESC pour sortir"
dim pi : pi = acos(-1) : ' mémorise la valeur pi dim x%,y%,vit_vai% : ' position et vitesse du vaisseau dim d : d = pi/2 : ' direction (c'est le cap) de départ du vaisseau (vers le haut) dim xA%,yA%,vit_ast_x%, vit_ast_y% : ' position et vitesse de l'asteroid dim a_v% : ' stock le numéro correpondant à la diretion du sprite actuel pour voir s'il change dim tir$,tir%, tir_x,tir_y,tir_d,vit_mis% : ' Resultat du tir, Tir actif ou non, coord en x et en y du tir et mémoristion de la direction et vitesse
' Déclaration des étiquettes label touche,boucle_principale, fin
' création des sptites SPRITE 1 : SPRITE_FILE_LOAD 1,"image/VBG.bmp" : SPRITE_HIDE 1 SPRITE 2 : SPRITE_FILE_LOAD 2,"image/VB.bmp" : SPRITE_HIDE 2 SPRITE 3 : SPRITE_FILE_LOAD 3,"image/VBD.bmp" : SPRITE_HIDE 3 SPRITE 4 : SPRITE_FILE_LOAD 4,"image/VG.bmp" : SPRITE_HIDE 4 SPRITE 5 : SPRITE_FILE_LOAD 5,"image/VD.bmp" : SPRITE_HIDE 5 SPRITE 6 : SPRITE_FILE_LOAD 6,"image/VHG.bmp" : SPRITE_HIDE 6 SPRITE 7 : SPRITE_FILE_LOAD 7,"image/VH.bmp" : SPRITE_HIDE 7 SPRITE 8 : SPRITE_FILE_LOAD 8,"image/VHD.bmp" : SPRITE_HIDE 8 SPRITE 9 : SPRITE_FILE_LOAD 9,"image/balle.bmp" : SPRITE_HIDE 9 : ' un missile SPRITE_ANIMATED 10 : SPRITE_ANIMATED_FILE_LOAD 10,1,8,"image/rock8.bmp" : SPRITE_HIDE 10 : ' astéroide SPRITE_ANIMATED 11 : SPRITE_ANIMATED_FILE_LOAD 11,5,5,"image/meteore.bmp" : SPRITE_HIDE 11 : ' explosion astéroide
' init tir% = 0 : ' Au début pas de tir actif x%=(screen_x/2)+32 : y%=700 : sprite_position 7,x%,y% : a_v% = 7 : SPRITE_SHOW 7
' scene2D scene2d_interval 500 : scene2d_on file_load "image/espace.bmp"
' réglages vit_vai% = 8 :' + => plus rapide vit_mis%=12 :' + => plus rapide
new_asteroide() : SPRITE_SHOW 10 : ' Créé l'astéroid initial
on_key_down 0,touche : ' Active la gestion de l'appuie des touches
timer 2 : timer_interval 2,50 : on_timer 2,boucle_principale : ' Activation du timer qui activera les tours de jeu
END
rem ============================================================================ touche: ' Touches du pavé numérique if KEY_DOWN_CODE = 97 then d=1 : move(1) : ' 1 End if KEY_DOWN_CODE = 40 or KEY_DOWN_CODE = 98 then d=2 : move(2) : ' 2 Bas if KEY_DOWN_CODE = 99 then d=3 : move(3) : ' 3 PgDn if KEY_DOWN_CODE = 37 or KEY_DOWN_CODE = 100 then d=4 : move(4) : ' 4 gauche if KEY_DOWN_CODE = 39 or KEY_DOWN_CODE = 102 then d=5 : move(5) : ' 5 droite if KEY_DOWN_CODE = 103 then d=6 : move(6) : ' 6 Home if KEY_DOWN_CODE = 38 or KEY_DOWN_CODE = 104 then d=7 : move(7) : ' 7 haut if KEY_DOWN_CODE = 105 then d=8 : move(8) : ' 8 PgUp if KEY_DOWN_CODE = 27 then gosub fin : ' Echap if KEY_DOWN_CODE = 32 AND tir% = 0 tir% = 1 : tir_d = d : ' On mémorise qu'un tir est actif et la direction de ce tir ' On ajuste la position initale du tir en fonction de la direction du vaisseau if d = 5*pi/4 then tir_x = x% + 11 : tir_y = y% + 33 if d = 3*pi/2 then tir_x = x% + 22 : tir_y = y% + 44 if d = 7*pi/4 then tir_x = x% + 33 : tir_y = y% + 33 if d = pi then tir_x = x% : tir_y = y% + 22 if d = 0 then tir_x = x% + 44 : tir_y = y% + 22 if d = 3*pi/4 then tir_x = x% + 11 : tir_y = y% + 11 if d = pi/2 then tir_x = x% + 22 : tir_y = y% if d = pi/4 then tir_x = x% + 33 : tir_y = y% + 11 sprite_position 9,tir_x, tir_y : SPRITE_SHOW 9 end_if : ' Fin du traitement d'un appuie sur espace return
rem ============================================================================ boucle_principale: timer_off 2 asteroide() : ' On gère notre asteroid pour ce tour if tir% = 1 then tir() : ' Si un tir est actif, on gère son tour timer_on 2 return
rem ============================================================================ ' New_astéroide SUB new_asteroide() vit_ast_x%= 0 : vit_ast_y%= 0 : ' On initialise le compteur pour un lancé aléatoire while (abs(vit_ast_x%) + abs(vit_ast_y%)) < 5 : ' On fixe une vitesse minimale en dessous vit_ast_x%=rnd(20) - 10 : vit_ast_y%=rnd(20) - 10 : ' de laquelle on n'accepte pas le tirage end_while : ' la vitesse peut être positive ou négative xA% = screen_x + 10 : yA% = screen_y + 10 : ' on fixe la position de départ de l'astéroid en bas à droite if vit_ast_x% > 0 then xA%=-10 : ' si la vitesse en x est positive, on change le point de départ à gauche if vit_ast_y% > 0 then yA%=-10 : ' si la vitesse en y est positive, on change le point de départ en haut sprite_position 10,xA%,yA% : ' on positionne notre asteroide END_SUB
rem ============================================================================ ' astéroide SUB asteroide() if ((xA% < (0-10)) and (vit_ast_x% < 0)) then new_asteroide() if ((xA% > (screen_x + 10)) and (vit_ast_x% > 0)) then new_asteroide() if ((yA% < (0-10)) and (vit_ast_y% < 0)) then new_asteroide() if ((yA% > (screen_y + 10)) and (vit_ast_y% > 0)) then new_asteroide() xA%=xA%+vit_ast_x% : yA%=yA%+vit_ast_y% : sprite_position 10,xA%,yA% END_SUB rem ============================================================================ ' Tirer une balle dans l'une des 8 directions possibles du sprite SUB tir() tir_x = tir_x + cos(tir_d)* vit_mis% : tir_y = tir_y - sin(tir_d) * vit_mis% if (cos(tir_d) > 0 and tir_x > screen_x) or (cos(tir_d) < 0 and tir_x < 0 ) or (sin(tir_d) < 0 and tir_y > screen_y) or (sin(tir_d) > 0 and tir_y < 0 ) then tir% = 0 : SPRITE_HIDE 9 sprite_position 9,tir_x, tir_y : ' Mouvement de la balle du tir Collision_AABB(tir_x,tir_y,16,16,xA%,yA%, 22,24) if tir$="OK" then tir_ok() END_SUB
rem ============================================================================ SUB tir_ok() ' animation de la destruction de la cible tir% = 0 : SPRITE_HIDE 9 sprite_position 11,(xA% - 40),(yA% - 40) : SPRITE_SHOW 11 : sprite_animated_frames 11,8,14 pause 2000 : SPRITE_HIDE 10 : SPRITE_HIDE 11 new_asteroide(): SPRITE_SHOW 10 END_SUB
rem ============================================================================ SUB Collision_AABB(r1_x%,r1_y%,r1_width,r1_height,r2_x%,r2_y%, r2_width,r2_height) Tir$="OK" IF ((r2_x% >= (r1_x% + r1_width)) OR ((r2_x% + r2_width) <= r1_x%) OR (r2_y% >= (r1_y% + r1_height)) OR ((r2_y% + r2_height) <= r1_y%)) THEN Tir$="" END_SUB
rem ============================================================================ ' d est la direction (le cap) que prendra le sprite SUB move(nsp%) select nsp% case 1 : x% = x% - vit_vai% : y% = y% + vit_vai% : d = 5*pi/4 case 2 : y% = y% + vit_vai% : d = 3*pi/2 case 3 : x% = x% + vit_vai% : y% = y% + vit_vai% : d = 7*pi/4 case 4 : x% = x% - vit_vai% : d = pi case 5 : x% = x% + vit_vai% : d = 0 case 6 : x% = x% - vit_vai% : y% = y% - vit_vai% : d = 3*pi/4 case 7 : y% = y% - vit_vai% : d = pi/2 case 8 : x% = x% + vit_vai% : y% = y% - vit_vai% : d = pi/4 end_select if nsp% <> a_v% then sprite_hide a_v% : a_v% = nsp% : sprite_show nsp% ' Le mode ENROULE : si le sprite sort de la zone , il réapparait de l'autre côté if x% < 0 then x% = screen_x if x% > screen_x then x% = 0 if y% < 0 then y% = screen_y if y% > screen_y then y% = 0 sprite_position nsp%,x%,y% END_SUB rem ============================================================================
fin: terminate return Je t'ai juste remis le code d'applomb. Les wait c'est absolument à éviter ça ralenti le jeu. Tu peux jouer sur l'intervalle du timer, mais ne jamais mettre de timer avec des valeurs trop petites, ça ne peut que provoquer des problèmes. Si tu veux faire varier la vitesse, tu mets un compteur de boucle et tu dis par exemple que tu bouge l'asteroide toutes les 5 fois que la procédure principale s’exécute. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 8:28 | |
| Bravo Jicehel, Joli travail, ça fonctionne impeccable. J'ai vu que tu as terminé le remplacement de la SUB verif_tir() par collisionAABB(..........), ta méthode est meilleur que la mienne, car on a pas besoin de reprendre la position des sprites à l'intérieur de la SUB, vu qu'elle sont passées en paramètres. Franchement, je te félicite, sachant qu'il faut pratiquement lancer le programme à chaque fois, que tu ajoutes une ligne, pour voir si ça plante, et si ça ne plante pas, c'est même pas sur que ce soit bon... Il faut du courage pour programmer à l'aveuglette. Mais bon, Jack va nous arranger ça, il faut que l'on soit patient. j'ai légèrement retouché le code pour que l'on puisse voir l'animation de l'explosion en entier avec "scene2d_interval". Grâce à cette commande on peut régler des vitesses d'animation différentes pour chaque SPRITE_ANIMATED. Et j'ai placé un OFF_KEY_DOWN pendant la durée de cette animation, car sinon ça plante si on continu de jouer. Voir le code ci-dessous. @Papydall, la variable vit_ast% n'était pas déclarée par DIM. Je ne m'en était pas rendu compte. Utiliser Pause à la place de wait: tu as raison de le signaler, mais on peut avoir besoin de stopper l'exécution du programme. MERCI A VOUS TOUS. Voici la première version "aboutie" que j’appellerais "Chasseur d'astéroïde". Il n'y a pas de comptage des points acquis, c'est une version d'entrainement. - Code:
-
' essai8.bas avec tir, collision, explosion (Jean Claude, Jicehel, Papydall) rem ============================================================================ caption "Utilisez les touches du panneau numérique (1,2,3,4,6,7,8,9) ** SPACE pour tirer ** ESC pour sortir"
dim pi : pi = acos(-1) : ' mémorise la valeur pi dim x%,y%,vit_vai% : ' position et vitesse du vaisseau dim d : d = pi/2 : ' direction (c'est le cap) de départ du vaisseau (vers le haut) dim xA%,yA%,vit_ast_x%, vit_ast_y% : ' position et vitesse de l'asteroid dim a_v% : ' stock le numéro correpondant à la diretion du sprite actuel pour voir s'il change dim tir$,tir%, tir_x,tir_y,tir_d,vit_mis% : ' Resultat du tir, Tir actif ou non, coord en x et en y du tir et mémoristion de la direction et vitesse
' Déclaration des étiquettes label touche,boucle_principale, fin
' création des sptites SPRITE 1 : SPRITE_FILE_LOAD 1,"image/VBG.bmp" : SPRITE_HIDE 1 SPRITE 2 : SPRITE_FILE_LOAD 2,"image/VB.bmp" : SPRITE_HIDE 2 SPRITE 3 : SPRITE_FILE_LOAD 3,"image/VBD.bmp" : SPRITE_HIDE 3 SPRITE 4 : SPRITE_FILE_LOAD 4,"image/VG.bmp" : SPRITE_HIDE 4 SPRITE 5 : SPRITE_FILE_LOAD 5,"image/VD.bmp" : SPRITE_HIDE 5 SPRITE 6 : SPRITE_FILE_LOAD 6,"image/VHG.bmp" : SPRITE_HIDE 6 SPRITE 7 : SPRITE_FILE_LOAD 7,"image/VH.bmp" : SPRITE_HIDE 7 SPRITE 8 : SPRITE_FILE_LOAD 8,"image/VHD.bmp" : SPRITE_HIDE 8 SPRITE 9 : SPRITE_FILE_LOAD 9,"image/balle.bmp" : SPRITE_HIDE 9 : ' un missile SPRITE_ANIMATED 10 : SPRITE_ANIMATED_FILE_LOAD 10,1,8,"image/rock8.bmp" : SPRITE_HIDE 10 : ' astéroide SPRITE_ANIMATED 11 : SPRITE_ANIMATED_FILE_LOAD 11,5,5,"image/meteore.bmp" : SPRITE_HIDE 11 : ' explosion astéroide
' init tir% = 0 : ' Au début pas de tir actif x%=(screen_x/2)+32 : y%=700 : sprite_position 7,x%,y% : a_v% = 7 : SPRITE_SHOW 7
' scene2D file_load "image/espace.bmp"
' réglages vit_vai% = 8 :' + => plus rapide vit_mis%=20 :' + => plus rapide
new_asteroide() : SPRITE_SHOW 10 : ' Créé l'astéroid initial
on_key_down 0,touche : ' Active la gestion de l'appuie des touches
timer 2 : timer_interval 2,50 : on_timer 2,boucle_principale : ' Activation du timer qui activera les tours de jeu
END
rem ============================================================================ touche: ' Touches du pavé numérique if KEY_DOWN_CODE = 97 then d=1 : move(1) : ' 1 End if KEY_DOWN_CODE = 40 or KEY_DOWN_CODE = 98 then d=2 : move(2) : ' 2 Bas if KEY_DOWN_CODE = 99 then d=3 : move(3) : ' 3 PgDn if KEY_DOWN_CODE = 37 or KEY_DOWN_CODE = 100 then d=4 : move(4) : ' 4 gauche if KEY_DOWN_CODE = 39 or KEY_DOWN_CODE = 102 then d=5 : move(5) : ' 5 droite if KEY_DOWN_CODE = 103 then d=6 : move(6) : ' 6 Home if KEY_DOWN_CODE = 38 or KEY_DOWN_CODE = 104 then d=7 : move(7) : ' 7 haut if KEY_DOWN_CODE = 105 then d=8 : move(8) : ' 8 PgUp if KEY_DOWN_CODE = 27 then gosub fin : ' Echap if KEY_DOWN_CODE = 32 AND tir% = 0 tir% = 1 : tir_d = d : ' On mémorise qu'un tir est actif et la direction de ce tir ' On ajuste la position initale du tir en fonction de la direction du vaisseau if d = 5*pi/4 then tir_x = x% + 11 : tir_y = y% + 33 if d = 3*pi/2 then tir_x = x% + 22 : tir_y = y% + 44 if d = 7*pi/4 then tir_x = x% + 33 : tir_y = y% + 33 if d = pi then tir_x = x% : tir_y = y% + 22 if d = 0 then tir_x = x% + 44 : tir_y = y% + 22 if d = 3*pi/4 then tir_x = x% + 11 : tir_y = y% + 11 if d = pi/2 then tir_x = x% + 22 : tir_y = y% if d = pi/4 then tir_x = x% + 33 : tir_y = y% + 11 sprite_position 9,tir_x, tir_y : SPRITE_SHOW 9 end_if : ' Fin du traitement d'un appuie sur espace return
rem ============================================================================ boucle_principale: timer_off 2 asteroide() : ' On gère notre asteroid pour ce tour if tir% = 1 then tir() : ' Si un tir est actif, on gère son tour timer_on 2 return
rem ============================================================================ ' New_astéroide SUB new_asteroide() scene2d_interval 500 : scene2d_on vit_ast_x%= 0 : vit_ast_y%= 0 : ' On initialise le compteur pour un lancé aléatoire while (abs(vit_ast_x%) + abs(vit_ast_y%)) < 5 : ' On fixe une vitesse minimale en dessous vit_ast_x%=rnd(20) - 10 : vit_ast_y%=rnd(20) - 10 : ' de laquelle on n'accepte pas le tirage end_while : ' la vitesse peut être positive ou négative xA% = screen_x + 10 : yA% = screen_y + 10 : ' on fixe la position de départ de l'astéroid en bas à droite if vit_ast_x% > 0 then xA%=-10 : ' si la vitesse en x est positive, on change le point de départ à gauche if vit_ast_y% > 0 then yA%=-10 : ' si la vitesse en y est positive, on change le point de départ en haut sprite_position 10,xA%,yA% : ' on positionne notre asteroide END_SUB
rem ============================================================================ ' astéroide SUB asteroide() if ((xA% < (0-10)) and (vit_ast_x% < 0)) then new_asteroide() if ((xA% > (screen_x + 10)) and (vit_ast_x% > 0)) then new_asteroide() if ((yA% < (0-10)) and (vit_ast_y% < 0)) then new_asteroide() if ((yA% > (screen_y + 10)) and (vit_ast_y% > 0)) then new_asteroide() xA%=xA%+vit_ast_x% : yA%=yA%+vit_ast_y% : sprite_position 10,xA%,yA% scene2d_off END_SUB rem ============================================================================ ' Tirer une balle dans l'une des 8 directions possibles du sprite SUB tir() tir_x = tir_x + cos(tir_d)* vit_mis% : tir_y = tir_y - sin(tir_d) * vit_mis% if (cos(tir_d) > 0 and tir_x > screen_x) or (cos(tir_d) < 0 and tir_x < 0 ) or (sin(tir_d) < 0 and tir_y > screen_y) or (sin(tir_d) > 0 and tir_y < 0 ) then tir% = 0 : SPRITE_HIDE 9 sprite_position 9,tir_x, tir_y : ' Mouvement de la balle du tir Collision_AABB(tir_x,tir_y,16,16,xA%,yA%, 22,24) if tir$="OK" then tir_ok() END_SUB
rem ============================================================================ SUB tir_ok() ' animation de la destruction de la cible ' off_key_down 0 scene2d_interval 250 : scene2d_on tir% = 0 : SPRITE_HIDE 9 sprite_position 11,(xA% - 40),(yA% - 40) : SPRITE_SHOW 11 : sprite_animated_frames 11,8,14 pause 2000 : SPRITE_HIDE 10 : SPRITE_HIDE 11 scene2d_off on_key_down 0,touche new_asteroide(): SPRITE_SHOW 10 END_SUB
rem ============================================================================ SUB Collision_AABB(r1_x%,r1_y%,r1_width,r1_height,r2_x%,r2_y%, r2_width,r2_height) Tir$="OK" IF ((r2_x% >= (r1_x% + r1_width)) OR ((r2_x% + r2_width) <= r1_x%) OR (r2_y% >= (r1_y% + r1_height)) OR ((r2_y% + r2_height) <= r1_y%)) THEN Tir$="" END_SUB
rem ============================================================================ ' d est la direction (le cap) que prendra le sprite SUB move(nsp%) select nsp% case 1 : x% = x% - vit_vai% : y% = y% + vit_vai% : d = 5*pi/4 case 2 : y% = y% + vit_vai% : d = 3*pi/2 case 3 : x% = x% + vit_vai% : y% = y% + vit_vai% : d = 7*pi/4 case 4 : x% = x% - vit_vai% : d = pi case 5 : x% = x% + vit_vai% : d = 0 case 6 : x% = x% - vit_vai% : y% = y% - vit_vai% : d = 3*pi/4 case 7 : y% = y% - vit_vai% : d = pi/2 case 8 : x% = x% + vit_vai% : y% = y% - vit_vai% : d = pi/4 end_select if nsp% <> a_v% then sprite_hide a_v% : a_v% = nsp% : sprite_show nsp% ' Le mode ENROULE : si le sprite sort de la zone , il réapparait de l'autre côté if x% < 0 then x% = screen_x if x% > screen_x then x% = 0 if y% < 0 then y% = screen_y if y% > screen_y then y% = 0 sprite_position nsp%,x%,y% END_SUB rem ============================================================================
fin: terminate return A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 8:50 | |
| @Jicehel, Dis moi, si je me trompe. il me semble que pour affiner (centrer) le visuel de la balle qui percute l'astéroïde, il faut diviser par deux la taille des sprites. - Code:
-
SUB Collision_AABB(r1_x%,r1_y%,r1_width,r1_height,r2_x%,r2_y%, r2_width,r2_height) Tir$="OK" IF ((r2_x% >= (r1_x% + (r1_width)/2)) OR ((r2_x% + (r2_width/2)) <= r1_x%) OR (r2_y% >= (r1_y% + (r1_height)/2)) OR ((r2_y% + (r2_height)/2) <= r1_y%)) THEN Tir$="" END_SUB
A+ PS: laisse tomber ce message, il est plus simple de faire la division avant de passer les paramètres. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 10:42 | |
| non, ce n'est pas obligatoire. Tu as plusieurs façon de faire. Soit tu cnsidères comme j'ai fais que dès que les 2 rectangles se touchent, il y a contact et à ce moment là, tu laisses tel quel, mais tu peux ausi tricher pour donner l'impression que les 2 sprites rentrent l'un dans l'autre en indiquant une taille plus petite (en ajoutant une marge de 3 pixel par exemple) Tu envois alors dans l'appel Collision_AABB(tir_x + 3,tir_y + 3,13,13,xA%+3,yA%+3, 19,21) pour une marge d'1 pixel: Collision_AABB(tir_x + 1,tir_y + 1,15,15,xA%+1,yA%+1, 21,23)
Soit au moins des sprites est assez petits (par exemple le missile) et tu peux calculer le contact d'un point situé en son centre avec le rectangle de l'asteroide. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 11:16 | |
| Oui c'est exactement, ce que j'ai fait. C'est mieux de "bidouiller" les paramètres et de vérifier le visuel. Ce matin j'ai codé la collision du vaisseau avec l'astéroïde et c'est que j'ai fait, j'ai bidouillé. Je vais mettre en place un comptage des astéroïdes détruits avec son affichage. Cela pourra permettre de passer à niveau de difficulté supérieur (par exemple au bout de 10). A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 11:29 | |
| Génial et je serais vigileant sur ton code. Si je peux te proposer des améliorations ou des corrections, je le ferais. Le système du tableau pour les sprites, c'est bien. Je n'ai pas eu le temps de remplacer les variables hier par le tableau à cause de la suppression de la variable du wait que je n'avais pas encore supprimé dans le code, mais je pense que ce serait bien. Après c'est un choix et je te laisse voir si toi tu préfères utiliser le tableau ou les variables. L'avantage du tableau, c'est que tu pourrais facilement mettre en places des boucles de tests et d'animations de tirs ou de déplacement d'asteroides de différentes tailles. Tu pourrais par exemple avoir des gros asteroides au départ qui se cassent en 3 morceaux plus petit la première fois que l'on les touches. Un autre solution est de créer un tableau pour les tirs et un autre pour les asteroides Avec 2 compteurs: un pour le nombre de tirs actifs et un pour les asteroides. Je regarderais ta version active ce soir et si tu ne l'as pas fais je te proposerais une version avec 5 tirs simultanés possibles et si j'ai le temps et que tu ne l'a pas faits, si j'ai le temps, je coderais aussi le tableau avec les asteroides pour pouvoir en avoir jusqu'à 20 actifs (de toute façon une fois la mécanique mise en place, le maximum n'est qu'une varaible à modifier comme pour les tirs) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 13:14 | |
| Je vois où tu veux en venir, tu as déjà une vision du jeu... Je vais déposer sur mon Webdav la dernière version avec la nouvelle planche de Sprites. Comme ça, de ton coté tu mets en place le tableau et les tirs multiples dans le même tour. Et tu n'oublie pas de commenter un max. De mon coté je finalise la version actuelle. Et comme je ne vais pas avoir le temps ce weekend tu ne seras pas freiné. A+ | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 13:17 | |
| En lisant ce post, je constate que je me suis mal exprimé au niveau des objets, car certains s'étonnent qu'on puisse créer par exemple un TIMER.
Il y a toujours des objets, mais ce que je voulais dire c'est que, puisqu'il n'y a qu'un FORM et un SCENE2D, ces numéros d'objets ont été "supprimés" pour le programmeur.
Mais il existe toujours les objets non visibles et qui eux, possèdent un numéro d'objet pour les différencier, de la même façon que les SPRITEs sont différenciés les uns des autres par leur numéro. La documentation sera remise à jour.
Tous les objets non-visibles de Panoramic sont présents : OPEN_DIALOG, SAVE_DIALOG, TIMER, DLIST, IMAGE, SOUND.
Et heureusement ! Par exemple, que serait un jeu vidéo sans aucun SOUND !
Je viens de coder: ON_KEY_UP, ON_KEY_DOWN, OFF_KEY_UP, OFF_KEY_DOWN.
Cela permettra d'utiliser les événements avec les saisies clavier.
J'ai corrigé le problème qui faisait que les erreurs n'étaient pas signalées.
Je fais les derniers tests et je sors une version PANGINE2D Alpha 2 peut-être ce soir.
Pour les relations avec l'utilisateur, il y a normalement INPUT, INKEY$ et SCANCODE. Mais cela n'a pas fait l'objet de tests approfondis et il y a peut-être des bugs. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 13:32 | |
| Super merci Jack.
On s'habitue bien à l'aide à la programmation et les messages d'erreur font gagner un temps fou. On s'en rend vraiment compte quand on ne les a plus comme pour beaucoup de choses.
Merci également pour les précisions données qui m'aide à mieux comprendre la philosophie à adopter.
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 13:39 | |
|
Dernière édition par Jicehel le Ven 19 Juin 2015 - 13:42, édité 1 fois (Raison : Doublon) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 13:49 | |
| Merci Jack, ça vas nous aider... Une question: Est-ce que ça veut dire qu'on peut créer des boutons, des form(s) et autres objets de Panoramic ??? A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 18:04 | |
| Bon, vous allez pouvoir jouer à détruire des astéroïdes, mais attention qu'ils ne vous détruisent pas.
Vous trouverez asterV1.bas sur mon Webdav dans le zip ESSAI_PANGINE2D, en première page. à l'intérieur il y a l'éditeur, donc tout ce qu'il faut.
ATTENTION: si après avoir joué, vous ouvrez un source.bas Panoramic faites attention que ce ne soit pas l'éditeur de PANGINE2D qui s'ouvre. Cela m'est arrivé.
C'est une version avec une fin (plutôt 2, une bonne et une mauvaise). Votre mission: détruire 10 astéroïdes.
@Jicehel, tu peux t'en servir comme base, après avoir contrôle les nouveauté . Je viens de me rappeler que j'ai publié avant de supprimer la pause en ligne 151, elle sert à ralentir l’astéroïde pour les besoins du codage. Tu devra l'enlever, ou t'en servir pendant le codage.
Cette fois-ci, ce n'est pas le codage qui a été long, c'est la fabrication des Sprites.
Amusez-vous et n'hésitez pas à signaler les bugs. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 18:05 | |
| Comptes sur moi | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 18:28 | |
| ATTENTION: pour ceux qui ont déjà téléchargé il faut remettre en service la ligne 166 (off_key_down 0) sinon vous risquez d'avoir des surprises. Repérez bien la touche arrêt Défil de votre clavier.
Je remplace le dossier de suite.
A+ | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 18:42 | |
| - Jean Claude a écrit:
- Une question:
Est-ce que ça veut dire qu'on peut créer des boutons, des form(s) et autres objets de Panoramic ???
Non. Dans PANGINE2D, il n'y a que les objets invisibles (qu'on ne met pas sur une interface). Les objets visibles (BUTTON, ...) n'existent pas. C'est dit quelques lignes plus haut, mais, c'est vrai de façon ambigüe: - Jack a écrit:
- Tous les objets non-visibles de Panoramic sont présents :
OPEN_DIALOG, SAVE_DIALOG, TIMER, DLIST, IMAGE, SOUND.
_________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 18:59 | |
| Oui, j'ais compris Jack, je viens d'en faire l'expérience en testant le nouvel éditeur.
@Jicehel Du coup, avec le nouvel éditeur, Il faut remplacer tout les ON_KEY_DOW 0,label par ON_KEY_DOW label. ça, c'est vite fait avec la fonction remplacer de l'éditeur. Je n'ais pas le temps maintenant, peut-être ce soir.
Pour ceux qui veulent télécharger le jeu, il ne fonctionne pas avec le nouvel éditeur pour le moment. Mais dans le zip il y a une application exe, donc vous n'avez pas besoin de l'éditeur pour jouer.
A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 19 Juin 2015 - 20:50 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 21:18 | |
| Je vous mets déjà la version remaniée pour la nouvelle version de Pangine (nécessite la version téléchargée sur le site de Jack) Je commence à modifier après le film - Code:
-
' essai8.bas avec tir, collision, explosion, et fin de partie (Jean Claude, Jicehel, Papydall) rem ============================================================================ caption "Utilisez les touches du panneau numérique (1,2,3,4,6,7,8,9) ** SPACE pour tirer ** ESC pour sortir"
dim n% dim pi : pi = acos(-1) : ' mémorise la valeur pi dim x%,y%,vit_vai% : ' position et vitesse du vaisseau dim d : d = pi/2 : ' direction (c'est le cap) de départ du vaisseau (vers le haut) dim xA%,yA%,vit_ast_x%, vit_ast_y% : ' position et vitesse de l'asteroid dim tir$,tir%, tir_x,tir_y,tir_d,vit_mis% : ' Resultat du tir, Tir actif ou non, coord en x et en y du tir et mémoristion de la direction et vitesse dim SpriteV% :' Pour savoir quelle image du vaisseau est en service (car d change dans la sub move) dim score% :' pour le score dim cpt_t_asteroide : ' ralentisseur pour les mouvements de l'asteroid
' Déclaration des étiquettes label touche,boucle_principale, fin
' création des sptites SPRITE 1 : SPRITE_POSITION 1,-50,-50 : SPRITE_FILE_LOAD 1,"image/VBG.bmp" : SPRITE_HIDE 1 SPRITE 2 : SPRITE_POSITION 2,-50,-50 : SPRITE_FILE_LOAD 2,"image/VB.bmp" : SPRITE_HIDE 2 SPRITE 3 : SPRITE_POSITION 3,-50,-50 : SPRITE_FILE_LOAD 3,"image/VBD.bmp" : SPRITE_HIDE 3 SPRITE 4 : SPRITE_POSITION 4,-50,-50 : SPRITE_FILE_LOAD 4,"image/VG.bmp" : SPRITE_HIDE 4 SPRITE 5 : SPRITE_POSITION 5,-50,-50 : SPRITE_FILE_LOAD 5,"image/VD.bmp" : SPRITE_HIDE 5 SPRITE 6 : SPRITE_POSITION 6,-50,-50 : SPRITE_FILE_LOAD 6,"image/VHG.bmp" : SPRITE_HIDE 6 SPRITE 7 : SPRITE_POSITION 7,-50,-50 : SPRITE_FILE_LOAD 7,"image/VH.bmp" : SPRITE_HIDE 7 SPRITE 8 : SPRITE_POSITION 8,-50,-50 : SPRITE_FILE_LOAD 8,"image/VHD.bmp" : SPRITE_HIDE 8 SPRITE 9 : SPRITE_POSITION 9,-50,-50 : SPRITE_FILE_LOAD 9,"image/balle.bmp" : SPRITE_HIDE 9 : ' un missile SPRITE_ANIMATED 10 : SPRITE_POSITION 10,-50,-50 :SPRITE_ANIMATED_FILE_LOAD 10,1,8,"image/rock8.bmp" : SPRITE_HIDE 10 : ' astéroide SPRITE_ANIMATED 11 : SPRITE_POSITION 11,-50,-50 :SPRITE_ANIMATED_FILE_LOAD 11,5,5,"image/meteore.bmp" : SPRITE_HIDE 11 : ' explosion astéroide SPRITE_ANIMATED 12 : SPRITE_POSITION 12,-50,-50 :SPRITE_ANIMATED_FILE_LOAD 12,5,5,"image/meteore2.bmp" : SPRITE_HIDE 12 : ' explosion vaisseau ' SPRITE_ANIMATED 19 : SPRITE_POSITION 19,-50,-50 :SPRITE_ANIMATED_FILE_LOAD 19,1,10,"image/zeroneuf.bmp" : SPRITE_HIDE 19 : ' chiffres animés pour le score SPRITE 20 : SPRITE_POSITION 20,-50,-50 : SPRITE_FILE_LOAD 20,"image/0.bmp" : SPRITE_HIDE 20 : ' chiffres pour le score SPRITE 21 : SPRITE_POSITION 21,-50,-50 : SPRITE_FILE_LOAD 21,"image/1.bmp" : SPRITE_HIDE 21 : ' chiffres pour le score SPRITE 22 : SPRITE_POSITION 22,-50,-50 : SPRITE_FILE_LOAD 22,"image/2.bmp" : SPRITE_HIDE 22 : ' chiffres pour le score SPRITE 23 : SPRITE_POSITION 23,-50,-50 : SPRITE_FILE_LOAD 23,"image/3.bmp" : SPRITE_HIDE 23 : ' chiffres pour le score SPRITE 24 : SPRITE_POSITION 24,-50,-50 : SPRITE_FILE_LOAD 24,"image/4.bmp" : SPRITE_HIDE 24 : ' chiffres pour le score SPRITE 25 : SPRITE_POSITION 25,-50,-50 : SPRITE_FILE_LOAD 25,"image/5.bmp" : SPRITE_HIDE 25 : ' chiffres pour le score SPRITE 26 : SPRITE_POSITION 26,-50,-50 : SPRITE_FILE_LOAD 26,"image/6.bmp" : SPRITE_HIDE 26 : ' chiffres pour le score SPRITE 27 : SPRITE_POSITION 27,-50,-50 : SPRITE_FILE_LOAD 27,"image/7.bmp" : SPRITE_HIDE 27 : ' chiffres pour le score SPRITE 28 : SPRITE_POSITION 28,-50,-50 : SPRITE_FILE_LOAD 28,"image/8.bmp" : SPRITE_HIDE 28 : ' chiffres pour le score SPRITE 29 : SPRITE_POSITION 29,-50,-50 : SPRITE_FILE_LOAD 29,"image/9.bmp" : SPRITE_HIDE 29 : ' chiffres pour le score
' init tir% = 0 : ' Au début pas de tir actif x%=(screen_x/2)+32 : y%=700 : sprite_position 7,x%,y% : SpriteV% = 7 : SPRITE_SHOW 7
' scene2D file_load "image/espace.bmp"
' réglages vit_vai% = 8 :' + => plus rapide vit_mis%=20 :' + => plus rapide cpt_t_asteroide = 0
new_asteroide() : SPRITE_SHOW 10 : ' Créé l'astéroid initial afiscore() on_key_down touche : ' Active la gestion de l'appuie des touches
timer 2 : timer_interval 2,15 : on_timer 2,boucle_principale : ' Activation du timer qui activera les tours de jeu
END
rem ============================================================================ SUB afiscore() if score%>9 then message "Bravo vous avez détruit 10 météore. Votre mission est terminée" : gosub fin if score% > 0 then SPRITE_HIDE 19 + score% SPRITE_SHOW 20 + score% END_SUB
rem ============================================================================ SUB vaisseau_detruit() ' animation de la destruction de la cible off_key_down sprite_position 10,xA%+20,yA%+20 : SPRITE_HIDE SpriteV% scene2d_interval 250 : scene2d_on sprite_position 12,(xA% - 60),(yA% - 60) : SPRITE_SHOW 12 : sprite_animated_frames 12,8,14 pause 2000 : SPRITE_HIDE 12 scene2d_off END_SUB
rem ============================================================================ touche: off_key_down ' Touches du pavé numérique if KEY_DOWN_CODE = 97 then move(1) : ' 1 End if KEY_DOWN_CODE = 40 or KEY_DOWN_CODE = 98 then move(2) : ' 2 Bas if KEY_DOWN_CODE = 99 then move(3) : ' 3 PgDn if KEY_DOWN_CODE = 37 or KEY_DOWN_CODE = 100 then move(4) : ' 4 gauche if KEY_DOWN_CODE = 39 or KEY_DOWN_CODE = 102 then move(5) : ' 5 droite if KEY_DOWN_CODE = 103 then move(6) : ' 6 Home if KEY_DOWN_CODE = 38 or KEY_DOWN_CODE = 104 then move(7) : ' 7 haut if KEY_DOWN_CODE = 105 then move(8) : ' 8 PgUp if KEY_DOWN_CODE = 27 then gosub fin : ' Echap if KEY_DOWN_CODE = 32 AND tir% = 0 tir% = 1 : tir_d = d : ' On mémorise qu'un tir est actif et la direction de ce tir ' On ajuste la position initale du tir en fonction de la direction du vaisseau if d = 5*pi/4 then tir_x = x% + 11 : tir_y = y% + 33 if d = 3*pi/2 then tir_x = x% + 22 : tir_y = y% + 44 if d = 7*pi/4 then tir_x = x% + 33 : tir_y = y% + 33 if d = pi then tir_x = x% : tir_y = y% + 22 if d = 0 then tir_x = x% + 44 : tir_y = y% + 22 if d = 3*pi/4 then tir_x = x% + 11 : tir_y = y% + 11 if d = pi/2 then tir_x = x% + 22 : tir_y = y% if d = pi/4 then tir_x = x% + 33 : tir_y = y% + 11 sprite_position 9,tir_x, tir_y : SPRITE_SHOW 9 end_if : ' Fin du traitement d'un appuie sur espace on_key_down touche return
rem ============================================================================ boucle_principale: timer_off 2 cpt_t_asteroide = cpt_t_asteroide + 1 if cpt_t_asteroide = 3 then asteroide() : cpt_t_asteroide = 0 : ' On gère notre asteroid pour ce tour Collision_AABB(xA%,yA%,22,24,x%,y%,32,32) :' vérifier si le vaisseau n'est pas en collision avec l'astéroide if tir$="OK" vaisseau_detruit() message "Votre vaisseau est détruit!" gosub fin end_if if tir% = 1 then tir() : ' Si un tir est actif, on gère son tour timer_on 2 return
rem ============================================================================ ' New_astéroide SUB new_asteroide() scene2d_interval 500 : scene2d_on vit_ast_x%= 0 : vit_ast_y%= 0 : ' On initialise le compteur pour un lancé aléatoire while (abs(vit_ast_x%) + abs(vit_ast_y%)) < 5 : ' On fixe une vitesse minimale en dessous vit_ast_x%=rnd(20) - 10 : vit_ast_y%=rnd(20) - 10 : ' de laquelle on n'accepte pas le tirage end_while : ' la vitesse peut être positive ou négative xA% = screen_x + 10 : yA% = screen_y + 10 : ' on fixe la position de départ de l'astéroid en bas à droite if vit_ast_x% > 0 then xA%=-10 : ' si la vitesse en x est positive, on change le point de départ à gauche if vit_ast_y% > 0 then yA%=-10 : ' si la vitesse en y est positive, on change le point de départ en haut sprite_position 10,xA%,yA% : ' on positionne notre asteroide END_SUB
rem ============================================================================ ' astéroide SUB asteroide() if ((xA% < (0-10)) and (vit_ast_x% < 0)) then new_asteroide() if ((xA% > (screen_x + 10)) and (vit_ast_x% > 0)) then new_asteroide() if ((yA% < (0-10)) and (vit_ast_y% < 0)) then new_asteroide() if ((yA% > (screen_y + 10)) and (vit_ast_y% > 0)) then new_asteroide() xA%=xA%+vit_ast_x% : yA%=yA%+vit_ast_y% : sprite_position 10,xA%,yA% scene2d_off END_SUB
rem ============================================================================ ' Tirer une balle dans l'une des 8 directions possibles du sprite SUB tir() tir_x = tir_x + cos(tir_d)* vit_mis% : tir_y = tir_y - sin(tir_d) * vit_mis% if (cos(tir_d) > 0 and tir_x > screen_x) or (cos(tir_d) < 0 and tir_x < 0 ) or (sin(tir_d) < 0 and tir_y > screen_y) or (sin(tir_d) > 0 and tir_y < 0 ) then tir% = 0 : SPRITE_HIDE 9 sprite_position 9,tir_x, tir_y : ' Mouvement de la balle du tir Collision_AABB(tir_x,tir_y,16,16,xA%,yA%, 22,24) if tir$="OK" then tir_ok() END_SUB
rem ============================================================================ SUB tir_ok() ' animation de la destruction de la cible off_key_down scene2d_interval 40 : scene2d_on tir% = 0 : SPRITE_HIDE 9 sprite_position 11,(xA% - 40),(yA% - 40) : SPRITE_SHOW 11 : sprite_animated_frames 11,8,14 pause 400 : SPRITE_HIDE 10 : SPRITE_HIDE 11 scene2d_off on_key_down touche score%=score%+1 : afiscore() new_asteroide(): SPRITE_SHOW 10 END_SUB
rem ============================================================================ SUB Collision_AABB(r1_x%,r1_y%,r1_width,r1_height,r2_x%,r2_y%, r2_width,r2_height) Tir$="OK" IF ((r2_x% >= (r1_x% + r1_width)) OR ((r2_x% + r2_width) <= r1_x%) OR (r2_y% >= (r1_y% + r1_height)) OR ((r2_y% + r2_height) <= r1_y%)) THEN Tir$="" END_SUB
rem ============================================================================ ' d est la direction (le cap) que prendra le sprite SUB move(nsp%) select nsp% case 1 : x% = x% - vit_vai% : y% = y% + vit_vai% : d = 5*pi/4 case 2 : y% = y% + vit_vai% : d = 3*pi/2 case 3 : x% = x% + vit_vai% : y% = y% + vit_vai% : d = 7*pi/4 case 4 : x% = x% - vit_vai% : d = pi case 5 : x% = x% + vit_vai% : d = 0 case 6 : x% = x% - vit_vai% : y% = y% - vit_vai% : d = 3*pi/4 case 7 : y% = y% - vit_vai% : d = pi/2 case 8 : x% = x% + vit_vai% : y% = y% - vit_vai% : d = pi/4 end_select caption str$(nsp%) + ":" + str$(SpriteV%) if nsp% <> SpriteV% sprite_hide SpriteV% : SpriteV% = nsp% : sprite_position nsp%,x%,y% :sprite_show nsp% else sprite_position nsp%,x%,y% end_if ' Le mode ENROULE : si le sprite sort de la zone , il réapparait de l'autre côté if x% < 0 then x% = screen_x if x% > screen_x then x% = 0 if y% < 0 then y% = screen_y if y% > screen_y then y% = 0
END_SUB rem ============================================================================
fin: terminate return | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 21:36 | |
| @ygeronimi, Attends un peu de jouer avec la prochaine version, tu vas moins parader. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Ven 19 Juin 2015 - 21:48 | |
| @JICEHEL, on a un souci, ça ne marche plus.
J'ai remarqué que dans le débogage, tu as oublié off_key_down 0 à remplacer par off_key_down. Mais, le problème c'est que le vaisseau ne bouge plus.
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Sam 20 Juin 2015 - 8:29 | |
| Bonjour, je me suis endormi hier soir. Pour moi, ça marche bien seule les flèches directionnelles ne fonctionnent pas mais les touches du pavé numérique fonctionnent bien ainsi que le tir Comme les touches du pavé numérique fonctionnent et que cette partie du code n'a pas été modifiée, je me demande si ce ne serait pas un bug de la nouvelle version ? C'est une interrogation. Pour toi, ça fonctionne bien avec le pavé numérique ? Si oui, vu le code, je pense que ça viendrait de la nouvelle version car le OR ne peut pas être en cause. Je pense donc que ça viendrait du code du ON_KEY_DOWN dans lequel il y aurait un petit oubli ou problème. Désolé je me suis endormi avant la fin du film (c'était pourtant un film plein d'actions), je n'ai rien codé de plus hier soir sinon. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Sam 20 Juin 2015 - 8:53 | |
| Salut Jicehel. Bon, t'as passé une bonne nuit Le code fonctionne mais pas les flèches de direction (avec ou sans or). Je dois m'absenter, je reviens en fin de matinée. A+ | |
| | | Contenu sponsorisé
| Sujet: Re: PANGINE2D | |
| |
| | | | PANGINE2D | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |