[Home]DojoDeveloppement/JeuDeLaBataille

AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne

Le jeu de la bataille est un jeu de carte bien connu qui se joue à deux. Chacun à une pille de carte posé face caché. Les deux joueurs retourne en même temps la première carte de leur jeu sur la table. Le joueur qui à posé la carte la plus forte ramasse les deux cartes et les remet à la fin de son jeu.

Ce 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

AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne
Edit this page | View other revisions
Last edited June 3, 2009 10:02 am (diff)
Search: