当前位置: 首页 > 知识库问答 >
问题:

我不知道为什么我的RCTRL和LCTRL不工作,我的所有其他输入工作,如wasd。在pygame脚本中

金阳曜
2023-03-14

我在ytube上跟了一段Tech Tim制作pygame的视频,我不明白为什么我的游戏会崩溃,当我按RCTRL或LCTRL时,所有其他键都像WASD键一样工作,一切都运行良好。但当我按下rctrllctrl时,它就会崩溃。

我的代码和Tims完全一样,他的运行很好,我不明白。我知道当你用collidrect编写子弹时,两个争论都必须是rect()而且它们都是,所以我不明白问题是什么。同时使用vscode和最新的python

Traceback (most recent call last):
line 127, in <module> main()
line 104, in main
bullet = pygame.Rect(
TypeError: Argument must be rect style object

编辑:还有一点需要补充的是,我的所有pygame函数都有pylint错误,比如K_A、K_s等等。但WASD都可以在游戏中工作,即使有错误。但是LCTRL和RCTRL只会在我按下键的时候使游戏崩溃。(这里也没有全部的代码,这是我对WASD键进行编码的下半部分。

def main ():            #this is the main game while loop
    red = pygame.Rect(700, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT)    #These define where the spaceship 
    is, ((X, Y, Width, Height) of the object))
    yellow = pygame.Rect(100, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT)   #we already have width/heigth as 
    a variable so we can use that here.
 
    red_bullets = [] 
    yellow_bullets = []

    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(FPS)     #im pretty sure anything that happens ingame has to be within clock.tick
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
            
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LCTRL and len(yellow_bullets) < MAX_BULLETS:
                    bullet = pygame.Rect(
                        yellow.x, yellow.width, yellow.y, yellow.height//2 - 2, 10, 5)  #size and 
            placement of bullet.
                    yellow_bullets.append(bullet)
                
                if event.key == pygame.K_RCTRL and len(red_bullets) < MAX_BULLETS:
                    bullet = pygame.Rect(
                        red.x, red.y, red.height//2 - 2, 10, 5)  #size and placement of bullet.
                    red_bullets.append(bullet)
                


        keys_pressed = pygame.key.get_pressed() #you must use this code to be able to press multiple keys 
        at a time.
        yellow_handle_movement(keys_pressed, yellow)
        red_handle_movement(keys_pressed, red)
        
        handle_bullets(yellow_bullets, red_bullets, yellow, red)
        
        draw_window(red, yellow, red_bullets, yellow_bullets)

共有1个答案

茹轩昂
2023-03-14

pygame.rect对象由4个参数(x、y、width和height)构造。代码中的第5个参数是什么?删除它:

bullet=pygame.rect(yellow.x,yellow.width,yellow.y,yellow.height//2-2,10,5)

bullet = pygame.Rect(yellow.x, yellow.width, yellow.y, yellow.height//2 - 2, 10)
 类似资料:
  • 有人能找出为什么我的不能工作。也许我错过了什么。我意识到这可能是愚蠢的没有任何更多的上下文比我所展示的,但请您询问,我将很乐意提供更多。 这是一段很大的代码,所以我不知道如何用它生成SSCE。您正在查看的是子类的构造函数,它包含3个面板。此时,只是一个。方法打开一个filechooser,然后加载选定的图像,该图像被绘制到上。图像显示良好,一切正常,除了我调整窗口大小时,没有滚动条。

  • 我今天想使用,但出现了如下错误: 所以我想我应该清除并重新安装(如下所示)https://www.rosehosting.com/blog/how-to-install-pip-on-ubuntu-16-04/)但仍然得到: 我怎样才能提高我的水平

  • 问题内容: 首先,创建数据库。 我将“南”添加到已安装的应用程序中。然后,我转到本教程:http : //south.aeracode.org/docs/tutorial/part1.html 本教程告诉我要这样做: 太好了,现在我迁移了。 但这给了我这个错误… 因此,我使用Google(它永远都行不通。因此我在Stackoverflow上问了870个问题),并得到以下页面:http : //gr

  • 我正在构建一个鼓机,我已经存储了一个带有kick声音的示例头文件,它的值介于0和170之间。我想通过SPI将其发送到10位MCP4811 DAC,然后将其输出到3.5毫米音频插孔。 我有我的MISO,MOSI,SCK和复位引脚连接到我的USB编程器以及DAC。 这里是存储在"samples. h"中的音频文件的片段。 因此,它是2221位的样本。我想用SPI发送到DAC,频率=22 kHz。 我使

  • 我正在尝试为Xamarin.Forms创建一个自定义的ButtonRenderer。下面是一个简单的测试,我一直在尝试根据一些教程组合起来,但我似乎可以使它工作。