Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Lun 24 Déc 2007, 12:35
J’avais déjà tout pleins de projets en cours, mais aucun près d’être terminé. Je me suis donc dit, quel dommage, je n’ai rien à offrir pour noël !
Donc voici un démineur assez particulier car sortant de ma ligne de production habituel, c'est-à-dire un code court (867 octets) pour un programme de travaillant pas dans la finesse, tout en restant efficace .
En attendant un vrai programme complet à reliure, voici néanmoins un démineur simple mais court et facile (à priori) à recopier^^
ClrHome
Disp " DEMINEUR SP","----------------","
Output(8,1,"(C)COC5 2007
Input "NBR MINE ",N
N -> X
{7,15 -> dim([A]
Fill(0,[A]
ClrHome
min(150,max(1,N -> N
0 -> D
Output(4,9,"/
Output(4,10,N
Repeat N=D
D+1 -> D
Output(4,8-int(log(D)),D
Repeat 9-[A](A,B
1+round(6rand,0 -> A
1+round(14rand,0 -> B
End
9 -> [A](A,B
For(I, -1,1
For(J, -1,1
If A+I and B+J and A+I-8 and B+J-16:Then
If 9ø[A](A+I,B+J
1+[A](A+I,B+J -> [A](A+I,B+J
End:End:End:End
[A] -> [B]
For(I,1,7
Output(I,1,"***************
End
8 -> B:4 -> A
Lbl A
Repeat K=22
Repeat K : getKey -> K : End
Output(A,16," "
Output(8,B," "
min(7,max(1,A+(K=34)-(K=25 -> A
min(15,max(1,B+(K=26)-(K=24 -> B
Output(A,16,"O
Output(8,B,"O
If K=21 and 8-[B](A,B:Then
[A](A,B
If Ans:Output(A,B,Ans
If not(Ans:Output(A,B,"
If Ans=9:Then
ClrHome
Disp "PERDU !
Pause
Lbl 1
For(I,1,7
For(J,1,15
[A](I,J -> A
If not(A:Output(I,J," "
If A>0 and A<9:Output(I,J,A
If A=9:Output(I,J,"X
End
End
{1,1 -> dim([A]
Ans -> dim([B]
Return
End
End
If K=31:Then
Output(A,B,"+
N-([B](A,B)=9 and [A](A,B)=9 -> N
8 -> [B](A,B
If not(N
Then
ClrHome
Disp "GAGNE !
Pause
{1,2 -> dim([E]
If X÷[E](1,2
Then
Disp "RECORD ACTUEL :
Else
Disp "NOUVEAU RECORDS:
X -> [E](1,2
End
Disp [E](1,2
{1,1 -> dim([A]
Ans -> dim([B]
Stop
End
End
If K=32:Then
Output(A,B,"*
N+([A](A,B)=9 and [B](A,B)=8 -> N
[A](A,B -> [B](A,B
End
End
Menu("ETES-VOUS SUR ?","NON",A,"OUI",1
PB :Output(A-1,16,"esp ->la calculette me met: ERR:DOMAIN d'ou cette condition :If (A-1) inf à 0:2->A
mais il faudrait enlever la première ligne des mines d'ou question : c quoi le bon code ??
encore désolé... et très bon jeu par contre c vraiment cho à finir
Autorisation : Membre
Nb de messages : 180
Inscrit le : Lun 20 Mar 2006, 13:28
Posté le : Jeu 15 Mai 2008, 20:52
ok ok mais je l'ai testé et pas moyen c'est la touche 34 :quand on fait descendre le "O" , ben ya plusieurs "O"
j'ai vérifié et mon code est bon, comprends pa... et ca me donne ca:
Code
***************O
***************O
***************O
***************O
***************O
***************
O
pour 24 et 26 c bon mais pa pour 34 et pour 25 faut rajouter :
Code
Output(8,B,"O
Output(A+1,16,"esp
sinon ca fait pareil que pour 34...
PS: c'est pas une critique c'est juste une remarque sur ce jeu
voila encore désolé ... (ou alors c'est peut etre ma caltos qui bug )
Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Jeu 15 Mai 2008, 21:24
J'ai vérifié mon code, et il marche. Je pense que ton erreur de recopiage se situe ici :
Code
Output(A,16,"
si on ne fait pas attention on ne marque pas l'espace. Rajoute un espace et tu verras. (j'ai modifié mon code pour éviter cette erreur aux recopieurs, tan pis pour les 2 octets !)
Autorisation : Membre
Nb de messages : 180
Inscrit le : Lun 20 Mar 2006, 13:28
Posté le : Sam 17 Mai 2008, 21:54
uai c'est ca c'etait mon erreur alor que j'avais mis un espace à
Code
Output(8,B,"esp
mais pa pour
Code
Output(A,16,"
pff...vraiment désolé, jsui étourdi parfois (kel c** ...)
mais la fin j'ai pas pu la tester parcske c vraiment cho chaque foi je tombe sur une bombe.. et sinon un trés bon démineur
Autorisation : Membre
Nb de messages : 5
Inscrit le : Mar 26 Mai 2009, 17:45
Posté le : Mar 26 Mai 2009, 17:49
voilà j'ai recopié le code sur ma ti 82.
tout se passe bien sauf que lorsque je découvre une case, il y a soit du vide soit une mine (et pas les chiffres autour des mines...).
j'ai du faire une erreur de recopiage mais je n'arrive pas a voir où...
désolé pour la remontée du sujet...
Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mar 26 Mai 2009, 18:04
Pas de problème c'est normal, je prends en charge ce programme jusqu'au boût^^
Regarde vers le milieu de cette partie du programme si tu as bien écris : (vers le If Ans : Output(..., Ans )
Code
Repeat K=22
Repeat K : getKey -> K : End
Output(A,16," "
Output(8,B," "
min(7,max(1,A+(K=34)-(K=25 -> A
min(15,max(1,B+(K=26)-(K=24 -> B
Output(A,16,"O
Output(8,B,"O
If K=21 and 8-[B](A,B:Then
[A](A,B
If Ans:Output(A,B,Ans
If not(Ans:Output(A,B,"
If Ans=9:Then
ClrHome
Disp "PERDU !
Pause
Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mar 26 Mai 2009, 19:48
Dans ce cas le problème peut venir de par ici :
Code
1+round(14rand,0 -> B
End
9 -> [A](A,B
For(I, -1,1
For(J, -1,1
If A+I and B+J and A+I-8 and B+J-16:Then
If 9ø[A](A+I,B+J
1+[A](A+I,B+J -> [A](A+I,B+J <<<<<<<<<<<<<<<<< Ici plus particulièrement
End:End:End:End
[A] -> [B]
For(I,1,7
Output(I,1,"***************
Autorisation : Membre
Nb de messages : 5
Inscrit le : Mar 26 Mai 2009, 17:45
Posté le : Mar 26 Mai 2009, 20:36
et bien voilà c'était ca...
merci
super jeu et ca prend pas beaucoup de place...
fabrice Invité
Posté le : Jeu 24 Sep 2009, 23:40
Bonsoir,
J'ai rentré le programme, mais lorsque je rentre un nombre N de mines, la calculatrice afiche erreur syntaxe et envois le curseur sur
:{7,15->dim([A]
D'où vient l'erreur ?
Et faut-il faire la difference entre / et le signe diviser ?
Merci
Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Ven 25 Sep 2009, 19:45
Ton programme est très bien mais j'ai l'impression que tu t'es un peu compliqué la vie ^^.
fabrice Invité
Posté le : Ven 25 Sep 2009, 19:59
Effectivement, mes [A] n'étaient pas en un seul bloc
Mais maintenant, apres avoir rentré le nombre de mines apparait "erreur:division par 0" et me renvoit à If 9/[A](A+I,B+J