Un jeu” Plante vs Zombi” ou des zombis multicolores s’attaquent à ton champ. Utilises les flèches pour sélectionner un endroit ou planter quelque chose puis choisi entre deux plantes avec les boutons OnOff et Home !
Vous pouvez me contacter sur Discord à l’aide de ce lien https://discord.gg/wNtEFdQgWD.
N’hésitez pas à venir, vous pourriez découvrir des choses intéressantes…
Vous pouvez utilisez CE shop alternatif pour trouver bien plus de programmes et de jeux !!!
from random import * from kandinsky import * from ion import * from time import * class Zombie(): def __init__(self,speed=5,line=0,level=1): self.speed=speed #Pixel per seconds self.line=line self.path=270+randint(-20,20) self.last_path_time=monotonic() self.eyes=[[randint(0,5),randint(0,5)],[randint(0,5),randint(0,5)]] self.level=level*(level<7)+(8*(not(level<7))) def move(self): global end m=monotonic() walk=self.speed*(m-self.last_path_time) walk/=1+(-1<int(self.path/50)<5 and map[self.line][int(self.path/50)]==3) self.path-=walk self.last_path_time=m if self.path<0: end=self.line for i in range(len(tirs)-1,-1,-1): if (self.path-20)<tirs[i][2]<(self.path+30): if tirs[i][1]==self.line: fill_rect(tirs[i][2]+[0,0,10,10][tirs[i][0]],tirs[i][1]*50+[10,10,23,10][tirs[i][0]],[23,23,7,7][tirs[i][0]],[23,23,7,7][tirs[i][0]],backGround) if tirs[i][0]==0: tirs.append([1,tirs[i][1],tirs[i][2]]) del tirs[i] self.level-=1 def draw(self): coordx=int(self.path) draw_instruction=[ (0,15,50,10,(180,80 ,0)), (12,5,10,40,(180,80 ,0)), (28,5,10,40,(180,80 ,0)), (10,0,30,30,zombColor[self.level]), (12,5,10,10,(240,)*3), (28,5,10,10,(240,)*3), (12+self.eyes[0][0],5+self.eyes[0][1],5,5,(10,)*3), (27+self.eyes[1][0],5+self.eyes[1][1],5,5,(10,)*3) ] for i in draw_instruction[:4]: fill_rect(coordx+i[0],self.line*50+i[1],i[2],i[3],backGround) self.move() if self.level<=0: return coordx=int(self.path) for i in draw_instruction: fill_rect(coordx+i[0],self.line*50+i[1],i[2],i[3],i[4]) # for i in [0,1]: # fill_rect(coordx+[12,28][i],self.line*50+5,10,10,(240,)*3) # fill_rect(coordx+[12,27][i]+self.eyes[i][0],self.line*50+5+self.eyes[i][1],5,5,(10,)*3) # fill_rect(coordx+12,self.line*50+5,10,10,(240,)*3) # fill_rect(coordx+28,self.line*50+5,10,10,(240,)*3) # fill_rect(coordx+12+self.eyes[0][0],self.line*50+5+self.eyes[0][1],5,5,(10,)*3) # fill_rect(coordx+27+self.eyes[1][0],self.line*50+5+self.eyes[1][1],5,5,(10,)*3) map=[ [0,0,0,0,0], [0,0,0,0,0], [1,0,0,0,0], [0,0,0,0,0], ] select=[0,0] backGround=(0,)*3 zombie=[] tirs=[] vague=1.0 first=monotonic()+11 last_spawn=first last_move=first flower=3 last_flower_maj=first last_fire_maj=first last_tir_maj=first end=None #first-=620 zombColor=[(),(0,200,0),(0,255,255),(0,0,255),(255,0,255),(255,0,0),(255,255,0),(255,255,255),backGround] def tirs_maj(): global tirs,last_fire_maj,last_small_fire_maj m=monotonic() if m>=(last_fire_maj+7): for i in range(4): for j in range(5): if (map[i][j] in (4,5,6)): tirs.append([{4:1,5:3,6:0}[map[i][j]],i,35+j*50]) last_fire_maj+=7 if (m+1)>(last_fire_maj+4)>m: for i in range(4): for j in range(5): if map[i][j]==5: tirs.append([2,i,35+j*50]) last_fire_maj-=1 def flower_maj(): global flower,last_flower_maj m=monotonic() for i in map: for j in i: if j in (1,2): if (random()*[5,2][j-1])<(m-last_flower_maj): flower+=1 last_flower_maj=m def spawn(): global zombie,last_spawn,vague m=monotonic() vague=(m-first)/10+1 level=int(vague) if (m-last_spawn)>=10: for i in range(level%6+1+((level-48)>0)*(level-48)): zombie.append( Zombie(int(randint(level,10*level)**0.5), randint(0,3),level//6+1)) last_spawn+=10 def move_all_tir(): global last_tir_maj,tirs m=monotonic() for i in range(len(tirs)-1,-1,-1): tirs[i][2]+=int((m-last_tir_maj)*50) if tirs[i][2]>320: del tirs[i] last_tir_maj=m def draw_flower(id,x,y,width=1,height=1): flower_draw_instruction=[ [(0,0,50,50,backGround)], [(20,15,10,30,(0,160,0)),(15,10,20,20,(250,180,0)),(10,35,30,5,(0,200,0))], [(20,15,10,30,(0,160,0)),(15,10,20,20,(250,180,0)),(10,35,30,5,(0,200,0)),(5,32,10,10,(255,220,0)),(35,32,10,10,(255,220,0))], [(10,10,30,30,(0,160,0)),(5,15,20,5,(10,)*3),(25,22,20,5,(10,)*3),(5,30,20,5,(10,)*3)], [(20,15,10,30,(0,160,0)),(5,5,40,30,(0,230,0)),(35,10,5,20,(0,160,0)),(10,10,15,15,(255,)*3),(14,11,10,10,(10,)*3)], [(20,15,10,30,(0,160,0)),(5,5,40,30,(0,230,0)),(35,10,5,7,(0,160,0)),(35,23,5,7,(0,160,0)),(10,10,15,15,(255,)*3),(14,11,10,10,(10,)*3)], [(20,15,10,30,(0,160,0)),(5,5,40,30,(220,0,0)),(35,10,5,20,(255,0,0)),(10,10,15,15,(255,)*3),(14,11,10,10,(10,)*3)], ] for i in flower_draw_instruction[id]: fill_rect(x+int(width*i[0]),y+int(height*i[1]),int(width*i[2]),int(height*i[3]),i[4]) def draw_all(): for i in range(len(zombie)-1,-1,-1): zombie[i].draw() if zombie[i].level<=0: zombie[i].move() del zombie[i] for i in range(len(tirs)-1,-1,-1): fill_rect(tirs[i][2]+[0,0,10,10][tirs[i][0]],tirs[i][1]*50+[10,10,23,10][tirs[i][0]],[20,20,7,7][tirs[i][0]],[20,20,7,7][tirs[i][0]],backGround) for y in range(4): for x in range(5): if map[y][x]==0: continue draw_flower(map[y][x],x*50,y*50) move_all_tir() for i in range(len(tirs)-1,-1,-1): fill_rect(tirs[i][2]+[0,0,10,10][tirs[i][0]],tirs[i][1]*50+[10,10,23,10][tirs[i][0]],[20,20,7,7][tirs[i][0]],[20,20,7,7][tirs[i][0]],[(240,0,0),(0,240,0),(0,240,0),(0,240,0)][tirs[i][0]]) flower_maj() fill_rect(0,200,320,22,(51,)*3) draw_string(str(flower),10,205,(250,180,0),(51,)*3) fill_rect(40,208,10,10,(250,180,0)) draw_string(str(int(vague)),80,205,(255,)*3,(51,)*3) fill_rect(100,205,120,14,(0,)*3) fill_rect(102,207,int(116*(vague-int(vague))),10,(120,)*3) if map[select[1]][select[0]] in (0,1,4): for i in [0,1]: draw_string("^",[230,280][i],202,[(250,180,0),(51,)*3][i],(51,)*3) draw_flower( [[1,2,0,0,5,0,0], [4,3,0,0,6,0,0]][i][map[select[1]][select[0]]], [250,300][i],200,0.4,0.4) # draw_string("^",230,202,(250,180,0),(51,)*3) # draw_flower([1,2,0,0,5,0,0][map[select[1]][select[0]]],250,200,0.4,0.4) # draw_string("^",280,202,(10,)*3,(51,)*3) # draw_flower([4,3,0,0,6,0,0][map[select[1]][select[0]]],300,200,0.4,0.4) def move(): global select,last_move,map,flower if not last_move+0.2<monotonic(): return last_move+=0.2 x,y=0,0 for i in range(4): if keydown(i): x+=[-1,0,0,1][i] y+=[0,-1,1,0][i] fill_rect(50*select[0]+5,50*select[1]+5,40,40,backGround) select[0]=(x+select[0])%5 select[1]=(y+select[1])%4 fill_rect(50*select[0]+5,50*select[1]+5,40,40,(102,)*3) if keydown(KEY_HOME) or keydown(KEY_ONOFF): ex_flower_id=map[select[1]][select[0]] cost=[5,15,0,0,15,0,0][ex_flower_id] if flower<cost: return flower-=cost map[select[1]][select[0]]=[4-3*keydown(KEY_HOME),3-keydown(KEY_HOME),2,3,6-keydown(KEY_HOME),5,6][ex_flower_id] if map[select[1]][select[0]]!=0 and keydown(KEY_OK): flower+=2 map[select[1]][select[0]]=[0,0,1,1,0,4,4][map[select[1]][select[0]]] draw_flower(map[select[1]][select[0]],select[0]*50,select[1]*50) instruction=[ ("Appuyer sur:",80,20), ("Home" ,100,40,(255,)*3,(250,180,0)), ("OnOff",100,60,(255,)*3,(0,)*3), ("Pour ameliorer.",80,80), ("Pour supprimer=>Ok",80,120), (">La premiere amelioration\n coute 5 petales.",20,150), ("La seconde en coutera 15!",20,190) ] for i in instruction: draw_string(*i) sleep(1) sleep(4) fill_rect(0,0,320,222,backGround) while True: move() draw_all() tirs_maj() spawn() if end!=None: break sleep(0.05) draw_string("<= Perdu! Et ce a la vague "+str(int(vague)),10,50*end,(255,)*3,backGround)