Le programme choisis les emplacements de 5 bateaux (longueurs égales à 2, 3, 3, 4 et 5) que le joueur doit couler en un minimum de coups. Successivement il donne les coordonnées d’une case sous la forme de 2 chiffres suivis de “EXE” (18 pour colonne=1 et ligne=8) : si un bateau est touché, le point s’allume en rouge sinon il s’allume en blanc. Lorsqu’un bateau est coulé un message le signale.
from random import * from math import * from kandinsky import * def segmentH(x1,x2,y): for i in range(x2-x1): set_pixel(x1+i,y,noir) def segmentV(x,y1,y2): for i in range(y2-y1): set_pixel(x,y1+i,noir) def carre(x,y,c,l): for i in range(l): for j in range(l): set_pixel(x+i,y+j,c) def plateau(): for i in range(10): draw_string(str(i),45+i*20,205) draw_string(str(9-i),20,2+i*20) carre(40,0,bleu,200) for i in range(11): segmentH(40,240,0+i*20) segmentV(40+i*20,0,200) set_pixel(240,200,noir)#dernier pt def cercle(x0,y0,r,c,e): for i in range(2*e): xd=x0-int((r-i*0.5)/sqrt(2)) xf=x0+int((r-i*0.5)/sqrt(2)) for x in range(xd,xf+1): x1=x y1=y0+int(sqrt((r-i*0.5)**2-(x-x0)**2)) set_pixel(x,y1,c) for j in range(3): x2=x0+y1-y0 y2=y0+x0-x1 set_pixel(x2,y2,c) x1,y1=x2,y2 def message(t,c="",m=""): carre(245,70,blanc,70) draw_string("coup "+c,245,70) draw_string("("+t[0]+"; "+t[1]+")",245,105) draw_string(m,245,120) def entrer(): c=input() if len(c)==2:return c else:entrer() def bn(s): seed(s) B=[2,3,3,4,5] E=len(B)*[[]] T=[] X=sum(B)*[0] plateau() #choix des emplacements for i in range(len(B)): r=randint(0,1)#0:horiz.,1:vert. good=False while good==False: K=B[i]*[0] if r==0: c=randint(0,10-B[i]) l=randint(0,9) else: c=randint(0,9) l=randint(0,10-B[i]) good=True for j in range(B[i]): if r==0:K[j]=str(c+j)+str(l) else:K[j]=str(c)+str(l+j) if K[j] in T:good=False E[i]=K for j in range(B[i]):T.append(K[j]) print(E) #jeu cp=0 while sum(X)!=len(X): coord=entrer() cp+=1 col=int(coord[0])#colonne(0-9) lig=int(coord[1])#ligne (0-9) txt="Rate" if coord in T: coul=rouge rg=T.index(coord) X[rg]=1 txt="Touche" for i in range(len(E)): if coord in E[i]: tch=0 for j in range(len(E[i])): rg=T.index(E[i][j]) if X[rg]==1:tch+=1 if tch==len(E[i]): txt="Coule" else: coul=blanc message(coord,str(cp),txt) cercle(50+20*col,190-20*lig,9,coul,9) print(txt) draw_string("Bravo!",245,180) print("Mission accomplie en {} coups".format(cp)) noir=color(0,0,0) bleu=color(150,150,255) blanc=color(255,255,255) rouge=color(255,55,55)