Adaptation du jeu Trash Dice (Dé à la poubelle).
Chacun des deux joueurs commence la partie avec 20 dés. À tour de rôle, chaque joueur lance un dé et le place dans la roue du plateau s’il n’y est pas déjà, sinon il le jette à la poubelle.
Si un joueur vient de compléter la roue du plateau, alors il récupère les 6 dés qu’elle contient.
Le premier joueur qui n’a plus de dé a perdu.
from kandinsky import * from ion import * from time import * from random import randint Plateau=[[0]*6 for i in range(5)] def dessine_de(x,y,n,clr="k"): for j in (0,1): fill_rect(x-3,y-4+20*j,19,1,clr) fill_rect(x-4+20*j,y-3,1,19,clr) motif=(("000","010","000"),("001","000","100"),("001","010","100"),("101","000","101"),("101","010","101"),("101","101","101"))[n-1] for i in range(3): for j in range(3): fill_rect(x+5*i,y+5*j,3,3,("w",clr)[int(motif[j][i])]) def dessine_poubelle(x,y,mode_rouge=0): vert_fonce=(80,120,50) vert_moyen=(100,170,50) vert_clair=(150,200,50) # pour une poubelle bleue et violette : #vert_fonce=(160,0,255) #vert_moyen=(0,0,250) #vert_clair=(0,200,250) if mode_rouge: vert_fonce=(150,0,0) vert_moyen=(200,0,0) vert_clair=(250,0,0) fill_rect(x+7,y+1,29,3,vert_fonce) fill_rect(x+4,y+5,35,2,vert_clair) fill_rect(x+16,y+6,11,1,vert_fonce) fill_rect(x+1,y+8,41,3,vert_fonce) fill_rect(x+6,y+14,29,28,vert_clair) fill_rect(x+7,y+42,25,1,vert_clair) fill_rect(x+6,y+12,31,2,vert_moyen) fill_rect(x+33,y+14,4,1,vert_moyen) fill_rect(x+34,y+15,3,1,vert_moyen) fill_rect(x+35,y+16,2,26,vert_moyen) fill_rect(x+34,y+39,1,4,vert_moyen) fill_rect(x+33,y+41,1,2,vert_moyen) set_pixel(x+32,y+42,vert_moyen) fill_rect(x+11,y,3,1,"k") fill_rect(x+29,y,3,1,"k") fill_rect(x+7,y+1,5,1,"k") fill_rect(x+13,y+1,17,1,"k") fill_rect(x+31,y+1,5,1,"k") fill_rect(x+6,y+2,1,2,"k") fill_rect(x+36,y+2,1,2,"k") fill_rect(x+4,y+4,35,1,"k") fill_rect(x+3,y+5,1,2,"k") fill_rect(x+39,y+5,1,2,"k") fill_rect(x+1,y+7,41,1,"k") fill_rect(x,y+8,1,3,"k") fill_rect(x+42,y+8,1,3,"k") fill_rect(x+1,y+11,41,1,"k") fill_rect(x+5,y+12,1,28,"k") fill_rect(x+37,y+12,1,28,"k") fill_rect(x+6,y+40,1,2,"k") fill_rect(x+36,y+40,1,2,"k") set_pixel(x+7,y+42,"k") set_pixel(x+35,y+42,"k") fill_rect(x+8,y+43,27,1,"k") fill_rect(x+11,y+44,2,1,"k") fill_rect(x+30,y+44,2,1,"k") fill_rect(x+10,y+45,2,1,"k") fill_rect(x+31,y+45,2,1,"k") # bras set_pixel(x+4,y+21,"k") set_pixel(x+38,y+21,"k") fill_rect(x+3,y+22,1,2,"k") fill_rect(x+39,y+22,1,2,"k") fill_rect(x+2,y+24,1,8,"k") fill_rect(x+40,y+24,1,8,"k") fill_rect(x+1,y+30,1,2,"k") fill_rect(x+41,y+30,1,2,"k") # yeux for k in (0,1): fill_rect(x+14+13*k,y+16,2,1,"k") fill_rect(x+13+13*k,y+17,4,2,"k") fill_rect(x+14+13*k,y+19,2,1,"k") # bouche fill_rect(x+20,y+18,1,2,"k") fill_rect(x+22,y+18,1,2,"k") set_pixel(x+21,y+20,"k") # joues for k in (0,1): fill_rect(x+12+17*k,y+20,2,1,"pink") fill_rect(x+11+17*k,y+21,4,1,"pink") fill_rect(x+12+17*k,y+22,2,1,"pink") # flèches blanches fill_rect(x+19,y+22,6,1,"w") fill_rect(x+17,y+23,9,1,"w") fill_rect(x+16,y+24,11,1,"w") fill_rect(x+15,y+25,6,1,"w") fill_rect(x+23,y+25,6,1,"w") fill_rect(x+15,y+26,5,1,"w") fill_rect(x+24,y+26,5,1,"w") fill_rect(x+17,y+27,2,1,"w") fill_rect(x+25,y+27,4,1,"w") fill_rect(x+23,y+28,6,1,"w") fill_rect(x+28,y+23,1,2,"w") fill_rect(x+12,y+29,7,1,"w") fill_rect(x+14,y+30,5,1,"w") fill_rect(x+13,y+31,6,1,"w") fill_rect(x+12,y+32,5,1,"w") fill_rect(x+12,y+33,4,2,"w") fill_rect(x+12,y+35,5,1,"w") fill_rect(x+12,y+36,9,1,"w") fill_rect(x+13,y+37,8,1,"w") fill_rect(x+14,y+38,7,1,"w") fill_rect(x+16,y+39,5,1,"w") fill_rect(x+18,y+32,1,2,"w") fill_rect(x+28,y+30,3,1,"w") fill_rect(x+26,y+31,5,1,"w") fill_rect(x+27,y+32,5,1,"w") fill_rect(x+28,y+33,4,2,"w") fill_rect(x+27,y+35,5,1,"w") fill_rect(x+23,y+36,9,1,"w") fill_rect(x+22,y+37,9,1,"w") fill_rect(x+22,y+38,8,1,"w") fill_rect(x+23,y+39,5,1,"w") fill_rect(x+23,y+35,1,6,"w") fill_rect(x+24,y+34,1,8,"w") draw_string("Trash Dice",110,70,"purple") draw_string("Dés à la poubelle",75,95,"purple") draw_string("Valider avec OK",85,135,"purple") for k in range(2): fill_rect(60,49+k*122,200,1,"g") for k in range(14): dessine_de(25+43*(k%7),18+172*(k//7),randint(1,6),"bg"[k%2-k//7]) for k in range(6): dessine_de(25+258*(k//3),61+43*(k%3),randint(1,6),"bg"[1-k%2-k//3]) while not (keydown(KEY_OK) or keydown(KEY_EXE)):1 while keydown(KEY_OK) or keydown(KEY_EXE):1 fill_rect(0,0,320,222,"w") draw_string("Présentation",100,10,(80,150,50)) Regles=("Chaque joueur lance un dé","puis le place dans la roue","s'il n'y est pas déjà.","Sinon, il est jeté.","Si un joueur complète la","roue, alors il récupère","les 6 dés qu'elle contient.","Le premier joueur qui n'a","plus de dés a perdu.","Lancer de dé : ") for k in range(len(Regles)): draw_string(Regles[k],20,33+18*k,"b") draw_string("< >",170,195,"orange") mode_auto=0 chg=1 while not (keydown(KEY_OK) or keydown(KEY_EXE)): if chg: draw_string(("manuel","automatique")[mode_auto],210-25*mode_auto,195,"w") mode_auto=1-mode_auto draw_string(("manuel","automatique")[mode_auto],210-25*mode_auto,195,"purple") sleep(0.2) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) while keydown(KEY_OK) or keydown(KEY_EXE):1 fill_rect(0,0,320,222,"w") Des=[[0]*20,[1]*20] Plateau=dict() for joueur in (0,1): draw_string("Joueur",25+210*joueur,20,"bg"[joueur]) draw_string(("bleu","vert")[joueur],35+210*joueur,40,"bg"[joueur]) for k in range(20): X=k%4 if joueur==1: X=3-X dessine_de(14+23*X+210*joueur,195-23*(k//4),randint(1,6),"bg"[joueur]) dessine_poubelle(139,166) for k in range(1,7): dessine_de(124+59*(k==3)+14*(k in (1,5))+45*(k in (2,4)),20+30*(k%3==0)+60*(k in (4,5)),k,(230,230,230)) while Des[0]!=[] and Des[1]!=[]: for joueur in (0,1): # on alterne entre les joueurs if not mode_auto: draw_string("Appuyer",125,120,"bg"[joueur]) draw_string("sur OK",130,140,"bg"[joueur]) while not (keydown(KEY_OK) or keydown(KEY_EXE)):1 draw_string("Appuyer",125,120,"w") draw_string("sur OK",130,140,"w") X=(len(Des[joueur])-1)%4 if joueur==1: X=3-X Y=(len(Des[joueur])-1)//4 dessine_de(14+23*X+210*joueur,195-23*Y,6,"w") # on efface le dé qu'on va lancer for k in range(20): dessine_de(154,130,randint(1,6),"bg"[Des[joueur][-1]]) sleep(0.1) N=randint(1,6) dessine_de(154,130,N,"bg"[Des[joueur][-1]]) sleep(1) if N not in Plateau.keys(): Plateau[N]=Des[joueur].pop() dessine_de(124+59*(N==3)+14*(N in (1,5))+45*(N in (2,4)),20+30*(N%3==0)+60*(N in (4,5)),N,"bg"[Plateau[N]]) dessine_de(154,130,N,"w") else: # on jette le dé Des[joueur].pop() for k in range(4): fill_rect(146,125+k,22,1,"w") dessine_de(154,130+k**2,N,"w") dessine_de(154,130+(k+1)**2,N,"r") sleep(0.02) dessine_de(154,146,N,"w") dessine_poubelle(139,166,1) # mode rouge sleep(0.5) dessine_poubelle(139,166) # mode vert sleep(1) #for i in range(1,7): # if i in Plateau.keys(): # dessine_de(50+30*i,50,i,"bg"[Plateau[i]]) if len(list(Plateau.keys()))==6: draw_string("Bravo !",125,130,"bg"[joueur]) sleep(2) for k in range(1,7): Des[joueur].append(Plateau[k]) X=(len(Des[joueur])-1)%4 if joueur==1: X=3-X Y=(len(Des[joueur])-1)//4 dessine_de(14+23*X+210*joueur,195-23*Y,randint(1,6),"bg"[Plateau[k]]) dessine_de(124+59*(k==3)+14*(k in (1,5))+45*(k in (2,4)),20+30*(k%3==0)+60*(k in (4,5)),k,(230,230,230)) sleep(0.2) Plateau=dict() draw_string("Bravo !",125,130,"w") if Des==[[],[]]: draw_string("Egalité !",115,130,"r") else: clr="bg"[Des[0]==[]] draw_string("Joueur",130,105,clr) draw_string(("bleu","vert")[Des[0]==[]],140,125,clr) draw_string("a gagné !",115,145,clr)