贪吃蛇游戏游戏代码
/*1 结构体保存蛇的信息 坐标 速度 长度
2 .初始化
3 .蛇的移动
4.输出蛇的样子
5.上下左右键盘 移动控制蛇的移动
*/
#include
#include//库函数
#define FrameX 4//游戏左上角坐标 宏
#define FrameY 4
#define Frame_height 20//高和宽
#define Frame_width 20
int i;
struct Snake
{
int x[100];//蛇的横纵坐标 0表示蛇尾
int y[100];
int length;//蛇的长度
int speed;//蛇的速度
};
void init_snake(struct Snake * snake)
{
snake->x[0] = 10;//横纵坐标初始化
snake->y[0] = 10;
snake->length = 4;
snake->speed = 300;
for(i=1;ilength;i++)
{
snake->x[i] = snake->x[i-1] +2;//中文字符两个宽度
snake->y[i] = snake->y[i-1];
}
}
// 光标定位函数
void GamePosition(HANDLE hout,int x,int y)
{
COORD pos;//也是类型
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(hout,pos);//windows.h函数 把光标设置到pos处
}
//蛇的移动
void move_snake(HANDLE hout,struct Snake *snake)
{
GamePosition(hout,snake->x[0],snake->y[0]);//定位到蛇尾
printf(" ");//清除蛇尾
//坐标取代
for(i = 1;ilength;i++)
{
snake->x[i-1] = snake->x[i];
snake->y[i-1] = snake->y[i];
}
}
//c linux的系统编程 3年权限 3个月一期
//输出蛇□
void show_snake(HANDLEhout,struct Snake * snake)
{
for(i=0;ilength;i++)
{
GamePosition(hout,snake->x[i],snake->y[i]);
if(i == 0)
printf("□");// 打印蛇尾
else if(i == snake->length-1)//蛇头
printf("◎");
else//蛇身
printf("●");
}
}
void start_game()
{
system("cls");
char ch;
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);//得到输出句柄
struct Snake s,*snake = &s;
init_snake(snake);
while(1)
{
ch = getch();
switch(ch)
{
case 72://上
move_snake(hout,snake);
snake->y[snake->length-1] -= 1;//头纵坐标减一
break;
case 80://下
move_snake(hout,snake);
snake->y[snake->length-1] += 1;//纵坐标减一
break;
case 75://左
move_snake(hout,snake);
snake->x[snake->length-1] -= 2;//纵坐标减一
break;
case 77://右
move_snake(hout,snake);
snake->x[snake->length-1] += 2;//纵坐标减一
break;
}
show_snake(hout,snake);
}
}
int main()
{
//工作话
start_game();
return 0;
}
再多的文字也表达不完我们要学的东西,所以希望需要学习的朋友可以直接到腾讯课堂看视频学习。遇到问题可以加我们的学习群;群里面找老鸟给你们解答C/C++ JAVA 疑难杂题要编译器要离线视频可以加QQ群462127424群文件下载,记得加我好友哦QQ:2927929270
网友评论