找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2377|回复: 0
收起左侧

贪吃蛇开发随笔

[复制链接]
ID:90014 发表于 2015-9-16 00:35 | 显示全部楼层 |阅读模式
贪吃蛇开发随笔
V1.0版本
贪吃蛇是我用c语言写的真正意义上的一个程序。感觉很新奇。以前都是用c语言解题,现在用c语言写了一个游戏,中间的差距还是挺大的。这个贪吃蛇,基本上是照着别人的源码抄的。自己还没有这方面的思维。抄完了之后,又修改了一下。感觉思维正在发生跳转。通过这个程序,认识到自己的水平还是挺差劲的。不过,估计在抄上几个小游戏后,就应该能形成自己的思维。到时候就能开发出自己的程序了。
另外还学到了一点。就是在这个程序中,把一个游戏分成了很多的模块,然后每个模块写一个函数,这样写出来的程序很耐读。调试也方便。学习之。
还需努力
———————————————————————————————————
V1.1版本(Sarah,thinking献礼版)
与v1.0版本改进说明
          1.注册BGI驱动,使之可以脱离.BGI文件运行
          2.增加启动界面,引入音乐
          3.改进注释,增加函数注释。
这三项都是收别的程序的启发。第一项的方法在TC的示例程序中就有。第二项很简单,一个图形结束后,然后再清屏就是了。第三个是看着别人的注释很不错。尤其是对函数的注释。

/*******************************************************************************
** 函数名称:drawmat
** 函数描述:依次:字模指针、点阵大小、起始坐标(x,y)、颜色
** 输入参数:*mat,matsize,x,y,color
** 输出参数:无
*******************************************************************************/
虽然占用的行数有点多了。不过注释的很清晰,于是引进之。
在下面的学习中,希望能找到用C语言引进位图,和音乐的方法。是游戏更生动一些。

———————————————————————————————————
V1.2版本(自动寻路版)
此版本与前面版本的不同之处在于,增加了自动寻路函数。在开始画面中可以选择,如果选1。则手动。选2。则自动。
  想法:增加一个findway()函数。此函数的功能是判断蛇头与食物之间的坐标关系。蛇头的横坐标减去食物的横坐标,负则发出右行指令;正责发生左行指令。纵坐标减去食物的纵坐标,负责发出下行指令;正则发出上行指令。(注:计算机中坐标系的原点在左上角)。但是要注意的是:1。发出的指令不能与行使的方向相反。这样的话,则需要在函数中添加一个判断,如果发出的指令与蛇行驶的方向相反的话,先让蛇垂直运动一下。2:在某些特殊情况下,在会撞墙,因此还需要加个撞墙判断条件。
  bug:1.容易撞到自己。2.如果食物出现在墙壁,容易死亡。
此版本是个失败的版本。蛇的走法千奇百怪,撞墙的方法多种多样。目前的水平还不能考虑到那么多情况。写出来一个很容易自身的贪吃蛇。哎。,。
———————————————————————————————————

在家编的这个小程序,深深地体会到自己的不足。学完c语言,仅仅开了一扇门而已。也体会到为啥能成为一个程序员,至少需要两年的时间。太多的领域需要我们去探索。windows,Linux,Unix,算法,网络,图像,3D,引擎。。。。每一项都有着很深的学问。浩浩荡荡,无穷无尽。我们必须不断地努力,在繁杂的表面下,找到共同的地方。抓住根源,才能成为一代宗师。
我们还太嫩,即使学完c语言,学完数据结构,学完算法分析。看着电脑里满满的一点都看不懂得资料,我们必须有压力。突然想起一个有人评论以前的中美黑客大战,读来汗颜不止“你们在美国人的系统上,利用美国人发现的漏洞,拿着美国人写的工具,去攻击美国人”。在此不做评论。
现在不想说过多的废话,最后只想问自己一句,你尽力了么?

/* WIN-TC BGI 图形编程模板 */

#include "Conio.h"
#include "graphics.h"
#define closegr closegraph

void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}

int main(void)
{
initgr(); /* BGI初始化 */

/*****此部分添加你自己的代码,例如
line(25, 25, 220, 220);
circle(100, 100, 50);
等等*****/

getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表