电子游戏无法正确响应输入 [英] Video game not responding correctly to input

查看:78
本文介绍了电子游戏无法正确响应输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个pygame视频游戏,直到昨天一切都进行得很顺利.问题是在我格式化电脑后开始的.因此,当我运行游戏时,显示的第一个屏幕是菜单".因此,在这个状态类中,我有一个事件方法,当您按"p"键时,它将带您进入播放"状态.所以现在不起作用了,我不知道为什么.

I'm developing a pygame video game, and everything was working out perfectly until yesterday. The issues began after I formatted my pc. So when i run the game, the first screen to show up is the 'Menu'. So in this state class I have an event method where when you press the 'p' key it gets you to the 'Play' state. So now it is not working, I don't know why.

我什么都没改变.我只是格式化了我的电脑,然后重新安装了python,pygame和pgu模块.但是,当我对视频游戏进行重新编程时,奇怪的是,当您运行游戏时出现的第一个状态是播放"状态,一切正常.它还具有一种事件方法,当您按下箭头时,角色会移动,而当玩家按下ESC时,它将带您进入菜单"状态.

I've changed nothing. I just formatted my pc and reinstalled python, pygame and pgu module. But the strange thing comes when I reprogram the videogame so that the first state to show up when you run the game is the 'Play' state, everything works perfectly. It also has an event method where when you press the arrows, the character moves, and when the player presses ESC it takes you to the 'Menu' state.

因此,当我再次进入菜单"状态时,游戏不会响应我提供给它的输入.我真的不知道发生了什么.

So again when I'm at the 'Menu' state the game doesn't respond to the input I'm giving to it. I don't really know what's happening.

推荐答案

以下是我在评论中说的一个例子:

Here is an example of what I was saying in comments :

很抱歉,如果所有评论都不适合您的水平,但我想确保您完全理解.

Sorry if all comments are not appropriate to your level but I wanted to be sure you understand it all.

import pygame

screen = pygame.display.set_mode((1000, 1000))


class Menu:
    pass


class Play:
    pass


def main():
    running = True  # here we define the main variable of the main loop
    main_menu = True  # when the main loop will begin, main_menu will begin too
    game = False  # game is false because player didn't press p
    options = False  # options is false because player didn't go to options

    while running:  # begin the main loop

        while main_menu:

            for event in pygame.event.get():  # listen for events

                if event.type == pygame.QUIT:  # if the player quit, ends up the 'main_menu' loop and 'running' loop too
                    running = False
                    main_menu = False

                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_p:  # if p key is pressed, exit from main menu and begin 'game' loop
                        main_menu = False
                        game = True

                    if event.key == pygame.K_o:  # if o key is pressed, exit from main menu and begin 'options' loop
                        main_menu = False
                        options = True

                screen.fill((255, 0, 0))  # I fill the screen in red to make the example more explicit

                pygame.display.flip()  # I update the screen every frame

        while game:

            for event in pygame.event.get():  # listen for events

                if event.type == pygame.QUIT:  # if the player quit, ends up 'running' and 'options' loop
                    running = False
                    game = False

                if event.type == pygame.KEYDOWN:  # listen for keys

                    if event.key == pygame.K_BACKSPACE:  # if the player press backspace (delete), ends up 'game' loop
                        game = False                     # and begin (again) the 'main_menu' loop
                        main_menu = True

            screen.fill((255, 255, 255))   # I fill the screen in white to make the example more explicit

            pygame.display.flip()  # I update the screen every frame

        while options:  # same logic for this one

            for event in pygame.event.get():

                if event.type == pygame.QUIT:
                    running = False
                    options = False

                if event.type == pygame.KEYDOWN:

                    if event.key == pygame.K_BACKSPACE:
                        options = False
                        main_menu = True

            screen.fill((0, 255, 0))

            pygame.display.flip()


pygame.init()  # initialize pygame
main()  # begin main loop
pygame.quit()  # quit pygame

这篇关于电子游戏无法正确响应输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆