zebdal Utilisateur confirmé: Rang *****
Messages : 2874 Localisation : Chez Vanilla Projet Actuel : Shrapnel
Kanon
Sengoku Rance Online
Vanilla H
| Sujet: puyo puyo master Dim 31 Aoû 2008 - 23:45 | |
| depuis 1 an, quelque chose me trottait dans ma tete, comment réaliser un puyo puyo? parce qu'en fait, je me disais que j'aimerait bien créer un jeu puyo puyo master qui serait à puyo puyo ce que tetris master est à tetris. cad un jeu plus rapide permettant un très haut niveau et si possible jouable online. pour ceux qui ne connaissent pas puyo puyo, voici une vidéo de moi même jouant à la version gba du jeu: http://fr.youtube.com/watch?v=FPvrOZ58J7wj'y ai beaucoup réfléchi et aujourd'hui en 4 heures de boulot il en est ressorti ca: (j'ai écrit ca en pseudo C) 0 = pas de blocs 1 à 5 = bloc d'une certaine couleur je ne me suis pas occupé des blocs gris geneurs pour l'instant i ou x = numéro de ligne j ou y = numéro de colonne initialisation du tableau conservant les valeurs de chaque case: - Spoiler:
int tableauval[13,6];
for (i=1, i<14, i++)
for (j=1, j<7, j++)
tableauval[i,j]=0; ]
verification des blocs a faire disparaitre: (tableauval contient une valeur k qui s'exprime en fonction de i et j k = 6*i + j ca me permet ainsi de conserver les coordonnées des blocs a faire disparaitre dans un tableau a qu'une seule dimension pour faciliter la tâche. - Spoiler:
procedure udlr
paramètres (i, j, tableauval, tableauverif, indice)
int k=1;
int vrai=1;
int x, y;
if (i-1>0)
if (tableauval[i, j]==tableauval[i-1, j])
{while k<indice+1 and vrai=1;
{y=tableauverif[k];
x=1;
while y>6
{y=y-6;
x++;
}
if (x==i-1 and y==j)
vrai=0;
else
k++;
}
if (k==indice+1)
{tableauverif[k]=(j+(i-1)*6);
indice++;
udlr (i-1, j, tableauval, tableauverif, indice);
}
}
k=1;
vrai=1;
if (i+1<7)
if (tableauval[i, j]==tableauval[i+1, j])
{while k<indice+1 and vrai=1;
{y=tableauverif[k];
x=1;
while y>6
{y=y-6;
x++;
}
if (x==i+1 and y==j)
vrai=0;
else
k++;
}
if (k==indice+1)
{tableauverif[k]=(j+(i+1)*6);
indice++;
udlr (i+1, j, tableauval, tableauverif, indice);
}
}
k=1;
vrai=1;
if (j-1>0)
if (tableauval[i, j]==tableauval[i, j-1])
{while k<indice+1 and vrai=1;
{y=tableauverif[k];
x=1;
while y>6
{y=y-6;
x++;
}
if (x==i and y==j-1)
vrai=0;
else
k++;
}
if (k==indice+1)
{tableauverif[k]=((j-1)+6i);
indice++;
udlr (i, j-1, tableauval, tableauverif, indice);
}
}
k=1;
vrai=1;
if (j+1>0)
if (tableauval[i, j]==tableauval[i, j+1])
{while k<indice+1 and vrai=1;
{y=tableauverif[k];
x=1;
while y>6
{y=y-6;
x++;
}
if (x==i and y==j+1)
vrai=0;
else
k++;
}
if (k==indice+1)
{tableauverif[k]=((j+1)+6i);
indice++;
udlr (i, j+1, tableauval, tableauverif, indice);
}
}
faire disparaitre les blocs: - Spoiler:
procedure nettoyage
paramètres (tableauval, tableauverif, indice)
int i, j;
for (k=1, k<indice+1, k++)
{j=tableauverif[k];
i=1;
while j>6
{j=j-6;
i++;
}
tableauval[i, j]=0;
}
mise en place de la vérification des blocs et de la disparition des blocs: - Spoiler:
procedure verif
paramètres (tableauval, x, y, forme)
int tableauverif1[50];
int tableauverif2[50];
int indice1=1;
int indice2=1;
int a,b;
for (i=1, i<51, i++)
tableauverif1[i]=0;
for (i=1, i<51, i++)
tableauverif2[i]=0;
tableauverif[1]=(y+6x);
udlr (x, y, tableauval, tableauverif1, indice1);
if (forme==1)
a=x+1; b=y;
else if (forme==2)
a=x-1; b=y;
else if (forme==3)
a=x; b=y+1;
else
a=x; b=y-1;
if (tableauval[x,y]!=tableauval[a,b])
{
tableauverif2[1]=(b+6a);
udlr (a, b, tableauval, tableauverif2, indice2);
}
if (indice1>3)
nettoyage (tableauval, tableauverif1, indice1);
if (indice2>3)
nettoyage (tableauval, tableauverif2, indice2);
tombée des blocs après disparition: - Spoiler:
procedure tombee
paramètres (tableauval)
int k;
int vrai;
for (i=1, i<7, i++)
for (j=1, j<13, j++)
{vrai=1;
if (tableauval[i,j]==0)
{k=i+1;
while (k<14 and vrai=1)
{if (tableauval[i,k]==0)
k++;
else
vrai=0;
}
l=j+1;
while (k<14)
if (tableauval[i,k]!=0)
{tableauval[i,l]=tableau[i,k];
k++; l++;
}
}
}
je pense qu'il n'y a pas d'erreurs dans mon code. après je ne sais pas si c'est une solution optimale ou quoi mais ca reste une solution. il manque 2-3 trucs, j'ai pas fait par exemple quand on dirige les blocs ou quand on change la forme. attention, ce n'est pas un projet que je réaliserai aujourd'hui, car je suis encore trop mauvais, que ca soit en c ou sur gm. peut etre que d'ici un an, je le ferai mais je ne pense pas avant et d'ici là, j'aurai surement d'autres projets en tête. |
|
yano Utilisateur confirmé: Rang **
Messages : 488 Projet Actuel : SCR Keiko Shoot them up 3D vertical.
| Sujet: Re: puyo puyo master Lun 1 Sep 2008 - 0:35 | |
| Ahh puyo puyo^^ J'adore D'ailleurs on ne fais pas assez de puzzle game ici j trouve, très dommage car avec de bons graph et en 2d on peut vite avoir un jeu très 'pro'. Si le coeur t'en dis cette année je serais partant pour te faire des sprites |
|
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: puyo puyo master Lun 1 Sep 2008 - 0:43 | |
| oui, j'ai voulut faire pareil, je voulais faire un naturalchimie mais j'y suis pas arriver, c'est plus compliqué qu'on le crois.
moi j'avais procéder autrement mais je pense que ta méthode et la meilleur (la mienne étant un echec total)
j'avais juste procéder avec des objet qui bouge normalement les bloc on deux état, un qui tombe ou pas
il change d'état quand il touche un autre bloc si le joueur veut decaler on verifie si il y a la place et on decale
ensuite pour vérifier si plusieurs se touche (moi il en fallait que 3 ) chaque objet, a un moment compte, combien d'objet de meme type se trouve a coté, si un objet est >= a 2 bin on fait exploser le tous et on remet tous les objet en mode descente |
|
zebdal Utilisateur confirmé: Rang *****
Messages : 2874 Localisation : Chez Vanilla Projet Actuel : Shrapnel
Kanon
Sengoku Rance Online
Vanilla H
| Sujet: Re: puyo puyo master Lun 1 Sep 2008 - 0:49 | |
| pas étonnant, les puzzle games ne sont pas aussi simples que ca, c'est plus dur de faire un puzzle game qu'un jeu de plateforme ou rpg. y a tout plein de formules de dingue a faire pour des jeux comme puyo puyo qui paraissent hyper simple, mais qui en fait ne le sont pas. y a qua voir le projet chuchu rocket pour ca. et encore, faire un chuchu rocket, je trouve que c'est plus simple. je suis un spécialiste des puzzle games et des jeux de société vu que j'ai passé toute ma vie a jouer à des jeux comme tetris, les echecs, le puissance 4, puyo, denki blocks, etc... je sais que même si je réussis a faire un puyo puyo, il me restera a faire le système de score qui n'est pas simple, les boules grises qui bloquent, le mode online, les graphismes...
yano, je ne veux pas te forcer a travailler dans des sprites alors que je ne suis pas du tout sur de réaliser ce projet, et encore moins tout de suite. |
|
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: puyo puyo master Lun 1 Sep 2008 - 1:03 | |
| je suis en train d'essayer de faire ce jeux faut juste que j'arrive a faire un truc fonctionnelle pour repéré si y'en a 3 sui se touche. edit: je vais plutot aller dormir en faite tenez le debut d'un code (meme si sa sert a rien) - Code:
-
Information about object: fiole
Sprite: Solid: false Visible: true Depth: 0 Persistent: false Parent: Mask:
Create Event: execute code:
type=random(2) sprite_index=type mode=0
Step Event: execute code:
if mode=0 { vspeed=2 } else { vspeed=0 }
if y+32>room_height { y=room_height-32 mode=1 }
if mode=1 {
}
Collision Event with object fiole: execute code:
move_contact_all(270,8) vspeed=0 mode=1 |
|
Contenu sponsorisé
| Sujet: Re: puyo puyo master | |
| |
|