1K подписчиков
Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео. PyQt5, обработка нажатия клавиш, события keyPressEvent и keyReleaseEvent Следует отметить, что минимальная обработка нажатия клавиш и так имеется. Мы просто не ставили акценты на этом Но обо всём по порядку: Для чего это я всё перечислил? Только лишь для того, что обработка клавиш и так имеется и мы может этим пользоваться. Во многих случаях никакой дополнительной обработки не требуется...
4 месяца назад
14 подписчиков
Код для каркаса змейки на Python:

from tkinter import *
game_width =500
game_height = 500
snake_item = 10
snake_color1 = 'cyan'
snake_color2 = 'blue'
snake_x = 24
snake_y = 24
snake_x_nav = 0
snake_y_nav = 0
snake_list = []
snake_size = 5
tk =Tk()
tk.title('Snake v. 0.5')
tk.resizable(0,0)
tk.wm_attributes('-topmost', 1)
canvas = Canvas(tk, width=game_width, height=game_height, bd=0, highlightthickness=0)
canvas.pack()
tk.update()
def snake_paint_item(canvas, x, y):
  global snake_list
  id1 = canvas.create_rectangle(x*snake_item, y*snake_item,x*snake_item+snake_item, y*snake_item+snake_item, fill=snake_color1)
  id2 = canvas.create_rectangle(x*snake_item+2, y*snake_item+2,x*snake_item+snake_item-2, y*snake_item+snake_item-2, fill=snake_color2)
  snake_list.append([x,y,id1,id2])
  #print(snake_list)
def check_can_we_delete_snake_item():
  if len(snake_list) >= snake_size:
   temp_item = snake_list.pop(0)
   #print(temp_item)
   canvas.delete(temp_item[2])
   canvas.delete(temp_item[3])
def snake_move(event):
  global snake_x
  global snake_y
  if event.keysym == 'Up':
   snake_x_nav = 0
   snake_y_nav = -1
   check_can_we_delete_snake_item()
  elif event.keysym == 'Down':
   snake_x_nav = 0
   snake_y_nav = 1
   check_can_we_delete_snake_item()
  elif event.keysym == 'Left':
   snake_x_nav = -1
   snake_y_nav = 0
   check_can_we_delete_snake_item()
  elif event.keysym == 'Right':
   snake_x_nav = 1
   snake_y_nav = 0
   check_can_we_delete_snake_item()
  snake_x = snake_x + snake_x_nav
  snake_y = snake_y + snake_y_nav
  snake_paint_item(canvas, snake_x, snake_y)
snake_paint_item(canvas, snake_x, snake_y)
canvas.bind_all("<KeyPress-Left>", snake_move)
canvas.bind_all("<KeyPress-Right>", snake_move)
canvas.bind_all("<KeyPress-Up>", snake_move)
canvas.bind_all("<KeyPress-Down>", snake_move)
12 месяцев назад