学习C语言半年多了。但是我对俄罗斯方块,贪吃蛇等小游戏的写作一点头绪都没有!问题区块:1)

单纯学C是写不出图形程序的,你也看到了,C标准库支持dos程序,也就是黑暗的东西。

如果你想知道你离小游戏还有多远,我们可以这样算。以下是一些假设:

为您提供图形绘制功能,通过传递相应的参数,您可以绘制图形、点、线、圆、颜色填充等。

给一个线程函数,这样就可以创建一个系统线程,或者用一个定时器来控制蛇体的移动。具体方式是可以改变的。你需要一个函数在固定的时间间隔内移动蛇的身体。

那你觉得应该怎么写一条蛇?

这个想法是:

使用链表等结构存储蛇体的好处是可以任意长度。你必须弄清楚链表中存储了什么属性才能更好地描述蛇的状态,它超越了哪个方向,以及它身体的每个节点在哪个位置。

划分屏幕坐标系,将蛇映射成坐标系中的点。

编写碰撞检测函数。当蛇遇到食物时,它在链表的头部添加一个节点,并将头部节点更新为这个节点。

使用碰撞检测功能检测蛇是否撞到自己。

检测蛇是否碰到屏幕边界。

用一根线或计时器将你的蛇向一个方向移动。移动规则是向当前链表头方向匀速移动。您可以设置0.5s来增加或减少割台的x/y坐标。时间间隔影响蛇的速度。如果允许长度超过某个级别,您应该在这里设置参数。

根据米头的运动,设计算法计算出蛇身体各点的运动轨迹。这是关键。如果这个算法错了,你的蛇就会到处跑。更直接的方法是依次向前移动蛇体的各个节点,不是坐标移动,而是填充,让后面的节点填充到前面节点移动之前的位置。

总的来说,我只是给出一个思路。如果我犯了错误,请纠正我,或者你可以按照你的想法。学习和思考很重要。代码是死的,人是活的。

要分析问题,你要把实际问题抽象成一个模型来编程。抽象的过程就是假设你已经有了想要的函数,可以先声明函数,比如碰撞检测函数,线程函数等等。你不能写这些函数。让它们保持空白,想象它们已经完成。

那么你所要做的就是用这些已经被假设存在的结构来实现你的逻辑。这个逻辑是什么,取决于你如何抽象一个具体问题。就像蛇一样,总的思路是把它抽象成一个坐标链表结构。如果用另一种思维方式,整个过程可能就完全不一样了。

整个过程完成了,你需要知道如何实现你所承担的功能。

出个主意:

界面显示是用MFC,线程,定时器等等完成的,有相应的windows APIs。这些图形和线程功能需要操作系统的支持,所以需要使用一些Windows APIs。这些资料都有,你可以找找看。

以上。再次,如有疏漏,请见谅。