Salut Staple,
Un humain contre un ordinateur, l'ordinateur gagnera toujours s'il commence.
L'algo est simple, si celui qui prend la dernière est le gagnant, et qu'on peut prendre de 1 à 3 alumettes, il faut que le reste modulo 4 soit différent de zéro. L'ordinateur jouera ce modulo, sinon il a perdu, sauf si l'humain fait une erreur
voir petite macro jointe
Code:
Sub nim()
' nim Macro
' Macro enregistrée le 06/07/2007 par Gruick
Randomize
nbalumettes = InputBox("entrez le nombre d'alumettes")
prem = MsgBox("Moi, l'ordinateur, je joue en prem ?", vbYesNo)
1 If prem = vbNo Then
retrait = InputBox("t'en retires combien, simple humain ?")
If retrait > 3 Or retrait < 1 Then MsgBox "Pas plus de 3, pas moins de 1": GoTo 1
Else
retrait = nbalumettes Mod 4
If retrait = 0 Then retrait = Int(3 * Rnd) + 1
MsgBox "J'en retire " & retrait
End If
nbalumettes = nbalumettes - retrait
MsgBox "Il en reste " & nbalumettes
If nbalumettes = 0 Then GoTo 2
If prem = vbNo Then prem = vbYes: GoTo 1
If prem = vbYes Then prem = vbNo: GoTo 1
2 If prem = vbNo Then MsgBox "T'as gagné, mais c'est incohérent, t'as dû tricher !!!"
If prem = vbYes Then MsgBox "Face à l'intelligence artificielle, tu peux pas lutter !!!"
End Sub
C'est sans doûte le premier programme que j'ai fait sur ma HP41C il y a 30 ans.
Ca devrait être plus rigolo entre plusieurs joueurs contre l'ordinateur.
A plus,
Gruick