首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏游戏问题

游戏游戏问题
EN

Stack Overflow用户
提问于 2020-12-06 17:36:57
回答 1查看 59关注 0票数 1

我正在研究一种游戏蛇的游戏版本。到目前为止,我遇到的问题是,我不想允许对角线移动,但目前有。任何帮助都将不胜感激。提前感谢

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-06 17:45:59

您可以将另一个轴的更改重置为0。这样,每个按键只能改变一个方向。

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65171042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档