[C入门 - 游戏编程系列] 序言篇
记得学习C语言的时候,看着别人能写各种各样的小游戏和小软件,甚是羡慕。而自己,虽然说语法都会,但是真正上手写个几百行的代码,就显得力不从心。曾经一度很是郁闷,看过一些书,大都处于教语法的层面,有些涉及到软件设计,但是对于几百行代码都驾驭不了的我,看了也是等于白看,完全领悟不到设计中蕴含的哲学和精髓。
所以,本来盘算着第一个月学完语法,第二个月写出自己所谓的“软件”的这个美好愿望,被无情的打破了。现实是,语法确实在一个月学完了,但是坑爹的是,除了在群里或者论坛中增加了一点谈论或者说冒充“大神”的资本,其它的一无所获。写不出好玩的贪吃蛇,也写不出经典的五子棋,更写不出装逼的小病毒。我只不过是个读过C语言程序设计这本经典著作的读者罢了。
于是,一直几个月,沉浸在群里给比我更新的新手解答什么是数组,什么是指针,什么是结构体。想想那段日子,真的不堪回首。几个月的美好时间,如果用来写写代码,说不定都撸出几万行来了。而这期间,我却什么都没做,坦白的说,也做不出来,唯一的好处是,在群里讨论让我对C语言还保持着记忆犹新。
后来的后来,虽然说不怎么写代码了,但是还是怀有着对编程的一股子激情,每天上上网站,看看新技术,上上论坛,看看别人发布的新代码 ,然后默默的评论“膜拜大神”。有时候看到简单一些的代码,就会燃起一种想要自己实现的冲动,于是像打了几斤鸡血一般,重拾C语言,彻夜写代码,写的天晕地暗。当然,最后还是没有实现出来。于是在某个寂寞的夜晚,我默默打开百度,搜索"如何动手写自己的小项目",“如何精通C语言”,“为什么会代码却写不出项目”等这类问题,看到了不少答案,总结起来就是一句话:代码写的少了!答案中很多人推荐看看开源项目,几千行的那种,于是我下载了几个,看了几天,发现还是看不懂。最后也只能作罢。
既然看不懂别人的,又想提高C语言水平,我只好开始硬着头皮自己写了。这艰辛,这酸爽,想想就后怕。从哪里开始是个大问题,继续做题目,深入算法?这主意行的通,但是还是不足以让自己具有完整的软件开发体验。写软件?也行,不过功能弱的没有成就感,功能强大的就只有献上膝盖的份了,没有做那个的能力。于是,只能写写游戏,从这方面入手了。
得益于小霸王,让我们体验了许多经典游戏。所以写起代码来对整体过程也能有个清晰的思路,这再好不过了。
所以,我打算记录下整个编码过程。一则给自己留个纪念,二则,我相信很多人都和我一样,初学编程的时候,迷茫,不知道如何动手写东西。我记录下这些,如果有朝一日有和我一样迷茫的小伙伴看到了这一系列的学习笔记,能对你有所帮助,那就足够了。
我不知道是否大多数人依然熟悉C语言,可能很多人现在都以学习当前的流行语言如Java、Python、PHP入门的,虽然这一系列笔记都使用C语言,但是对其它语言也能起到作用,毕竟重要的是编码思路和实现流程,而不是语言。
另外,由于水平有限,所有的笔记都是以实现目的为目标,而不是关注性能、架构等这些听过没见过的事物。毕竟,不以实现目的的学习是很难让人记住的。
[C入门 - 游戏编程系列] 序言篇的更多相关文章
- [C入门 - 游戏编程系列] 环境篇
这一系列笔记的代码都是在Ubuntu 14.04下编码并测试的,原因无他,因为我笔记本电脑只装了一个Ubuntu系统,其中唯一使用的第三方库SDL也是开源并且跨平台的.所以即使你用的是Windows或 ...
- [C入门 - 游戏编程系列] 贪吃蛇篇(六) - 蛇实现
这一篇是关于设置蛇的属性的,接上一篇(五). 设置蛇的速度,很简单,只要不是负数就行了. void SNK_SetSnakeSpeed(Snake *snake, int speed) { ) sna ...
- [C入门 - 游戏编程系列] 贪吃蛇篇(五) - 蛇实现
因为已经写了食物的实现,所以我不知道到底是该先写世界的实现还是蛇的实现.因为世界就是一个窗口,可以立刻在世界中看到食物的样子,对于大多数人来说,如果写完代码立刻就能看到效果,那就再好不过了.可是,我最 ...
- [C入门 - 游戏编程系列] 贪吃蛇篇(四) - 食物实现
由于食物是贪吃蛇游戏中最简单的一部分,而且和其他部分关联性不强,基本上是一个独立的部分,所以我打算先实现它. 我的想法是食物必须在世界中才能被创造出来,也就是说,先有世界再有食物,所以我得先判断世界是 ...
- [C入门 - 游戏编程系列] 贪吃蛇篇(三) - 蛇定义
蛇是这个游戏的主角,要实现的功能也是最复杂的一个.因为蛇不止有属性,还有行为.它会动,还会吃东西,还会长大!而且还会死!这是很要命的.我一向看不懂复杂的代码,也写不出复杂的代码.所以对于蛇,我很纠结, ...
- [C入门 - 游戏编程系列] 贪吃蛇篇(二) - 食物定义
游戏中的食物没有那么多复杂属性,特别是贪吃蛇游戏中,我把食物看待的很简单: 1. 它必须属于世界,才能出现在世界.不可能一个不属于世界的食物,出现在世界中:但是可能存在着一个食物,它属于世界,但是却没 ...
- [C入门 - 游戏编程系列] 贪吃蛇篇(一) - 世界定义
每个游戏都有一个很明确的目的或者说游戏主题,贪吃蛇的目的很明确:蛇找到并吃掉食物.只有目的是很无聊的,算不上一个好游戏.所以设计者增加了创意:1. 吃掉食物后蛇会增长:2. 吃掉食物后分数会增加.有些 ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- java并发编程系列原理篇--JDK中的通信工具类Semaphore
前言 java多线程之间进行通信时,JDK主要提供了以下几种通信工具类.主要有Semaphore.CountDownLatch.CyclicBarrier.exchanger.Phaser这几个通讯类 ...
随机推荐
- 免小号QQ空间说说刷赞器
小伙伴们赶紧用等待免小号QQ空间说说刷赞器,几分钟就可以刷好几百赞了噢, 给大家一个下载地址:http://www.dedewl.com/TA/gotoB.php?id=770319205B
- MongoDB再实测
不用安装,直接解压.. 这些都不是最主要的,,,倒是TOMCAT和NGINX还需要更深入的了解... http://jingyan.baidu.com/article/acf728fd3d398bf8 ...
- eclipse3.7 安装maven插件与scm
转自:http://blacksonny.iteye.com/blog/1900275 最近要使用maven进行开发,之前的eclipse3.7 使用一下两个地址安装好了插件,如下: maven插件 ...
- JavaScript 克隆对象
function clone(origin) { return Object.assign({}, origin); } let aClone = { ...a }; // 等同于 let aClon ...
- (转)iOS7界面设计规范(10) - UI基础 - 文字排版与配色
明天就是周四了.貌似前几天还在恨周一呢.话说今天几乎开了一整天的会,正经事情没做多少:这种感觉比一整天从早到晚12个小时的忙碌于一件事情还要让人感到疲惫的对叭?那今天的iOS7设计规范更新又是一篇很简 ...
- 使用sublime text2怎样新建文件高速生成HTML头部信息?
前提须要安装Emmet插件.安装完毕后重新启动sublime. 输入下面简写,按Tab. html:4t <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML ...
- Android项目中gen文件下R文件无法生成的解决的方法
帮一个网友解决R文件无法生成的问题,搜集了些材料特整理例如以下,刚開始学习的人參考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen文件夹无法更新,或者gen文件夹下的R.J ...
- VMware vSphere 5.5的12个更新亮点(1)
[IT专家网虚拟化]在VMworld 2013大会上发布的VMware vSphere 5.5版本提供的增强和改进,横跨从hypervisor到管理整个堆栈,提升了VMware的性能.可伸缩性和可用性 ...
- c++ 11 多线程教学(1)
本篇教学代码可在GitHub获得:https://github.com/sol-prog/threads. 在之前的教学中,我展示了一些最新进的C++11语言内容: 1. 正则表达式(http://s ...
- Android 编程下 Activity 的创建和应用退出时的销毁
为了确保对应用中 Activity 的创建和销毁状态进行控制,所以就需要一个全局的变量来记录和销毁这些 Activity.这里的大概思路是写一个类继承 Application,并使获取该 Applic ...