python - 我在使用这个 pygame 代码时遇到了一些问题
问题描述
我对这段代码有一些问题。游戏的主要目标是让敌人从屏幕顶部出现,并让用户在输入框中输入一个与敌人单词相对应的单词。
我最初的想法是将敌人保存为一个可用于调用多个敌人的类,但我遇到了以下问题:
- 敌人的盒子上没有任何文字。
- 敌人被画了太多次,看起来很奇怪。
代码如下所示:
class enemy(pg.sprite.Sprite):
def __init__(self,x,y,w,h,text,color):
pg.sprite.Sprite.__init__(self)
self.font = pg.font.SysFont("comicsansms",t5)
self.textSurf = self.font.render(text, 10, red)
self.image = pg.Surface((w,h))
w = self.textSurf.get_width()
h = self.textSurf.get_height()
x = random.randint(110,1000)
y = 0
pg.draw.rect(gameDisplay, white,(x,y,w,h))
textSurf, textRect = text_objects(text, self.font)
textRect.center = ((x+(w/2)), (y+(h/2)))
gameDisplay.blit(textSurf, textRect)
self.image.blit(self.textSurf,[w/2, h/2])
self.text = a
循环:
def gameLoop():
enemyx = random.randint(100,900)
enemyy = -600
enemyw = 130
enemyh = 50
enemySpeed = 10
enemyword = a
gameDisplay.fill(bg_color)
pg.display.update()
End = False
while not End:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
quit()
button("Back", 10,10,130,50,D_orange, orange, gameIntro)
pg.display.update()
gameDisplay.fill(bg_color)
button("Back", 10,10,130,50,D_orange, orange, gameIntro)
enemy(enemyx,enemyy,enemyw,enemyh,white,enemyword)
pg.display.update()
enemyy +=2
if enemyy >=850:
enemyy = 0-enemyh
enemyx = random.randint(100,900)
pg.display.update()
a 对应于从字典中取出的随机单词。
解决方案
我以错误的方式获取参数,导致无法绘制敌人的问题。然而,文本仍然是正确的,因为我希望文本是一个随机单词,它被保存为“a”。感谢@Rabbid76 看到并回答我的错误。
推荐阅读
- javascript - 为什么我的测试用例通过但断言实际上在 mocha 中失败
- c# - 我需要根据嵌套在对象列表中的关闭对象进行过滤
- javascript - React useEffect 和 React-Query useQuery 问题?
- go - 如何在不必实例化结构的情况下获取结构标记
- python - 这是否设置了环境变量?
- c# - 查询带有空格条件的 XML 列
- python - 如何在 Mac 上为单个项目安装不同版本的 Python
- python - 使用 GTK 后端更改 matplotlib 导航工具栏中的图标
- python - 成员上的python类操作与静态方法
- python - Matplotlib 中“_invalidate_internal”的完成时间在较长时间内线性增加。这个函数在做什么?