Solo 4x6 (2)

- Joue au jeu de solo. Chaque clic sur une case appelle la fonction seme, qui provoque un premier semis, suivi éventuellement d'une récolte et d'un nouveau semis... Le sens de jeu est défini par le bouton radio. Avant de commencer à jouer et après chaque modification du programme, exécute-le avec le bouton go

- Etudie le programme pour comprendre l'utilité de chaque fonction.

- Modifie le programme pour intégrer la règle de récolte dans la ligne extérieure du camp adverse, quand toute sa ligne intérieure est vide : Règle 3 des règles du jeu.

- Enregistre ton activité.




N = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] S = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
def affiche (N,S): """ Le jeu Nord est numéroté de 0 à 11 depuis en haut à droite dans le sens indirect Le jeu Sud est numéroté de 0 à 11 depuis en bas à droite dans le sens direct 0 1 2 3 4 5 Nord 11 10 9 8 7 6 11 10 9 8 7 6 0 1 2 3 4 5 Sud """ for i in range(6): print (N[i], end = " ") print() for i in range(11, 5, -1): print (N[i], end = " ") print() for i in range(11, 5, -1): print (S[i], end = " ") print() for i in range(6): print (S[i], end = " ") print('\n- - - - - -')
def seme(N, S, joueur, case, sens): """ joueur vaut 'N' ou 'S' case est l'indice de la case à jouer sens vaut +1 (indices croissants) ou -1 (indices décroissants) prend toutes les graines de la case puis appelle la fonction seme_graines pour les semer une à une """ if joueur == "S": graines = S[case] S[case] = 0 else : graines = N[case] N[case] = 0 affiche(N,S) if graines == 0 : return "Pas de semis depuis case vide" seme_graines(N, S, joueur, case, sens, graines) def seme_graines(N, S, joueur, case, sens, graines): """ joueur vaut 'N' ou 'S' case est l'indice de la case qui vient d'être prise ou semée sens vaut +1 (indices croissants) ou -1 (indices décroissants) graines vaut le nombre de graines restant à semer """ case = (case + sens) % 12 graines -= 1 if joueur == "S": S[case] += 1 else : N[case] += 1 affiche(N,S) if graines > 0: seme_graines(N, S, joueur, case, sens, graines) else: if condition_iteration (N, S, joueur, case) : if case >= 6: recolte(N, S, joueur, case, sens) else: seme(N, S, joueur, case, sens) def condition_iteration (N,S,joueur, case): """ On continue si la case contient plus d'une graine après semis. """ if joueur == "S": return (S[case] > 1) else : return (N[case] > 1) def recolte (N, S, joueur, case, sens): """ On récolte chez l'adversaire dans la case interne de même indice ou si sa ligne intérieure est vide dans la case exterieure située en face, puis on sème à nouveau """ if joueur == "S": S[case] += N[case] N[case] = 0 else: N[case] += S[case] S[case] = 0 affiche(N,S) seme(N, S, joueur, case, sens)
IREMI - LIM - INSPE de l'académie de la Réunion - 2023