#pygame
#pygame
Вопрос:
Я создаю модуль, чтобы упростить перемещение прямоугольников, но я не могу заставить его работать, я хочу иметь возможность называть ключи, которые он использует, но, похоже, я не могу заставить это работать, вот мой код:
import pygame
#this is where i would have i find out what keys the user want's to use
#The k1,k2,k3,k4s
def move(rect, vel, k1,k2,k3,k4):
keys = pygame.key.get_pressed()
if keys[pygame.K_k1]:
rect.x -= vel
if keys[pygame.K_k2]:
rect.x = vel
if keys[pygame.K_k3]:
rect.y -= vel
if keys[pygame.K_k4]:
rect.y = vel
screen= pygame.display.set_mode([500,500])
running = True
red = pygame.Rect(225,225,50,50)
clock = pygame.time.Clock()
while running:
screen.fill([255,255,255])
pygame.draw.rect(screen,[255,0,0],red)
pygame.display.flip()
move(red,10,"a","d","w","s")
#ADWS being the keys i want to use to move
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
running = False
Ответ №1:
get_pressed()
Метод возвращает массив значений ascii для нажатых в данный момент клавиш. Поскольку это стандартный ascii, пользователь может вводить клавиши для left right up down, и скрипт может преобразовать их в ascii с помощью ord
функции.
Попробуйте этот код:
import pygame
keylst = input('Enter Keys to use (Left Right Up Down)').lower() # enter> a d w s
kLeft, kRight, kUp, kDown = (ord(k) for k in keylst.split()) # ascii codes, split on space
#this is where i would have i find out what keys the user want's to use
#The k1,k2,k3,k4s
def move(rect, vel):
keys = pygame.key.get_pressed()
if keys[kLeft]:
rect.x -= vel
if keys[kRight]:
rect.x = vel
if keys[kUp]:
rect.y -= vel
if keys[kDown]:
rect.y = vel
screen= pygame.display.set_mode([500,500])
running = True
red = pygame.Rect(225,225,50,50)
clock = pygame.time.Clock()
while running:
screen.fill([255,255,255])
pygame.draw.rect(screen,[255,0,0],red)
pygame.display.flip()
move(red,1)
#ADWS being the keys i want to use to move
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
running = False