我的一个精灵不会出现在我的 pygame 代码中

犀牛赛跑者

我做了这个游戏,它让一些红盒子从右边飞进来,你必须用黑盒子躲避它们。目前,我正在尝试制作另一种更大更慢的敌人类型。我做了类,放到精灵组,还是不显示。这是代码。我添加了一些评论,我将这些东西放在新精灵的地方。

import pygame, random, time
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()

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.Surface((75, 25))
        self.surf.fill((0, 0, 0))
        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
#normal enemy class
class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super(Enemy, self).__init__()
        self.surf = pygame.Surface((20, 10))
        self.surf.fill((200, 30, 30))
        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:
            self.kill()
#new enemy class
class Bomb(pygame.sprite.Sprite):
    def __init__(self):
        super(Bomb, self).__init__()
        self.surf = pygame.Surface((50, 25))
        self.surf.fill((100, 0, 0))
        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:
            self.kill()

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

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

enemies = pygame.sprite.Group()
bomb = pygame.sprite.Group() #I added it to the 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()
            enemies.add(new_enemy)
            all_sprites.add(new_enemy)
            all_sprites.add(new_bomb) #I made it add a new sprite

    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)
犀牛赛跑者

好的,我找到了它没有添加精灵的地方,并修复了它。

    elif event.type == ADDENEMY:
        new_enemy = Enemy()
        new_bomb = Bomb()
        enemies.add(new_enemy)
        enemies.add(new_bomb) # I needed to add this
        all_sprites.add(new_enemy)
        all_sprites.add(new_bomb) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我的 Pygame 精灵不会出现。我的代码有什么问题?

我的精灵节点不会出现在我的场景中

精灵没有出现在Pygame中

Pygame 精灵不会出现

为什么我的按钮没有出现在pygame中?

为什么我的CardView不会出现在我的片段中?

iOS:第一个字符中的书面重音不会出现在UILabel中

优化后,我的精灵不再显示。为什么我的精灵没有显示在pygame代码中?

地图中的列表不会出现在我的 ListView 中

计算一个表中一列中的行数不会出现在另一个表中

我如何计算一个独特值出现在列中的次数?

为什么我的桌子出现在一个单元格中

为什么我的伪元素出现在一个 HTML 演示中,而不出现在我的 angular 5 应用程序中?

从转换后的字符串中删除一个字符,该字符可能会出现在字符串中,也可能不会出现在字符串中

我的精灵在Pygame中无法正确显示

不必要的C ++代码最终会出现在我完成的程序中吗?

变量出现在我的数据框中的第一个和最后一个日期

一个片段怎么会出现在整个activity_main布局中?

我的精灵不会显示?? Pygame

为什么在pygame中我的代码无法使用colorkey或setalpha?

在pygame中显示闪烁(如何使我的代码更高效)

Symfony 5 & FOSCKEDITOR : 创建一个简单的自定义插件,这个插件的图标不会出现在 Ckeditor 工具栏中

为什么我的 Pygame 精灵跳转代码不起作用?

为什么在发出发布请求时用户名不会出现在我的负载中?

我要打印至少出现在它们各自的最后一个单元格中的数字?

我可以期待 Gnome 3.32 出现在 Ubuntu 18.04 的下一个版本中吗?

当我选中一个复选框并按更新时,我希望我的文本出现在 textarea 中

Pygame - 文本不会出现在窗口上

我需要一个避免字母和数字出现在同一个单词中的正则表达式