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;
}