Poster un nouveau sujet Poster une réponse Page: 1, , , ,      >>
DEMINEUR SP
Auteur Message
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Lun 24 Déc 2007, 12:35   Citer 

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 winkle.gif .

En attendant un vrai programme complet à reliure, voici néanmoins un démineur simple mais court et facile (à priori) à recopier^^


http://www.badongo.com/file/7012833




Code
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



----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
mad67



Autorisation : Membre
Nb de messages : 630
Inscrit le : Sam 23 Jui 2007, 14:05
Posté le : Lun 24 Déc 2007, 18:29   Citer 

ben moi je croi que c'est vista qui va arriver o nouvel an par contre faut que je le teste mais il a l'air bien laugh.gif

 Adresse email Haut de page Bas de page 
 
Jcotnys



Autorisation : Membre
Nb de messages : 180
Inscrit le : Lun 20 Mar 2006, 13:28
Posté le : Mar 13 Mai 2008, 22:03   Citer 

salut salut cupsmiley.gif cupsmiley.gif bon désolé je ramène mon grain de sel laugh.gif laugh.gif
juste pour ajouter ca a ton code coc5 (je pense que ca doit etre un oubli xD)

Code

......
Output(A,16,"O
Output(8,B,"O
Output(A+1,16,"esp
Output(A-1,16,"esp


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 ?? ahh.gif ahh.gif
encore désolé...crazy.gif crazy.gif et très bon jeu par contre c vraiment cho à finir laugh.gif

----------------------
le travail c la santé winkle.gif
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mer 14 Mai 2008, 16:42   Citer 

Le code que tu montre n'existe pas... Et n'a pas lieu d'être eyeonly.gif



Code
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



Ce code efface d'abord les "O" enregistre le changement de position (selon K, qui à la valeur de getkey), puis replace les "O"

Note: pour améliorer le confort, il est mieux de mettre


Code
Repeat K : GetKey->K : End


A la place de :


Code
Getkey -> K



----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
mad67



Autorisation : Membre
Nb de messages : 630
Inscrit le : Sam 23 Jui 2007, 14:05
Posté le : Jeu 15 Mai 2008, 18:04   Citer 

vlan dans la face lol
j'ai essayé c'est génial!

 Adresse email Haut de page Bas de page 
 
Jcotnys



Autorisation : Membre
Nb de messages : 180
Inscrit le : Lun 20 Mar 2006, 13:28
Posté le : Jeu 15 Mai 2008, 20:52   Citer 

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" crazy.gif crazy.gif crazy.gif crazy.gif crazy.gif
j'ai vérifié et mon code est bon, comprends pa... moodforlove.gif moodforlove.gif 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é ... eyeonly.gif eyeonly.gif (ou alors c'est peut etre ma caltos qui bug crazy.gif )

Citer : mad67

vlan dans la face lol
j'ai essayé c'est génial!


et ta pas eu de bug ahh.gif ahh.gif toi qui t'y croit à fond crazy.gif crazy.gif

----------------------
le travail c la santé winkle.gif
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Jeu 15 Mai 2008, 21:24   Citer 

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 !)

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
Jcotnys



Autorisation : Membre
Nb de messages : 180
Inscrit le : Lun 20 Mar 2006, 13:28
Posté le : Sam 17 Mai 2008, 21:54   Citer 

crazy.gif crazy.gif crazy.gif crazy.gif crazy.gif 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** crazy.gif crazy.gif ...)
mais la fin j'ai pas pu la tester parcske c vraiment cho chaque foi je tombe sur une bombe.. cupsmiley.gif cupsmiley.gif et sinon un trés bon démineur minied.gif minied.gif

----------------------
le travail c la santé winkle.gif
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Jeu 22 Mai 2008, 8:10   Citer 

Jcotnys, fait un effort pour ton orthographe car le langage SMS n'est pas autorisé sur ce forum.

Sangohan38

 Adresse email Haut de page Bas de page 
 
pasdepsedo



Autorisation : Membre
Nb de messages : 5
Inscrit le : Mar 26 Mai 2009, 17:45
Posté le : Mar 26 Mai 2009, 17:49   Citer 

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...

 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mar 26 Mai 2009, 18:04   Citer 

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



----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
pasdepsedo



Autorisation : Membre
Nb de messages : 5
Inscrit le : Mar 26 Mai 2009, 17:45
Posté le : Mar 26 Mai 2009, 19:44   Citer 

j'ai revérifié et ca ne marche toujours pas...

 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mar 26 Mai 2009, 19:48   Citer 

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,"***************



----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
pasdepsedo



Autorisation : Membre
Nb de messages : 5
Inscrit le : Mar 26 Mai 2009, 17:45
Posté le : Mar 26 Mai 2009, 20:04   Citer 

le symbole "ø" c'est bien la combinaison de touches alpha+3 ?

 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mar 26 Mai 2009, 20:24   Citer 

non j'ai voulu mettre =/= je vois pas pourquoi ça affiche ça.

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
pasdepsedo



Autorisation : Membre
Nb de messages : 5
Inscrit le : Mar 26 Mai 2009, 17:45
Posté le : Mar 26 Mai 2009, 20:36   Citer 

et bien voilà c'était ca...
merci

super jeu et ca prend pas beaucoup de place...

 Adresse email Haut de page Bas de page 
 
fabrice
Invité
Posté le : Jeu 24 Sep 2009, 23:40   Citer 

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

  Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Ven 25 Sep 2009, 16:07   Citer 

As-tu bien tapé [A] ?

Ce signe désgine une matrice, et il ne faut pas inscrire "[" + "A" + "]" mais [A] en un seul bloque (dans le menu des matrices).

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Ven 25 Sep 2009, 19:45   Citer 

Ton programme est très bien mais j'ai l'impression que tu t'es un peu compliqué la vie ^^.

 Adresse email Haut de page Bas de page 
 
fabrice
Invité
Posté le : Ven 25 Sep 2009, 19:59   Citer 

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

  Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse Page: 1, , , ,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink