学C语言已经半年多了。却对俄罗斯方块,贪吃蛇之类的小游戏的编写一点头绪都没有! 问题块: 1)

学C语言已经半年多了。却对俄罗斯方块,贪吃蛇之类的小游戏的编写一点头绪都没有!

问题块:

1)编写小游戏需要多高的c基础?
2)你学了多久?编出来的?
3)思想
4)C语言精通的学习步骤

单纯学C你是写不出图形程序的,你可以看到,C标准库支持的是dos程序,就是那个黑不溜秋的东西。

如果想知道你离小游戏还多远,咱们可以这么算一下,下面给出几个假设条件:

    提供给你图形绘制函数,你只需要传相应的参数,就能画出图形,点,线,圆,颜色填充之类。

    给出线程函数,让你可以创建系统线程,或者使用定时器等控制贪吃蛇身体的移动。具体的方式可以变,你需要一个按照固定时间间隔来移动蛇身的函数。

那你觉着,你该怎样写一个贪吃蛇?

思路是:

    使用链表等结构,存储蛇的身体,好处就是,可以任意长度。你要想好链表中存储什么属性可以更好地描述蛇的状态,它超哪个方向走,它的身体各个节点处于哪个位置。

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

    写出碰撞检测函数,贪吃蛇碰到了一个食物,就在链表头部添加一个节点并将头结点更新为这个结点。

    使用碰撞检测函数检测贪吃蛇是否撞到了自己。

    检测蛇是否撞到了屏幕边界。

    使用线程或定时器沿着一个方向移动你的贪吃蛇,移动规律是朝着当前链表头部冲的方向匀速移动,你可以设定0.5s对表头的x/y坐标进行加,减。时间间隔影响了蛇的速度,如果允许长度超过一个程度升级加速,你就要设置下这里的参数。

    根据表头的移动,设计算法计算蛇的身体各个点的移动轨迹。这个是关键,这个算法想错了,你的蛇就会乱跑。一个比较直接的做法是,将蛇身体的每个节点依次前移,不是坐标的移动,是填充,让后面节点填充它前面节点移动前的位置。

大致是这样,我只是给出个思路,如果我有写错的地方,欢迎指正,又或者是你可以按照你的思路来进行,学习,思路是很重要的,代码是死的,人是活的。


分析问题,你要将实际的问题抽象出编程用的模型。抽象的过程就是,先假设你已经有了你想要的函数,你可以先给出函数的声明,比如碰撞检测函数,线程函数等等。这些函数你不会写,先空着,想象它们已经完成了。

然后你要做的就是,用这些已经被假设存在的构造快,来实现你的逻辑。这个逻辑是什么,就要看你怎么抽象一个具体的问题。就像贪吃蛇,通用的思路是把它抽象为坐标和链表结构。如果你用了另外一种思路,整个过程可能截然不同。

整个过程写完了,你需要知道,那些被你假设了的函数,到底怎么实现。

给个思路:

界面显示用MFC来做,线程,定时器什么的,有相应的windowsAPI,这些图形和线程功能,都需要操作系统做支持,所以你要用到一些windows的API。这些资料都是有的,你可以去找。


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

追问

仁兄。你觉得C路该怎么走?我看完了谭•的那本C语言书和C primer plus 。接下来应该怎么走?

追答

那你看的就比我多了,我就看过谭浩强那个。。。

无所谓怎么走,书看多了就做点小东西实践下就好了,就比如你正想做的小游戏。

学C后续一般是要转C++的,或者很多人用C入门之后直接跳了java和C#。如果你是兴趣所占比重大,个人还是建议往C++上靠拢,当然,这个没java,C#好找工作是众所周知的,而且也比较难掌握。

为什么比较推崇C/C++这两个比较古老的语言而不是java,C#?一个是因为我现在的工作用到C的时候比较多,当然,java和C#也有过接触,但是不够深入。就我个人感觉来说,C和C++能让你更清楚地认识一些编程中的东西,而不是被虚拟机,自动内存回收这种语言自带的机制隐藏。


后续C该怎么学,就看你想做什么了。我们抛开别的因素不谈,单纯说C和C++后续的方向,大致有2种:

    学MFC和Win32编程,这样可以做桌面程序。当然,C#,java也能做桌面程序,但是真正正统的windows程序,还是C++来写靠谱。MFC可以找孙鑫的资料看。简单说就是做应用层的程序。这种的话,网络游戏,大型的管理系统,一般都是用C++来做的。

    走底层路线。如果你对windows底层的一些运行机制感兴趣,可以尝试windows驱动开发什么的。当然,这个入门很难而且困难多多,蓝屏将伴随你的整个菜鸟时代。但是东西都是人学的,你有兴趣想去了解,总归是能学会不是。如果你是什么免杀,外挂,0day爱好者又苦于无法入门,windows驱动和内核是你的方向。如果没兴趣,还是算了,工作不好找而且不是一般的难学。

大致是这样。C强项在于效率和对底层硬件的操控能力。C的内嵌汇编是很容易的,其它语言可能就要麻烦点了。所以学C想一条道走到黑,基本上就是在折腾这些东西。做windows应用程序,做底层的一些东西。要发挥语言的长处,真正适合C的还是这两种。

具体的学习看你对哪个有兴趣。具体的资料可以自行百度。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-19

  我不认为学C语言的目的是写游戏,写游戏有专门的框架,尤其是GUI用C处理是很麻烦的。能写游戏也绝对不代表你精通了C语言,可以说有无数种方法来写好一个游戏,孰优孰劣?难说。

  我的想法是,学习C语言本身和学习软件设计还是不一样的。软件设计与具体的语言无关,而精通语言本身也不代表就会设计。现实中的软件设计很少有直接用C的,至少也是C++,所以我觉得学C更多的是打基础,不必强调应用。

  下面我就学习C语言本身谈一点看法。

    不知道你的教育背景如何?具体学习策略和强度需要根据背景而定。

    一般来说,你现在已经完成了入门,下面要进一步深入学习的话可以看C primer等外国书籍。

    相比游戏等应用,C语言更适合用来学习基本的算法。可以找数据结构与算法的书来学习。

追问

我读完了谭的书,和C primer plus

不知道接下来该从哪里继续

追答

你还没说你的教育背景呢。我说了具体方法需要根据背景定。

追问

只能说不高把。较低

本回答被网友采纳
第2个回答  2014-02-18
1)根据游戏难度判断
2)2个月
3)不要被游戏的表面所迷惑(贪吃蛇和俄罗斯方块并不是基于图形,而是坐标来编写)
4)我就是自己看书,自己编程,不会的上网查,然后慢慢的就越积累越多了追问

源码谢谢

追答

早就丢了。。初二的时候上计算机课编着玩的后来也没有拷走,就就在那里了

第3个回答  2014-02-18
1小游戏因该不需要多少基础啊,你都学了半年了不是怎么坑吧
2莪学的是易语言,也和你差不多吧,不过莪只是个炸
3不懂问题意思
4 这你还是问百度吧

小游戏你先了解下游戏主要的方式是什么(怎么算赢,怎么算输)然后编辑代码什么的,素材可以去网上下载,实在不会就看看答案吧,莪也是个小白而已。。。。
相似回答