• Aucun résultat trouvé

Informatique Terminale : Compléments de programmation Code complet du sujet 2 :

N/A
N/A
Protected

Academic year: 2022

Partager "Informatique Terminale : Compléments de programmation Code complet du sujet 2 :"

Copied!
3
0
0

Texte intégral

(1)

Informatique Terminale : Compléments de programmation

Code complet du sujet 2 :

from random import randint

def melange(liste):

n = len(liste) for k in range(3*n):

i, j = randint(0, n-1), randint(0, n-1) liste[i], liste[j] = liste[j], liste[i]

class Domino:

def __init__(self, n1, n2):

self.n1 = n1 self.n2 = n2

def somme(self):

return self.n1 + self.n2

def representation(self):

return str(self.n1) + ':' + str(self.n2)

class Joueur:

def __init__(self, numero, nom, jeu):

self.jeu = jeu self.numero = numero

def affiche_jeu(self):

ligne = 'J'+ str(self.numero) + " > | "

for x in self.jeu:

ligne += x.representation() + ' | ' return ligne

def plus_grand(self):

m = 0

for domino in self.jeu:

if domino.somme()>m:

m = domino.somme() d = domino

return d

def domino(self, chiffres):

for x in self.jeu:

if x.n1==int(chiffres[0]) and x.n2==int(chiffres[-1]):

return x

def joue(self):

ligne = self.affiche_jeu()

domino = self.domino(input(ligne)) while domino not in self.jeu:

domino = self.domino(input(ligne)) return domino

def score(self):

s = 0

for domino in self.jeu:

s += domino.somme() return s

(2)

class Partie:

def __init__(self, nbre_joueurs):

self.nbre_joueurs = nbre_joueurs jeu = self.distribution()

self.joueur = []

for i in range(nbre_joueurs):

self.joueur.append(Joueur(i, 'J'+str(i), jeu[i])) self.chaine = []

self.chaine1 = []

def distribution(self):

L = []

for i in range(7):

for j in range(i, 7):

L.append(Domino(i, j)) melange(L)

n = self.nbre_joueurs jeu = []

m = 28//n

for i in range(n):

jeu.append(L[m*i: m*(i+1)]) return jeu

def fin(self):

test = 0

for i in range(self.nbre_joueurs):

if not self.joueur[i].jeu: return 1

if not self.peutJouer(self.joueur[i]): test += 1 if test==self.nbre_joueurs: return 1

return 0

def test(self, domino):

if domino.n1==int(self.chaine[0][0]) : return 1 if domino.n2==int(self.chaine[0][0]) : return 1 if domino.n1==int(self.chaine[-1][-1]) : return 1 if domino.n2==int(self.chaine[-1][-1]) : return 1 return 0

def peutJouer(self, joueur):

for domino in joueur.jeu:

if self.test(domino): return 1 return 0

def ajoute(self, domino):

possibilite = []

if domino.n1==int(self.chaine[0][0]): possibilite.append(0) if domino.n2==int(self.chaine[0][0]): possibilite.append(1) if domino.n1==int(self.chaine[-1][-1]): possibilite.append(2) if domino.n2==int(self.chaine[-1][-1]): possibilite.append(3) if len(possibilite)==1 or self.chaine[0][0]==self.chaine[-1][-1]

or domino.n1==domino.n2:

if possibilite[0] == 0:

self.chaine.insert(0, str(domino.n2) + ':' + str(domino.n1)) if possibilite[0] == 1:

self.chaine.insert(0, str(domino.n1) + ':' + str(domino.n2)) if possibilite[0] == 2:

self.chaine.append(str(domino.n1) + ':' + str(domino.n2)) if possibilite[0] == 3:

self.chaine.append(str(domino.n2) + ':' + str(domino.n1)) else:

place = input('Placer le domino à gauche (g) ou à droite (d) ? ') while place not in ['g', 'd']:

place = input('Placer le domino à gauche (g) ou à droite (d) ? ')

(3)

if possibilite[0]==0 and place=='g':

self.chaine.insert(0, str(domino.n2) + ':' + str(domino.n1)) if possibilite[0]==0 and place=='d':

self.chaine.append(str(domino.n2) + ':' + str(domino.n1)) if possibilite[0]==1 and place=='g':

self.chaine.insert(0,str(domino.n1) + ':' + str(domino.n2)) if possibilite[0]==1 and place=='d':

self.chaine.append(str(domino.n1) + ':' + str(domino.n2)) self.chaine1.append(domino.representation())

def score(self):

score = []

print('Score final')

for i in range(self.nbre_joueurs):

score.append(self.joueur[i].score())

print(' Joueur J'+ str(self.joueur[i].numero) + " : "+ str(score[i])) print("Trace de la partie :")

print(self.chaine) print(self.chaine1)

def jouer(self):

n = self.nbre_joueurs ordre = list(range(n)) melange(ordre)

joueur = self.joueur[ordre[0]]

domino = joueur.plus_grand()

self.chaine.append(str(domino.n1) + ':' + str(domino.n2)) self.chaine1.append(domino.representation())

joueur.jeu.remove(domino)

print('Le joueur J' + str(joueur.numero) + ' a joué son plus grand domino ') i = 1

while not self.fin():

print('Dominos joués : ' + str(self.chaine)) joueur = self.joueur[ordre[i%n]]

if self.peutJouer(joueur):

domino = joueur.joue() while not self.test(domino):

domino = joueur.joue() joueur.jeu.remove(domino) self.ajoute(domino) else:

print('Le joueur J' + str(joueur.numero) + ' ne peut pas jouer') i+= 1

self.score()

def main():

n = int(input('Nombre de joueurs :')) Partie(n).jouer()

if __name__=='__main__': main()

Références

Documents relatifs

Dans tout le sujet, on appelle matrice de taille n un tableau de n listes de n entiers positifs ou nuls. On définit une classe Carre dont les objets ont pour seul attribut

Ce maintien des compétences semble également être dans l’intérêt de l’Agence, laquelle peut espérer ainsi de meilleures réalisations, pour des coûts moindres et dans

de la communauté des politistes s'interroge sur le poids des politiques communautaires sur le pouvoir local, la revue Pôle Sud pro longe dans le présent numéro le

L’examen de la centaine de lettres qui forme la correspondance entre Giovanni Battista de Rossi et Eugène Müntz, conservée respec- tivement à la Bibliothèque Apostolique Vaticane

L’ âge de l’inscription: la rhétorique du monument en Europe du XVe au XVIIe sie‘cle. Par FLORENCE VUILLEUMIER LAURENS et PIERRE LAURENS. Inaugurant la collection intitulée

La personne qui accomplit la puja agite d'abord une clochette pour indiquer le début de la célébration, puis elle allume les lumières : bougies, cierges en tout genre. Elle peut

Sur les voies du pèlerinage et depuis les postes-frontière avec l’Iran et la ville irakienne de Bassora, située à 500 km plus au sud, des dizaines de milliers

Ce programme contient deux fonctions dans une mˆeme classe, la premi`ere fonction a un param`etre r et utilise la constante PI qui se trouve dans la classe Math, cette constante est