65.9K
CodeProject 正在变化。 阅读更多。
Home

一款名为 Twix 的棋盘游戏(有创意)

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.83/5 (7投票s)

2004年10月19日

4分钟阅读

viewsIcon

58848

downloadIcon

864

这是一款策略棋盘游戏,我80年代青少年时期常和邻居一起玩,我用Java开发了它,然后移植到C#。

引言

这是我第一次为CodeProject贡献代码!Twix是一款策略棋盘游戏,在一个方形塑料棋盘上进行,棋盘上有许多孔,可以用棋子连接桥梁。

游戏中共有两位玩家,他们试图在棋盘的一侧连接到另一侧的桥梁。一名玩家试图连接左右两侧,而另一名玩家则试图连接上下两侧。不可避免地会发生冲突,而这正是游戏的策略所在。

玩家轮流在棋盘上放置棋子。当两个棋子处于“一格之隔,两格之远”(类似于国际象棋中骑士的走法)的网格位置时,可以在棋子上面放置桥梁。桥梁不能交叉!每个棋子最多可以连接八座桥梁,这些桥梁连接着周围位于“有效”网格孔中的棋子。

每次玩家放置棋子时,系统都会分析该棋子,以确定是否应该放置任何桥梁(最多八座)。不需要在任何潜在的桥梁位置放置棋子,即不需要在每一轮都放置桥梁并连接棋子。

桥梁放置在相同颜色的棋子之间。桥梁不能交叉,否则将不被允许。

我做的一些改进

  • 计时器强制玩家必须走棋,否则将放弃回合。
  • 基于时间和新桥梁的积分系统,奖励快速走棋的玩家。
  • 当玩家积累足够的积分时,会获得一个生物(光标将发生变化,以指示可以发射生物)。该生物会被分配到棋盘上的一个位置(对手棋子所在的战略位置是一个不错的选择)。该生物会移动到该位置,如果那里有棋子,就会抓住它并将其重新安置到空的网格位置。

代码讨论

我进行此项目的原因

  • 这是一款很酷的游戏,但我再也找不到它了。
  • 这是一个很有趣的问题。
  • 这是一个很好的起始平台,可以为我的生物对象引入一个有用的游戏场地。

开发这款游戏最棘手的部分是桥梁连接/阻塞检测。下一个难题是获胜条件检测。后者需要递归,前者需要大量的边界检查和周到的循环。

这个生物是我十年前想出来的一个特色。它学习如何通过随机挥舞肢体来迁移到一个坐标,直到确定一个“好”的移动。一个好的移动是指它的肘部和脚比当前的肘部和脚配置更靠近目的地。然后,生物会反复迭代这两种配置(伸展手臂,用脚抓住,伸展和收缩肘部),直到到达目的地,或与目的地的距离增加。我非常自豪能拥有这个小家伙,终于在游戏中找到了一个有趣的用途。

游戏由主Windows窗体中的计时器运行。每次计时器事件发生时,都会调用一组列表对象来执行工作。有一个爆炸列表、一个手臂列表、一个棋子列表(其中包含桥梁列表)和棋盘对象。图形页面翻转以提供流畅的外观。

打开Globals.cs可以更改棋盘大小、生物的速度、演示模式下的生成率等。

期望的未来改进

  • 声音!!不错的环境背景音乐和随着玩家越来越接近获胜而加快的心跳声将会很酷。爆炸声、生物行走声、抓取声等。
  • 单人模式的电脑AI。
  • 两人通过网络对战将非常棒,但这需要对代码进行重大且可能困难的重构。
  • 为玩家争取更有趣的事件和子目标(封闭某些东西会导致某些事情发生等)。
  • 移植到DirectX、DirectSound、DirectPlay。

历史

  • 2004年10月19日:初始版本

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.