Pygame:一部のスプライトが画面の右側で動かなくなっています

RhinoRunner

私のゲームはほぼ完了です!残念ながら、修正が必要な詳細がいくつかあります。主なものは、少し遊んだ後、いくつかのスプライトが画面の前面に詰まるということです。誰か助けてくれませんか。

import pygame, random
from pygame.locals import (
    K_UP,
    K_DOWN,
    K_LEFT,
    K_RIGHT,
    KEYDOWN,
    QUIT,
)
print('Use the window above to play')
pygame.init()
pygame.font.init()
clock = pygame.time.Clock()

score = 0
display_width = 800
display_height = 600
X = 400
Y = 400
SCREEN_WIDTH = display_width
SCREEN_HEIGHT = display_height
screen = pygame.display.set_mode((display_width,display_height))

def death():
    global alive
    print('You died')
    myfont = pygame.font.SysFont('Comic Sans MS', 100)
    textsurface = myfont.render('You Died.', False, (0, 0, 0))
    screen.blit(textsurface,(0,0))
    

class Player(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super(Player, self).__init__()
        self.surf = pygame.image.load("Plane.png").convert()
        self.rect = self.surf.get_rect(topleft = (x, y))

    def update(self, pressed_keys):
        if pressed_keys[K_UP]:
            self.rect.move_ip(0, -5)
        if pressed_keys[K_DOWN]:
            self.rect.move_ip(0, 5)
        if pressed_keys[K_LEFT]:
            self.rect.move_ip(-5, 0)
        if pressed_keys[K_RIGHT]:
            self.rect.move_ip(5, 0)

        if self.rect.left < 0:
            self.rect.left = 0
        if self.rect.right > SCREEN_WIDTH:
            self.rect.right = SCREEN_WIDTH
        if self.rect.top <= 0:
            self.rect.top = 0
        if self.rect.bottom >= SCREEN_HEIGHT:
            self.rect.bottom = SCREEN_HEIGHT

class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super(Enemy, self).__init__()
        self.surf = pygame.Surface((20, 10))
        self.surf = pygame.image.load("Missile.png").convert()
        self.rect = self.surf.get_rect(
            center=(
                random.randint(SCREEN_WIDTH + 20, SCREEN_WIDTH + 100),
                random.randint(0, SCREEN_HEIGHT),
            )
        )
        self.speed = random.randint(5, 10)

    def update(self):
        self.rect.move_ip(-self.speed, 0)
        if self.rect.right < 0:
            global score
            score += 1
            self.kill()

class Bomb(pygame.sprite.Sprite):
    def __init__(self):
        super(Bomb, self).__init__()
        self.surf = pygame.Surface((50, 25))
        self.surf = pygame.image.load("Bomber.png").convert()
        self.rect = self.surf.get_rect(
            center=(
                random.randint(SCREEN_WIDTH + 20, SCREEN_WIDTH + 100),
                random.randint(0, SCREEN_HEIGHT),
            )
        )
        self.speed = random.randint(2, 5)

    def update(self):
        self.rect.move_ip(-self.speed, 0)
        if self.rect.right < 0:
            global score
            score += 2
            self.kill()

class Blimp(pygame.sprite.Sprite):
    def __init__(self):
        super(Blimp, self).__init__()
        self.surf = pygame.Surface((75, 35))
        self.surf = pygame.image.load("Blimp.png").convert()
        self.rect = self.surf.get_rect(
            center=(
                random.randint(SCREEN_WIDTH + 20, SCREEN_WIDTH + 100),
                random.randint(0, SCREEN_HEIGHT),
            )
        )
        self.speed = random.randint(1, 3)

    def update(self):
        self.rect.move_ip(-self.speed, 0)
        if self.rect.right < 0:
            global score
            score += 3
            self.kill()

ADDENEMY = pygame.USEREVENT + 1
pygame.time.set_timer(ADDENEMY, 950)

player = Player(display_width // 2, display_height // 2)

enemies = pygame.sprite.Group()
bomb = pygame.sprite.Group()
blimp = pygame.sprite.Group()
all_sprites = pygame.sprite.Group()
all_sprites.add(player)

alive = True
while alive:
    for event in pygame.event.get():
        print(event)
        if event.type == pygame.QUIT:
            alive = False

        elif event.type == ADDENEMY:
            new_enemy = Enemy()
            new_bomb = Bomb()
            new_blimp = Blimp()
            spawn = random.randint(1,3)
            if spawn == 1:
                enemies.add(new_enemy)
            if spawn == 2:
                enemies.add(new_blimp)
            if spawn == 3:
                enemies.add(new_bomb)
            all_sprites.add(new_enemy)
            all_sprites.add(new_bomb)
            all_sprites.add(new_blimp)

    pressed_keys = pygame.key.get_pressed()
    player.update(pressed_keys)

    enemies.update()

    screen.fill((50,50,160))

    for entity in all_sprites:
        screen.blit(entity.surf, entity.rect)

    if pygame.sprite.spritecollideany(player, enemies):
        player.kill()
        alive = False
        death()

    screen.blit(player.surf, player.rect)

    pygame.display.flip()

    pygame.display.update()
    clock.tick(60)

矢印キーを押して移動します。(新しいウィンドウにはない)テキストボックスにスコアが表示されます。

これは飛行船ファイルです これはbomb(er)ファイルです これは敵(ミサイル)ファイルです これは平面ファイルです

Rabbid76

グループにいるすべての敵を更新します enemies

enemies.update()

そして、グループ内のすべてのスプライトを描画しますall_sprites

for entity in all_sprites:
   screen.blit(entity.surf, entity.rect) 

しかし、中にあるすべての敵ではないグループでは all_spritesしているグループ enemiesも、:

new_enemy = Enemy()
new_bomb = Bomb()
new_blimp = Blimp()
spawn = random.randint(1,3)
if spawn == 1:
   enemies.add(new_enemy)
if spawn == 2:
   enemies.add(new_blimp)
if spawn == 3:
   enemies.add(new_bomb)
all_sprites.add(new_enemy)
all_sprites.add(new_bomb)
all_sprites.add(new_blimp)

グループ all_sprites内にあるがグループ内に enemiesないすべての敵は引き寄せられますが、移動しません。

ランダムな敵タイプを作成し、それを両方のGourpsに追加します

alive = True
while alive:
    for event in pygame.event.get():
        print(event)
        if event.type == pygame.QUIT:
            alive = False

        elif event.type == ADDENEMY:
            
            new_opponent = random.choice([Enemy(), Bomb(), Blimp()])
            enemies.add(new_opponent)
            all_sprites.add(new_opponent)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

UIの一部が画面に浮いたままになっているプログラムを特定するにはどうすればよいですか?

分類Dev

一部のパッケージプライベートクラスがProguardによって難読化されないのはなぜですか?

分類Dev

ブートストラップナビゲーションバーが画面の右側に表示されなくなりますが、左側からインデントされています

分類Dev

スライダースクリプトで一部の要素が定義されていないのはなぜですか?

分類Dev

ASGEと呼ばれるC ++フレームワークを使用して、スプライトが画面の端で動かなくなってしまう

分類Dev

pygameスプライトで左が右より速くなるのはなぜですか?

分類Dev

Maven JARプラグインに一部のリソースが含まれていないのはなぜですか?

分類Dev

ブートストラップが私の要素の一部を表示しないのはなぜですか?

分類Dev

ページの右側ではなく下部にdivが残っています

分類Dev

(Java)なぜ一部の人々はまだスイングではなくawtライブラリを使用しているのですか?

分類Dev

動的にロードされたスクリプトの一部として `return function(){}`にステップインできないのはなぜですか?

分類Dev

一部のファイルポインタが64ビットOSで28ビットアドレスを持っているのはなぜですか?

分類Dev

一部のsystemdサービスが「マスク」状態になっているのはなぜですか?

分類Dev

一部のsystemdサービスが「マスク」状態になっているのはなぜですか?

分類Dev

スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

分類Dev

スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

分類Dev

一部のWindowsブーローダーコードゼロレジスタが `xor`ではなく` sub`になっているのはなぜですか?

分類Dev

一部のスクリプトで終了PHPタグ '?>'が省略されているのはなぜですか?

分類Dev

NSMutableArrayの一部のインデックスにnilが含まれているのはなぜですか?

分類Dev

ラケットで、リスト内の最大値を見つける関数を作成しましたが、テストケースの一部が機能していません。なぜ、一部が機能しないのですか?

分類Dev

一部のプロトコルがIPを直接経由する場合、UDPがまったく必要なのはなぜですか?

分類Dev

一部のプロジェクトの依存関係には、説明のつかないコードアナライザーが含まれています

分類Dev

スプライトを画面の右側から左側に直接移動するにはどうすればよいですか?

分類Dev

XubuntuにKDEデスクトップをインストールしていくつかのものをインストールしましたが、FirefoxやChromeなどの一部のアプリケーションで奇妙なフォントが表示されます

分類Dev

ブートストラップ4:画面の右側にドロップダウンメニューが表示されなくなります

分類Dev

一部のPowershellタイプ名でプラス演算子が必要なのはなぜですか?

分類Dev

キーを押したときにスプライトがpygameで動かないのはなぜですか?

分類Dev

一部の関数がアスタリスクでプロトタイプ化されているのはなぜですか?

分類Dev

一部の仮想ネットワークインターフェイスにプライベートIPアドレスが割り当てられているのに、一部にはループバックIPアドレスが割り当てられているのはなぜですか?

Related 関連記事

  1. 1

    UIの一部が画面に浮いたままになっているプログラムを特定するにはどうすればよいですか?

  2. 2

    一部のパッケージプライベートクラスがProguardによって難読化されないのはなぜですか?

  3. 3

    ブートストラップナビゲーションバーが画面の右側に表示されなくなりますが、左側からインデントされています

  4. 4

    スライダースクリプトで一部の要素が定義されていないのはなぜですか?

  5. 5

    ASGEと呼ばれるC ++フレームワークを使用して、スプライトが画面の端で動かなくなってしまう

  6. 6

    pygameスプライトで左が右より速くなるのはなぜですか?

  7. 7

    Maven JARプラグインに一部のリソースが含まれていないのはなぜですか?

  8. 8

    ブートストラップが私の要素の一部を表示しないのはなぜですか?

  9. 9

    ページの右側ではなく下部にdivが残っています

  10. 10

    (Java)なぜ一部の人々はまだスイングではなくawtライブラリを使用しているのですか?

  11. 11

    動的にロードされたスクリプトの一部として `return function(){}`にステップインできないのはなぜですか?

  12. 12

    一部のファイルポインタが64ビットOSで28ビットアドレスを持っているのはなぜですか?

  13. 13

    一部のsystemdサービスが「マスク」状態になっているのはなぜですか?

  14. 14

    一部のsystemdサービスが「マスク」状態になっているのはなぜですか?

  15. 15

    スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

  16. 16

    スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

  17. 17

    一部のWindowsブーローダーコードゼロレジスタが `xor`ではなく` sub`になっているのはなぜですか?

  18. 18

    一部のスクリプトで終了PHPタグ '?>'が省略されているのはなぜですか?

  19. 19

    NSMutableArrayの一部のインデックスにnilが含まれているのはなぜですか?

  20. 20

    ラケットで、リスト内の最大値を見つける関数を作成しましたが、テストケースの一部が機能していません。なぜ、一部が機能しないのですか?

  21. 21

    一部のプロトコルがIPを直接経由する場合、UDPがまったく必要なのはなぜですか?

  22. 22

    一部のプロジェクトの依存関係には、説明のつかないコードアナライザーが含まれています

  23. 23

    スプライトを画面の右側から左側に直接移動するにはどうすればよいですか?

  24. 24

    XubuntuにKDEデスクトップをインストールしていくつかのものをインストールしましたが、FirefoxやChromeなどの一部のアプリケーションで奇妙なフォントが表示されます

  25. 25

    ブートストラップ4:画面の右側にドロップダウンメニューが表示されなくなります

  26. 26

    一部のPowershellタイプ名でプラス演算子が必要なのはなぜですか?

  27. 27

    キーを押したときにスプライトがpygameで動かないのはなぜですか?

  28. 28

    一部の関数がアスタリスクでプロトタイプ化されているのはなぜですか?

  29. 29

    一部の仮想ネットワークインターフェイスにプライベートIPアドレスが割り当てられているのに、一部にはループバックIPアドレスが割り当てられているのはなぜですか?

ホットタグ

アーカイブ