c语言游戏代码

最基本的蛇代码。

# include & ltstdio.h & gt

# include & ltwindows.h & gt//基本类型定义。支持类型定义功能。用户界面功能图形设备界面功能。

# include & ltconio.h & gt//用户按下键盘产生的相应操作(控制台)

# include & ltstdlib.h & gt

# include & lttime.h & gt//日期和时间头文件

#定义镜头30

#定义WID 25

int Snake[LEN][WID]= { 0 };//数组的元素表示蛇的各个部分。

char Sna _ Hea _ Dir = ' a//记录蛇头的移动方向。

int Sna_Hea_X,Sna _ Hea _ Y;//记录黑鱼的位置

int Snake _ Len = 3;//记录蛇的长度

时钟_t现在_时间;//记录自动移动的当前时间。

int Wait _ Time//记录自动运动的时间间隔。

int Eat _ Apple = 1;//吃苹果意味着1。

int级别;

int All _ Score =-1;

int Apple _ Num =-1;

HANDLE hConsole = GetStdHandle(STD _ OUTPUT _ HANDLE);//获取标准输出的句柄< windows.h & gt

//Handle:表示应用程序中的不同对象和同一类对象中的不同实例易于操作。

Void gotoxy(int x,int y)//设置光标位置。

{

COORD pos = {x,y };//定义字符在控制台屏幕上的坐标位置。

SetConsoleCursorPosition(hConsole,pos);//定位光标位置的函数< windows.h & gt

}

Void Hide_Cursor()//隐藏光标固定函数

{

控制台_光标_信息光标_信息= {1,0 };

SetConsoleCursorInfo(hConsole & amp;cursor _ info);

}

Void SetColor(int color)//设置颜色。

{

SetConsoleTextAttribute(hConsole,color);

//是设置字体颜色和背景颜色的API的函数格式:SetConsoleTextAttribute (handle,color);

}

Void Print_Snake()//打印蛇头和蛇尾。

{

int iy,ix,color

for(iy = 0;iy & ltWID;++iy)

for(IX = 0;ix & ltLEN++ix)

{

If(Snake[ix][iy] == 1)//蛇头

{

set color(0xf);//oxf代表分配的内存地址setcolor:34行自定义颜色设置函数。

gotoxy(ix*2,iy);

printf(" ※");

}

If(Snake[ix][iy] == 2)//蛇的脖子

{

color = rand()% 15+1;//rand()函数是生成随机数的随机函数。C语言中也有srand()函数。

//头文件:stdlib.h

if(color == 14)

color-= rand()% 13+1;//变色

SetColor(颜色);

gotoxy(ix*2,iy);

printf("■");

}

if(Snake[ix][iy] == Snake_Len)

{

gotoxy(ix*2,iy);

set color(0xe);

printf("≈";

}

}

}

Void Clear_Snake()//擦除蛇

{

int iy,IX;

for(iy = 0;iy & ltWID;++iy)

for(IX = 0;ix & ltLEN++ix)

{

gotoxy(ix*2,iy);

if(Snake[ix][iy] == Snake_Len)

printf(" ");

}

}

void land _ apple()//随机生成苹果。

{

int ix,iy;

{

IX = rand()% LEN;

iy = rand()% WID;

} while(Snake[IX][iy]);

snake[IX][iy]=-1;

gotoxy(ix*2,iy);

printf("⊙");

eat _ Apple = 0;

}

Void Game_Over()//蛇死了。

{

gotoxy(30,10);

printf("游戏结束");

睡眠(3000);

系统("暂停& gtnul”);

退出(0);

}

Void Move_Snake()//让蛇动起来。

{

int ix,iy;

for(IX = 0;ix & ltLEN++ix)//先标记黑鱼。

for(iy = 0;iy & ltWID;++iy)

if(Snake[ix][iy] == 1)

{

Switch(Sna_Hea_Dir)//根据新的蛇头方向标记蛇头。

{

案例“w”:

如果(iy == 0)

Game_Over()。

其他

SNA _ Hea _ Y = iy-1;

Sna _ Hea _ X = ix

打破;

案例:

if(iy == (WID -1))

Game_Over()。

其他

SNA _ Hea _ Y = iy+1;

Sna _ Hea _ X = ix

打破;

案例“a”:

如果(ix == 0)

Game_Over()。

其他

SNA _ Hea _ X = IX-1;

Sna _ Hea _ Y = iy

打破;

案例“d”:

if(ix == (LEN - 1))

Game_Over()。

其他

SNA _ Hea _ X = IX+1;

Sna _ Hea _ Y = iy

打破;

默认值:

打破;

}

}

if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1。& ampSnake[Sna_Hea_X][Sna_Hea_Y]!= 0 & amp& ampSnake[Sna_Hea_X][Sna_Hea_Y]!=-1)

Game_Over()。

if(Snake[Sna _ Hea _ X][Sna _ Hea _ Y]& lt;0)//吃苹果

{

++ Snake _ Len;

eat _ Apple = 1;

}

for(IX = 0;ix & ltLEN++ix)//处理蛇尾

for(iy = 0;iy & ltWID;++iy)

{

if(Snake[IX][iy]& gt;0)

{

if(Snake[ix][iy]!=蛇_Len)

snake[IX][iy]+= 1;

其他

snake[IX][iy]= 0;

}

}

snake[Sna _ Hea _ X][Sna _ Hea _ Y]= 1;//对付蛇头

}

Void Get_Input()//控制蛇的移动方向。

{

if(kbhit())

{

开关(getch())

{

案例87:

Sna _ Hea _ Dir = ' w

打破;

案例83:

Sna _ Hea _ Dir = ' s

打破;

案例65:

Sna _ Hea _ Dir = ' a

打破;

案例68:

Sna _ Hea _ Dir = ' d

打破;

默认值:

打破;

}

}

if(clock()-Now _ Time & gt;= Wait_Time)//时间到了蛇自动行走。

{

clear _ Snake();

move _ Snake();

print _ Snake();

现在_时间=时钟();

}

}

Void Init()//初始化

{

系统(“标题贪婪的毛毛蛇”);

system("mode con: cols=80行= 25 ");

Hide_Cursor()。

gotoxy(61,4);

printf("你得分:");

gotoxy(61,6);

printf("你水平:");

gotoxy(61,8);

printf(" The length:");

gotoxy(61,10);

printf("速度:");

gotoxy(61,12);

printf(" Apple Num:");

int I;

for(I = 0;我& ltSnake _ Len++i)//生成蛇

snake[10+I][15]= I+1;

int iy,IX;//打印蛇

for(iy = 0;iy & ltWID;++iy)

for(IX = 0;ix & ltLEN++ix)

{

if(Snake[ix][iy])

{

set color(Snake[IX][iy]);

gotoxy(ix*2,iy);

printf("■");

}

}

}

Void Pri_News()//打印信息

{

set color(0xe);

gotoxy(73,4);

all _ Score+= Level;

printf("%3d ",All _ Score);

gotoxy(73,6);

printf("%3d ",Level);

gotoxy(73,8);

printf("%3d ",Snake _ Len);

gotoxy(73,10);

printf("0。%3ds ",Wait _ Time/10);

gotoxy(73,12);

printf("%d ",Apple _ Num);

}

Void Lev_Sys()//层次结构

{

if((Apple _ Num-1)/10)= = Level)

{

++级;

if(Wait _ Time & gt;50)

wait _ Time-= 50;

其他

if(Wait _ Time & gt;10)

wait _ Time-= 10;

其他

wait _ Time-= 1;

}

}

int main(void)

{

init();

srand((无符号)时间(空));//设置随机数的种子

现在_时间=时钟();

int speed1=1000,speed2,a;

printf(" \ n ");

Printf("请输入您想要的速度\ n ");

scanf("%d ",& ampspeed 2);

level = 1;

wait _ Time = speed 1-speed 2;

Printf("请输入您想要的苹果数量\ n ");

scanf("%d ",& ampa);

当(a -)

rand _ Apple();

while(1)

{

如果(吃_苹果)

{

++ Apple _ Num;

rand _ Apple();

lev _ Sys();

pri _ News();

}

get _ Input();

睡眠(10);

}

返回0;

}