繁体   English   中英

PyGame桨板不动

PyGame paddle board not moving

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

可以在控制台上正常注册按键事件。 另外,我的桨出现了,这表明从另一个文件调用的桨类有效。 但是,我希望当按下向左箭头键或向右箭头键时,桨板能够平稳移动,因此用户不必重复单击。 但是,使用我当前的代码,桨板根本不会移动。 我试图改变if / else语句的位置,将位置更改为无济于事。 我在这里做错了什么?

主要游戏:

import pygame
from pygame.locals import *

from Config import Config 
from Paddle import Paddle

pygame.init()

#--Display settings
pygame.display.set_caption(Config['game']['caption'])
game_display = pygame.display.set_mode((Config['game']['display_width'], 
Config['game']['display_height']))
clock = pygame.time.Clock()
paddle= Paddle(game_display)

x_change = 0
pressed_left = False
pressed_right = False

def event_handler():
for event in pygame.event.get():
    print (event)
    if (event.type == QUIT) or (event.type == KEYDOWN and event.key == 
K_ESCAPE):
        pygame.quit()
        quit()

    #To move the paddle to the left and right
    if event.type == KEYDOWN:
        if event.key == K_LEFT:
            pressed_left = True  
        elif event.key== K_RIGHT:
            pressed_right = True

    #If the key is up
    if event.type == KEYUP:
        if event.key == K_LEFT:
            pressed_left = False
            x_change = 0
        elif event.key == K_RIGHT:
            pressed_right = False 
            x_change = 0

#--This changes the position
if pressed_left:
    x_change = -5
if pressed_right:
    x_change = 5

while True:
    event_handler()
    game_display.fill(Config['colors']['white'])
    paddle.draw()
    paddle.movement(x_change)

    pygame.display.update()
    clock.tick(Config['game']['fps'])

从我的包含Paddle类的paddle.py中:

import pygame
from pygame.locals import *

from Config import Config

class Paddle:
    def __init__(self, game_display):
        self.x = (Config['game']['display_width'] * 0.45)
        self.y = (Config['game']['display_height'] * 0.92)
        self.game_display=game_display


    def draw(self):
        pygame.draw.rect(self.game_display, Config['colors']['red'], 
[self.x, self.y, 40, 25])

    def movement(self, x_change):
        self.x += x_change
2 个回复

让我们来看一个简单的例子。 尝试运行该程序。

pressed_left = False
def event_handler():
    pressed_left = True

event_handler()

print(pressed_left)

当您希望程序打印True ,它将打印False 发生这种情况的原因是python中变量作用域的工作方式。 当您尝试修改未在该函数本身中定义的函数中的变量时,python会定义一个新变量,而不是寻找全局变量。 因此, event_handler()pressed_left = True行仅创建了一个仅在event_handler函数中存在的新pressed_left变量,而没有修改全局变量。

为了解决这个问题,您需要在函数中将变量声明为全局变量。 尝试运行该程序。

pressed_left = False
def event_handler():
    global pressed_left
    pressed_left = True

event_handler()

print(pressed_left)

改变你的钥匙像这样

key = pygame.key.pressed()

if key[pygame.K_left]:
    pygame movement
1 矩形在 Pygame 中不动

我正在尝试在 pygame 中制作乒乓球游戏。 所以我需要制作一个由玩家控制的矩形。 为此,我定义了一些变量。 变量 在循环 ...

2 pygame的矩形不动吗?

您好,我是pygame的新手。 当我尝试向右或向左移动我的rect 。 矩形不会从一个位置移动到另一位置,而是会向右或向左扩展/延伸。 为什么? 请参见上图。 按下向右或向左键后的外观。 ...

3 矩形在显示 PyGame 上不动

代码正在更新 self.x 和 self.y 并且正在按下键,但显示没有改变矩形的位置。 我是新手,正在从教程中学习。 我的代码与该教程指南完全相同,但它不起作用。 就像它不显示更新版本一样。 其余的工作正常,我打印了语句来验证窗口对象是否相同以及是否按下了键以及 x 和 y 坐标是否被更改。 ...

4 pygame精灵不动

我面临一个逻辑错误,无论输入如何,精灵都不会移动。 我的代码将在下面,因此不会遗漏任何上下文,它相当短。 有没有更好的方法可以将精灵从blit移开? 我在某处看到过一些有关更新Sprite或类似内容的东西,它的工作方式与简单地将其抹去的方式大不相同。 提前致谢 ...

5 pygame图像不动

好的,我刚开始使用pygame程序。 图像不动吗? 我喜欢99%的人确定我做对了所有事情……不过我可能犯了一个愚蠢的错误。 这是代码。 如果您能帮助我,我将非常感谢。 请告诉我我在做什么错:) ...

6 (Pygame) 玩家不动

我是初学者,很抱歉,如果这是一个愚蠢的错误,但我的游戏中的玩家没有移动。 我很确定这是正确的,因为这是我在我的计算机编程训练营中使用的游戏中学到的东西(训练营的游戏运行得非常好),但这个游戏不起作用。 有什么帮助吗? ...

7 Pygame:图像不动

我一直在从pythonprogramming.net学习使用PyGame。 我目前正在在窗口上移动图像: https://pythonprogramming.net/pygame-tutorial-moving-images-key-input/?completed=/displayin ...

8 Pygame 玩家不动

我正在制作一个玩家左右移动的游戏。 但是,在我下面的代码中,玩家无法移动。 谁能告诉我为什么 player1 精灵不动? 它出现在游戏屏幕上,但当我按下移动键时,玩家不会向左或向右移动。 代码: import pygame import sys pygame.init() game_scree ...

9 图像在 Pygame 中不动

# import pygame module in this program import pygame # activate the pygame library . # initiate pygame and give permission # to use pygame's fu ...

10 尽管在 pygame 中有输入,精灵仍然不动

我在 pygame 中遇到了一个问题,无论输入如何,精灵都不会移动,我已经检查了几次,但不知道它有什么问题。 一共有3页,第一页是游戏的主循环,第二页是玩家精灵的代码,第三页是一些游戏功能。 main---------page-01 播放器--------------------page-0 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM