它至少比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 ^通过这种方式,您可以将游戏规则封装在一个简单的界面中,从而完成所有操作.