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

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

我的 pygame 播放器精靈沒有移動(dòng)和/或更新

我的 pygame 播放器精靈沒有移動(dòng)和/或更新

慕婉清6462132 2023-06-20 17:37:16
我正在嘗試構(gòu)建一個(gè)簡(jiǎn)單的“飛揚(yáng)的小鳥”之類的游戲。我正在嘗試將所有代碼分類為類和方法。我該如何解決這個(gè)問題?是因?yàn)檫^早調(diào)用某些方法導(dǎo)致代碼無法運(yùn)行,還是因?yàn)槿鄙倌承〇|西?如果有人愿意向我解釋,我真的很喜歡。sprites.py:import pygameclass Player(pygame.sprite.Sprite):    def __init__(self):        pygame.sprite.Sprite.__init__(self)        self.image = pygame.Surface((50, 50))        self.image.fill((255, 255, 0))        self.rect = self.image.get_rect()        self.rect.x = 0        self.rect.y = (700 / 2)        self.movex = 0        self.movey = 0    def control(self, x, y):        self.movex += x        self.movey += y    def update(self):        self.rect.x += self.movex        self.rect.y += self.movey    def animate(self):        passclass Obstacle(pygame.sprite.Sprite):    def __init__(self, x, y, width, height):        pygame.sprite.Sprite.__init__(self)        self.x = x        self.y = y        self.width = width        self.height = heightmain.py:from sprites import *import pygameWIDTH = 700HEIGHT = 700class Game:    def __init__(self):        pygame.init()        self.screen = pygame.display.set_mode((WIDTH, HEIGHT))        self.clock = pygame.time.Clock()        self.score = 0        self.running = True    def new(self):        pass    def events(self):        self.game_on = True        for event in pygame.event.get():            if event.type == pygame.QUIT:                self.game_on = False                self.running = False            if event.type == pygame.KEYDOWN:                if event.type == pygame.K_UP:                    self.croc.control(0, -20)    def update(self):        self.croc = Player()        self.all_sprites = pygame.sprite.Group()        self.all_sprites.add(self.croc)        self.all_sprites.update()    def draw(self):        self.screen.fill((0, 0, 0))        self.all_sprites.draw(self.screen)        pygame.display.flip()game = Game()while game.running:    game.clock.tick(60)    game.new()    game.events()    game.update()    game.draw()謝謝
查看完整描述

1 回答

?
qq_笑_17

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

有2個(gè)錯(cuò)誤。Player在每一幀中重新創(chuàng)建對(duì)象。Game在 的構(gòu)造函數(shù)中而不是在方法中創(chuàng)建播放器update:


class Game:

    def __init__(self):

        # [...]


        self.croc = Player()                     # <--- ADD

        self.all_sprites = pygame.sprite.Group() # <--- ADD

        self.all_sprites.add(self.croc)          # <--- ADD


    def update(self):

        # self.croc = Player()                     # <--- DELETE

        # self.all_sprites = pygame.sprite.Group() # <--- DELETE

        # self.all_sprites.add(self.croc)          # <--- DELETE

        self.all_sprites.update()

事件循環(huán)中有一個(gè)類型。.key您必須從屬性而不是屬性中獲取密鑰.type:


if event.type == pygame.K_UP:


if event.key == pygame.K_UP:

完整代碼:


import pygame


class Player(pygame.sprite.Sprite):

    def __init__(self):

        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.Surface((50, 50))

        self.image.fill((255, 255, 0))

        self.rect = self.image.get_rect()

        self.rect.x = 0

        self.rect.y = (700 / 2)

        self.movex = 0

        self.movey = 0


    def control(self, x, y):

        self.movex += x

        self.movey += y


    def update(self):

        self.rect.x += self.movex

        self.rect.y += self.movey


    def animate(self):

        pass



class Obstacle(pygame.sprite.Sprite):

    def __init__(self, x, y, width, height):

        pygame.sprite.Sprite.__init__(self)

        self.x = x

        self.y = y

        self.width = width

        self.height = height



WIDTH = 700

HEIGHT = 700


class Game:


    def __init__(self):

        pygame.init()

        self.screen = pygame.display.set_mode((WIDTH, HEIGHT))

        self.clock = pygame.time.Clock()

        self.score = 0

        self.running = True

        self.croc = Player()

        self.all_sprites = pygame.sprite.Group()

        self.all_sprites.add(self.croc)


    def new(self):

        pass


    def events(self):

        self.game_on = True

        for event in pygame.event.get():

            if event.type == pygame.QUIT:

                self.game_on = False

                self.running = False

            if event.type == pygame.KEYDOWN:

                if event.key == pygame.K_UP:

                    self.croc.control(0, -20)


    def update(self):

        self.all_sprites.update()


    def draw(self):

        self.screen.fill((0, 0, 0))

        self.all_sprites.draw(self.screen)

        pygame.display.flip()



game = Game()


while game.running:

    game.clock.tick(60)

    game.new()

    game.events()

    game.update()

    game.draw()



查看完整回答
反對(duì) 回復(fù) 2023-06-20
  • 1 回答
  • 0 關(guān)注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報(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)