DojoDeveloppement/JeuDeLaBatailleCe jeu est très simple, mais assez ennuyeux à la longue. L'objectif de ce programme est de jouer rapidement la partie jusqu'au bout, de manière à connaître tout de suite qui est le vainqueur.
Voici le code écrit le 2 juin 2009
require 'test/unit'
def le_premier_joueur_gagne?(carte1, carte2)
carte1 > carte2
end
def le_premier_joueur_gagne_le_tour?(jeu1, jeu2)
le_premier_joueur_gagne?(jeu1[0],jeu2[0])
end
def joue_un_coup_et_depile(jeu1, jeu2)
if(le_premier_joueur_gagne_le_tour?(jeu1, jeu2))
[[jeu1.shift, jeu2.shift],[]]
else
[[], [jeu2.shift, jeu1.shift]]
end
end
def joue(jeu1, jeu2)
en_jeu = joue_un_coup_et_depile(jeu1,jeu2)
[jeu1 + en_jeu[0], jeu2 + en_jeu[1]]
end
class TestBatailles < Test::Unit::TestCase
def test_la_carte_la_plus_forte_gagne
assert_equal(false, le_premier_joueur_gagne?(2, 3))
assert_equal(true, le_premier_joueur_gagne?(3,2))
end
def test_la_carte_au_dessus_plus_forte_gagne
jeu1 = [2]
jeu2 = [3]
assert_equal(false, le_premier_joueur_gagne_le_tour?(jeu1, jeu2))
assert_equal(true, le_premier_joueur_gagne_le_tour?(jeu2, jeu1))
end
def test_le_gagnant_met_sa_carte_puis_celle_de_l_adversaire_en_fin_de_jeu
assert_equal([[], [3,2]], joue([2], [3]))
assert_equal([[], [4,2]], joue([2], [4]))
assert_equal([[], [4,3]], joue([3], [4]))
assert_equal([[], [1, 4,3]], joue([3], [4, 1]))
assert_equal([[5], [4,3]], joue([3, 5], [4]))
assert_equal([[3, 5, 4], []], joue([5, 3], [4]))
end
end