当前位置: 首页 > news >正文

建站服务成都建设网上商城平台公司

建站服务,成都建设网上商城平台公司,中企动力东莞分公司,军事最新军事新闻视频以下是一个使用 Python 的 pygame 库实现的简单对战游戏示例,游戏中玩家可以控制两个角色进行对战,并且支持自定义图片(最好使用无底色的png图片)。完整源码以及实现思路: import pygame import os# 初始化 Pygame pygame.init()# 设置游戏窗…
以下是一个使用 Python 的 pygame 库实现的简单对战游戏示例,游戏中玩家可以控制两个角色进行对战,并且支持自定义图片(最好使用无底色的png图片)。

在这里插入图片描述
完整源码以及实现思路:

import pygame
import os# 初始化 Pygame
pygame.init()# 设置游戏窗口
WIDTH, HEIGHT = 800, 600
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("对战游戏")# 加载角色图片(假设图片存在于当前目录下)
try:PLAYER1_IMAGE = pygame.image.load(os.path.join('player1.png')).convert_alpha()PLAYER2_IMAGE = pygame.image.load(os.path.join('player2.png')).convert_alpha()PLAYER1_IMAGE = pygame.transform.scale(PLAYER1_IMAGE, (100, 100))PLAYER2_IMAGE = pygame.transform.scale(PLAYER2_IMAGE, (100, 100))BULLET_IMAGE = pygame.image.load(os.path.join('bullet.png')).convert_alpha()BULLET_IMAGE = pygame.transform.scale(BULLET_IMAGE, (50, 50))
except FileNotFoundError:print("未找到角色或子弹图片,请确保 player1.png、player2.png 和 bullet.png 在当前目录。")pygame.quit()exit()# 定义颜色
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)# 定义字体
FONT = pygame.font.SysFont('comicsans', 30)# 定义子弹类
class Bullet(pygame.sprite.Sprite):def __init__(self, x, y, direction):super().__init__()self.image = BULLET_IMAGEself.rect = self.image.get_rect()self.rect.x = xself.rect.y = yself.speed = 10self.direction = directiondef update(self):if self.direction == 1:  # 向右self.rect.x += self.speedelse:  # 向左self.rect.x -= self.speed# 如果子弹超出屏幕范围,将其从精灵组中移除if self.rect.x < 0 or self.rect.x > WIDTH:self.kill()# 定义角色类
class Player(pygame.sprite.Sprite):def __init__(self, x, y, image):super().__init__()self.image = imageself.rect = self.image.get_rect()self.rect.x = xself.rect.y = yself.speed = 5self.health = 100self.attacking = Falseself.attack_cooldown = 0self.bullets = pygame.sprite.Group()def move_left(self):if self.rect.x > 0:self.rect.x -= self.speeddef move_right(self):if self.rect.x < WIDTH - self.rect.width:self.rect.x += self.speeddef move_up(self):if self.rect.y > 0:self.rect.y -= self.speeddef move_down(self):if self.rect.y < HEIGHT - self.rect.height:self.rect.y += self.speeddef attack(self):if self.attack_cooldown == 0:self.attacking = Trueself.attack_cooldown = 20# 创建子弹并添加到精灵组if self.image == PLAYER1_IMAGE:bullet = Bullet(self.rect.right, self.rect.centery, 1)else:bullet = Bullet(self.rect.left - self.rect.width, self.rect.centery, -1)self.bullets.add(bullet)def take_damage(self, damage):self.health -= damageif self.health < 0:self.health = 0def update(self):if self.attack_cooldown > 0:self.attack_cooldown -= 1if self.attack_cooldown == 0:self.attacking = Falseself.bullets.update()# 创建角色实例
player1 = Player(100, 250, PLAYER1_IMAGE)
player2 = Player(600, 250, PLAYER2_IMAGE)# 创建精灵组
all_sprites = pygame.sprite.Group()
all_sprites.add(player1, player2)# 主游戏循环
clock = pygame.time.Clock()
running = True
while running:clock.tick(60)# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_a:player1.move_left()elif event.key == pygame.K_d:player1.move_right()elif event.key == pygame.K_w:player1.move_up()elif event.key == pygame.K_s:player1.move_down()elif event.key == pygame.K_SPACE:player1.attack()elif event.key == pygame.K_LEFT:player2.move_left()elif event.key == pygame.K_RIGHT:player2.move_right()elif event.key == pygame.K_UP:player2.move_up()elif event.key == pygame.K_DOWN:player2.move_down()elif event.key == pygame.K_RETURN:player2.attack()# 更新角色状态player1.update()player2.update()# 检测子弹与角色的碰撞for bullet in player1.bullets:if pygame.sprite.collide_rect(bullet, player2):player2.take_damage(10)bullet.kill()for bullet in player2.bullets:if pygame.sprite.collide_rect(bullet, player1):player1.take_damage(10)bullet.kill()# 绘制背景WIN.fill(WHITE)# 绘制血量条pygame.draw.rect(WIN, RED, (10, 10, 200, 20))pygame.draw.rect(WIN, GREEN, (10, 10, 2 * player1.health, 20))pygame.draw.rect(WIN, RED, (WIDTH - 210, 10, 200, 20))pygame.draw.rect(WIN, GREEN, (WIDTH - 210, 10, 2 * player2.health, 20))# 绘制血量数值player1_health_text = FONT.render(f"Player 1 Health: {player1.health}", 1, RED)player2_health_text = FONT.render(f"Player 2 Health: {player2.health}", 1, RED)WIN.blit(player1_health_text, (10, 40))WIN.blit(player2_health_text, (WIDTH - 210, 40))# 绘制角色和子弹all_sprites.draw(WIN)player1.bullets.draw(WIN)player2.bullets.draw(WIN)# 检查游戏结束if player1.health <= 0:winner_text = FONT.render("Player 2 Wins!", 1, RED)WIN.blit(winner_text, (WIDTH // 2 - winner_text.get_width() // 2, HEIGHT // 2 - winner_text.get_height() // 2))pygame.display.flip()pygame.time.delay(3000)running = Falseelif player2.health <= 0:winner_text = FONT.render("Player 1 Wins!", 1, RED)WIN.blit(winner_text, (WIDTH // 2 - winner_text.get_width() // 2, HEIGHT // 2 - winner_text.get_height() // 2))pygame.display.flip()pygame.time.delay(3000)running = False# 更新显示pygame.display.flip()# 退出 Pygame
pygame.quit()

代码说明:
1、子弹类 Bullet:
继承自 pygame.sprite.Sprite,包含子弹的位置、速度和方向等属性。
update 方法用于更新子弹的位置,当子弹超出屏幕范围时,将其从精灵组中移除。
2、角色类 Player:
添加了 bullets 属性,用于管理该角色发射的子弹精灵组。
在 attack 方法中,当角色攻击时,创建子弹对象并添加到 bullets 精灵组中。
update 方法中调用 self.bullets.update() 来更新子弹的状态。
3、主循环部分:
增加了检测子弹与角色碰撞的逻辑,当子弹击中对方角色时,对方角色扣血,子弹消失。
在绘制部分,除了绘制角色,还绘制了角色发射的子弹。

使用方法:
1、将代码保存为一个 Python 文件(例如 battle_game_with_bullets.py)。
准备三张图片,分别命名为 player1.png、player2.png 和 bullet.png,并将它们放在与代码文件相同的目录下。
2、运行代码,即可开始游戏。玩家 1 使用 A、D、W、S 键移动(记得开启大写),Space 键攻击;玩家 2 使用方向键移动,Enter 键攻击。攻击时会发射子弹,子弹击中对方角色可造成伤害。

可以自由补充扩展

http://www.yayakq.cn/news/46863/

相关文章:

  • 中英文网站如何建设杭州网站seo优化
  • 多语言网站 推广wordpress自适应手机
  • 做图去哪个网站找素材wordpress免费商城模板下载地址
  • 用ps做商城网站好做吗镇平微网站开发
  • 哈尔滨快速建站服务网页设计尺寸大小规范
  • 福建宏盛建设集团网站装修网名
  • 简述网站建设过程步骤云南营销型网站
  • 昆明网站建设贴吧wordpress婚恋网模板
  • 天津网站建设业务做英文网站需要多少
  • 盂县在线这个网站是谁做的企业网站管理系统湖南岚鸿
  • 网站怎么上传数据库如何建双注册网站
  • 个人简历表免费下载 模板整站优化费用
  • 网站开发培训好学吗建房城乡建设部网站
  • 电商网站 支付中核二二是个好单位吗
  • 网站备案在哪里查询东莞做网站找微客巴巴
  • 北京网站建设天下公司做搜狗pc网站优化快速
  • 广东蕉岭县建设局网站网页设计与网站建设完全实战手册
  • 如何建立网站平台的步骤内部网络网站怎么做
  • 做语音聊天网站要多少钱淄博营销网站建设服务
  • 网站备案完成后不解析天元建设集团有限公司路桥工程公司
  • 怎样给自己的网站做防红连接西安网站制作工作室
  • 做网站做推广网站布局内容
  • 做效果图展板网站网站文章页做百度小程序
  • 设计师案例网站云端智能建站系统
  • 网站建设优化服务策划泾县网站建设
  • 广西建设局建设行政主管部网站用什么软件做网站前端
  • 东莞市建设工程网站网站源代码免费下载
  • 北京经济技术开发区建设局网站吐鲁番大型网站建设平台
  • 室内设计网站都有哪些公司网络购物系统属于什么系统
  • 网站环境搭建软件开发和网站开发的区别