用pygame封装一个敌人生存类这里是一个简单的敌人生存类的例子:pythonimport pygameimport randomclass Enemy def __init__self screen_width screen_height selfimage = pygameSurface50 50 selfimagefill255 0 0 sel
完善这个敌人生存类,可以添加以下功能:
- 添加敌人的血量和攻击力属性,并在更新方法中判断敌人是否被攻击并减少相应的血量。
- 添加敌人死亡判定,并在死亡时从游戏中移除敌人。
- 添加敌人的移动方式,可以在初始化时指定移动方式,并在更新方法中调用相应的移动方法。
- 添加敌人的 AI,使其可以自主移动和攻击玩家。
下面是一个更完整的敌人生存类的例子:
import pygame
import random
class Enemy:
def __init__(self, screen_width, screen_height, hp=100, attack=10, move_type="random"):
self.image = pygame.Surface((50, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = random.randint(0, screen_width - self.rect.width)
self.rect.y = random.randint(0, screen_height - self.rect.height)
self.speed = 1
self.hp = hp
self.attack = attack
self.move_type = move_type
self.dead = False
def update(self, player_rect):
if not self.dead:
if self.move_type == "random":
self.random_move()
elif self.move_type == "follow":
self.follow_player(player_rect)
self.check_attack(player_rect)
self.check_dead()
def draw(self, screen):
if not self.dead:
screen.blit(self.image, self.rect)
def check_bounds(self, screen_height):
if self.rect.y > screen_height:
return True
else:
return False
def random_move(self):
self.rect.y += self.speed
def follow_player(self, player_rect):
if self.rect.centerx < player_rect.centerx:
self.rect.x += self.speed
elif self.rect.centerx > player_rect.centerx:
self.rect.x -= self.speed
if self.rect.centery < player_rect.centery:
self.rect.y += self.speed
elif self.rect.centery > player_rect.centery:
self.rect.y -= self.speed
def check_attack(self, player_rect):
if self.rect.colliderect(player_rect):
# reduce player's hp
pass
def check_dead(self):
if self.hp <= 0:
self.dead = True
def take_damage(self, damage):
self.hp -= damage
这个类添加了敌人的血量和攻击力属性,并在更新方法中判断敌人是否被攻击并减少相应的血量。同时添加了敌人死亡判定,并在死亡时从游戏中移除敌人。还添加了敌人的移动方式,可以在初始化时指定移动方式,并在更新方法中调用相应的移动方法。最后还添加了敌人的 AI,使其可以自主移动和攻击玩家。
原文地址: https://www.cveoy.top/t/topic/bN1m 著作权归作者所有。请勿转载和采集!