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 |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: PANGINE2D Lun 15 Juin 2015 - 13:29 | |
| Bonjour à tous, J'ai commencé à fabriquer un code aves PANGINE2G et je dois dire que c'est un peu galère. L'éditeur ne déclenche aucun message d'erreur, il faut donc être très vigilant dans l'écriture du code. si le SCENE2D n’apparaît pas c'est qu'il y a une erreur. La coloration syntaxique n'est pas implémentée pour tous les mots-clés. Je comprend qu'il est inutile pour le moment d'améliorer l'éditeur, surtout si je suis le seul à m'en servir et qu'il n'est pas certain que je continue. Mais je n'ai pas encore déclaré forfait, car tous les mots-clés du PDF fonctionnent parfaitement. @Jack, Je n'ai pas réussi à faire déplacer un SPRITE en utilisant SCANCODE. Je voudrais pouvoir déplacer un sprite sans bouger l'image de fond. Pourrais-tu donner un exemple ? voir ce code qui ne marche pas - Code:
-
' image du fond caption " X " file_load "image/espace.bmp" width 800:height 800 dim nt%,x%,y% label start,fin :' on_click start ' création d'un prite animé SPRITE_ANIMATED 1 SPRITE_ANIMATED_FILE_LOAD 1,1,9,"image/vaisseau.bmp" sprite_position 1,380,700
rotate(1,2,9)
' input nt% gosub start
end rem ============================================================================
start: while scancode=38 y%=y%-1 sprite_position 1,380,y% end_while return
sub rotate(nsp%,choix%,nbanim%) ' 1 => HAUT/DROITE ' 2 => HAUT ' 3 => HAUT/GAUCHE ' 4 => GAUCHE ' 5 => BAS/GAUCHE ' 6 => BAS ' 7 => BAS/DROITE ' 8 => DROITE sprite_animated_frames nsp%,choix%,nbanim% end_sub
fin: terminate return
A+ PS: Si tu as besoin des images fait le moi savoir
Dernière édition par Jean Claude le Mar 16 Juin 2015 - 7:29, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 14:13 | |
| Si tu n'as pas de réponse, je regarderais ça ce soir après mangé (Je mange presque aussitôt après être rentré chez moi le soir ) mais je pense que le problème est dans la structure de ton programme. En principe on fait plutôt une procédure événementielle pour détecter l'appuie sur une touche ou on utilise un timer et on regarde si une touche est enfoncée. Là, ton système est particulier tu as une boucle qui tourne tant que le scancode = une valeur (38) En principe on utiliserait plutot par exemple dans la fin de ton programme (à la place de) : - Code:
-
input nt% gosub start - Code:
-
' ****************************** COMMANDES CLAVIER ************************** dim esc,cesc : cesc=27 : ' * TOUCHE "ESC" ==> MET FIN AU PROGRAMME:... 27 * dim tfg,ctfg : ctfg=37 : ' * FLÈCHE GAUCHE ==> DEPLACER À GAUCHE:...... 37 * dim tfd,ctfd : ctfd=39 : ' * FLÈCHE DROITE ==> DEPLACER À DROITE:...... 39 * ***************************************************************************
...
' On détecte le changement d'état des touches on_key_down 0,t1 timer t_principal : timer_interval t_principal,temps% : on_timer t_principal, boucle_principale
end
t1: if key_down_code=cesc then esc=1 if key_down_code=ctfg then tfg=1 if key_down_code=ctfd then tfd=1 return
boucle_principale:
timer_off t_principal set_focus 0 if esc = 1 then gosub quitte if tfg = 1 then y%=y%-1 if tfg = 1 then y%=y%+1 sprite_position 1,380,y% timer_on t_principal return
Tu dois gérer le laché de touche. Soit tu oblige l'utilisateur a relacher et réappuyer pour se déplacer à gauche ou a droite, soit tu gère le key_up pour vérifier si la touche est toujours enfoncée. Voilà, je te donne le principe rapidos sans tester par ce qu'ici je ne peux pas mais ça doit te mettre sur la voie | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 15:19 | |
| Dis moi si tu y arrives avec ce principe et si tu n'y arrives pas, poste moi tes images et je te ferais le code complet pour diriger ton sprite ce soir. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 15:57 | |
| Merci Jicehel, c'est bien gosub start, qui pose problème. J'ai remplacé par on_key_down, start et c'est reparti. De plus input at% est apparemment incontournable avant end.Bon j'y retourne. A+
Dernière édition par Jean Claude le Lun 15 Juin 2015 - 18:27, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 16:45 | |
| Tiens moi au courant si tu bloques ou s'il y a un truc que tu ne comprends pas. Ca c'est un domaine ou je ne me débrouille pas trop mal | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 18:25 | |
| Voici le résultat de ma première journée avec PANGINE2D
vous trouverez sur mon Webdav à l'intérieur du dossier JEU_EN_2D, => ESSAI_PANGINE.zip. faite tourner nouveau1.bas avec l'editeur qui est dans le zip
J' ai un problème de scintillement, si quelqu'un à une idée, je suis preneur.
Pour le moment, ça va pas trop mal....
A+ | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 21:16 | |
| Ton problème de scintillement vient du fait qu'à chaque fois que l'utilisateur appuie sur une touche de direction (flèche), tu recharges le fichier contenant l'image du Sprite, même s'il n'y a pas de changement de direction. Il ne faut recharger le fichier qu'en cas de changement de direction, ou encore mieux, tu charges une fois pour toutes 4 Sprites (de 1 à 4) et tu ne rends visible que le Sprite qui se déplace, et tu rends invisible les 3 autres. Je n'ai pas essayé, mais cela m'étonnerait que tu aies encore du scintillement, celui ci étant du à une perte de temps à aller rechercher un fichier et à le recharger. Faire un jeu vidéo n'est pas si facile. Courage, je suis attentif à ce que tu fais et je peux t'aider. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 15 Juin 2015 - 23:02 | |
| Là, Jean Claude, tu me bluffes ! Continues, j' ai hâte de voir la suite. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 23:02 | |
| Moi, je ne comprends pas avec ton code j'ai un comportement bizarre. Si je clique sur la fenêtre, ça ferme le programme et d'autre part, (ce n'est pas lié à ton programme mais mon scan_code reste toujours à 255 alors que le key_down_code change bien. Je suis sous Windows 8 avec écran tactile. Ca a peut être un rapport. Ce n'est pas la première fois que je constate ce dysfonctionnement et je suis souvent obligé de modifier les programmes pour les faire fonctionner. Pour moi ton programme ne marche pas mais ce n'est pas lié à ton programme mais à quelque chose dans ma config que Panoramic ou Windows a du mal à gérer. Je vous écris une version du programme qui fonctionne pour moi, mais j'aimerais que d'autres testent le programme et me disent s'ils ont le même problème de scancode qui reste à 255 Même si c'est juste pour moi, si ça marche bien pour toi aussi, veux tu bien continuer avec les KEY_DOWN_CODE plutôt que les scancode ? (Ca m'évite d'avoir à modifier ) - Code:
-
' image du fond caption " X " ' width 800:height 800 dim at%,x%,y%,vit%,a_v% label start,fin ' on_click fin ' création d'un sprite simple 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_position 7,380,700 a_v% = 7 : SPRITE_SHOW 7 y%=700 : x%=380 : vit%=8 file_load "image/espace.bmp"
on_key_down 0,start
END rem ============================================================================ start: if KEY_DOWN_CODE=97 then move(1) if KEY_DOWN_CODE=40 or KEY_DOWN_CODE=98 then move(2) if KEY_DOWN_CODE=99 then move(3) if KEY_DOWN_CODE=37 or KEY_DOWN_CODE=100 then move(4) if KEY_DOWN_CODE=39 or KEY_DOWN_CODE=102 then move(5) if KEY_DOWN_CODE=103 then move(6) if KEY_DOWN_CODE=38 or KEY_DOWN_CODE=104 then move(7) if KEY_DOWN_CODE=105 then move(8) if KEY_DOWN_CODE=27 then gosub fin if KEY_DOWN_CODE=32 then tir() return
tir()
end_sub
sub move(nsp%)
if nsp%=1 then x%=x%-vit% : y%=y%+vit% if nsp%=2 then y%=y%+vit% if nsp%=3 then x%=x%+vit% : y%=y%+vit% if nsp%=4 then x%=x%-vit% if nsp%=5 then x%=x%+vit% if nsp%=6 then x%=x%-vit% : y%=y%-vit% if nsp%=7 then y%=y%-vit% if nsp%=8 then x%=x%+vit% : y%=y%-vit% if nsp% <> a_v% then sprite_hide a_v% : a_v% = nsp% : sprite_show nsp% sprite_position nsp%,x%,y% end_sub
fin: terminate return | |
| | | Invité Invité
| Sujet: Re: PANGINE2D Lun 15 Juin 2015 - 23:20 | |
| Pour ce qui concerne le scancode, j'ai eu le problème une ou deux fois. Finalement j'ai relancé la machine, et le problème a disparu.
Il doit y avoir quelque chose qui s’esquinte avec le temps, mais mystère ...! |
| | | 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 Mar 16 Juin 2015 - 0:52 | |
| Hello Jean Claude Pour participer j’ai modifié un peu le code : Remplacement de la série de IF par CASE. Et codage du mode « Enroule » : si le sprite sort de la zone , il réapparait de l'autre côté Ça donne ce code - Code:
-
rem ============================================================================ caption " X " dim at%,x%,y%,vit%,a_v% label start
' création d'un sprite simple 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_position 7,380,700 a_v% = 7 : SPRITE_SHOW 7 y% = 700 : x% = 380 : vit% = 8 file_load "image/espace.bmp"
on_key_down 0,start
END rem ============================================================================ ' Touches du panneau numérique start: 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) : ' 6 droite if KEY_DOWN_CODE = 103 then move(6) : ' 7 Home if KEY_DOWN_CODE = 38 or KEY_DOWN_CODE = 104 then move(7) : ' 8 haut if KEY_DOWN_CODE = 105 then move(8) : ' 9 PgUp if KEY_DOWN_CODE = 27 then terminate : ' Echap if KEY_DOWN_CODE = 32 then tir() : ' space return rem ============================================================================ SUB tir() ' A compléter end_sub rem ============================================================================ sub move(nsp%) select nsp% case 1 : x% = x% - vit% : y% = y% + vit% case 2 : y% = y% + vit% case 3 : x% = x% + vit% : y% = y% + vit% case 4 : x% = x% - vit% case 5 : x% = x% + vit% case 6 : x% = x% - vit% : y% = y% - vit% case 7 : y% = y% - vit% case 8 : x% = x% + vit% : y% = y% - vit% 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 ============================================================================
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Mar 16 Juin 2015 - 1:13 | |
| Et il y a aussi le mode limité aux bords, bien sûr - Code:
-
rem ============================================================================ caption " X " dim at%,x%,y%,vit%,a_v%, taille% label start
' création d'un sprite simple 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
y% = 700 : x% = 380 : vit% = 8 : a_v% = 7 : taille% = 64 sprite_position a_v%,x%, y% : SPRITE_SHOW a_v%
file_load "image/espace.bmp"
on_key_down 0,start
END rem ============================================================================ ' Touches du panneau numérique start: 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) : ' 6 droite if KEY_DOWN_CODE = 103 then move(6) : ' 7 Home if KEY_DOWN_CODE = 38 or KEY_DOWN_CODE = 104 then move(7) : ' 8 haut if KEY_DOWN_CODE = 105 then move(8) : ' 9 PgUp if KEY_DOWN_CODE = 27 then terminate : ' Echap if KEY_DOWN_CODE = 32 then tir() : ' space return rem ============================================================================ SUB tir() ' A compléter end_sub rem ============================================================================ sub move(nsp%) select nsp% case 1 : x% = x% - vit% : y% = y% + vit% case 2 : y% = y% + vit% case 3 : x% = x% + vit% : y% = y% + vit% case 4 : x% = x% - vit% case 5 : x% = x% + vit% case 6 : x% = x% - vit% : y% = y% - vit% case 7 : y% = y% - vit% case 8 : x% = x% + vit% : y% = y% - vit% 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 ' Le mode LIMITES : si le sprite arrive au bord de l'écran, il se bloque if x% < (0-10) then x% = 0 - 10 if x% > ( screen_x - taille% - 10) then x% = screen_x - taille% - 10 if y% < (0-10) then y% = 0 - 10 if y% > (screen_y - taille% -20) then y% = screen_y - taille% - 20 sprite_position nsp%,x%,y% end_sub rem ============================================================================
Dernière édition par Jicehel le Mar 16 Juin 2015 - 8:08, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 16 Juin 2015 - 1:44 | |
| J' aime bien la vs de Papydall, elle peut permettre de changer de niveau en changeant le fond... | |
| | | 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 Mar 16 Juin 2015 - 2:47 | |
| J’ai codé la SUB Tir() Ça permet de tirer une balle dans l'une des 8 directions du sprite par la touche ESPACE. Pour cela, on a besoin d’un sprite balle. Comme je n’en ai pas, j’ai utilisé cette balle comme sprite (juste pour le test) et ça marche < ---- Click-droit puis Enregistrer l'image sous balle.bmp - Code:
-
rem ============================================================================ caption "Utilisez les touches du panneau numérique (1,2,3,4,6,7,8,9) ** SPACE pour tirer ** ESC pour sortir" dim at%,x%,y%,vit%,a_v% dim pi : pi = acos(-1) dim d : d = pi/2 : ' direction (c'est le cap) de départ du sprite (vers le haut) label start
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 : ' une balle
sprite_position 7,380,700 a_v% = 7 : SPRITE_SHOW 7 y% = 700 : x% = 380 : vit% = 8 ' sprite_position 9,x%,y% file_load "image/espace.bmp"
on_key_down 0,start
END rem ============================================================================ ' Touches du panneau numérique start: 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) : ' 6 droite if KEY_DOWN_CODE = 103 then move(6) : ' 7 Home if KEY_DOWN_CODE = 38 or KEY_DOWN_CODE = 104 then move(7) : ' 8 haut if KEY_DOWN_CODE = 105 then move(8) : ' 9 PgUp if KEY_DOWN_CODE = 27 then terminate : ' Echap if KEY_DOWN_CODE = 32 then tir() : ' space return rem ============================================================================ ' Tirer une balle dans l'une des 8 directions possibles du sprite SUB tir() dim_local i sprite_show 9 for i = 1 to screen_x step 25 : ' step à modifier pour gérer la vitesse du tir sprite_position 9,x%+i*cos(d),y%-i*sin(d) : ' Mouvement de la balle du tir next i sprite_hide 9 END_SUB rem ============================================================================ ' d est la direction (le cap) que prendra le sprite SUB move(nsp%) select nsp% case 1 : x% = x% - vit% : y% = y% + vit% : d = 5*pi/4 case 2 : y% = y% + vit% : d = 3*pi/2 case 3 : x% = x% + vit% : y% = y% + vit% : d = 7*pi/4 case 4 : x% = x% - vit% : d = pi case 5 : x% = x% + vit% : d = 0 case 6 : x% = x% - vit% : y% = y% - vit% : d = 3*pi/4 case 7 : y% = y% - vit% : d = pi/2 case 8 : x% = x% + vit% : y% = y% - vit% : 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 ============================================================================
Ça commence à devenir intéressant
Dernière édition par papydall le Mar 16 Juin 2015 - 3:14, édité 3 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 16 Juin 2015 - 3:01 | |
| @ Papydall, pour les tirs vers la droite et le bas, il faudrait modifier le point de départ de la balle. Elle part de derrière l' avion/vaisseau... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 16 Juin 2015 - 3:04 | |
| Avec ces fonctions et les sub de klaus, il doit être possible de refaire un super pack-man... | |
| | | 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 Mar 16 Juin 2015 - 3:37 | |
| - ygeronimi a écrit:
- @ Papydall,
pour les tirs vers la droite et le bas, il faudrait modifier le point de départ de la balle. Elle part de derrière l' avion/vaisseau...
Tout à fait et ce n’est pas dur de le faire. Mon intention était de gérer les directions des tirs. Peut-être quelque chose comme ceci : - Code:
-
rem ============================================================================ caption "Utilisez les touches du panneau numérique (1,2,3,4,6,7,8,9) ** SPACE pour tirer ** ESC pour sortir" dim at%,x%,y%,vit%,a_v% dim pi : pi = acos(-1) dim d : d = pi/2 : ' direction (c'est le cap) de départ du sprite (vers le haut) dim dx,dy : dx = 25 : dy = 0 label start
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 : ' une balle
sprite_position 7,380,700 a_v% = 7 : SPRITE_SHOW 7 y% = 700 : x% = 380 : vit% = 8 ' sprite_position 9,x%,y% file_load "image/espace.bmp"
on_key_down 0,start
END rem ============================================================================ ' Touches du panneau numérique start: 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) : ' 6 droite if KEY_DOWN_CODE = 103 then move(6) : ' 7 Home if KEY_DOWN_CODE = 38 or KEY_DOWN_CODE = 104 then move(7) : ' 8 haut if KEY_DOWN_CODE = 105 then move(8) : ' 9 PgUp if KEY_DOWN_CODE = 27 then terminate : ' Echap if KEY_DOWN_CODE = 32 then tir() : ' space return rem ============================================================================ ' Tirer une balle dans l'une des 8 directions possibles du sprite SUB tir() dim_local i sprite_show 9 for i = 10 to screen_x step 50 : ' step à modifier pour gérer la vitesse du tir sprite_position 09,x%+dx+i*cos(d),y%+dy-i*sin(d) : ' Mouvement de la balle du tir next i sprite_hide 9 END_SUB rem ============================================================================ ' d est la direction (le cap) que prendra le sprite SUB move(nsp%) select nsp% case 1 : x% = x% - vit% : y% = y% + vit% : d = 5*pi/4 : dx = 25 : dy = 30 case 2 : y% = y% + vit% : d = 3*pi/2 : dx = 25 : dy = 30 case 3 : x% = x% + vit% : y% = y% + vit% : d = 7*pi/4 : dx = 25 : dy = 30 case 4 : x% = x% - vit% : d = pi : dx = 0 : dy = 30 case 5 : x% = x% + vit% : d = 0 : dx = 25 : dy = 30 case 6 : x% = x% - vit% : y% = y% - vit% : d = 3*pi/4 : dx = 0 : dy = 0 case 7 : y% = y% - vit% : d = pi/2 : dx = 25 : dy = 0 case 8 : x% = x% + vit% : y% = y% - vit% : d = pi/4 : dx = 25 : dy = 30 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 ============================================================================
Laissons la part de notre ami Jean Claude. Lui, il n’aime pas trop le travail mâché ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Mar 16 Juin 2015 - 7:50 | |
| Bonjour à tous, je découvre vos réponses à l'instant. Hé bé, ça réagit dans les chaumières... Je n'ai essayé aucun de vos codes pour le moment, ce que je vais faire dans l'heure qui vient. - Papydall a écrit:
- Laissons la part de notre ami Jean Claude.
Lui, il n’aime pas trop le travail mâché ! C'est à la fois vrai et faux: J'ai besoin d'écrire moi-même le code pour assimiler, mais un coup de main est souvent le bienvenue pour éviter un découragement. - Jack a écrit:
- Faire un jeu vidéo n'est pas si facile....
A qui le dis-tu ! Je n'en ai pas fait beaucoup, et un seul en 2D. Merci pour tes conseils et encouragements. Bon, je vais regarder vos copies, messieurs, j'espère en tirer des enseignements. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Mar 16 Juin 2015 - 8:12 | |
| Maintenant que tu as pris en main l'animation, tu devrais commencer à implémenter la gestion des sprites version Klaus (tout ou partie) pour te faciliter la vie au niveau des détections de collisions entre les sprites entre autre entre les tirs et les objets (Asteroids, autres vaisseaux ou autre cibles de ton choix). De toute façon tu as du monde derrière toi pour t'aider dans la création de ton jeu... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Mar 16 Juin 2015 - 9:54 | |
| Ho que non Jicehel ! Si j'explore PANGINE2D, c'est justement pour voir si l'on peut s'en passer. Comme Klaus l'a justement signalé, la bête est un peu lourde. PANGINE2D présente l'avantage d'avoir des fonctions d'animations de sprite et je préfère attendre de voir si Jack a l'intention de gérer les collisions. Néanmoins, les SUB(s) de Klaus vont me servir pour m'en inspirer. Par contre je n’oublierai pas de vous solliciter vous tous et Jack. @Papydall, J'ai repris ton code (avec le tir) comme base car c'est propre et ça fonctionne très bien J'ai centré le sprite "balle" sur le vaisseau comme point de départ du tir et retardé son apparition pour que ça parte de l'avant du vaisseau. J'ai été contraint d'utiliser OFF_KEY_DOWN 0 pendant la boucle du tir, sinon si on change la direction du vaisseau avant que le tir soit terminé la "balle" change de direction. Et surtout pour éviter que si on fait un deuxième tir avant la fin de la boucle, le jeu ne s'arrête. Au début je n'était pas parti sur un jeu (c'était des essais), mais vu la tournure des événements, ça en prend le chemin. En fin d'après-midi je mettrai à jour sur le Webdav. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Mar 16 Juin 2015 - 10:19 | |
| Oui mais tu peux t'en inspirer à ta sauce pour gérer les sprites (la hauteur, la largeur) Si tu te fais une procédure de détection de collision, tu pourra avancer et tu remplaceras plus tard quand Jack l'aura mis en place | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: PANGINE2D Mar 16 Juin 2015 - 14:24 | |
| Je viens de remplacer le zip ESSAI_PANGINE2D sur mon Webdav. Pour simplifier, je l'ai déposé en première page (plus besoin d'aller le chercher dans jeu_en 2d) Le sujet c'est essai6.bas. J'ai ajouté un astéroïde qui dérive dans l'espace (Un sprite animé) Le but sera bien entendu de le détruire, quand je m'y attaquerai. Il y a une chose sur laquelle je bloque, quand on fait un tir, l'astéroïde n'avance plus pendant la durée du tir. Au passage essayez essai2.bas, c'est un essai sur le scrolling. Sinon, prochaine étape => la collision entre le missile et l'astéroïde et/ou avec le vaisseau. @Ygeronimi, Peux-tu m'expédier d'urgence une boite de Paracétamol". A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: PANGINE2D Mar 16 Juin 2015 - 14:43 | |
| Je n'ai pas regardé ton code pour les raisons que j'ai déjà exposé mais je te donne la méthode pour un jeu. Tout ton jeu dois se baser sur un principe de tours / cycles
Tu te dis qu'à chaque tour, tu va prendre en compte tes différents éléments ou incrémenter un compteur pour les éléments qui ne bougent ou agissent qu'au bout d'un certain nombre de tours/cycles.
Tu as donc besoin d'un timer principal qui va rythmer ton jeu.
A chaque tour, le timer appellera ta boucle principale dans laquelle tu verras si l'utilisateur a appuyé sur une touche pour faire avancer le vaisseau. Tu regarderas s'il a déclenché un nouveau tir et tu fera avancer les tirs déjà effectués en testant si éventuellement ils rentre en collision avec ton astéroïde et tu fera se déplacer ton astéroïde. Si le vaisseau bouge 2 fois moins vite que les tirs et si l’astéroïde bouge 4 fois moins vite, tu utilise des compteurs que tu incrémente d'un à chaque tour et que tu remets à 0 quand ils ont atteint ou dépasser la valeur maximale que tu auras fixé
Là tu auras l'ossature de ton jeu. | |
| | | 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 Mar 16 Juin 2015 - 16:46 | |
| - Jean Claude a écrit:
- @Ygeronimi,
Peux-tu m'expédier d'urgence une boite de Paracétamol". Tu n’en a pas besoin ! Tu as ygeronimi en personne, pourquoi veux-tu son paracétamol ? Klaus, Jicehel, Ygeronimi, JL35, Cosmos70, Nardo26, Pascal1000, Minibug, Papydall , et tous les autres peuvent t’être plus bénéfiques que le Paracétamol. Ils peuvent apporter mieux que le Doliprane, non ? Alors demande au secours (tu n’en a même pas besoin de crier), et tu te verras entourer des belles âmes ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 16 Juin 2015 - 17:40 | |
| @ Papydall, Sur ce coup là, je préfère lui envoyer un carton de paracétamol. Il lui sera plus utile que ma personne... Ceci dit d' autres sont plus spécialistes des jeux et pourront certainement l' aider. | |
| | | Contenu sponsorisé
| Sujet: Re: PANGINE2D | |
| |
| | | | PANGINE2D | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |