我正在研究一种游戏蛇的游戏版本。到目前为止,我遇到的问题是,我不想允许对角线移动,但目前有。任何帮助都将不胜感激。提前感谢
import pygame
class Snake:
def __init__(self):
self.x = 250
self.y = 250
self.x_change = 0
self.y_change = 0
self.width = 25
self.height = 25
self.win = pygame.display.set_mode((500,500))
self.clock = pygame.time.Clock()
self.run = True
pygame.init()
pygame.display.set_caption('Snake')
def gameLoop(self):
while self.run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
self.x_change = -10
elif event.key == pygame.K_RIGHT:
self.x_change = 10
elif event.key == pygame.K_UP:
self.y_change = -10
elif event.key == pygame.K_DOWN:
self.y_change = 10
self.x += self.x_change
self.y += self.y_change
self.win.fill((76, 66, 53))
pygame.draw.rect(self.win, (145, 255, 51), (self.x, self.y, self.width, self.height))
pygame.display.update()
self.clock.tick(3)
pygame.quit()
p1 = Snake()
p1.gameLoop()发布于 2020-12-06 17:45:59
您可以将另一个轴的更改重置为0。这样,每个按键只能改变一个方向。
def gameLoop(self):
while self.run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
self.x_change = -10
self.y_change = 0
elif event.key == pygame.K_RIGHT:
self.x_change = 10
self.y_change = 0
elif event.key == pygame.K_UP:
self.y_change = -10
self.x_change = 0
elif event.key == pygame.K_DOWN:
self.y_change = 10
self.x_change = 0
self.x += self.x_change
self.y += self.y_change
self.win.fill((76, 66, 53))
pygame.draw.rect(self.win, (145, 255, 51), (self.x, self.y, self.width, self.height))
pygame.display.update()
self.clock.tick(3)
pygame.quit()https://stackoverflow.com/questions/65171042
复制相似问题