#Note : max colors for red, #green and blue with kandinsky #are red=248 green=252 and #blue=248 from random import * from kandinsky import * from ion import * from time import * 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,255,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=[26,26,26,26,26,26,26,26,26,25,25,24,24,25,25,26,26] ax=0 ay=120 aendx=-110 aendy=120 u=26 for i in range(len(anim)): ax=ax+((anim[i]==26)-(anim[i]==24))*10 ay=ay+((anim[i]==34)-(anim[i]==25))*10 if aendx<0: aendx=aendx+10 else: aendx=aendx+((anim[i-11]==26)-(anim[i-11]==24))*10 aendy=aendy+((anim[i-11]==34)-(anim[i-11]==25))*10 fill_rect(aendx,aendy,10,10,(255,255,255)) fill_rect(ax,ay,10,10,(0,255,0)) sleep(0.05) draw_string("(DELETE to exit)",0,0) draw_string("> Play <",125,140) 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) sel=2 elif keydown(KEY_UP) and sel==2: draw_string("> Play <",125,140) 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,'white','black') 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,'white','black') 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,'white','black') 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,'white','black') 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,'white','black') if keydown(KEY_LEFTPARENTHESIS) and keydown(KEY_RIGHTPARENTHESIS): 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,252,0) appleC=(248,0,0) if darkmode==1: bgC=(0,0,0) borderC=(0,0,248) fill_rect(0,0,320,222,bgC) fill_rect(318,0,2,222,borderC) fill_rect(0,0,320,3,borderC) fill_rect(0,0,3,222,borderC) snake=[26,26,26,26,26] x=160 y=120 endx=135 endy=120 u,v=26,26 length=5 applex=randint(0,63)*5 appley=randint(0,44)*5 while get_pixel(applex,appley)!=bgC: applex=randint(0,63)*5 appley=randint(0,44)*5 fill_rect(applex-2,appley-2,5,5,appleC) score=0 touched=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==24: u=26 elif keydown(KEY_DOWN) and not u==25: u=34 elif keydown(KEY_LEFT) and not u==26: u=24 elif keydown(KEY_UP) and not u==34: u=25 if keydown(KEY_BACKSPACE): while keydown(KEY_BACKSPACE): sleep(0.1) while keydown(KEY_BACKSPACE)!=True: sleep(0.1) sleep(0.1) snake.append(u) if x==applex and y==appley: length=length+float(applePower) applex=randint(0,63)*5 appley=randint(0,44)*5 while get_pixel(applex,appley)!=bgC: applex=randint(0,63)*5 appley=randint(0,44)*5 fill_rect(applex-2,appley-2,5,5,appleC) score=score+int(appleScore) x=x+((u==26)-(u==24))*5 y=y+((u==34)-(u==25))*5 if x<5: x=315 if x>315: x=5 if y<5: y=220 if y>220: y=5 if length: length=length-1 else: snake.remove(snake[0]) endx=endx+((v==26)-(v==24))*5 endy=endy+((v==34)-(v==25))*5 if endx<5: endx=315 if endx>315: endx=5 if endy<5: endy=220 if endy>220: endy=5 v=snake[0] fill_rect(endx-2,endy-2,5,5,bgC) touched=get_pixel(x,y) if x<0 or x>320 or y<0 or y>220: touched=borderC fill_rect(x-2,y-2,5,5,snakeC) sleep(float(speed)) 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()