c – 你将如何实施游戏逆转? (奥赛罗)

前端之家收集整理的这篇文章主要介绍了c – 你将如何实施游戏逆转? (奥赛罗)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在考虑在家开始一个侧面项目来锻炼我的大脑. Reversi看起来像一个简单的游戏,其中移动性对游戏玩法有深远的影响.
它至少比tic tac toe更进了一步.这将是针对某种AI的单一玩家.

我想在PC上用C语言试一试.

我可能遇到什么问题?

你会推荐什么图形库?

我有什么问题不够聪明地问自己?

解决方法

总的来说,您最终会遇到的问题将取决于您和您的方法.朋友倾向于从不同的角度说复杂是简单的.

图形库的选择取决于你要编写什么类型的游戏? OpenGL是这类项目的常见选择,但你也可以使用一些GUI库或直接使用windows’或xorg自己的库.如果你想要花哨,只需使用OpenGL.

你应该问的问题:

这个项目是C明智的选择吗?考虑C和/或python.我对此的回答是,如果你只想写反转,请转到python.但是如果你想学习低级语言,那就先做C吧. C是C的扩展,因此在那里学习的内容比C中的更多.而对于我的判断,你在C上学到的东西越多,就不值得付出努力.

你如何使用图形库?如果您要进行奇特的效果,请转到场景图.相反,您可以使用按钮在其上渲染reversi网格.

如果您使用常见的UI概念,您应该如何实现UI?通常的UI概念(窗口,框架,按钮,菜单栏,对话框)并不像人们认为的那样好,在正确实现它们方面有很多工作要做.应用场景图解释输入并尝试不同的巧妙方法来控制游戏.避免使用简介菜单(它们是愚蠢和无用的工作),对大多数配置使用命令行参数.

我还给你一些想法让你入门:

奥赛罗板总体上是8×8,64个单元.您可以为每个单元分配一个字节,使每个板状态为64字节.这是8个长的整数,根本不是很多!您可以存储游戏的整个进度,玩家甚至无法注意到它.因此,建议将othello板实现为不可变结构,在更改状态时始终复制该结构.它还可以帮助您以后使用AI并实现“撤消”功能.

因为一个字节可以存储比三个状态(EMPTY,BLACK,WHITE)更多的信息,我建议你还提供两个额外的状态(BLACK_ALLOWED,WHITE_ALLOWED,BOTH_ALLOWED).您可以在复制新状态时计算这些值.

用于检查可以放置块的位置的算法可以一个接一个地通过板,然后从空单元跟踪到每个方向以获得正则表达式:B W => W ^,W B => B ^通过这种方式,您可以将游戏规则封装在一个简单的界面中,从而完成所有操作.

猜你在找的C&C++相关文章