CASE
Posté le 26/02/2010 15:30
Bonjour a tous !
Voici mon premier nouveau programme que je vais poster sur le site !
Il est intitulé CASE (Pas vraiment original, mais bon…) : c’est un jeu dérivé de
Kerixep , un puzzle-game ou le but du jeu est de remplir toutes les cases sans passer deux fois sur la même !
Pour l’instant j’ai fait le plus gros du programme, l’algorithme de la création de la carte, très simple mais fallait y penser. (L’algorithme centre le jeu, l’agrandi au maximum puis fais les contours gras pour ne pas confondre le vide d’une case)
Il me manque juste le menu, le déplacement sur les cases (déjà fait mais reset...) et peut-être un éditeur de niveau.
Ce n’est pas fini ! Si vous voulez y participer, vous pouvez faire des niveaux (Oui, je suis très nul à la création de casse-tête…) pour être mis dans le projet ! (vous aurait même le droit de figurer dans le crédit, au moins ça)
Mais faut que j’explique cette création :
Le niveau est stocké dans une matrice, pas n’importe quelle taille, sous la ridicule formule [y+2,x+2] (enfin si on parler de ça d’une formule) x= l’abscisse du niveau et y=l’ordonnée du niveau.
Bref, imaginons le 1er niveau de Kerixep sous la forme d’une matrice :
1= case pleine
0= un peu spécial, l’algorithme lorsqu’il voit 0, regarde autour de cette case, si une case vaut 1 alors au fait un contour gras sur le contour case.
9= Pour pas faire de calculs qui servent à rien car si on regarde, les cases autour de lui vaut toujours 0 (les diagonales ne comptent pas…)
Le niveau est donc stockée comme ça : [[9,0,0,9][0,1,1,0][0,1,1,0][9,0,0,9]]->Mat A
Mais il faut aussi donner la taille de la matrice dans les variables K (x) et L(y) :
4->K~L
Et il ne faut pas oublier les coordonnées ou l’on commence :
3->A~B
E peut-être la solution avec les getkey des touches replay dans une liste :
{38,28,27}->List 1
Voici donc l’algorithmes en chiffre et en fonctions :
Cliquez pour découvrir
Cliquez pour recouvrir
Prog “-MAPS”
60÷(L-2)->C:123.5÷(K-2)->D
C<D=>C->T:D<C=>D->T
Int ((125-T(K-2))÷2)->M
Int ((61-T(L-2))÷2)->N
ViewWindow 2T-1-M,125+2T-M,0,61+2T-N,2T-1-N,0
S-WindMan:FuncOff
S-Gph1 DrawOn,xyLine,List1,List2,1,Dot,Blue
S-Gph2 DrawOff
S-Gph3 DrawOff
{T,2T,T,T,T,2T,2T,2T}->List 1
{T,T,T,2T,2T,2T,T,2T}->List 2
0->S
For 1->E To L
For 1->D To K
If Mat A[E,D]=1
Then Drawstat:Isz S
IfEnd
If Mat A[E,D]=0
Then E!=1=>Mat A[E-1,D]=1=> F-Line TD+T,TE+1,TD,TE+1
E!=L=>Mat A[E+1,D]=1=> F-Line TD+T,TE+T-1,TD,TE+T-1
D!=K=>Mat A[E,D+1]=1=> F-Line TD+T-1,TE+T,TD+T-1,TE
D!=1=>Mat A[E,D-1]=1=> F-Line TD+1,TE+T,TD+1,TE
IfEnd
List 1+T->List 1
Next
List 2+T->List 2
List 1-TK->List 1
Next
T=la taille d'une case, S= surface total du jeu K et L=taille de la matrice puis après c'est pour centrer le jeu et l'agrandir au maximum