博客
关于我
Python制作复古地牢文字冒险游戏
阅读量:228 次
发布时间:2019-03-01

本文共 1212 字,大约阅读时间需要 4 分钟。

 

巨洞冒险(Colossal Cave Adventure),又名 ADVENT、Clossal Cave 或 Adventure,是八十年代初到九十年代末最受欢迎的基于文字的冒险游戏。这款游戏还作为史上第一款“互动小说(interactive fiction)”类游戏而闻名。在 1976 年,一个叫 Will Crowther 的程序员开发了这款游戏的一个早期版本,之后另一位叫 Don Woods 的程序员改进了这款游戏,为它添加了许多新元素,包括计分系统以及更多的幻想角色和场景。

今天的技术发展已经远远超越了那个时代,但我仍然对那个年代的游戏充满好奇。今天我就来用Python游戏实现一个复古风格的地牢文字冒险游戏。

游戏规则设计

游戏主要场景是迷宫,四周的#是墙壁,无法穿过。

M表示怪物,G表示哥布林,H表示玩家

遭遇怪物通常有几率对你造成一定的伤害,并且遭遇怪物后怪物并不会消失,下一次再来到这个格子时还会再遭遇怪物

哥布林是友善的,遭遇不同类型的哥布林有几率给你不同的增幅,加血,加小苹果等,哥布林遭遇后会消失

移动一格需要消耗1点血量

血量归零则游戏失败

游戏的核心就是:玩家需要合理规划路线,在血量归零前遭遇所有的怪物即可获得游戏胜利

胜利分数就是通关时剩余的小苹果数量,小苹果数量越多胜利分数越高。排行榜按照胜利分数排名。

地牢生成

地牢的生成算法是一个递归算法,算法过程有点类似分割房间。

首先,创造一块边长为s的正方形场地,随机一对x和y作为切割点,x为横向切割点,y为纵向切割点,通过把x行和y列的值全部设置为1(墙)把这块场地切割成4份

两条切割线构成了4面墙(可以看作是从交点延展开的四面墙),在其中三面墙上打个洞(置0表示空)使其整体连通,对这四个小房间进行递归调用,直到无法切割为止。

用图来解释,黑色部分的墙是第一次切割,把整个场地切割成四个房间,然后留三个门。绿色则是第二次递归切割,一样是切割成4个房间然后随机留三个门。循环往复,直到无法分割为止。

实现怪物和哥布林

因为怪物之间有共同点,哥布林之间也有共同点。所以可以很自然的使用抽象类去定义他们。

按照游戏设定,我们有富有的哥布林,医生哥布林和游戏哥布林。

他们都是哥布林,都有类似的特性,那就是需要初始化概率参数(init)和发动的能力(ability)。

所以我们可以用一个抽象类去规范化具体的哥布林子类。

如下图所示,这是一个富有的哥布林的类,它继承自Goblin,即我们上面的抽象类

这里我们重写了init和ability方法,使其具有特定的功能。

再看一下其他的哥布林也是类似的。

其他怪物也是用类似的方法去定义。

游戏控制器

游戏控制器控制着整个游戏,负责调用算法生成迷宫,生成怪物,把英雄放进地牢,显示文字提示等,也是游戏的主循环。

效果展示

最后,欢迎大家通过微信公众号联系我们。

微信公众号:320科技工作室。

转载地址:http://lgbv.baihongyu.com/

你可能感兴趣的文章
Mysql中索引的最左前缀原则图文剖析(全)
查看>>
MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
查看>>
Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
查看>>
Mysql中视图的使用以及常见运算符的使用示例和优先级
查看>>
Mysql中触发器的使用示例
查看>>
Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
查看>>
mysql中还有窗口函数?这是什么东西?
查看>>
mysql中间件
查看>>
MYSQL中频繁的乱码问题终极解决
查看>>
MySQL为Null会导致5个问题,个个致命!
查看>>
MySQL为什么不建议使用delete删除数据?
查看>>
MySQL主从、环境搭建、主从配制
查看>>
Mysql主从不同步
查看>>
mysql主从同步及清除信息
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
mysql主从同步配置方法和原理
查看>>
mysql主从复制 master和slave配置的参数大全
查看>>
MySQL主从复制几个重要的启动选项
查看>>
MySQL主从复制及排错
查看>>
mysql主从复制及故障修复
查看>>