| PacMan | |
|
|
Auteur | Message |
---|
Shrom Débutant
Messages : 18
| Sujet: PacMan Sam 12 Nov 2011 - 13:49 | |
| Bonjour tous le monde, Je suis nouveau sous GameMaker, et je voudrais me faire la main sur cet outil en créant un PacMan en GML j'ai réussi a créer mes déplacement, mais lorsque je rentre en collsion avec mon mur, je passe au travers... ( ce n'est pas très pratique ) voici mon code : - Code:
-
//déclaration des variables servant à faire bloquer PacMan contre les mur
//Si pacman de déplace vers la droite
if argument0==1 { if (place_free(x+32,y) && place_snapped(32,32)) { direction = 0; speed = 2; sprite_index = PacMan_R_spr; image_speed = 1/4; } }
//Si pacman de déplace vers la gauche if argument1==1 { if (place_free(x-32,y) && place_snapped(32,32)) { direction = 180; speed = 2; sprite_index = PacMan_L_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le haut if argument2==1 { if (place_free(x,y-32) && place_snapped(32,32)) { direction = 90; speed = 2; sprite_index = PacMan_H_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le bas if argument3==1 { if (place_free(x,y+32) && place_snapped(32,32)) { direction = 270; speed = 2; sprite_index = PacMan_B_spr; image_speed = 1/4; } } pouvez vous m'aider ?
Dernière édition par Shrom le Sam 12 Nov 2011 - 14:04, édité 1 fois |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: PacMan Sam 12 Nov 2011 - 13:59 | |
| |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Sam 12 Nov 2011 - 14:07 | |
| J'ai déja regardé ces deux liens, mais je ne l'ai comprends pas ?
je veut dire je connais l'histoire des boucles etc..( je suis informaticien), mais je ne comprends pas celles-la :p
peut tu m'aider ? |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: PacMan Sam 12 Nov 2011 - 14:17 | |
| Pourtant les deux tuto sans bien expliqués - Code:
-
if (place_free(x+32,y) Ce bout de code (le tien) signifie : s'il n'y à rien à 32pixels de X. Ce que tu dois faire c'est : s'il n'y à rien à 1pixel de X; mais tu dois le répéter 32 fois pour que tu te déplace de 32pixels par step. Pour ce faire tu dois utiliser une boucle, la plus approprié niveau optimisation c'est la boucle for mais tu peut le faire avec une boucle repeat aussi. - Code:
-
for({var i; i=0}; if( place_free(x+1,y) and i<32); i+=1){ // ton code ici } la boucle for ce résume ainsi: - Citation :
- for(1;2;3){4}
1- initialisation: ne s’exécute qu'une seule fois au premier tour de la boucle. 2- condition: tant que la condition est vrai on continue de boucler. 3- action qui s’exécute à chaque fin de tour de boucle. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Sam 12 Nov 2011 - 14:51 | |
| Je dirais juste qu'un pacman c'est du case par case, et donc que la boucle est inutile :p Par contre il faut bien vérifier a x+1, x-1, etc, et faire gaffe au niveau des masques : il doivent tous avoir la même taille (par exemple 32x32) |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Sam 12 Nov 2011 - 16:27 | |
| Merci de vos réponses !! Je n'avais pas compris la boucle lool en revanche mon soucis persiste !! voici mon code : - Code:
-
//déclaration des variables servant à faire bloquer PacMan contre les mur var i //Si pacman de déplace vers la droite
if argument0==1 { for({var i; i=0}; (place_free(x+1,y) and i<32); i+=1) { if place_snapped(32,32) { direction = 0; speed = 2; sprite_index = PacMan_R_spr; image_speed = 1/4; } } }
//Si pacman de déplace vers la gauche if argument1==1 { for({var i; i=0}; (place_free(x-1,y) and i<32); i+=1) { if place_snapped(32,32) { direction = 180; speed = 2; sprite_index = PacMan_L_spr; image_speed = 1/4; } } }
//Si pacman de déplace vers le haut if argument2==1 { for({var i; i=0}; (place_free(x,y-1) and i<32); i+=1) { if place_snapped(32,32) { direction = 90; speed = 2; sprite_index = PacMan_H_spr; image_speed = 1/4; } } }
//Si pacman de déplace vers le bas if argument3==1 { for({var i; i=0}; (place_free(x,y+1) and i<32); i+=1) { if place_snapped(32,32) { direction = 270; speed = 2; sprite_index = PacMan_B_spr; image_speed = 1/4; } } } J'ai vérifier les masques, il sont tous identiques, mais ce qui me perturbe ce que a aucun moment dans le script je lui indique l'objet avec lequelle il rentre en collision. le problème vien peut être de la non ? ou alors la fonction "place_free" prends en compte tous les objets "Solid" avec lesquelle nous rentrons en collision ? ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Sam 12 Nov 2011 - 16:48 | |
| T'as coché solid dans l'objet avec qui tu doit entrer en collision ? Parce qu'en fait c'est cette variable que regarde place_free.
|
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Sam 12 Nov 2011 - 16:52 | |
| Et bien oui, j'ai tois objet, mon PacMan, mon mur, et mon obj parent a PacMan, dans lequel j'ai mis l'evenement STEP qui lance mon script de mouvement après avori récupérer la touche enfoncée, et tous mes objet sont "solid". |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Sam 12 Nov 2011 - 16:59 | |
| Je maintient que la loop for sert a rien pour un déplacement case par case. C'est même peut être ça qui cause des bugs. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: PacMan Sam 12 Nov 2011 - 17:04 | |
| - Citation :
- Je maintient que la loop for sert a rien pour un déplacement case par case.
Je suis d'accord. - Citation :
- C'est même peut être ça qui cause des bugs.
Beaucoup moins pour le coup. Je ne vois pas en quoi elle poserait des problèmes. |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Sam 12 Nov 2011 - 17:07 | |
| Je suis également de ton avis étant donnée que même en l'ayant enlevé cela ne fonctionne toujours pas. - Spoiler:
- Code:
-
//Si pacman de déplace vers la droite
if argument0==1 { if (place_free(x+1,y) && place_snapped(32,32)) { direction = 0; speed = 2; sprite_index = PacMan_R_spr; image_speed = 1/4; } }
//Si pacman de déplace vers la gauche if argument1==1 { if (place_free(x-1,y) && place_snapped(32,32)) { direction = 180; speed = 2; sprite_index = PacMan_L_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le haut if argument2==1 { if (place_free(x,y+1) && place_snapped(32,32)) { direction = 90; speed = 2; sprite_index = PacMan_H_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le bas if argument3==1 { if (place_free(x,y-1) && place_snapped(32,32)) { direction = 270; speed = 2; sprite_index = PacMan_B_spr; image_speed = 1/4; } }
Ce que je ne comprends pas, c'est que de cette manière je pense bien vérifier en x+1,y-1, etc... mais ce fichu point jaune ne veut pas rentré en collision avec ce mur !!! lol
Dernière édition par Shrom le Sam 12 Nov 2011 - 17:09, édité 1 fois |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Sam 12 Nov 2011 - 17:09 | |
| Je pense pas que le problème viens de ce script, mais plutot d'ou et comment il est utilisé. Car la tout a l'air correct a premiere vue. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: PacMan Sam 12 Nov 2011 - 17:14 | |
| Oui c'est ce que j'étai entrain de penser aussi. - Citation :
- mon obj parent a PacMan, dans lequel j'ai mis l'evenement STEP qui lance mon script de mouvement après avori récupérer la touche enfoncée
Si tu exécute ton script dans le step du parent c'est le parent qui va se déplacer. |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Sam 12 Nov 2011 - 17:16 | |
| Alors voici comment est structurer mon programme : J'ai mes sprites qui contiennent chacun 6 image ( sauf pour le wall ) de 32 par 32 avec le même masque ( 30*30 ) : -PacMan_R_spr -PacMan_L_spr -PacMan_H_spr -PacMan_B_spr -Wall_1_spr j'ai un objet qui correspond a mon sprite "PacMan_R_spr" avec comme parents : l'objet pac_move dans lequelle se trouve ce script : - Spoiler:
- Code:
-
image_speed=1/4;
//Récuparation des touches de déplacement pour PacMan move_left = keyboard_check(vk_left)==1; move_right = keyboard_check(vk_right)==1; move_up = keyboard_check(vk_up)==1; move_down = keyboard_check(vk_down)==1;
//On appelle le script de déplacement de PacMan mv_pacman_scr(move_right,move_left,move_up,move_down);
et voici le scrpit derrière mv_pacman_scr : - Spoiler:
- Code:
-
//Si pacman de déplace vers la droite
if argument0==1 { if (place_free(x+1,y) && place_snapped(32,32)) { direction = 0; speed = 2; sprite_index = PacMan_R_spr; image_speed = 1/4; } }
//Si pacman de déplace vers la gauche if argument1==1 { if (place_free(x-1,y) && place_snapped(32,32)) { direction = 180; speed = 2; sprite_index = PacMan_L_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le haut if argument2==1 { if (place_free(x,y+1) && place_snapped(32,32)) { direction = 90; speed = 2; sprite_index = PacMan_H_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le bas if argument3==1 { if (place_free(x,y-1) && place_snapped(32,32)) { direction = 270; speed = 2; sprite_index = PacMan_B_spr; image_speed = 1/4; } }
Tous mes objet son "solid". |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Sam 12 Nov 2011 - 17:26 | |
| - Caly a écrit:
- Oui c'est ce que j'étai entrain de penser aussi.
- Citation :
- mon obj parent a PacMan, dans lequel j'ai mis l'evenement STEP qui lance mon script de mouvement après avori récupérer la touche enfoncée
Si tu exécute ton script dans le step du parent c'est le parent qui va se déplacer. Ben pourtant mon PacMan se déplace bien... EDIT : si je crée une évenement drag&drop, qui dit que entre mon parent et l'objet mur il y a une collision, alors la cela fonctionne !!!! seulement moi je veut le traduire en code, une idée ? |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Lun 14 Nov 2011 - 18:19 | |
| up ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Lun 14 Nov 2011 - 18:25 | |
| Je t'aurais bien aidé mais la j'ai le cerveau déco x) Sinon je pourrais toujours te faire un exemple demain au pire, histoire que tu vois un autre algo et que tu puisse comparer :p |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Lun 14 Nov 2011 - 18:28 | |
| D'accord merci a toi !! en tous cas voici ou j'ne suis arriver : - Code:
-
//Si pacman de déplace vers la droite
if argument0==1 { if (place_free(x+1,y) && place_snapped(32,32)) { direction = 0; speed = 2; sprite_index = PacMan_R_spr; image_speed = 1/4; } else { direction = 0; speed = 0; sprite_index = PacMan_R_spr; image_speed = 1/4; } }
//Si pacman de déplace vers la gauche if argument1==1 { if (place_free(x-1,y) && place_snapped(32,32)) { direction = 180; speed = 2; sprite_index = PacMan_L_spr; image_speed = 1/4; } else { direction = 180; speed = 0; sprite_index = PacMan_R_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le haut if argument2==1 { if (place_free(x,y+1) && place_snapped(32,32)) { direction = 90; speed = 2; sprite_index = PacMan_H_spr; image_speed = 1/4; } else { direction = 90; speed = 0; sprite_index = PacMan_R_spr; image_speed = 1/4; } }
//Si pacman de déplace vers le bas if argument3==1 { if (place_free(x,y-1) && place_snapped(32,32)) { direction = 270; speed = 2; sprite_index = PacMan_B_spr; image_speed = 1/4; } else { direction = 270; speed = 0; sprite_index = PacMan_B_spr; image_speed = 1/4; } } |
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Mar 15 Nov 2011 - 18:15 | |
| Bonsoir, J'ai travailler dessus avec un copain aujourd'hui et voici ou nou sen sommes arrivé : - Code:
-
en_collision = 0;
PacMan_B_obj.pac_direction=argument0;
//Si pacman se déplace vers la droite if PacMan_B_obj.pac_direction==1 && place_snapped(32,32) { if (!place_free(x+32,y)) { PacMan_B_obj.pac_direction = PacMan_B_obj.old_direction; speed = 0; move_snap(32,32); en_collision = 1; } else { direction = 0; sprite_index = PacMan_R_spr; image_speed = 1/4; speed = 2; en_collision = 0; } }
//Si pacman de déplace vers la gauche if PacMan_B_obj.pac_direction==2 && place_snapped(32,32) {
if (!place_free(x-32,y)) { PacMan_B_obj.pac_direction = PacMan_B_obj.old_direction; speed = 0; move_snap(32,32); en_collision = 1;
} else { direction = 180; sprite_index = PacMan_L_spr; image_speed = 1/4; speed = 2; en_collision = 0; } }
//Si pacman de déplace vers le haut if PacMan_B_obj.pac_direction==3 && place_snapped(32,32) { if (!place_free(x,y-32)) { PacMan_B_obj.pac_direction = PacMan_B_obj.old_direction; speed = 0; move_snap(32,32); en_collision = 1; } else { direction = 90; sprite_index = PacMan_H_spr; image_speed = 1/4; speed = 2; en_collision = 0; } }
//Si pacman de déplace vers le bas if PacMan_B_obj.pac_direction==4 && place_snapped(32,32) { if (!place_free(x,y+32)) { PacMan_B_obj.pac_direction = PacMan_B_obj.old_direction; speed = 0; move_snap(32,32); en_collision = 1; } else { speed = 2; en_collision = 0; direction = 270; sprite_index = PacMan_B_spr; image_speed = 1/4; } }
Résultat : Les collision fonctionne parfaitement ! Seul problème restant : Lorsque pacman se déplace dans une direction, si je lui demande de se déplace dans une autre et qu'il y a une collision avec un mur a l'endroit demandé, Pacman essaie d'y aller mais il ne peut pas car il y a collision ( logique), mais moi ce que je voudrais, c'est que si il y a un mur a l'endroit demandé, il reste dans la dernière direction., Exemple : PacMan se déplace vers la droite, je lui demande d'aller en haut mais il y a un mur, il ne change pas de direction, il continue vers la droite jusqu'a ce que il puisse le faire. une idée ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Mar 15 Nov 2011 - 18:32 | |
| Bon chose promise chose due : Voici les déplacements d'un jeu type pacman, faits a l'instant (a mettre dans step) pour des objets de taille 16x16 : - Code:
-
if(keyboard_check(vk_left) && place_snapped(16, 16)) { if(place_free(x-1, y)) { direction = 180 speed = 2 } } else if(keyboard_check(vk_right) && place_snapped(16, 16)) { if(place_free(x+1, y)) { direction = 0 speed = 2 } } if(keyboard_check(vk_up) && place_snapped(16, 16)) { if(place_free(x, y-1)) { direction = 90 speed = 2 } } if(keyboard_check(vk_down) && place_snapped(16, 16)) { if(place_free(x, y+1)) { direction = 270 speed = 2 } }
if(place_snapped(16, 16) && !place_free(x + lengthdir_x(1, direction), y + lengthdir_y(1, direction))) { speed = 0 } Et la version racourcie: - Code:
-
key[0]=vk_right key[1]=vk_up key[2]=vk_left key[3]=vk_down
for(i=0; i<4; i+=1) { if(keyboard_check(key[i]) && place_snapped(16, 16)) { lx = lengthdir_x(1, i*90) ly = lengthdir_y(1, i*90) if(place_free(x+lx, y+ly)) { direction = i*90 speed = 2 break } } }
if(place_snapped(16, 16) && !place_free(x + lengthdir_x(1, direction), y + lengthdir_y(1, direction))) speed = 0 Que l'on peu optimiser en divisant en 2 parties (create et step) : - Code:
-
key[0]=vk_right key[1]=vk_up key[2]=vk_left key[3]=vk_down for(i=0; i<4; i+=1) { lx[i]=lengthdir_x(1, i*90) ly[i]=lengthdir_y(1, i*90) } - Code:
-
for(i=0; i<4; i+=1) { if(keyboard_check(key[i]) && place_snapped(16, 16)) { if(place_free(x+lx[i], y+ly[i])) { direction = i*90 speed = 2 break } } }
if(place_snapped(16, 16) && !place_free(x+lx[direction div 90], y + ly[direction div 90])) speed = 0 Voila, j'espere que ça pourras t'aider a comprendre comment mieux structurer ton algo |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: PacMan Mar 15 Nov 2011 - 20:37 | |
| Oni, c'est moi ou tu viens de déclarer trois tableaux rien que pour les déplacements ? O_o _________________ Home is not a place, it's a feeling.
|
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Mar 15 Nov 2011 - 20:52 | |
| Merci de vos réponses !!! Voici le script que j'ai créer : - Code:
-
Coll = 0; //On initialise la variable de collision a 0
// Ce script gère le déplacement de PacMan ainsi que les collision avec les murs // Paramètre en entrée : // argument0 = PacMan_B_obj.PacMan_dir = 1; // On indique que pacman doit se déplacer ( 1=Oui, 0 = Non) // argument1 = PacMan_B_obj.PacMan_dir_y = 0; //On indique le nombre de pixel de déplacement Y // argument2 = PacMan_B_obj.PacMan_dir_x = 32; //On indique le nombre de pixel de déplacement X // argument3 = PacMan_B_obj.PacMan_dir_direction = 0; //On indique la direction a prendre par PacMan ( 0= droite, 180= Gauche, 90= Haut, 270= Bas) // argument4 = PacMan_B_obj.PacMan_dir_sprite_index = 1; //On indique le numéro du sprite a prendre ( voir script mv_pacman_scr ). // argument5 = Taille de la case de déplacement dans la room
if argument0==1 && place_snapped(argument5,argument5) //Si on demande à PacMan de se déplacer et qu'il est dans une grille de 32*32 alors { if (!place_free(x+argument2,y+argument1)) // Si il y a collision a la position x+ PacMan_B_obj.PacMan_dir_x et y+ PacMan_B_obj.PacMan_dir_y alors { speed = 0; //On dit a PacMan de se stopper move_snap(argument5,argument5); //On le replace dans une grille de 32*32 Coll = 1; //On fait en sorte que la valeur de debug des collsion prenne la valeur 1 } else // Sinon il n'y as pas de collision { direction = argument3; //Sinon on dit a PacMan d'aller dans le direction de PacMan_B_obj.PacMan_dir_direction switch(argument4) // En fonction de la valeur de PacMan_B_obj.PacMan_dir_sprite_index, on choisit le sprite { case 1: //Mouvement vers la droite sprite_index = PacMan_R_spr; break; // On force la sortie de la boucle, pour qu'il change bien a chaque step case 2: //Mouvement vers la droite sprite_index = PacMan_L_spr; break; case 3: //Mouvement vers la droite sprite_index = PacMan_H_spr; break; case 4: //Mouvement vers la droite sprite_index = PacMan_B_spr; break; } speed = 2; //On fixe la vite de déplacement de PacMan. Coll = 0; //On fait en sorte que la valeur de debug des collsion prenne la valeur 0 } } Il me reste 1 seul problème, le fait qu'il tente quand même de se déplacer même si il y a un mur, comme cité ci-dessus: un exemple : il se déplace vers la droite, mais lorsque j'appuie sur la flèche haut et qu'il y a un mur PacMan s'arette car il ne peut pas allé en haut, moi je souhaiterai qu'il continue vers la droite si il ne peut pas aller dans la direction demandé... une idée ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Mar 15 Nov 2011 - 21:29 | |
| - D-z a écrit:
- Oni, c'est moi ou tu viens de déclarer trois tableaux rien que pour les déplacements ? O_o
Ben mes tableaux sont legers. Ils font que 4 cases. >Shroom Je trouve ton code encore beaucoup trop complexe pour un probleme aussi simple. Et pourquoi vouloir a tout pris faire une fonction ? T'utilise une boucle et de la trigo et le problème du trop long code est reglé :p |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: PacMan Mer 16 Nov 2011 - 1:16 | |
| - onilink_ a écrit:
- Ben mes tableaux sont legers. Ils font que 4 cases.
C'était pas GM qui réservait direct les 30 000 cases du tableau en mémoire ? :' _________________ Home is not a place, it's a feeling.
|
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Mer 16 Nov 2011 - 11:57 | |
| Nop je crois pas Sinon j'aurais utilisé autre chose x) |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: PacMan Mer 16 Nov 2011 - 18:32 | |
| Bon, j'ai rien dit alors. Mais c'est quand même utiliser un bazooka pour tuer une mouche :p _________________ Home is not a place, it's a feeling.
|
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: PacMan Mer 16 Nov 2011 - 18:58 | |
| Jvois pas en quoi. Déjà ça évite de refaire des calculs inutiles, ensuite ça allège le code, et en plus ça le rend plus lisible. C'est plutot Shrom qui utilise le bazooka :p |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: PacMan Mer 16 Nov 2011 - 21:24 | |
| 'fin, y'a un juste milieu aussi :p Perso j'avais pris l'habitude d'utiliser quelques variables key_left, key_up, etc. Mais c'était surtout pour de la plates-formes. _________________ Home is not a place, it's a feeling.
|
|
| |
Shrom Débutant
Messages : 18
| Sujet: Re: PacMan Jeu 17 Nov 2011 - 19:15 | |
| Merci a vous j'ai finalement réussi a faire ca : - Code:
-
// ############################################# // #### Script de déplacement de Namcap V 1 #### // #### Made By Shrom & Doyou #### // #### Special thanks to : onilink_ #### // #############################################
// Déplacement si il n'y a pas de collision for(i=0; i<4; i+=1) // Pour i allant de 1 à 4 en fonction de la direction choisit { if(keyboard_check(key[i]) && place_snapped(32, 32)) // Si l'on a appuyé sur une touche et que Namcap est placé dans une grille de 32*32 { if(place_free(x+lx[i], y+ly[i])) // Si il y a de la place entre Namcap et un objet de type "solid" en position X et Y calculé dans l'evénement "Create" { switch(i) // On fonction de la direction, on choisit le sprite à afficher. { case 0: sprite_index = Namcap_R_spr // Sprite Droite break case 2: sprite_index = Namcap_L_spr // Sprite Gauche break case 1: sprite_index = Namcap_H_spr // Sprite Haut break case 3: sprite_index = Namcap_B_spr // Sprite Bas break } direction = i*90 // on va dans la direction choisit en fonction de la touche préssée. speed = 2 // On fixe la vitesse break // on sort du "If", car il n'y a pas de collision, donc on est sur qu'il ne fasse pas le "IF" suivant } } } //Si il y a une collision, donc si il n'y as pas de place, on arrete Namcap if(place_snapped(32, 32) && !place_free(x+lx[direction div 90], y + ly[direction div 90])) { speed = 0 } |
|
| |
Contenu sponsorisé
| Sujet: Re: PacMan | |
| |
|
| |
| PacMan | |
|