Python Pygame如何实现超级炸弹人游戏
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家分享的是有关Python Pygame如何实现超级炸弹人游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、环境安装1.素材(图片)2.环境安装本文是由Py
千家信息网最后更新 2026年10月31日Python Pygame如何实现超级炸弹人游戏
这篇文章给大家分享的是有关Python Pygame如何实现超级炸弹人游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、环境安装
1.素材(图片)


2.环境安装
本文是由Pygame写的小游戏。
涉及运行环境:Python3.7、Pycharm社区版、Pygame模块。
pip install +模块名 或pip install -i https://pypi.douban.com/simple/ +模块名
二、代码演示
1.配置文件
'''配置文件'''import os '''屏幕大小'''SCREENSIZE = (640, 480)'''块大小'''BLOCKSIZE = 30'''FPS'''FPS = 30'''游戏地图路径'''GAMEMAPPATHS = [os.path.join(os.getcwd(), path) for path in \ ['resources/maps/1.map', 'resources/maps/2.map']]'''墙路径'''WALLPATHS = [os.path.join(os.getcwd(), path) for path in \ ['resources/images/misc/wall0.png', 'resources/images/misc/wall1.png', 'resources/images/misc/wall2.png']]'''英雄路径'''HERODKPATHS = [os.path.join(os.getcwd(), path) for path in \ ['resources/images/dk/left.png', 'resources/images/dk/right.png', 'resources/images/dk/up.png', 'resources/images/dk/down.png']]HEROZELDAPATHS = [os.path.join(os.getcwd(), path) for path in \ ['resources/images/zelda/left.png', 'resources/images/zelda/right.png', 'resources/images/zelda/up.png', 'resources/images/zelda/down.png']]HEROBATMANPATHS = [os.path.join(os.getcwd(), path) for path in \ ['resources/images/batman/left.png', 'resources/images/batman/right.png', 'resources/images/batman/up.png', 'resources/images/batman/down.png']]'''水果路径'''FRUITPATHS = [os.path.join(os.getcwd(), path) for path in \ ['resources/images/misc/banana.png', 'resources/images/misc/cherry.png']]'''背景路径'''BACKGROUNDPATHS = [os.path.join(os.getcwd(), path) for path in \ ['resources/images/misc/bg0.png', 'resources/images/misc/bg1.png', 'resources/images/misc/bg2.png']]'''爆炸和发射路径'''BOMBPATH = os.path.join(os.getcwd(), 'resources/images/misc/bomb.png')FIREPATH = os.path.join(os.getcwd(), 'resources/images/misc/fire.png')'''背景音乐'''BGMPATH = os.path.join(os.getcwd(), 'resources/audio/bgm.mp3')'''一些颜色'''YELLOW = (255, 255, 0)BLUE = (0, 0, 255)RED = (255, 0, 0)BLACK = (0, 0, 0)WHITE = (255, 255, 255)
2.主程序
import sysimport cfgimport randomimport pygamefrom modules import * '''游戏主程序'''def main(cfg): # 初始化 pygame.init() pygame.mixer.init() pygame.mixer.music.load(cfg.BGMPATH) pygame.mixer.music.play(-1, 0.0) screen = pygame.display.set_mode(cfg.SCREENSIZE) pygame.display.set_caption('炸弹人小游戏') # 开始界面 Interface(screen, cfg, mode='game_start') # 游戏主循环 font = pygame.font.SysFont('Consolas', 15) for gamemap_path in cfg.GAMEMAPPATHS: # -地图 map_parser = mapParser(gamemap_path, bg_paths=cfg.BACKGROUNDPATHS, wall_paths=cfg.WALLPATHS, blocksize=cfg.BLOCKSIZE) # -水果 fruit_sprite_group = pygame.sprite.Group() used_spaces = [] for i in range(5): coordinate = map_parser.randomGetSpace(used_spaces) used_spaces.append(coordinate) fruit_sprite_group.add(Fruit(random.choice(cfg.FRUITPATHS), coordinate=coordinate, blocksize=cfg.BLOCKSIZE)) # -我方Hero coordinate = map_parser.randomGetSpace(used_spaces) used_spaces.append(coordinate) ourhero = Hero(imagepaths=cfg.HEROZELDAPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='ZELDA') # -电脑Hero aihero_sprite_group = pygame.sprite.Group() coordinate = map_parser.randomGetSpace(used_spaces) aihero_sprite_group.add(Hero(imagepaths=cfg.HEROBATMANPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='BATMAN')) used_spaces.append(coordinate) coordinate = map_parser.randomGetSpace(used_spaces) aihero_sprite_group.add(Hero(imagepaths=cfg.HERODKPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='DK')) used_spaces.append(coordinate) # -炸弹bomb bomb_sprite_group = pygame.sprite.Group() # -用于判断游戏胜利或者失败的flag is_win_flag = False # -主循环 screen = pygame.display.set_mode(map_parser.screen_size) clock = pygame.time.Clock() while True: dt = clock.tick(cfg.FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit(-1) # --↑↓←→键控制上下左右, 空格键丢炸弹 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: ourhero.move('up') elif event.key == pygame.K_DOWN: ourhero.move('down') elif event.key == pygame.K_LEFT: ourhero.move('left') elif event.key == pygame.K_RIGHT: ourhero.move('right') elif event.key == pygame.K_SPACE: if ourhero.bomb_cooling_count <= 0: bomb_sprite_group.add(ourhero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH)) screen.fill(cfg.WHITE) # --电脑Hero随机行动 for hero in aihero_sprite_group: action, flag = hero.randomAction(dt) if flag and action == 'dropbomb': bomb_sprite_group.add(hero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH)) # --吃到水果加生命值(只要是Hero, 都能加) ourhero.eatFruit(fruit_sprite_group) for hero in aihero_sprite_group: hero.eatFruit(fruit_sprite_group) # --游戏元素都绑定到屏幕上 map_parser.draw(screen) for bomb in bomb_sprite_group: if not bomb.is_being: bomb_sprite_group.remove(bomb) explode_area = bomb.draw(screen, dt, map_parser) if explode_area: # --爆炸火焰范围内的Hero生命值将持续下降 if ourhero.coordinate in explode_area: ourhero.health_value -= bomb.harm_value for hero in aihero_sprite_group: if hero.coordinate in explode_area: hero.health_value -= bomb.harm_value fruit_sprite_group.draw(screen) for hero in aihero_sprite_group: hero.draw(screen, dt) ourhero.draw(screen, dt) # --左上角显示生命值 pos_x = showText(screen, font, text=ourhero.hero_name+'(our):'+str(ourhero.health_value), color=cfg.YELLOW, position=[5, 5]) for hero in aihero_sprite_group: pos_x, pos_y = pos_x+15, 5 pos_x = showText(screen, font, text=hero.hero_name+'(ai):'+str(hero.health_value), color=cfg.YELLOW, position=[pos_x, pos_y]) # --我方玩家生命值小于等于0/电脑方玩家生命值均小于等于0则判断游戏结束 if ourhero.health_value <= 0: is_win_flag = False break for hero in aihero_sprite_group: if hero.health_value <= 0: aihero_sprite_group.remove(hero) if len(aihero_sprite_group) == 0: is_win_flag = True break pygame.display.update() clock.tick(cfg.FPS) if is_win_flag: Interface(screen, cfg, mode='game_switch') else: break Interface(screen, cfg, mode='game_end') '''run'''if __name__ == '__main__': while True: main(cfg)三、效果展示
1.游戏界面
都是有音乐背景的啦!
2.游戏开始
3.游戏结束
感谢各位的阅读!关于"Python Pygame如何实现超级炸弹人游戏"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
路径
炸弹
生命
模块
水果
环境
电脑
背景
主程序
内容
地图
大小
小游戏
屏幕
文件
更多
玩家
界面
篇文章
循环
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
天津市摩尔互联网科技
腾讯阿里互联网科技
奇酷互联网络科技
无线互联网科技
友谊互联网络科技
深圳期待互联网科技
互联网 科技服务平台
互联网系的金融科技公司
互联网软件和科技
花神(南京)互联网科技有限公司
和信科技工业互联网
本届互联网博览会上的黑科技
内蒙古九一互联网科技
无锡工业互联网科技有限公司
小米互联网科技园入驻
互联网对科技影响
黑龙江互联网科技公司
现代科技的标志之一的互联网
高科技和互联网的现代国家
互联网科技公司税收优惠
佩信高科技互联网
互联网之后的科技是什么
全球顶尖互联网科技公司
港股科技和互联网
呼和浩特新华互联网科技学院
互联网科技研发水平
九思连强互联网电子科技有限公司
10位科技互联网大佬
互联网高科技绘画