steger
?>

Сделать рестарт в змейке 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()

Информатика

Ответы

MikhailNechaeva
Если надо создать свою базу данных, то конечно же надо знать быстрые языки программирования. Это c, c++, java. Знать как работаю алгоритмы сжатия и поиск по объектам (например спискам). Так же нужно хорошо понимать как работают такие базы как MySQL, PostgresSQL, Redis. Тогда может через года 3, можно будет написать свою базу данных.

Если хочешь воспользоваться уже готовыми базарит то тогда нужно выучить синтаксис базы данных. Например почти все базы работают с языком SQL. Просто выучи SQL и можешь писать свои базы данных
Давид-Ольга

Сравниваем запись в десятичной и двоичной системе.

1111₁₀ = 1*10³ + 1*10² + 1*10¹ + 1*10⁰ = 10000 + 1000 + 100 + 10 + 1

1111₂ = 1*2³ + 1*2² + 1*2¹ + 1*2⁰ = 8 + 4 + 2 + 1 = 15₁₀.

Видим, что для записи двузначного десятичного числа 15 понадобилось четыре разряда в двоичной системе.

Примеры записи чисел: 10₂ = 1*2¹+ 0*2⁰ = 2₁₀ и 100₂ = 1*2² + 0*2¹ + 0*2⁰ = 4₁₀ и

101₂ = 1*2² + 1*2⁰ = 4 + 1 = 5₁₀ и 110₂ = 2² + 2¹ = 4 + 2 = 6₁₀ и 1110₂ = 2³+2²+2¹ = 8 + 4 + 2 = 14₁₀

На рисунке в приложении показана запись натуральных чисел от 0 до 31 в двоичной системе исчисления.

В чём же преимущество двоичной системы - в её простоте. В каждом разряде всего два значения - 0 и 1. Недостаток - большое число разрядов для записи числа. Но эту проблему легко решают современные процессоры. Каждый разряд в двоичной системе называется - бит. Число в 32 бит (это 32 единицы в записи) соответствует десятичному числу = 4 294 967 296 , а процессоры в 64 бит могут работать с числами до 1,8*10¹⁹ (19 нулей после запятой). Всего две цифры открывают безграничные возможности.

Объяснение:

0-00000

1-00001

2-00010

3-00011

4-00100

5-00101

6-00110

7-00111

8-01000

9-01001

10-01010

11-01011

12-01100

13-01101

14-01110

15-01111

16-10000

17-10001

18-10010

19-10011

20-10100

21-10101

22-10110

23-10111

24-11000

25-11001

26-11010

27-11011

28-11100

29-11101

30-11110

31-11111

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Сделать рестарт в змейке 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()
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

taa19707470
re-art
Yelena-Svetlana
NarekAlekseevich779
TatianaSeliverstova64
shhelina
kisa-luba
rina394992
Voronov434
mnn99
ev27076878
boldyrevanastia22
sapelnikovk-74
maestro6838
droshchupkin