Python Pygame如何实现超级炸弹人游戏(pygame,python,开发技术)

时间:2024-05-09 13:18:31 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    一、环境安装

    1.素材(图片)

    Python Pygame如何实现超级炸弹人游戏

    Python Pygame如何实现超级炸弹人游戏

    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.游戏界面

    都是有音乐背景的啦!

    Python Pygame如何实现超级炸弹人游戏

    2.游戏开始

    Python Pygame如何实现超级炸弹人游戏

    3.游戏结束

    Python Pygame如何实现超级炸弹人游戏

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:Python Pygame如何实现超级炸弹人游戏的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:java如何实现幸运抽奖功能下一篇:

    17 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18