Voici mon premier programme posté sur planète-casio.
[programme fini, je ne devrai pas le retoucher et le bloc note n'est pas encore en version 4.0]
But du jeu :
Vous avez un tableau de 3 à 8 cases de long et de large rempli de chiffres avec une case vide.
Il faut remettre les chiffres dans l ordre (1, 2, 3...) en déplaçant la case vide grâce aux flèches.
Principe d'utilisation :
Il y a 2 programmes : POUSSE et POUSINV
Ces programmes sont indépendant et casi-identique, la différance est dans le mode de jeu :
pour POUSSE : Il faut déplacer la case vide pour remettre les chiffres dans l ordre. La case vide va échanger sa place d un chiffre qui est à coté d elle.
Par exemple si j appuis sur la "flèche gauche", la case vide prendra la place du chiffre de gauche et ce chiffre prendra la place de la case vide.
pour POUSINV : les touches sont inversés ! (j'ai mis ce mode de jeu pour un ami qui préfere comme ça, moi je me sert de l'autre, chacun son truc^^) Il faut déplacer une des chiffre qui est à coté de la case vide pour remettre les chiffres dans l ordre. La case vide va échanger sa place
Par exemple si j appuis sur la "flèche gauche", le chiffre se trouvant a droite de la case vide va allé sur la gauche et sa place initial deviendra vide.
Remarques :
- En bas à droite, il y a un compteur de déplacement qui vari de 0 à 999.
/!\ l'affichage du compteur de coups est limité à 999 (apres le chifre des unités est hors écran), à cause du replay qui enregistre jusqu'a 999 mouvement dans une liste (pour casio 95 en tout cas), au delà le programme passera en erreur et sera intérompu.
- Mode replay en apuiyant sur [SHIFT] à tout moment du jeu (ne fonctionne pas 2 fois d'afillé et empeche d'utiliser la commande "recommencer"
- Quand vous avez gagné "WINNER !" s'affiche à l'écran et vous avez le choix entre appuyer sur [SHIFT] (replay) et aréter le programme en utilisant une autre touche
- en plus du programme, le jeu créer automatiquement 4 matris et 1 liste. les matris A B C D sont utilisés ainsi quel a liste 1. La matris D contient les reccords, vérifiers bien que vous avais assez de place pour créer les matris, surtout si vous jouez avec 1 carré de 8*8
Merci, pour le bug, quand tu appuis sur une fleche, ça ne fait pas le mouvement attendu : ça déplace soit en diagonal, de 2 cases ou ça ne fait rien =s
Je ne sais pas si ça peut t'aider car je n'ai pas envie de convertir pour le tester :D, mais j'ai fait un prog comme ça pour le concours (c'est un des mini-jeu). Peut-être qu'en regardant le code tu peux trouver ton erreur
J'ai aussi fait un jeu de taquin dans le Pack prizm et dans Escape prison, mais c'était du 4*4.
Je vais tester ton programme, ça m'intéresse. Surtout la génération des grilles.
C'est une grille préprogrammé, pour a génération des grilles je préfere le faire en dernier car si je le fait maintenant il faudra totalement le modifier quand je fairais des grilles plus grandes.
Par contre le plus dur sera d'éviter que le radom donne 2 valeurs identiques, j'ai déja esayé des trucs mais ça n'a pas marché jusque là.
Tu peux enregistrer dans une liste les valeurs utilisées et vérifier si elle est libre. Le code serait de ce genre :
9->Dim List 1 // Cette liste mémorise l'ordre d'apparition des chiffres dans la grille
For 1->B To 9
Do
1+Int (9Ran# // = Ans (Ans garde en mémoire le dernier résultat calculé)
LpWhile Sum (List 1=Ans // On continue de générer un nombre aléatoire entre [1;9] tant que ce dernier n'existe pas dans la liste 1
Ans->List 1[B // On ajoute le nombre à notre liste
Next
PS : la fonction Sum fait la somme des valeurs dans une liste.
L'astuce réside en List 1=Ans. La calculatrice va générer une liste temporaire (List Ans) pour laquelle chaque case qui ont la même valeur que Ans lui attribue la valeur 1, sinon 0. On fait la somme des cases. Si elle vaut 0, alors la valeur est libre, sinon, on génère un nouveau nombre et on refait vérification.
Si tu ne comprends pas, voilà un petit exercice :
Tu crées une liste avec les valeurs suivantes
{1,2,3,4,5->List 1
?->A
List 1=A[DISP]
"SUM="
Sum List Ans[DISP]
Tapes n'importe quelle valeur entre 0 et 10 et comprends pourquoi tantôt tu auras 1, tantôt 0.
ok merci beaucoups, j'avais pensé à le faire avec une matrice, mais ça revien au même, je vais essayer de faire quelquechose avec ça avant d'aller en cours
A mon avis, tu te compliques avec Sum (List 1=Ans, même si c'est très astucieux.
Perso, j'aurais fait :
8->Dim List 1
For 1->B To 8
Do
1+Int (8Ran#
LpWhile 0!=List 1[Ans
B->List 1[Ans
Next
C'est plus facile à comprendre.
Au passage j'ai mis 8 et non 9, car il faut laisser une case de libre
Mais bon, cette conversation a peu d'intéret.
En effet une grille de taquin ne peut pas être générée aléatoirement ! Toutes les grilles de taquin ne peuvent être résolu. Essayez vous verrez.
La méthode que j'ai utilisée dans mes jeux, consiste à mélanger la grille de départ une centaine de fois. D'où le petit temps de chargement, mais au moins on est sûr que ça marche.
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd