首页
精美壁纸
站点统计
友情链接
投稿
这样的我
更多
精美壁纸
站点统计
友情链接
投稿
这样的我
Search
1
钉钉破解版-钉钉破解版可以随意更改位置
1,633 阅读
2
《彩虹六号M》正式登陆,快来加入战斗!免费下载注册游完教程
1,366 阅读
3
【已解决】系统在此应用程序中检测到基于堆栈的缓冲区溢出
979 阅读
4
IDEA项目启动很慢的3种解决办法
942 阅读
5
appcrash事件怎么解决?三种方法教你
905 阅读
游戏资讯
等风也等你
生气日记
前端开发
css
JavaScript
html
jQuery
我爱学习
Ajax
Vue
Node
MongoDB
登录
/
注册
Search
标签搜索
说说
MongoDB
node
apache
麦肯锡
字符串
arcgis license server
stata
字母
变量
英文字母
分组
英语
网络适配器
图
网卡
No Feign Client for loadBalancing defined. Did you forget to include
Could
关于我
集成feign
再度Miren
累计发布
560
篇内容
累计收到
93
条评论
首页
栏目
游戏资讯
等风也等你
生气日记
前端开发
css
JavaScript
html
jQuery
我爱学习
Ajax
Vue
Node
MongoDB
页面
精美壁纸
站点统计
友情链接
投稿
这样的我
搜索到
1
篇与
的结果
2023-03-06
炸弹人小游戏代码开源(python)
??作者:小刘在C站??个人主页:小刘主页??每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生!??夕阳下,是最美的绽放,当遵从一心,踏浪而往,纵千山万水, 也要抵达。目录一.什么是python二.游戏代码效果呈现??三.游戏主代码四.cfg五.README六.requirements一.什么是pythonPython由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。?? Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, [ 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码二.游戏代码效果呈现??三.游戏主代码'''Function:??? 炸弹人小游戏'''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)四.cfg'''配置文件'''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)五.README# Introductionhttps://mp.weixin.qq.com/s/XzB_cJMFEtz6p_MvqiaCrA# Environment```OS: Windows10Python: Python3.5+(have installed necessary dependencies)```# Usage```Step1:pip install -r requirements.txtStep2:run "python Game19.py"```# Game Display![giphy](demonstration/running.gif)六.requirementspygame
2023年03月06日
6 阅读
0 评论
0 点赞