Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 1312
Réponses : 11
Type : discussion
Etat : réponses autorisées

Machine à sous... et oui encore une !

Saxotus le 11/11/2011 à 02:23
Si vous voulez unz machine à sous rapide a tapper faites demi-tour!
Pour les plus courageux bienvenue.

vous me direz "Une machine à sous? Encore?"
je sais il existe plein de programme machine a sous mais celui-la est au depart un defi entre amis ou je devais créer un MAS a sauvegarde.

NB: Ce programme marche aussi sur TI-83+ (voir autre) en remplaceant les
Code
lMAS(I)

par
Code
lMAS(1)


Pour commencer, crée une liste MAS.
Puis copier se lourd programme (1305ko) avec 50% de lignes pour la déco.
Code
EffEcr
lMAS(I)->S
Output(3,7,"MAS
Output(8,3,"SAXOTUS (C)
Lbl S
Output(5,2,"APPUIEZ SUR 5
For(T,1,6
codeTouche->@                   @ pour Théta
If @=83:Goto M
69!
End
Output(5,2,"   <-8->            8 espaces
For(T,1,6
codeTouche->@
If @=83:Goto M
69!
End
Goto S
Lbl M
EffEcr
Menu(" MACHINE A SOUS!","COMMENCER",1,"SCORE",2,"EFFACER",3,"QUITTER",4
Lbl 2
EffEcr
Output(4,2,"Score:
Output(4,9,S
For(T,1,10
69!
End
codeTouche->O                   /!\ Ne pas confondre 0 et O /!\
Goto M
Lbl 3
100->S
EffListe lMAS
100->lMAS(I
Goto M
Lbl 4
Stop
Lbl 1
10->M
lMAS(I)->S
Output(4,3,"0 0 0
Output(2,15,"O
Output(3,15,"!
Output(4,15,"=
Output(7,3,"SOUS:
Output(8,3,"MISE:
Lbl 11
Output(7,9,"       <-8->
Output(8,9,"       <-8->
Output(7,9,S
Output(8,9'M
codeTouche->@
If @=25 et M<S:M+10->M
If @=34 et M>10:M-10->M
If @=26 et M<S:S->M
If @=24 et M>10:10->M
If @=105:Goto 12
69!
Goto 11
Lbl 12
Output(2,15,"_                      _ symbolise un espace simple
Output(3,15,"_
Output(5,15,"!
Output(6,15,"O
Output(7,9,"      <-8->
Output(7,9,S-M
If O=72
Then
1->A
1->B
1->C
0->O
Else
If O=54:Goto 13
entAléat(1,3)->A
entAléat(1,3)->B
entAléat(1,3)->C
End
For(T,1,10
Output(4,3,"! ! !
69!
Output(4,3,"0 0 0
69!
End
If A=1:Output(4,3,"7
If A=2:Output(4,3,"!
If A=3:Output(4,3,"0
For(T,1,10
Output(4,5,"! !
69!
Output(4,5,"0 0
69!
End
If B=1:Output(4,5,"7
If B=2:Output(4,5,"!
If B=3:Output(4,5,"0
For(T,1,10
Output(4,7,"!
69!
Output(4,7,"0
69!
End
If C=1:Output(4,7,"7
If C=2:Output(4,7,"!
If C=3:Output(4,7,"0
For(T,1,5
69!
End
If A=1 et B=1 et C=1
Then
M*2+S-M->S
EffEcr
Output(4,5,"J
69!
Output(4,6,"A
69!
Output(4,7,"C
69!
Output(4,8,"K
69!
Output(4,9,"P
69!
Output(4,10,"O
69!
Output(4,11,"T
For(T,1,5
69!
End
Output(5,6,"+
Output(5,7,S
For(T,1,10
69!
End
Else
If A=2 et B=2 et C=2
Then
M*1.5+S-M->S
EffEcr
Output(5,6,"+
Output(5,6,S
For(T,1,10
69!
End
Else
If A=2 ou B=2 ou C=2
Then
Goto 12
Else
S-M->S
End
End
End
For(T,1,3
69!
End
If S=<0:Goto 13            =< inférieur ou égal
EffListe lMAS
S->lMAS(I
Goto M
Lbl 13
69!
EffEcr
Output(4,7,"G
69!
Output(4,8,"A
69!
Output(4,9,"M
69!
Output(4,10,"E
69!
Output(5,7,"O
69!
Output(5,8,"V
69!
Output(5,9,"E
69!
Output(5,10,"R
For(T,1,10
69!
End
0->O
Goto 3


Quel programme de fou !!! crazy.gif
pour choisir la mise les 4 fleches sont utile!
il y a aussi 2 code de triche. je vous laisse les chercher et si vous trouvez merci de ne pas le dire!

chances: (aproximatif)
1/9 jackpot (gagne la mise)
1/9 demi-mise
3/9 relance sans perdre ni gagner
4/9 de perdre

Bonne chance pour recopier! cupsmiley.gif
tapenade le 11/11/2011 à 11:54
tu devrais faire une version allegee pour que plus de monde puisse tester car taper 1300 octets pour une machine a sous crazy.gif ...
snap le 11/11/2011 à 12:46
qualques petits truc pour racourcir ton programme.

Code
EffEcr
69 -> D               <-- tu marque beaucoup de 69! alors autant prendre une variable sa te raccourci un octet à chaque fois ;)

lMAS(I)->S
Output(3,7,"MAS
Output(8,3,"SAXOTUS (C)
Lbl S
Output(5,2,"APPUIEZ SUR 5
For(T,1,6
codeTouche->@                   @ pour Théta
If @=83:Goto M
D!
End
Output(5,2,"   <-8->            8 espaces
For(T,1,6
codeTouche->@
If @=83:Goto M
D!
End
Goto S
Lbl M
EffEcr
Menu(" MACHINE A SOUS!","COMMENCER",1,"SCORE",2,"EFFACER",3,"QUITTER",4
Lbl 2
EffEcr
Output(4,2,"Score:
Output(4,9,S
For(T,1,10
D!
End
codeTouche->O                   /!\ Ne pas confondre 0 et O /!\
Goto M
Lbl 3
100->S
EffListe lMAS
100->lMAS(I
Goto M
Lbl 4
Stop
Lbl 1
10->M
lMAS(I->S                <-- 1 octet
Output(4,3,"0 0 0
Output(2,15,"O
Output(3,15,"!
Output(4,15,"=
Output(7,3,"SOUS:
Output(8,3,"MISE:
Repeat @=105         <-- boucle qui te fait economiser plusieurs octets
Output(7,9,"       <-8->
Output(8,9,"       <-8->
Output(7,9,S
Output(8,9'M
codeTouche->@
Max(10,min(S,M+10(@=25)-10(@=34 -> M     <-- essaie sa et dit moi si sa marche
If @=26 et M<S:S->M
If @=24 et M>10:10->M
D!
End
Lbl 12
Output(2,15,"_                      _ symbolise un espace simple
Output(3,15,"_
Output(5,15,"!
Output(6,15,"O
Output(7,9,"      <-8->
Output(7,9,S-M
If O=72
Then
1->A
1->B
1->C
Effvar O     <-- 1 octet
Else
If O=54:Goto 13
entAléat(1,3->A         <-- 3 lignes = 3 octets
entAléat(1,3->B
entAléat(1,3->C
End
For(T,1,10
Output(4,3,"! ! !
D!
Output(4,3,"0 0 0
D!
End
If A=1:Output(4,3,"7
If A=2:Output(4,3,"!
If A=3:Output(4,3,"0
For(T,1,10
Output(4,5,"! !
D!
Output(4,5,"0 0
D!
End
If B=1:Output(4,5,"7
If B=2:Output(4,5,"!
If B=3:Output(4,5,"0
For(T,1,10
Output(4,7,"!
D!
Output(4,7,"0
D!
End
If C=1:Output(4,7,"7
If C=2:Output(4,7,"!
If C=3:Output(4,7,"0
For(T,1,5
D!
End
If ABC=1         <-- au moins 5 octets
Then
2M+S-M->S       <-- 1 octet
EffEcr
Output(4,5,"J
D!
Output(4,6,"A
D!
Output(4,7,"C
D!
Output(4,8,"K
D!
Output(4,9,"P
D!
Output(4,10,"O
D!
Output(4,11,"T
For(T,1,5
D!
End
Output(5,6,"+
Output(5,7,S
For(T,1,10
D!
End
Else
If AB=4 et BC=4     <-- quelques octets
Then
.5M+S-M->S          <-- 2 octets
EffEcr
Output(5,6,"+
Output(5,6,S
For(T,1,10
D!
End
Else
If A=2 ou B=2 ou C=2
Then
Goto 12
Else
S-M->S
End
End
End
For(T,1,3
D!
End
If S=<0:Goto 13            =< inférieur ou égal

EffListe lMAS           <-- une question : pourquoi le Effliste?? ET pourquoi lMAS(I) ?

S->lMAS(I
Goto M
Lbl 13
D!
EffEcr
Output(4,7,"G
D!
Output(4,8,"A
D!
Output(4,9,"M
D!
Output(4,10,"E
D!
Output(5,7,"O
D!
Output(5,8,"V
D!
Output(5,9,"E
D!
Output(5,10,"R
For(T,1,10
D!
End
Effvar OGoto 3       <-- 2 octets
Saxotus le 12/11/2011 à 00:52
Merci a toi snap!

pour la commande
Code
max(10,min(S,M+10(@=25)-10(@=34->M

marche bien

pour répondre a tes questions,
le
Code
EffList lMas

car comme sont nom l'indique MAS et un liste. les donnée y sont stocké et si elle ne sont pas effacer je me demande bien se qui peux se passer.
et ppourquoi
Code
lMAS(I)

Car sinon on ne peut sortir ou stocker dans lMAS (du moins c'est ce que j'ai appris)

sinon je ne connais pas la commande max(),min(),... peut tu me l'expliquer stp happy.gif

tapenade:
ce programme et a la basse un defi entre amis pour avoir une "tres" belle Machine à sous avec enregistrement du porte-monnaie.
le reduir ne m'interesse pas et si qqn veut une machine a sous courte a tapper qui prend pas trop de place, il a cas regarder sur le fofo il y en a.
linkakro le 12/11/2011 à 02:10
max(A,B) donne le maximum entre A et B. Ne marche que pour deux valeurs.
max({A,B,C}) donne le maximum des termes de la liste. On peut utiliser les liste L1 L2 lMAS et le reste. La longueur de la liste n'a pas d'importance.
max(L1,L2) les termes de même position sont chacun comparés et chaque maximum est renvoyé dans une liste résultat. Par exemple max({0,1,1},{3,0,2})={3,1,2}
Les listes doivent avoir la même taille.

min( fonctionne pareil à max(.
The K le 12/11/2011 à 10:15
Hum hum ceci est simplifiable happy.gif

Code
Output(4,7,"G
D!
Output(4,8,"A
D!
Output(4,9,"M
D!
Output(4,10,"E
D!


En :

Code

"111111GAME -> Chaine1
For (K,7,10
Output (4,K,sous-chaîne Chaine1,K,1
69!
End


Et par le même procédé, d'autres morceaux aussi.
Mais j'ai quand même quelques doutes sur son fonctionnement ... je ne sais pas si ça marche super bien. EN théorie, oui (du moins dans la mienne), mais dans la pratique je sais pas winkle.gif
sandro le 12/11/2011 à 19:08
en tout cas, si ton bout de code foctionne (ce que je crois bien, alors on peut encore le simplifier en:
Code
"GAME -> Chaine1
For (K,7,10
Output (4,K,sous-chaîne Chaine1,K-6,1
69!
End


ça fait 4 octés en moins

Sandro
The K le 12/11/2011 à 19:17
Bien vu winkle.gif

D'ailleurs un chiffre prend moins de place qu'une lettre ou c'est la même chose ? (l'inverse je pense pas ^^)
Persalteas le 12/11/2011 à 19:20
Tu n'as qu'a faire le test winkle.gif

Mais je pense que c'est pareil.

d'ou l'utilité de stocker les nombres à plusieurs chiffres dans une variable...si tu utilies ce nombre dans des tas de calculs.

1235743713217-->A

tu gagnes 12 octets winkle.gif à chaque fois, moins le poids de cette ligne de code.
Saxotus le 13/11/2011 à 01:11
merci a vous,

j'en ai profiter pour alleger encore plus et sa marche
Code
Output(4,7,"G
69!
Output(4,8,"A
69!
Output(4,9,"M
69!
Output(4,10,"E
69!
Output(5,7,"O
69!
Output(5,8,"V
69!
Output(5,9,"E
69!
Output(5,10,"R

deviens:
Code
"GAMEOVER->Chaine1
For(K,7,10
Output(4,K,sous-Chaine(Chaine1,K-6,1
69!
End
For(K,7,10
Output(5,K,sous-Chaine(Chaine1,K-2,1
69!
End

Encore merci a vous tous!
made2kill le 13/11/2011 à 09:35
Hmm excusez-moi, j'ai une méchante flemme de recopier, quelqu'un pourrait poster un lien svp?
The K le 13/11/2011 à 10:36
De la même manière :

Code
Output(4,5,"J
69!
Output(4,6,"A
69!
Output(4,7,"C
69!
Output(4,8,"K
69!
Output(4,9,"P
69!
Output(4,10,"O
69!
Output(4,11,"T


Peut devenir :

Code

"JACKPOT -> Chaine1
For(K,5,11
Output(4,K,sous-chaine chaine1,K-5,1
69!
End


glasses.gif