规则:每吃上一个点,就长大一点,不能撞墙或者撞上自己身体。
教训:在有限的空间里,可以贪吃,但是要注意安全哦。
这个游戏是我刚工作一年的时候写的,当时对C语言有了些了解,想做点东西,刚好看到同事的手机上有这个
游戏(那时我还没有手机呢,呵呵),觉得挺好玩,要实现的话也还比较简单,就在电脑上用TC上做出来了
。刚做出来的时候,那种喜悦,确实不是玩别人的游戏所能带来的。
这个程序是入门级别的,适合编程刚入门的朋友们试一试。高手达人们请跳过。
下面我简单说一下我的思路,理解下面几点会比较清楚一些。
1,基础:你首先要能画出一个带颜色的方块。举一反三:可以画一个就可以画很多个了。(TC中画方块用到了EGAVGA.BGI这个文件)
2,移动:一个方块消失,相邻地方一个方块出现,在视觉上就是移动了。
3,消失:用背景颜色在同样的地方画同样大小的方块。
4,相对坐标:视觉上像素这个单位太小,用方块的大小作为相对坐标的单位。
5,随机点:使用伪随机函数,参数一般用上系统当前时间,你再随意捏造个四则运算,就会产生出独一无二
的随机数了。
6,链表:这个是精髓啊,你看那蛇不是就像一个链表吗,这个可是我认为在这个游戏中使用的最高深的结构
了,呵呵。
7,长大:链表头遇上一个食物(随机产生的方块),链表上添加一个节点。
8,死亡:链表头撞上了自身或者撞墙。
也就这么多,理解了这几点,整个框架也就出来了。
下面就是源代码:
#include
#include
#include
#include
#define LEN sizeof(struct list)
#define uchar unsigned char
int n,sco,r,t,speed=8800;
uchar i,a,x1,y1,hit,long1=16,cycy=0,str1[200],xisu;
struct list
{ int x,y;
struct list * next,* last;
};
struct list * p1,* p2,* head,* eof1;
void
up(void); void down();
void
left(); void right();
void unit(uchar,uchar,uchar); void score();
void
dl(int); void save1();
void
load1(); void save(); main()
{ int driver=VGA,mode=VGAHI;
unsigned char ss[8];
initgraph(&driver,&mode,"c:\\tc");
setfillstyle(1,8);
setcolor(8);
bar(2,2,600,400);
setfillstyle(1,7); setcolor(7);
bar(117,117,170,140);
setfillstyle(1,8); setcolor(8);
bar(118,118,170,140);
setcolor(14);
sprintf(ss,"enter");
outtextxy(120,125,ss);
setcolor(0);
line(118,141,171,141);
line(118,142,172,142);
line(171,118,171,141);
line(172,118,172,142);
setfillstyle(1,14);
setcolor(14);
circle(15,15,10); sprintf(ss," fast"); outtextxy(30,15,ss);
circle(15,55,10); sprintf(ss," normol");
outtextxy(30,55,ss);
circle(15,95,10); sprintf(ss," slow");
outtextxy