from kandinsky import* from ion import keydown from time import sleep from random import randint color=('white','white','red','gray') pos=[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) def acceuil(): fill_rect(0, 0, 320, 222,'black') draw_string("Bataille navale",80,20,'white','black') draw_string("Solo",140,60,'white','black') draw_string("Duo",145,90,'white','black') draw_string("Contre bot",110,120,'white','black') def jeu(pl): 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==g_j and pl[j][i] == 1))+'black'*(pl==g_j and pl[j][i] == 1)) def depla(): 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'*(g_j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(g_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'*(g_j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(g_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'*(g_j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(g_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'*(g_j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(g_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'*(g_j[pos[1]+1*(i*(s==1))][pos[0]+1*(i*(s==0))]==0)+'black'*(g_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 g_j[pos[1]][pos[0]+1*i] == 1: ch=1 if ch ==0: for i in range(vie[k]): col[k].append([pos[0]+1*i,pos[1]]) for b in col: for x,y in b: g_j[y][x] = 1 sleep(0.5) break elif s==1: for i in range(vie[k]): if g_j[pos[1]+1*i][pos[0]] == 1: ch=1 if ch == 0: for i in range(vie[k]): col[k].append([pos[0],pos[1]+1*i]) for b in col: for x,y in b: g_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(): global nb_tir draw_string("tir:"+str(nb_tir),250,201,'white',(148, 113, 222)) pos=[0,0] act2(pos) while 42: if keydown(0): if pos[0]-1>=0: act(pos) pos[0]-=1 act2(pos) sleep(0.3) elif keydown(1): if pos[1]-1>=0: act(pos) pos[1]-=1 act2(pos) sleep(0.3) elif keydown(2): if pos[1]+1<10: act(pos) pos[1]+=1 act2(pos) sleep(0.3) elif keydown(3): if pos[0]+1<10: act(pos) pos[0]+=1 act2(pos) sleep(0.3) elif keydown(4) or keydown(52): if g_e[pos[1]][pos[0]] !=2 and g_e[pos[1]][pos[0]] !=3: nb_tir+=1 draw_string("tir:"+str(nb_tir),250,201,'white',(148, 113, 222)) touche(pos) c=0 for li in g_e: for cole in li: if cole==1: c=1 if c != 1: break if mod == 1: break sleep(0.3) def touche(co): f=0 for i in range(len(col_e)): for j in range(len(col_e[i])): if col_e[i][j] == co: del col_e[i][j] g_e[co[1]][co[0]] = 2 print('touché') if len(col_e[i])==0: print('coulé') del col_e[i] f=1 draw_string("coulés:"+str(5-len(col_e)),150,201,'white',(148, 113, 222)) if len(col_e) == 0: print('Vous avez gagné') break if f ==1: break if g_e[co[1]][co[0]] !=2: g_e[co[1]][co[0]] = 3 print('plouf') fill_rect(86+15*co[0],11+15*co[1],14,14,color[g_e[co[1]][co[0]]]) def barre_bas(): fill_rect(0, 200, 320, 22, (148, 113, 222)) draw_string("coulés:"+str(5-len(col_e)),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(): while 42: x,y=randint(0,9),randint(0,9) if g_j[y][x] == 0 or g_j[y][x] == 1: if g_j[y][x] == 0: g_j[y][x] = 3 elif g_j[y][x] == 1: g_j[y][x] = 2 jeu(g_j) break global nb_tir nb_tir = 0 mod = 1 #acceuil() barre_bas() if mod == 0: aleatoire_pl() jeu(g_j) torp() elif mod == 1: jeu(g_j) depla() aleatoire_pl() while 42: sleep(1) if len(col) == 0: break jeu(g_e) torp() sleep(1) if len(col_e) == 0: break jeu(g_j) sleep(1) tir_bot() print('col',col) print('col_e',col_e) print('g_e',g_e) print('g_j',g_j)