微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame角色在按下按键时不会移动

如何解决pygame角色在按下按键时不会移动

我正在用pygame制作游戏,尽管当我想移动玩家时,pygame并没有移动角色。它正在注册已按下一个键,但是什么也没有发生。有人可以告诉错误是从哪里来的,并指出正确的方向。以下是我的代码

请注意游戏还没有完全开发。

import pygame as pg,random as r,sys

pg.init()
window = pg.display.set_mode((1200,600))
pg.display.set_caption("The Pygame Version")

White = (255,255,255)
Black = (0,0)
Green = (0,0)
Red = (255,0)
DarkGreen = (0,126,0)
def draw():
    global runner,chaser
    background = pg.draw.rect(window,Green,(0,1200,600))
    chaser = pg.draw.rect(window,Black,(1015,225,150,150))
    runner = pg.draw.rect(window,Red,(30,150))
   
    track1 = pg.draw.line(window,DarkGreen,200),(1200,10)
    track2 = pg.draw.line(window,400),10)

score = 0
font = pg.font.Font('freesansbold.ttf',28)
scoreBoard = font.render("score: 0",True,Black)

speed = 150
text = 0
collision = 0
draw()
while True:
    keys = pg.key.get_pressed()
    for event in pg.event.get():
        if event.type == pg.QUIT:
            pg.quit()
            sys.exit()
    if keys[pg.K_w]:
        runner.y -= 200
        runner.width = 300
        draw()
        print ("We are moving")
pg.quit()

解决方法

您正在以恒定的位置和恒定的大小绘制矩形:

chaser = pg.draw.rect(window,Black,(1015,225,150,150))
runner = pg.draw.rect(window,Red,(30,150))

请注意,pygame.draw.rect返回一个新的矩形,以更改的像素为边界。实际上,它分别返回pygame.Rect(1015,150) pygame.Rect(30,150)


您必须采用另一种方法:

创建pygame.Rect个对象chaserrunner

chaser = pg.Rect(1015,150)
runner = pg.Rect(30,150)

并使用对象在draw中绘制矩形:

def draw():
    global runner,chaser
    pg.draw.rect(window,Green,(0,1200,600))
    
    pg.draw.rect(window,chaser)
    pg.draw.rect(window,runner)

    # [...]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。