Poster un nouveau sujet Poster une réponse
Démineur en graphique *NEW*
Auteur Message
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mer 07 Déc 2011, 12:48   Citer 

Bonjour à tous chers membres (et invités !) de Tout 82 !
Cela doit faire un petit bout de temps que vous ne m'avez pas vu (et je ne pense pas que cela vous dérangeait), mais me voilà de retour avec un Démineur !

Il se nomme DEMINE2 (tout simplement parce que c'est le second que je fais, mais vous n'avez jamais connu le premier : nommez le comme vous voulez après tout)

Propriétés/fonctionnalités :

-Poids : 1328 octets
-Lorsque la case découverte est vide, cela découvre également les 8 cases autour (bien), et cela marche également si on appuie sur une case vide déjà découverte.
-Il est en mode graphique
-Possibilité de quitter instantanément à tout moment, et de reprendre après en appuyant sur la touche [annul] puis en sélectionnant REPRENDRE dans le menu principal
-Propre = une fois terminé, ne laisse pas de matrice traîner
-Possibilité de choisir ou non la taille de la grille
-On peut mettre de jolis petits drapeaux
-La case par défaut sur laquelle se trouve le curseur est toujours vide
-Détection de victoire quand toutes les cases (sauf les mines) ont été découvertes
-rapide et optimisé (Et oui les If, Then et Else sont plus rapides que les Lbl !)


Touches :

-[2nde] : découvrir une case
-[alpha] : poser un petit drapeau / enlever un petit drapeau déjà posé
-flèches : déplacer le curseur
-[annul] : Quitter la partie à tout moment

Screenshots :

Réflexion...


I won !


Le programme !

Allez, pour ceux qui ont le câble pu qui veulent tester sur émulateur, je vous épargne du boulot !
http://www.mediafire.com/?c15e46o441v4def (télécharger en format .83p)


Et pour les autres, voilà le code :

(avant de commencer à taper comme un bourrin, voir les notes en dessous)


Code

:12[sto>]W
:7[sto>]H
:FnOff
:AxesOff
:0[sto>]Xmin
:94[sto>]Xmax
:(-)62[sto>]Ymin
:0[sto>]Ymax
:ClrHome
:Menu("   DEMINEUR 2   ","NOUVEAU",N,"REPRENDRE",R,"QUIT",Q
:Lbl Q
:ClrHome
:Stop
:Lbl N
:Menu(">TAILLE<","STANDARD",TS,"PERSONNALISEE",TP
:Lbl TP
:Disp "LA TAILLE EST","LIMITEE","AUTOMATIQUEMENT
:Input "LARGEUR:",W
:Input "HAUTEUR:",H
:min(H,7[sto>]H
:min(W,15[sto>]W
:Lbl TS
:ClrDraw
:Input "MINES:",M
:ClrHome
:iPart(W/2[sto>]Z
:iPart(H/2[sto>]¤
:DelVar [A]
:{H,W[sto>]dim([A]
:W*H-M[sto>]O
:For(A,1,M
:Output(4,8,A
:Lbl 00
:randInt(1,W[sto>]U
:randInt(1,H[sto>]V
:If 9=[A](V,U
:Goto 00
:If U[supérieur ou égal]Z-1 and U[inférieur ou égal]Z+1 and V[supérieur ou égal]¤-1 and V[inférieur ou égal]¤+1
:Goto 00
:9[sto>][A](V,U
:For(B,max(1,V-1),min(H,V+1
:For(C,max(1,U-1),min(W,U+1
:If 9[pas égal][A](B,C
:1+[A](B,C[sto>][A](B,C
:End
:End
:End
:For(A,0,W
:Line(A*6,0,A*6,(-)H*8
:End
:For(B,0,H
:Line(0,(-)B*8,W*6,(-)B*8
:End
:For(A,1,W
:For(B,1,H
:Text(B*8-7,A*6-4,"O
:0.1+[A](B,A[sto>][A](B,A
:End
:End
:Lbl R
:1[sto>]P
:While P
:Line(Z*6-5,(-)¤*8+7,Z*6-1,(-)¤*8+7
:Line(Z*6-5,(-)¤*8+7,Z*6-5,(-)¤*8+1
:0[sto>]T
:Repeat T
:getKey[sto>]T
:End
:Line(Z*6-5,(-)¤*8+7,Z*6-1,(-)¤*8+7,0
:Line(Z*6-5,(-)¤*8+7,Z*6-5,(-)¤*8+1,0
:Z+(T=26)-(T=24[sto>]Z
:¤+(T=34)-(T=25[sto>]¤
:Z-(Z=W+1)+(Z=0[sto>]Z
:¤-(¤=H+1)+(¤=0[sto>]¤
:If T=45
:Goto Q
:If T=31
:Then
:fPart([A](¤,Z[sto>]A
:If .1=A
:Then
:.1+[A](¤,Z[sto>][A](¤,Z
:Text(¤*8-7,Z*6-4,"P
:End
:If .2=A
:Then
:[A](¤,Z)-.1[sto>][A](¤,Z
:Text(¤*8-7,Z*6-4,"O
:End
:End
:If T=21
:Then
:If 0=[A](¤,Z
:Goto 01
:If 9.1=[A](¤,Z
:0[sto>]P
:If .1=fPart([A](¤,Z
:Then
:O-1[sto>]O
:[A](¤,Z)-0.1[sto>][A](¤,Z
:If 0[pas égal][A](¤,Z
:Then
:Text(¤*8-7,Z*6-4,[A](¤,Z
:Else
:Text(¤*8-7,Z*6-4,"    //3 espaces
:Lbl 01
:For(A,max(Z-1,1),min(Z+1,W
:For(B,max(¤-1,1),min(¤+1,H
:If .1=fPart([A](B,A
:Then
:[A](B,A)-.1[sto>][A](B,A
:O-1[sto>]O
:If 0=[A](B,A
:Then
:Text(B*8-7,A*6-4,"    //3 espaces
:Else
:Text(B*8-7,A*6-4,[A](B,A
:End
:End
:End
:End
:End
:End
:End
:If O=0
:0[sto>]P
:End
:If 9=[A](¤,Z
:Then
:Text(¤*8-7,Z*6-4,"X
:Text(57,35,"PERDU!
:Else
:Text(57,35,"GAGNE!
:End
:For(A,1,W
:For(B,1,H
:If fPart([A](B,A
:Then
:If 0[pas égal]iPart([A](B,A
:Then
:Text(B*8-7,A*6-4,iPart([A](B,A
:If 9<[A](B,A
:Text(B*8-7,A*6-4,"X
:Else
:Text(B*8-7,A*6-4,"    //3 espaces
:End
:End
:End
:End
:DelVar [A]




Notes avant de taper le code :

Voici quelques explications sur la notation du code :
-[sto>] : la flèche sto (en dessus du bouton ON)
-[inférieur ou égal], [supérieur ou égal], [pas égal], >, <, = : Se trouvent dans tests : [2dne]+[math]
-Toutes les fonctions de dessin, comme Ligne (Line), Texte (Text), EffDessin (ClrDraw) ect se trouvent dans le menu dessin : [2nde]+[prgm]
-Les fonctions min() et max() se trouvent dans le menu NUM (touche [math]+[flèche droite])
-"[A]" : Il s'agit bien de la matrice [A] (touche [matrice]), n'allez pas me mettre un crochet, un A et un autre crochet !
-Xmin,Xmax et tout ça sont des variables que l'on trouve en faisant [var]+[entrer]
-AxesNAff (AxesOff pour les francophones) se trouve avec [2nde]+[zoom] (format)
-FonctOff -> [var]+[fleche droite]+[4]+[2]


OMGZ ! Cette fonction n'existe pas sur ma calculatrice !

Pas de panique ! Si vous possédez une Ti-82 stats fr, toutes les fonctions ont été traduites en Français. Si vous êtes mauvais en anglais, vous pouvez aller voir la table de traduction ici présente sur ce forum : TRADUCTIONS ET EMPLACEMENTS


J'arrive pas à trouver la touche pour cette fonction !

Pas de problème ! Allez dans le Catalogue (touche catalog : [2nde]+[0]), puis tapez la première lettre de la fonction (par exemple, un "E" pour "EffDessin") : le catalogue vous donnera toutes les fonctions de la calculatrice commençant par un "E" (par exemple) : vous n'aurez plus qu'à chercher la bonne et appuyer sur Entrée.


Des questions, des suggestions, des commentaires, des critiques (j'accepte tout!) : une seule chose à faire : Cliquer sur Répondre!

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 07 Déc 2011, 13:01   Citer 

Pas mal du tout. Je creuserai ça plus tard.

L'article de traduction a été remplacé par un nouvel article plus à jour.
Tu n'es pas le premier à ne pas chercher assez.
Cherchez un peu dans la section article avant de conclure.
TRADUCTIONS ET EMPLACEMENTS

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mer 07 Déc 2011, 13:04   Citer 

Je l'avais vu, mais je m'étais dit que les gens pourraient être rebutés par le fait de télécharger un truc, je le mets donc quand même en lien (en espérant que les gens le lisent)

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mer 07 Déc 2011, 13:33   Citer 

Eh bien ! Moi ça m'a l'air du sérieux boulot, et bien fait en plus, sans label / goto ! bigmouth.gif

Je pense bien que je vais le recopier happy.gif, bravo à toi !

(je le compare avec le démineur sp de coc5 et je te dis ce que j'en pense winkle.gif )

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mer 07 Déc 2011, 13:49   Citer 

Il s'agit d'un démineur classique, il est juste joli et bien optimisé happy.gif (pas d'innovation de gameplay, tout de même difficile à faire sur un démineur !)

 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 07 Déc 2011, 17:42   Citer 

ça a l'air pas mal, mais on peut encore grater quelques octés si on vet:

Code
:12[sto>]W
:7[sto>]H
:FnOff
:AxesOff
:0[sto>]Xmin
:94[sto>]Xmax
:(-)62[sto>]Ymin
:0[sto>]Ymax
:ClrHome
:Menu("   DEMINEUR 2","NOUVEAU",N,"REPRENDRE",R,"QUIT",Q   //ici: les 3 espaces après 2
:Lbl Q
:ClrHome
:Stop
:Lbl N
:Menu(">TAILLE<","STANDARD",TS,"PERSONNALISEE",TP
:Lbl TP
:Disp "LA TAILLE EST","LIMITEE","AUTOMATIQUEMENT
:Input "LARGEUR:",W
:Input "HAUTEUR:",H
:min(H,7[sto>]H
:min(W,15[sto>]W
:Lbl TS
:ClrDraw
:Input "MINES:",M
:ClrHome
:iPart(.5W[sto>]Z   //remplacer W/2 par .5W est plus rapide pour la même place
:iPart(.5H[sto>]¤   //remplacer W/2 par .5W est plus rapide pour la même place
:DelVar [A]{H,W[sto>]dim([A]    //ici: l'instruction suivant un DelVar peut
// toujours être coller sauf parfois si précédé d'un If ou suivit d'un End
:WH-M[sto>]O    //ici
:For(A,1,M
:Output(4,8,A
:Lbl 00
:randInt(1,W[sto>]U
:randInt(1,H[sto>]V
:If 9=[A](V,U
:Goto 00
:If U[supérieur ou égal]Z-1 and U[inférieur ou égal]Z+1 and V[supérieur ou égal]¤-1 and V[inférieur ou égal]¤+1
:Goto 00
:9[sto>][A](V,U
:For(B,max(1,V-1),min(H,V+1
:For(C,max(1,U-1),min(W,U+1
:If 9[pas égal][A](B,C
:1+[A](B,C[sto>][A](B,C
:End
:End
:End
:For(A,0,W
:Line(6A,0,6A,(-)8H  //ici*3:multiplication implicite
:End
:For(B,0,H
:Line(0,(-)8B,6W,(-)8B   //ici:idem
:End
:For(A,1,W
:For(B,1,H
:Text(8B-7,6A-4,"O    //ici:idem
:.1+[A](B,A[sto>][A](B,A      //ici : 0.1 et .1 est interprété de la même manière
:End
:End
:Lbl R
:1[sto>]P
:While P
:Line(6Z-5,(-)8¤+7,6Z-1,(-)8¤+7  //ici:*4:mult implicite
:Line(6Z-5,(-)8¤+7,6Z-5,(-)8¤+1   //idem
:delVar TRepeat T    //ici:*2:delvar
:getKey[sto>]T
:End
:Line(6Z-5,(-)8¤+7,Z6-1,(-)8¤+7,0
:Line(6Z-5,(-)8¤+7,6Z-5,(-)8¤+1,0
:Z+(T=26)-(T=24[sto>]Z
:¤+(T=34)-(T=25[sto>]¤
:Z-(Z=W+1)+not(Z[sto>]Z  //ici : (Z=0 est interprété parreil que not(Z
:¤-(¤=H+1)+not(¤[sto>]¤  //ici:idem
:If T=45
:Goto Q
:If T=31
:Then
:fPart([A](¤,Z[sto>]A
:If .1=A
:Then
:.1+[A](¤,Z[sto>][A](¤,Z
:Text(8¤-7,6Z-4,"P   //ici: mult implicite
:End
:If .2=A
:Then
:[A](¤,Z)-.1[sto>][A](¤,Z
:Text(8¤-7,6Z-4,"O   //ici: mult implicite
:End
:End
:If T=21
:Then
:If not([A](¤,Z        //not(?  <=> (?=0
:Goto 01
:If 9.1=[A](¤,Z
:0[sto>]P
:If .1=fPart([A](¤,Z
:Then
:O-1[sto>]O
:[A](¤,Z)-0.1[sto>][A](¤,Z
:If [A](¤,Z  //ici: 0[différent de]?  <=> ?
:Then
:Text(8¤-7,6Z-4,[A](¤,Z   //mult implicite
:Else
:Text(8¤-7,6Z-4,"    //3 espaces   //ici : idem
:Lbl 01
:For(A,max(Z-1,1),min(Z+1,W
:For(B,max(¤-1,1),min(¤+1,H
:If .1=fPart([A](B,A
:Then
:[A](B,A)-.1[sto>][A](B,A
:O-1[sto>]O
:If 0=[A](B,A
:Then
:Text(8B-7,6A-4,"    //3 espaces   //mult implicite
:Else
:Text(8B-7,6A-4,[A](B,A   //mult implicite
:End
:End
:End
:End
:End
:End
:End
:If not(O  //ici
:0[sto>]P
:End
:If 9=[A](¤,Z
:Then
:Text(8¤-7,6Z-4,"X   //mult implicite
:Text(57,35,"PERDU!
:Else
:Text(57,35,"GAGNE!
:End
:For(A,1,W
:For(B,1,H
:If fPart([A](B,A
:Then
:If not(iPart([A](B,A   //ici
:Then
:Text(8B-7,6A-4,iPart([A](B,A   //mult implicite
:If 9<[A](B,A
:Text(8B-7,6A-4,"X   //mult implicite
:Else
:Text(8B-7,6A-4,"    //3 espaces   //mult implicite
:End
:End
:End
:End
:DelVar [A]



Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mer 07 Déc 2011, 19:58   Citer 

Ouaip, merci.
En fait je n'y avais pas pensé, au début je les avais laissé pour la lisibilité du code (parce j'ai besoin d'y revenir moultes fois), et j'ai même pas pensé à les retirer, mais il est vrai que l'on peut les enlever, et ça fait quand même gagner au final quelques dizaines d'octets (toujours bon à prendre pour une calculatrice qui n'a que 25 ko de RAM (trop peu!) )

 Adresse email Haut de page Bas de page 
 
programmaths
Invité
Posté le : Mer 07 Déc 2011, 21:02   Citer 

yeah pas mal !! winkle.gif
il y a quelque optimisation a faire (pour une question de jouabilité):
en bas a droite, mettre les mines restantes (si ya 10 mine, ça marque 10, si on met un drapeau ça met 9, si on met X drapeau ça met 10-X ^^, si on met 10 drapeau (et que c'est pas gagné) on met erreur
pour savoir a combien on en est, si on a fais une erreur ou pas a la fin winkle.gif


Code

Disp "LA TAILLE EST","LIMITEE","AUTOMATIQUEMENT
:Input "LARGEUR:",W
:Input "HAUTEUR:",H


plutot:

Code

input "largeur(1-15):",W
input "hauteur(1-7):",H


ça économise quelque octet et ça montre le max/min winkle.gif

quand on perd, si un drapeau a été mal placé ça mette un "!" au lieu de rien, ça montre l'endroit ou l'on s'est planté happy.gif
dans le chargement des drapeaux, j'ai déja fais un ptti truck pas mal, ça ne doit pas concorder avec le tiens mais si ça te plais tu peux l'éssayé winkle.gif

Code

0->xmin:94->xmax
0->ymin:62->ymax
text(19,26,"chargement...
horizontal 31
horizontal 33
pt-On(0,32
pt-On(94,32
94/N->A   //N nombre de mines
0->I:O->D
repeat N=D
D+1->D
text(37,35,D," / ",N
line(0,32,I+A,32
I+N->I
..  // ici une génération de mine avec les matrices
end


comme ça si ya 10 mine, a chaque mine généré le chargement augmente de 1/10 avec un bel effet graphique winkle.gif

voila voila, très bon démineur sinon winkle.gif

  Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Jeu 08 Déc 2011, 18:53   Citer 

Tiens j'ai qqes idées pour réduire ton code programmaths ...

Code

0->xmin:94->xmax
0->ymin:62->ymax
text(19,26,"chargement...
horizontal 31
horizontal 33
pt-On(0,32
pt-On(94,32
94/N->A   //N nombre de mines
EffVar IEffVar DRepeat N=D
D+1->D
text(37,35,D," / ",N
line(0,32,I+A,32
I+N->I
..  // ici une génération de mine avec les matrices
end



Bon au final je n'en ai qu'une, je croyais qu'il y avait moyen de faire mieux en stockant 32 dans L vu qu'il y a beaucoup de 32 mais ... en fait non, tu ne perds, ni gagne, un seul octet laugh.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Jeu 08 Déc 2011, 23:01   Citer 

Un programme propre et sympathique, bravo !

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Guiguititan



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 27 Fév 2010, 12:59
Posté le : Ven 09 Déc 2011, 17:19   Citer 

Coco les crédits!! ^^ sinon belle amélioration.

----------------------
que faire en math... tout sauf des maths ^^
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Ven 09 Déc 2011, 22:23   Citer 

bah, moi, généralement, j'en mets pas, ça bouffe de la mémoir pour rien. et quand je télécharge un programme, la 1er chose que je fais, c'est de les virer.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Sam 10 Déc 2011, 19:21   Citer 

@Guiguititan
Hé man je te rappelle que celui là c'est MOI qui l'ai programmé sans même regarder le tien. Donc tu n'as aucune raison de te retrouver dans les crédits xD

Bon allez j'avoue Guiguititan m'a donné un peu d'inspiration graphique

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes