Python Pygame如何实现超级炸弹人游戏
导读:本文共4052.5字符,通常情况下阅读需要14分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一、环境安装1.素材(图片)2.环境安装本文是由Pygame写的小游戏。涉及运行环境:Python3.7、Pycharm社区版、Pygame模块。pip install +模块名 或pip install -i https://pypi.douban.com/simple/ +模块名二、代码演示1.配置文件'''配置文件''... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。一、环境安装
1.素材(图片)
2.环境安装
本文是由Pygame写的小游戏。
涉及运行环境:Python3.7、Pycharm社区版、Pygame模块。
pip install +模块名 或pip install -i https://pypi.douban.com/simple/ +模块名
二、代码演示
1.配置文件
'''配置文件'''importos'''屏幕大小'''SCREENSIZE=(640,480)'''块大小'''BLOCKSIZE=30'''FPS'''FPS=30'''游戏地图路径'''GAMEMAPPATHS=[os.path.join(os.getcwd(),path)forpathin\['resources/maps/1.map','resources/maps/2.map']]'''墙路径'''WALLPATHS=[os.path.join(os.getcwd(),path)forpathin\['resources/images/misc/wall0.png','resources/images/misc/wall1.png','resources/images/misc/wall2.png']]'''英雄路径'''HERODKPATHS=[os.path.join(os.getcwd(),path)forpathin\['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)forpathin\['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)forpathin\['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)forpathin\['resources/images/misc/banana.png','resources/images/misc/cherry.png']]'''背景路径'''BACKGROUNDPATHS=[os.path.join(os.getcwd(),path)forpathin\['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.主程序
importsysimportcfgimportrandomimportpygamefrommodulesimport*'''游戏主程序'''defmain(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)forgamemap_pathincfg.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=[]foriinrange(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))#-我方Herocoordinate=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')#-电脑Heroaihero_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)#-炸弹bombbomb_sprite_group=pygame.sprite.Group()#-用于判断游戏胜利或者失败的flagis_win_flag=False#-主循环screen=pygame.display.set_mode(map_parser.screen_size)clock=pygame.time.Clock()whileTrue:dt=clock.tick(cfg.FPS)foreventinpygame.event.get():ifevent.type==pygame.QUIT:pygame.quit()sys.exit(-1)#--↑↓←→键控制上下左右,空格键丢炸弹elifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_UP:ourhero.move('up')elifevent.key==pygame.K_DOWN:ourhero.move('down')elifevent.key==pygame.K_LEFT:ourhero.move('left')elifevent.key==pygame.K_RIGHT:ourhero.move('right')elifevent.key==pygame.K_SPACE:ifourhero.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随机行动forheroinaihero_sprite_group:action,flag=hero.randomAction(dt)ifflagandaction=='dropbomb':bomb_sprite_group.add(hero.generateBomb(imagepath=cfg.BOMBPATH,digitalcolor=cfg.YELLOW,explode_imagepath=cfg.FIREPATH))#--吃到水果加生命值(只要是Hero,都能加)ourhero.eatFruit(fruit_sprite_group)forheroinaihero_sprite_group:hero.eatFruit(fruit_sprite_group)#--游戏元素都绑定到屏幕上map_parser.draw(screen)forbombinbomb_sprite_group:ifnotbomb.is_being:bomb_sprite_group.remove(bomb)explode_area=bomb.draw(screen,dt,map_parser)ifexplode_area:#--爆炸火焰范围内的Hero生命值将持续下降ifourhero.coordinateinexplode_area:ourhero.health_value-=bomb.harm_valueforheroinaihero_sprite_group:ifhero.coordinateinexplode_area:hero.health_value-=bomb.harm_valuefruit_sprite_group.draw(screen)forheroinaihero_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])forheroinaihero_sprite_group:pos_x,pos_y=pos_x+15,5pos_x=showText(screen,font,text=hero.hero_name+'(ai):'+str(hero.health_value),color=cfg.YELLOW,position=[pos_x,pos_y])#--我方玩家生命值小于等于0/电脑方玩家生命值均小于等于0则判断游戏结束ifourhero.health_value<=0:is_win_flag=Falsebreakforheroinaihero_sprite_group:ifhero.health_value<=0:aihero_sprite_group.remove(hero)iflen(aihero_sprite_group)==0:is_win_flag=Truebreakpygame.display.update()clock.tick(cfg.FPS)ifis_win_flag:Interface(screen,cfg,mode='game_switch')else:breakInterface(screen,cfg,mode='game_end')'''run'''if__name__=='__main__':whileTrue:main(cfg)
三、效果展示
1.游戏界面
都是有音乐背景的啦!
2.游戏开始
3.游戏结束
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Python Pygame如何实现超级炸弹人游戏的详细内容,希望对您有所帮助,信息来源于网络。