from kandinsky import* from ion import keydown from time import sleep from random import randint color=('white','white','red','gray') pos=[0,0] pos_j2=[0,0] col=[[],[],[],[],[]] col_e=[[],[],[],[],[]] g_e=[[0 for i in range(10)] for j in range(10)] g_j=[[0 for i in range(10)] for j in range(10)] vie=(5,4,3,3,2) ac=[1,0,0] def acceuil(): draw_string("Bataille navale",80,30,'black','white') draw_string("Solo",140,80,'black','white') draw_string("Contre bot",110,115,'black','white') draw_string("Duo",145,150,'black','white') draw_arrow(120,78,18) while 42: if keydown(2): if ac[0] == 1: ac[0]=0 ac[1]=1 fill_rect(120,78,20,20,'white') draw_arrow(90,113,18) sleep(0.3) elif ac[1] == 1: ac[1]=0 ac[2]=1 fill_rect(90,113,20,20,'white') draw_arrow(125,148,18) sleep(0.3) if keydown(1): if ac[1] == 1: ac[0]=1 ac[1]=0 fill_rect(90,113,20,20,'white') draw_arrow(120,78,18) sleep(0.3) elif ac[2] == 1: ac[1]=1 ac[2]=0 fill_rect(125,148,20,20,'white') draw_arrow(90,113,18) sleep(0.3) if keydown(4) or keydown(52): global mod mod = ac.index(1) fill_rect(0,0,320,220,'white') break def jeu(pl,vis=0): fill_rect(85,10,151,151,'black') for j in range(10): for i in range(10): fill_rect(86+15*i,11+15*j,14,14,color[pl[j][i]]*(not(pl[j][i] == 1 and vis ==1))+'black'*(pl[j][i] == 1 and vis == 1)) if pl == g_j: barre_bas(col) else: barre_bas() def depla(j=g_j,c=col): for k in range(5): pos=[0,0] s=0 for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i,11+15*pos[1],14,14,'black') while 42: if keydown(0): if pos[0]-1>=0: for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'white'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==1)) pos[0]-=1 for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'black') sleep(0.3) elif keydown(1): if pos[1]-1>=0: for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'white'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==1)) pos[1]-=1 for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'black') sleep(0.3) elif keydown(2): if pos[1]+1+(vie[k]-1)*(s==1)<10: for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'white'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==1)) pos[1]+=1 for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'black') sleep(0.3) elif keydown(3): if pos[0]+1+(vie[k]-1)*(s==0)<10: for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'white'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==1)) pos[0]+=1 for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'black') sleep(0.3) elif keydown(12): for i in range(vie[k]): fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'white'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==1)) s=1-s for i in range(vie[k]): if s==0 and pos[0]>10-vie[k]: pos[0]=10-vie[k] elif s==1 and pos[1]>10-vie[k]: pos[1]=10-vie[k] fill_rect(86+15*pos[0]+15*i*(s==0),11+15*pos[1]+15*i*(s==1),14,14,'black') sleep(0.3) elif keydown(4) or keydown(52): ch=0 if s==0: for i in range(vie[k]): if j[pos[1]][pos[0]+1*i] == 1: ch=1 if ch ==0: for i in range(vie[k]): c[k].append([pos[0]+1*i,pos[1]]) for b in c: for x,y in b: j[y][x] = 1 sleep(0.5) break elif s==1: for i in range(vie[k]): if j[pos[1]+1*i][pos[0]] == 1: ch=1 if ch == 0: for i in range(vie[k]): c[k].append([pos[0],pos[1]+1*i]) for b in c: for x,y in b: j[y][x] = 1 sleep(0.5) break def act(pos): fill_rect(85+15*pos[0],10+15*pos[1],1,15,'black') fill_rect(85+15*pos[0],10+15*pos[1],15,1,'black') fill_rect(100+15*pos[0],10+15*pos[1],1,15,'black') fill_rect(85+15*pos[0],25+15*pos[1],15,1,'black') def act2(pos): fill_rect(85+15*pos[0],10+15*pos[1],1,15,'red') fill_rect(85+15*pos[0],10+15*pos[1],15,1,'red') fill_rect(100+15*pos[0],10+15*pos[1],1,15,'red') fill_rect(85+15*pos[0],25+15*pos[1],15,1,'red') def torp(p=pos,j=g_e): global nb_tir if mod == 0: draw_string("tir:"+str(nb_tir),250,201,'white',(148, 113, 222)) #pos=[0,0] act2(p) while 42: if keydown(0): if p[0]-1>=0: act(p) p[0]-=1 act2(p) sleep(0.3) elif keydown(1): if p[1]-1>=0: act(p) p[1]-=1 act2(p) sleep(0.3) elif keydown(2): if p[1]+1<10: act(p) p[1]+=1 act2(p) sleep(0.3) elif keydown(3): if p[0]+1<10: act(p) p[0]+=1 act2(p) sleep(0.3) elif keydown(4) or keydown(52): if j[p[1]][p[0]] !=2 and j[p[1]][p[0]] !=3: if mod == 0: nb_tir+=1 draw_string("tir:"+str(nb_tir),250,201,'white',(148, 113, 222)) if j == g_j: touche(p,col,g_j) else: touche(p) c=0 for li in g_e: for cole in li: if cole==1: c=1 if c != 1: break if mod != 0: break sleep(0.3) def touche(co,col_en=col_e,g_en=g_e): f=0 for i in range(len(col_en)): for j in range(len(col_en[i])): if col_en[i][j] == co: del col_en[i][j] g_en[co[1]][co[0]] = 2 print('touché') if len(col_en[i])==0: print('coulé') del col_en[i] f=1 draw_string("coulés:"+str(5-len(col_en)),150,201,'white',(148, 113, 222)) if len(col_en) == 0: print('Vous avez gagné') break if f ==1: break if g_en[co[1]][co[0]] !=2: g_en[co[1]][co[0]] = 3 print('plouf') fill_rect(86+15*co[0],11+15*co[1],14,14,color[g_en[co[1]][co[0]]]) def barre_bas(qui=col_e): fill_rect(0, 200, 320, 22, (148, 113, 222)) draw_string("coulés:"+str(5-len(qui)),150,201,'white',(148, 113, 222)) def aleatoire_pl(): for k in range(5): while 42: x,y,s=randint(0,9-vie[k]),randint(0,9-vie[k]),randint(0,1) for i in range(vie[k]): if g_e[y+i*(s==1)][x+i*(s==0)] != 0: col_e[k] = [] break else: g_e[y+i*(s==1)][x+i*(s==0)] = 1 col_e[k].append([x+i*(s==0),y+i*(s==1)]) if len(col_e[k]) > 0: break def tir_bot(niv=1): while 42: x,y,t=randint(0,9),randint(0,9),randint(0,5-niv) if g_j[y][x] == 0 or g_j[y][x] == 1: if g_j[y][x] == 0 and t>0: g_j[y][x] = 3 elif g_j[y][x] == 1 and t == 0: g_j[y][x] = 2 touche([x,y],col,g_j) break def draw_arrow(x,y,t,s=1): for j in range(10): for i in range((9-j)*(s==0)+j*(s==1),19-(9-j)*(s==0)-j*(s==1),(18-(9-j)*(s==0)*2-j*(s==1)*2)+1*(j==9)*(s==1)+1*(j==0)*(s==0)): fill_rect(x+int(t/18)*j,y+int(t/18)*i,int(t/18),int(t/18),'black') def ecran_inter(p): fill_rect(0,0,320,220,'white') draw_string("Tour de "+p,90,40) draw_string("Appuyez sur entrer",60,80) while 42: if keydown(4) or keydown(52): fill_rect(0,0,320,220,'white') break global nb_tir nb_tir = 0 acceuil() barre_bas() if mod == 0: aleatoire_pl() jeu(g_j) torp() elif mod == 1: jeu(g_j) depla() aleatoire_pl() while 42: sleep(0.7) if len(col) == 0: break jeu(g_e) draw_string("Tour:J1 ",5,180,'black','white') torp() sleep(0.7) if len(col_e) == 0: break jeu(g_j,1) draw_string("Tour:Bot",5,180,'black','white') sleep(0.7) tir_bot() elif mod == 2: ecran_inter("J1") jeu(g_j) draw_string("Tour:J1 ",5,180,'black','white') depla() sleep(1) ecran_inter("J2") jeu(g_e) draw_string("Tour:J2 ",5,180,'black','white') depla(g_e,col_e) sleep(1) while 42: ecran_inter("J1") draw_string("Tour:J1 ",5,180,'black','white') jeu(g_j,1) draw_string("Votre grille",160,180) sleep(2) draw_string(" ",160,180) jeu(g_e) torp() sleep(1) if len(col) == 0: break ecran_inter("J2") draw_string("Tour:J2 ",5,180,'black','white') jeu(g_e,1) draw_string("Votre grille",160,180) sleep(2) draw_string(" ",160,180) jeu(g_j) torp(pos_j2,g_j) sleep(1) if len(col_e) == 0: break print('col',col) print('col_e',col_e) print('g_e',g_e) print('g_j',g_j)