发布:双人联机岛屿争夺游戏 Enemies in the dark
更新历史
20200302:
- 首次发布
20200303:
- 增加了"游戏理念"部分
这几天用Python写了一个双人联机岛屿争夺游戏 “Enemies in the dark”。编写游戏代码花了2天,调试bug、测试游戏的流畅度、测试游戏的均衡性陆续花了3天。感觉没什么太大的问题了,因此正式对其进行发布,以分享给更多喜欢Python或喜欢游戏的人。
游戏截图:
游戏介绍:
- 双人游戏,每个玩家一台电脑,两台电脑在局域网内才可以联网玩。玩家1是服务端,玩家2是客户端(因此玩家2需要知道玩家1的IP地址和端口号)。
- 岛屿数量和大小固定,岛屿位置随机生成。
- 玩家1的岛屿上的数字为绿色,玩家2的岛屿上的数字为红色,无人岛上的数字为黑色。
- 玩家所占领的岛屿越大,该岛屿上的数字增速越快,同时岛屿的数字在自由增加的情况下的上限越高。
- 玩家用鼠标单击选中一个属于自己的岛屿后(岛屿A),再点击一个其他岛屿(岛屿B),就能向岛屿B输出岛屿A一半的数字(即:兵力输送)。岛屿之间距离越大,兵力输送所需的时间越长。兵力输送的过程不可见(正如该游戏的名字:Enemies in the dark,因为你不知道对方正在向你的岛屿输送多少兵力)。
- 有一个特殊的岛屿(岛屿边框为紫色),虽然岛屿不大,但是增速特别快。不过该岛屿被占领后,岛屿的数字在自由增加的情况下的上限只有20。
- 有一个黑色、随机游走的球,其上的文字为"杀",称为"抹杀球"。玩家岛屿被抹杀球触碰后,该岛会变成无人岛,同时岛上的数字会加上岛的半径值。
- 胜负判定依据:当玩家失去所有的岛屿,且该玩家发动的兵力输送都已结束时,该玩家就会被判为失败,而另一个玩家则会被判为胜利。
游戏理念:
- 这是一个随机生成的岛屿世界,等待你的不仅有随时到来的绝对抹杀,还有防不胜防的人为攻击,这,是比黑暗森林更加黑暗的世界真相,是比弱肉强食更加复杂的生存法则——而你的目标只有一个,那就是比你的竞争对手活得更久。你会选择野蛮扩张还是疯狂避险?你会选择稳步发展还是大肆进攻?亦或你有什么其他的策略来增加胜算?
其他说明:
- 该游戏使用Python编写,基于graphics库实现,并且没有使用多线程。
- 可以用3个文本文件分别将选择的玩家、服务端的IP地址、端口记录下来,以免每次都需要重新输入。文本文件的名字可以在程序运行后通过控制台的提示来获知。
- 缺陷:
- 程序开始运行后会弹出游戏窗口,玩家可以将窗口移动到合适的位置。一旦玩家点击了窗口内的某一位置,就不允许再移动窗口了——一旦移动,就会造成鼠标点击位置的偏移。
- 游戏结束后,服务端和客户端各自点击窗口左上方带有文字"关闭"的按钮即可。这里要注意的是:不要尝试通过窗口右上角(Windows系统的窗口是这样的)的"X"按钮来关闭窗口,因为窗口虽然关了,但程序仍然在运行——这可能会导致程序的不完全退出。
参考:
游戏原型参考:
- 安卓手机游戏 Archipelago,如下图所示:
游戏理念参考:
- 刘慈欣,《三体》
- 【文曰小强】84分钟速读《三体》大合集
游戏制作过程中,在代码实现上主要参考了:
- CSDN:Python graphics库详解
- 菜鸟教程:Python 网络编程
- 博客园:记-python中socket服务器设置中的setsockopt