Script Py
Script Py
config = {}
# try: from snake_config import config
# except: pass
class Snake:
def __init__(self, config, high_score=0):
self.imported_config = config
self.high_score = high_score
self.init_snk()
self.show_score()
self.start()
def set_config(self):
self.x,self.y=160,110
self.init_len=3
self.body=[(self.x,self.y)]
self.sleep=0.01
self.decrement=0.0003
self.inc=1
self.direction="up"
self.tdirection="up"
self.brd_co = (255,0,0)
self.bg_co = (255,255,255)
self.snk_co = (100,255,100)
self.fd_co = (255,100,100)
def init_snk(self):
self.set_config()
self.len = self.init_len
self.eat = []
fill_rect(0,0,320,222,self.bg_co)
fill_rect(0,0,320,6,self.brd_co)
fill_rect(0,0,5,222,self.brd_co)
fill_rect(320-5,0,5,222,self.brd_co)
fill_rect(0,222-6,320,6,self.brd_co)
for _ in range(3):
self.spawn_food()
self.show_score()
def spawn_food(self):
while True:
fx=randint(10,310)
fy=randint(10,210)
fx-=fx%10
fy-=fy%10
if (fx, fy) not in self.body:
break
fill_rect(int(fx-10/2),int(fy-10/2)+1,int(10),int(10),self.fd_co)
self.eat.append((fx, fy))
def show_score(self,sx=205,sy=6):
draw_string("Score : {:0>2}".format(self.len-self.init_len),sx,sy)
def start(self):
sub_iter = lambda i1, i2: tuple(v1-v2 for v1, v2 in zip(i1, i2))
while 1:
if self.len < len(self.body):
self.body.pop(0)
if len(self.body) > self.init_len-1:
dx, dy = self.body[0]
av=abs(self.x-self.body[-1][0]) or abs(self.y-self.body[-1][1])
fill_rect(int(self.x-10/2),int(self.y-10/2)+1,int(10),int(10),self.snk_co)
sleep(self.sleep)
if keydown(KEY_HOME):
while keydown(KEY_HOME): pass
while not keydown(KEY_HOME): pass
while keydown(KEY_HOME): pass
if keydown(KEY_UP):
self.tdirection="up"
if keydown(KEY_DOWN):
self.tdirection="down"
if keydown(KEY_RIGHT):
self.tdirection="right"
if keydown(KEY_LEFT):
self.tdirection="left"
if self.direction=="up":
self.y-=self.inc
if self.direction=="down":
self.y+=self.inc
if self.direction=="right":
self.x+=self.inc
if self.direction=="left":
self.x-=self.inc
self.spawn_food()
self.show_score()
if self.sleep>self.decrement:
self.sleep-=self.decrement
elif self.inc==1:
self.sleep=0.01
self.inc+=1
self.show_score(120,170)
while 1 :
if keydown(KEY_EXE):
break
if keydown(KEY_ONOFF):
return
sleep(0.01)
self.init_snk()
Snake(config, high_score=0)