def __init__(self, parent, diff=0, speed=5): self.parent = parent self.diff = diff self.gameover = 0 self.count = 0 self.speed_o = [] self.part_lst = [] self.plcontrol = [] self.collrect_lst = [] self.grow_i = [] for i in range(1, 2): self.grow_i.append( pygame.image.load(path.join(gfx, "food" + str(i) + ".png"))) self.speed_i = [] for i in range(1, 10): self.speed_i.append( pygame.image.load(path.join(gfx, "etab" + str(i) + ".png"))) self.part_i = pygame.image.load(path.join(gfx, "snake_part1.png")) self.head_i = pygame.image.load(path.join(gfx, "snake_head.png")) self.score_i = pygame.image.load(path.join(gfx, "score.png")) self.head_o = display.object(self.head_i, 300, 100, speed, layer=2, angle=0) self.plcontrol.append(self.head_o) self.grow_place() self.speed_place() self.empty = self.parent.font.render("Score: ", 0, [200, 50, 50]) self.score_o = display.object(self.empty, 0, 30, layer=3)
def menu(self): self.purge() self.img.append(display.object(self.menu_back)) self.option.append(display.font_wid(['pySnake'],'self.pysnake()',['center'],off=(-200,0))) self.option.append(display.font_wid(['pySnake Retro'],'self.game_classic()',['center'],off=(-200,0))) self.option.append(display.font_wid(['Options'],'self.settings()',['center'],off=(-200,0))) self.option.append(display.font_wid(['Highscores'],'self.show_high()',['center'],off=(-200,0))) self.option.append(display.font_wid(['Exit'],'sys.exit()',['center'],off=(-200,0)))
def grow_place(self): try: self.grow_o.remove() except: pass x,y=(random.randint(10,self.parent.size[0]-40),random.randint(10,self.parent.size[1]-40)) i=random.randint(0,0) self.grow_o=display.object(self.grow_i[i],x,y,0,layer=1)
def add(self): self.over = 0 self.part_lst.append(display.object(self.part_i, layer=2)) if self.count == 0: self.parent.trace.add_trace(self.head_o, 25, self.part_lst[0]) else: self.parent.trace.add_trace(self.part_lst[self.count - 1], 25, self.part_lst[self.count]) self.count += 1
def speed_place(self): for o in self.speed_o: o.remove() self.speed_o=[] for i in range(0,self.diff): random.seed() x,y=(random.randint(10,self.parent.size[0]-40),random.randint(10,self.parent.size[1]-40)) i=random.randint(0,8) self.speed_o.append(display.object(self.speed_i[i],x,y,0,layer=1))
def settings(self): self.purge() self.img.append(display.object(self.menu_back)) self.option.append(display.font_wid(['Absolute Movement','Relative Movement'],'self.relcontrol=not self.relcontrol;self.option[self.sel].index=self.relcontrol',['center'],off=(-50,0))) if self.relcontrol==True:self.option[len(self.option)-1].cycle() self.text.append(display.font_wid(['Speed'],do=['center'],off=(-100,0))) self.text.append(display.font_wid(['Difficulty'],do=['center'],off=(-100,0))) self.text.append(display.font_wid(['FPS-Limit'],do=['center'],off=(-100,0))) self.option.append(display.font_wid(['Back'],'self.menu()',['center'],off=(-50,0))) self.option.insert(1,display.font_wid([str(self.fpslimit)],'self.fpslimit=self.setvar(3,self.fpslimit)',['alignv','centerh'],targetv=3,off=(0,0))) self.option.insert(1,display.font_wid([str(self.diff)],'self.diff=self.setvar(2,self.diff)',['alignv','centerh'],targetv=5,off=(0,0),stackv=True)) self.option.insert(1,display.font_wid([str(self.speed)],'self.speed=self.setvar(1,self.speed)',['alignv','centerh'],targetv=7,off=(0,0)))
def __init__(self,parent,diff=0,speed=5): self.parent=parent self.diff=diff self.gameover=0 self.count=0 self.speed_o=[] self.part_lst=[] self.plcontrol=[] self.collrect_lst=[] self.grow_i=[] for i in range(1,2): self.grow_i.append(pygame.image.load(path.join(gfx,"food"+str(i)+".png"))) self.speed_i=[] for i in range(1,10): self.speed_i.append(pygame.image.load(path.join(gfx,"etab"+str(i)+".png"))) self.part_i = pygame.image.load(path.join(gfx,"snake_part1.png")) self.head_i = pygame.image.load(path.join(gfx,"snake_head.png")) self.score_i=pygame.image.load(path.join(gfx,"score.png")) self.head_o = display.object(self.head_i,300,100,speed,layer=2,angle=0) self.plcontrol.append(self.head_o) self.grow_place() self.speed_place() self.empty=self.parent.font.render("Score: ",0,[200,50,50]) self.score_o = display.object(self.empty,0,30,layer=3)
def show_high(self): self.purge() self.img.append(display.object(self.menu_back)) self.option.append(display.font_wid(['Back'],'self.menu()',['center'],off=(0,300))) conn=sqlite3.connect('highdat') try: c=conn.cursor();c.execute('select * from stocks order by score DESC') for high in enumerate(c): text=str(high[0]+1)+'.'+str(high[1][0])+' '+str(high[1][1]) self.text.append(display.font_wid([text],do=['center'],off=(-50,0))) if high[0]>=15:break except: pass # no highdat file present... c.close() self.loop()
def pysnake(self): self.purge() display.fps_init(self.fpslimit) self.snake = snake_new(self, self.diff, self.speed) black = 0, 0, 0 self.back = display.object(self.gameback, layer=0) self.snake.add() while 1: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.display.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: self.snake.gameover = 1 elif event.key == pygame.K_SPACE: self.relcontrol = not self.relcontrol if self.relcontrol == False: for c in self.snake.plcontrol: if event.key == pygame.K_UP: c.speed_rot(setangle=270) elif event.key == pygame.K_DOWN: c.speed_rot(setangle=90) elif event.key == pygame.K_LEFT: c.speed_rot(setangle=180) elif event.key == pygame.K_RIGHT: c.speed_rot(setangle=0) kp = pygame.key.get_pressed() if pygame.time.get_ticks( ) - self.ptim > self.sensible and self.relcontrol == True: self.ptim = pygame.time.get_ticks() for c in self.snake.plcontrol: if kp[275] > 0: c.speed_rot(self.control_angle * 1) elif kp[276] > 0: c.speed_rot(self.control_angle * -1) if self.snake.gameover == 1: self.trace.reset() self.get_high() self.purge() self.menu() self.loop() else: self.snake.grow() self.snake.speed() self.snake.score() self.snake.collcheck() self.trace.update_track() self.trace.update_trace() display.tick(self.fpslimit, 1) display.show()
def pysnake(self): self.purge() display.fps_init(self.fpslimit) self.snake=snake_new(self,self.diff,self.speed) black = 0, 0, 0 self.back = display.object(self.gameback,layer=0) self.snake.add() while 1: for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.display.quit() sys.exit() if event.type==pygame.KEYDOWN: if event.key==pygame.K_ESCAPE:self.snake.gameover=1 elif event.key==pygame.K_SPACE:self.relcontrol=not self.relcontrol if self.relcontrol==False: for c in self.snake.plcontrol: if event.key==pygame.K_UP:c.speed_rot(setangle=270) elif event.key==pygame.K_DOWN:c.speed_rot(setangle=90) elif event.key==pygame.K_LEFT:c.speed_rot(setangle=180) elif event.key==pygame.K_RIGHT:c.speed_rot(setangle=0) kp=pygame.key.get_pressed() if pygame.time.get_ticks()-self.ptim> self.sensible and self.relcontrol==True: self.ptim=pygame.time.get_ticks() for c in self.snake.plcontrol: if kp[275]>0:c.speed_rot(self.control_angle*1) elif kp[276]>0:c.speed_rot(self.control_angle*-1) if self.snake.gameover==1: self.trace.reset() self.get_high() self.purge() self.menu() self.loop() else: self.snake.grow() self.snake.speed() self.snake.score() self.snake.collcheck() self.trace.update_track() self.trace.update_trace() display.tick(self.fpslimit,1) display.show()
def add(self): self.over=0 self.part_lst.append(display.object(self.part_i,layer=2)) if self.count==0:self.parent.trace.add_trace(self.head_o,25,self.part_lst[0]) else:self.parent.trace.add_trace(self.part_lst[self.count-1],25,self.part_lst[self.count]) self.count+=1