?>
Сделать рестарт в змейке from tkinter import * import random # переменные width = 800 height = 600 seg_size = 20 in_game = true # функции def create_block(): """ создаем еду для змейки""" global block posx = seg_size * random.randint(1, (width-seg_size) / seg_size) posy = seg_size * random.randint(1, (height-seg_size) / seg_size) block = c.create_oval(posx, posy, posx+seg_size, posy+seg_size, fill="red") class score(object): def ): self.score = 0 self.x = 55 self.y = 15 c.create_text(self.x, self.y, text = " score {}".format(self.score), font="arial 20", fill="white", tag="score") def increment(self): c.delete("score") self.score += 1 c.create_text(self.x, self.y, text = " score {}".format(self.score), font="arial 20", fill="white", tag="score") def main(): """ моделируем игровой процесс """ global in_game if in_game: s.move() head_coords = c.coords(s.segments[-1].instance) x1, y1, x2, y2 = head_coords # проверяем на столкновения с границами игрового поля if x2 > width or x1 < 0 or y1 < 0 or y2 > height: in_game = false # поедание яблока elif head_coords == c.coords(block): s.add_segment() c.delete(block) create_block() # поедание себя else: for index in range(len(s.segments)-1): if head_coords == c.coords(s.segments[index].instance): in_game = false root.after(100, main) # не in_game -> останавливаем игру и выводим сообщение else: c.create_text(width/2, height/2, text="game over! ", font="arial 20", fill="yellow") class segment(object): """ сегмент змейки """ def , x, y): self.instance = c.create_rectangle(x, y, x+seg_size, y+seg_size, fill="yellow") class snake(object): """ класс змейки """ def , segments): self.segments = segments # варианты движения self.mapping = {"down": (0, 1), "right": (1, 0), "up": (0, -1), "left": (-1, 0)} # инициируем направление движения self.vector = self.mapping["right"] def move(self): """ движение змейки в заданном направлении""" for index in range(len(self.segments)-1): segment = self.segments[index].instance x1, y1, x2, y2 = c.coords(self.segments[index+1].instance) c.coords(segment, x1, y1, x2, y2) x1, y1, x2, y2 = c.coords(self.segments[-2].instance) c.coords(self.segments[-1].instance, x1+self.vector[0]*seg_size, y1+self.vector[1]*seg_size, x2+self.vector[0]*seg_size, y2+self.vector[1]*seg_size) def add_segment(self): """ добавляем сегмент змейки """ score.increment() last_seg = c.coords(self.segments[0].instance) x = last_seg[2] - seg_size y = last_seg[3] - seg_size self.segments.insert(0, segment(x, y)) def change_direction(self, event): """ выбор направления змейки """ if event.keysym in self.mapping: self.vector = self.mapping[event.keysym] # настройки окна root = tk() root.title("snake") c = canvas(root, width=width, height=height, bg="#80") c.grid() # настройка нажатия клавиш c.focus_set() # создаем сегменты и саму змейку segments = [segment(seg_size, seg_size), segment(seg_size*2, seg_size), segment(seg_size*3, seg_size)] score = score() s = snake(segments) # реакция на нажатие c.bind("", s.change_direction) create_block() main() root.mainloop()
Ответы
Если хочешь воспользоваться уже готовыми базарит то тогда нужно выучить синтаксис базы данных. Например почти все базы работают с языком SQL. Просто выучи SQL и можешь писать свои базы данных