Depuis deux jours, j'ai l'idée de créer un mastermind, sympa, pour z80 et en basic.
Et les quelques problèmes que je rencontrent commencent à être assez [*chiants*]. Je m'explique : J'utilise deux programmes (mstrmnd1 et mastrmnd2) : Le 1er est celui qui affiche les résultats et demande les propositions de la personne, et le second est celui qui analyse les réponses en fonction du nombre (à 4 chiffres, de 1000 à 9999) choisi aléatoirement.
- Voir code source -
Le tout marche environ à 70%, car des fois, je ne sais pas pourquoi, je me retrouve avec le chiffre final mauvais alors qu'il était bon un essai avant . Bref, si vous pouvez essayer de m'aider, ce serait vachement sympa !
Avant de passer au code source, je voudrai expliquer le principe de l'affichage du résultat : au départ, lorsque tous les chiffres du nombre donné par la personne sont faux, il y a quatre "0" (zéro). Si seul le 2eme chiffre est vrai, le résultat sera 0100. Si les deux derniers sont vrais, alors ça sera : 0011 ........ On a gagné, quand le nombre est, vous l'avez compri, 1111. J'espère avoir été clair ...
De plus, un autre petit problème (à moitié résolu) ,c'est que si le résultat était 0100, il affichait 1 (car le "0" du début ne sert à rien, comme les autres. J'ai alors divisé le résultat par 10 000, avec un Fix 4 pour avoir tous les chiffres. mais j'ai alors des résultats, parfois en écriture scientifique ... mais je cache tout ca avec des Output avec des espaces ...
Voici les 2 codes sources :
ø, c'est [différent] et - c'est [STO]
Mstrmnd1 :
0-[theta]
Fix 4
randInt(1000,9999-A
prgmMSTRMND2
B-F:C-G:D-H:E-I
While Áø1111
Prompt A
prgmMSTRMND2
1000(B=F)+100(C=G)+10(D=H)+1(E=I)-[theta]
[plein d'output pour cacher ce qui n'est pas la réponse]
Disp [theta]/10000
End
Disp "BRAVO !
Output(1,1,"
Mstrmnd2 :
S'il vous plaît ne prenez pas peur :
Ce programme analyse le nombre donné : extraction des chiffres le composant (partie entiere de A divisé par 10 puissance (partie entière du log [ça détermine le nombre de chiffre] de A+1)
iPart((A/10^iPart(log(A+1-B
A-B*10^iPart(log(A+1-A
iPart((A/10^iPart(log(A+1-C
A-C*10^iPart(log(A+1-A
iPart((A/10^iPart(log(A+1-D
A-D*10^iPart(log(A+1-A
iPart((A/10^iPart(log(A+1-E
Output(1,1,"
Merci d'avance pour votre aide, et merci encore d'avoir tout lu !