#Version 1.6 STABLE #Tip: You should try to press #some keys in the menu... from random import * from kandinsky import * from ion import * from time import * #from pomme import * def oscolor(): try: get_keys() except: return 'orange' else: return 'red' def lastPos(i,x,y): if i[-1]==1: pos=[x-10,y] elif i[-1]==2: pos=[x,y-10] elif i[-1]==3: pos=[x+10,y] elif i[-1]==4: pos=[x,y+10] if pos[0]<4: pos[0]=314 if pos[0]>314: pos[0]=4 if pos[1]<5: pos[1]=215 if pos[1]>215: pos[1]=5 return pos def clearDraw(): fill_rect(0,0,320,222,(255,255,255)) def clearHome(): print("\n \n \n \n \n \n \n \n \n \n \n \n \n ") def redraw(): draw_string("(DELETE to exit)",0,0) printLetter([1,1,1,1,0,0,1,1,1,0,0,1,1,1,1],70,80,10,(0,204,0)) fill_rect(95,80,2,4,(0,0,0)) fill_rect(95,86,2,4,(0,0,0)) fill_rect(100,84,4,2,(255,0,0)) fill_rect(104,82,2,2,(255,0,0)) fill_rect(104,86,2,2,(255,0,0)) printLetter([1,1,1,1,0,1,1,0,1,1,0,1,1,0,1],110,80,10,(0,0,0)) printLetter([1,1,1,1,0,1,1,1,1,1,0,1,1,0,1],150,80,10,(0,0,0)) printLetter([1,0,1,1,0,1,1,1,0,1,0,1,1,0,1],190,80,10,(0,0,0)) printLetter([1,1,1,1,0,0,1,1,1,1,0,0,1,1,1],230,80,10,(0,0,0)) def printLetter(letter,x,y,size,color): for yi in range(5): for xi in range(3): if letter[yi*3+xi]==1: fill_rect(x+(xi*size),y+(yi*size),size,size,color) def menu(): clearDraw() printLetter([1,1,1,1,0,1,1,0,1,1,0,1,1,0,1],110,80,10,(0,0,0)) printLetter([1,1,1,1,0,1,1,1,1,1,0,1,1,0,1],150,80,10,(0,0,0)) printLetter([1,0,1,1,0,1,1,1,0,1,0,1,1,0,1],190,80,10,(0,0,0)) printLetter([1,1,1,1,0,0,1,1,1,1,0,0,1,1,1],230,80,10,(0,0,0)) anim=[1,1,1,1,1,1,1,1,1,4,4,3,3,4,4,1,1] ax=0 ay=120 aendx=-110 aendy=120 u=1 aback=0 for i in range(len(anim)): ax=ax+((anim[i]==1)-(anim[i]==3))*10 ay=ay+((anim[i]==2)-(anim[i]==4))*10 if aendx<0: aendx=aendx+10 else: aendx=aendx+((anim[i-11]==1)-(anim[i-11]==3))*10 aendy=aendy+((anim[i-11]==2)-(anim[i-11]==4))*10 fill_rect(aendx,aendy,10,10,(255,255,255)) fill_rect(ax,ay,10,10,(0,204,0)) # aback=lastPos(anim,ax,ay) # if u==26 or u==24: # fill_rect(ax-1,ay-1,3,1,(0,0,0)) # fill_rect(ax-1,ay+1,3,1,(0,0,0)) # fill_rect(aback[0],aback[1],10,10,(0,204,0)) # elif u==34 or u==25: # fill_rect(ax-1,ay-1,1,3,(0,0,0)) # fill_rect(ax+1,ay-1,1,3,(0,0,0)) # fill_rect(aback[0]-2,aback[1]-2,5,5,(0,204,0)) sleep(0.05) fill_rect(ax+5,ay,2,4,(0,0,0)) fill_rect(ax+5,ay+6,2,4,(0,0,0)) fill_rect(ax+10,ay+4,4,2,(255,0,0)) fill_rect(ax+14,ay+2,2,2,(255,0,0)) fill_rect(ax+14,ay+6,2,2,(255,0,0)) draw_string("(DELETE to exit)",0,0) draw_string("> Play <",125,140,oscolor()) draw_string(" Options ",110,165) darkMode=0 Speed=0.05 power=5 score=1 exit=0 sel=1 while keydown(KEY_OK)!=True and exit==0: if keydown(KEY_DOWN) and sel==1: draw_string(" Play ",125,140) draw_string("> Options <",110,165,oscolor()) sel=2 elif keydown(KEY_UP) and sel==2: draw_string("> Play <",125,140,oscolor()) draw_string(" Options ",110,165) sel=1 if keydown(KEY_LEFTPARENTHESIS) and keydown(KEY_RIGHTPARENTHESIS): draw_string("Dark mode enabled !",80,195) darkMode=1 if keydown(KEY_BACKSPACE): exit=1 sleep(0.1) if sel==2 and exit!=1: fill_rect(0,130,300,60,(255,255,255)) Speed=0.05 power=5 score=1 draw_string("Speed:"+str(Speed),50,140,oscolor(),'white') draw_string("Power:+"+str(power),200,140) draw_string("Score:+"+str(score),50,170) draw_string("Play",220,170) sel=1 sleep(0.2) while keydown(KEY_OK)!=True or sel!=4: if keydown(KEY_RIGHT): sel=sel+1 elif keydown(KEY_DOWN): sel=sel+2 elif keydown(KEY_LEFT): sel=sel-1 elif keydown(KEY_UP): sel=sel-2 if sel<0: sel=0 if sel>4: sel=4 if sel==1: draw_string("Speed:"+str(Speed),50,140,oscolor(),'white') draw_string("Power:+"+str(power),200,140) draw_string("Score:+"+str(score),50,170) draw_string("Play",220,170) if keydown(KEY_OK): clearHome() Speed=input("Speed:") redraw() elif sel==2: draw_string("Speed:"+str(Speed),50,140) draw_string("Power:+"+str(power),200,140,oscolor(),'white') draw_string("Score:+"+str(score),50,170) draw_string("Play",220,170) if keydown(KEY_OK): clearHome() power=int(input("Power:+")) redraw() elif sel==3: draw_string("Speed:"+str(Speed),50,140) draw_string("Power:+"+str(power),200,140) draw_string("Score:+"+str(score),50,170,oscolor(),'white') draw_string("Play",220,170) if keydown(KEY_OK): clearHome() score=int(input("Score:")) redraw() elif sel==4: draw_string("Speed:"+str(Speed),50,140) draw_string("Power:+"+str(power),200,140) draw_string("Score:+"+str(score),50,170) draw_string("Play",220,170,oscolor(),'white') if (keydown(KEY_LEFTPARENTHESIS) and keydown(KEY_RIGHTPARENTHESIS)) or darkMode==1: draw_string("Dark mode enabled !",80,195) darkMode=1 if keydown(KEY_BACKSPACE): exit=1 break sleep(0.1) if exit!=1: if darkMode==1: launch(1,Speed,power,score) elif darkMode==0: launch(0,Speed,power,score) elif exit==1: clearDraw() return def launch(darkmode=0,speed=0.05,applePower=5,appleScore=1): bgC=(248,252,248) borderC=(0,0,0) snakeC=(0,204,0) appleC=(248,0,0) if darkmode==1: bgC=(0,0,0) borderC=(0,0,204) fill_rect(0,0,320,222,bgC) # fill_rect(315,0,5,222,borderC) # fill_rect(0,0,5,222,borderC) # fill_rect(0,0,320,1,(197,52,49)) fill_rect(0,221,320,1,(0,0,0)) try: get_keys() except: fill_rect(0,0,320,1,(255,181,49)) else: fill_rect(0,0,320,1,(197,52,49)) snake=[1,1,1,1,1] x=154 y=115 endx=104 endy=115 u,v=1,1 length=5 applex=randint(0,31)*10+4 appley=randint(0,21)*10+5 while get_pixel(applex,appley)!=bgC: applex=randint(0,31)*10+4 appley=randint(0,21)*10+5 fill_rect(applex-4,appley-4,10,10,appleC) score,touched=0,0 while touched!=borderC and touched!=snakeC: if keydown(KEY_RIGHT) or keydown(KEY_DOWN) or keydown(KEY_LEFT) or keydown(KEY_UP): if keydown(KEY_RIGHT) and not u==3: u=1 elif keydown(KEY_DOWN) and not u==4: u=2 elif keydown(KEY_LEFT) and not u==1: u=3 elif keydown(KEY_UP) and not u==2: u=4 if keydown(KEY_BACKSPACE): while keydown(KEY_BACKSPACE): sleep(0.1) while keydown(KEY_BACKSPACE)!=True: sleep(0.1) while keydown(KEY_BACKSPACE): sleep(0.1) snake.append(u) if x==applex and y==appley: length=length+float(applePower) applex=randint(0,31)*10+4 appley=randint(0,21)*10+5 while get_pixel(applex,appley)!=bgC: applex=randint(0,31)*10+4 appley=randint(0,21)*10+5 fill_rect(applex-4,appley-4,10,10,appleC) score=score+int(appleScore) x=x+((u==1)-(u==3))*10 y=y+((u==2)-(u==4))*10 if x<4: x=314 if x>314: x=4 if y<5: y=215 if y>215: y=5 if length: length=length-1 else: snake.remove(snake[0]) endx=endx+((v==1)-(v==3))*10 endy=endy+((v==2)-(v==4))*10 if endx<4: endx=314 if endx>314: endx=4 if endy<5: endy=215 if endy>215: endy=5 v=snake[0] fill_rect(endx-4,endy-4,10,10,bgC) touched=get_pixel(x,y) if x<0 or x>320 or y<0 or y>220: touched=borderC if touched!=appleC and touched!=bgC: touched=borderC # fill_rect(x-2,y-2,5,5,(0,0,0)) # fill_rect(x-1,y-1,3,3,snakeC) fill_rect(x-4,y-4,10,10,snakeC) back=lastPos(snake,x,y) if u==1 or u==3: fill_rect(x,y-4,2,4,(0,0,0)) fill_rect(x,y+2,2,4,(0,0,0)) fill_rect(back[0]-4,back[1]-4,10,10,snakeC) elif u==2 or u==4: fill_rect(x-4,y,4,2,(0,0,0)) fill_rect(x+2,y,4,2,(0,0,0)) fill_rect(back[0]-4,back[1]-4,10,10,snakeC) # fill_rect(x,y-1,1,1,(0,0,0)) # fill_rect(x,y+1,1,1,(0,0,0)) sleep(float(speed)) # snakeC=(randint(0,255),randint(0,255),randint(0,255)) while snakeC==appleC or snakeC==bgC: snakeC=(randint(0,255),randint(0,255),randint(0,255)) # beau() if len(snake)==640: if darkmode==1: draw_string("You win !",120,100,'white','black') draw_string("(You reached the max length)",20,120,'white','black') else: draw_string("You win !",120,100) draw_string("(You reached the max length)",20,120) touched=borderC if darkmode==1: draw_string("Score:"+str(score),10,10,'white','black') draw_string("(OK=play again, DELETE=Menu)",10,30,'white','black') else: draw_string("Score:"+str(score),10,10) draw_string("(OK=play again, DELETE=Menu)",10,30) choice=0 while choice==0: if keydown(KEY_OK): choice=1 launch(darkmode,speed,applePower,appleScore) elif keydown(KEY_BACKSPACE): choice=2 menu() print("Score:",score) menu()