第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python Space Invaders with PyGame 故障排除

Python Space Invaders with PyGame 故障排除

阿晨1998 2021-12-17 15:36:57
我正在使用 pygame 開發(fā)一個(gè)簡(jiǎn)單的太空入侵者游戲,并且首先在我的游戲中為不同的對(duì)象或精靈創(chuàng)建類?,F(xiàn)在的目標(biāo)是創(chuàng)建一個(gè)可以在 x 軸上來回移動(dòng)并發(fā)射彈丸的角色。我設(shè)法讓角色在屏幕上來回移動(dòng),但是在拍攝時(shí)它不起作用,我根本無法讓它運(yùn)行。它告訴我 x 和 y 缺少位置參數(shù),但是當(dāng)我將鏡頭附加到數(shù)組時(shí),我為其分配了值。我究竟做錯(cuò)了什么?這是我認(rèn)為這部分應(yīng)該如何進(jìn)行。我分配了一個(gè)類,它是射擊,這是我將要射擊的射彈。在定義它時(shí),我設(shè)置了參數(shù),以便射彈發(fā)射的位置根據(jù)我的角色所在的位置而變化。然后我加載我在一個(gè)單獨(dú)文件夾中的圖像并為彈丸分配一個(gè)速度。接下來,我將允許它在我的主循環(huán)中運(yùn)行的更新部分放在下面。通過設(shè)置 if 語句,我確保如果射彈離開屏幕,它就會(huì)消失。通過制作一個(gè)陣列,我可以一次在屏幕上有多個(gè)射彈,并且它們不會(huì)相互刪除。如果用戶按下空格鍵,則應(yīng)將新射彈添加到陣列中并發(fā)射。因?yàn)槲沂切率?,所以我不知道我的概念是否正確,以及我的小錯(cuò)誤是否是 米制作。我在教程中學(xué)到的不是在課堂上,也沒有更新功能,所以這就是我一直試圖自己實(shí)現(xiàn)的。import pygame, sysfrom pygame import *pygame.init()screen = pygame.display.set_mode((800,600))pygame.display.set_caption("Space Invaders")pygame.mouse.set_visible(0)WIDTH = 800vel = 5width = 64BLACK = (0, 0, 0)all_sprites = pygame.sprite.Group()class Player(pygame.sprite.Sprite):    def __init__(self):        pygame.sprite.Sprite.__init__(self)        self.image = pygame.image.load("images\ship.png")        self.rect = self.image.get_rect()        self.rect.center = (WIDTH/2, 550)    def update(self, keys, *args):        if keys[pygame.K_LEFT] and self.rect.x > vel:            self.rect.x -= vel        if keys[pygame.K_RIGHT] and self.rect.x < 800 - width - vel:            self.rect.x += vel         screen.blit(self.image, self.rect)class Shot(pygame.sprite.Sprite):    def __init__(self,x,y):        pygame.sprite.Sprite.__init__(self)        self.x = x        self.y = y        self.image = pygame.image.load("images\laser.png")        self.rect = self.image.get_rect()        self.vel = 10    def update(self, keys, *args):        for shot in shots:            if shot.x < 500 and shot.x >0:                shot.y -= shot.vel            else:                self.kill()            screen.blit(self.image, self.rect)        if keys[pygame.K_SPACE]:            shots.append(Shot(x, 550))#class EnemyAlien(pygame.sprite.Sprite): #   def __init__(self):如果有人想看一看,讓我知道我可能需要改變什么,或者我在這里完全錯(cuò)了。謝謝你。編輯我更新了它,現(xiàn)在我不再收到錯(cuò)誤消息并且文件將運(yùn)行但當(dāng)我按空格時(shí)沒有任何反應(yīng)。我不能開火,而且我的角色有奇怪的滯后,看起來每當(dāng)它移動(dòng)時(shí)有更多的東西被拖到后面。編輯我也在嘗試不同的方法,這沒有錯(cuò)誤,但是當(dāng)我按下空格鍵時(shí),只會(huì)在左上角生成射彈,然后幾秒鐘后它就會(huì)消失。
查看完整描述

2 回答

?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊

有一個(gè)基本的誤解。Shot源自pygame.sprite.Sprite. 它必須在的唯一容器是pygame.sprite.Groupall_sprites)。
您不需要單獨(dú)的容器shots

Akso 你不需要初始Shot對(duì)象,因?yàn)椴皇?aShot生成 new Shot,而是Player生成一個(gè) new Shot:


class Player(pygame.sprite.Sprite):


    # [...]


    def update(self, keys, *args):

        if keys[pygame.K_LEFT] and self.rect.x > vel:

            self.rect.x -= vel

        if keys[pygame.K_RIGHT] and self.rect.x < 800 - width - vel:

            self.rect.x += vel 


        if keys[pygame.K_SPACE]:

            all_sprites.add(Shot(self.rect.centerx, 550)) # <---- new shot 


all_sprites = pygame.sprite.Group()

player = Player() 

all_sprites.add(player)

類Shot,只需要更新它自己的位置 ( .rect) 和.kill()它自己。


class Shot(pygame.sprite.Sprite):

    def __init__(self,x,y):

        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load("images\laser.png")

        self.rect = self.image.get_rect()

        self.rect.center = (x, y) 

        self.vel = 10

    def update(self, keys, *args):

        if self.rect.x < 500 and self.rect.x > 0:

            self.rect = self.rect.move(0, -self.vel)

        else:

            self.kill()

請(qǐng)注意,您screen.blit(self.image, self.rect)在and的.update方法中不需要任何內(nèi)容,因?yàn)檫@就是:PlayerShotpygame.sprite.Group.draw()


查看完整回答
反對(duì) 回復(fù) 2021-12-17
?
至尊寶的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊

此行導(dǎo)致錯(cuò)誤: shot = Shot()

__init__方法Shot需要一個(gè)xy位置參數(shù),但你沒有通過他們。


查看完整回答
反對(duì) 回復(fù) 2021-12-17
  • 2 回答
  • 0 關(guān)注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)