实例介绍
【实例简介】
自己用DevC 编写的贪吃蛇小游戏,带难度选择、计时、加速、暂停功能。
【实例截图】
【核心代码】
system("cls");
unsigned char ch = 77;
struct Snake s, *snake = &s;
struct Food f, *food = &f;
selectcover(hout, snake);
makeframe(snake);
initsnake(snake);
printfood(hout, snake, food);
Sleep(500);
CLK = 0;
HANDLE hThread;
DWORD ThreadID;
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)gettime, NULL, 0, &ThreadID);
while (1) {
infor(hout, snake);
//保存蛇尾横纵坐标
a[0] = snake->x[0];
a[1] = snake->y[0];
j = 0;
//如果用户敲击键盘
if (kbhit()) {
//用ch接收输入 ,注意是getch(),不需敲击回车
ch = getch();
if (kbhit()) {
//长按时间
Sleep(20);
j = 1;
}
}
switch(ch) {
//向上移动
case 'W':
case 'w':
case 72: {
movesnake(hout, snake);
//蛇头纵坐标减一
snake->y[snake->length - 1] -= 1;
break;
}
//向下移动
case 'S':
case 's':
case 80: {
movesnake(hout, snake);
//蛇头纵坐标加一
snake->y[snake->length - 1] = 1;
break;
}
//向左移动
case 'A':
case 'a':
case 75: {
movesnake(hout, snake);
//蛇头横坐标减二
snake->x[snake->length - 1] -= 2;
break;
}
//向右移动
case 'D':
case 'd':
case 77: {
movesnake(hout, snake);
//蛇头横坐标加二
snake->x[snake->length - 1] = 2;
break;
}
//主菜单
case 'E':
case 'e': {
system("cls");
return 1;
break;
}
default: {
break;
}
}
printsnake(hout,snake);
//如果判断蛇死亡,跳出循环
if (ifdead(snake) == 0 || ch==27 /*||snake->speed==0*/ || snake->count == HEIGHT_POINTS) {
gotoxy(hout, framex wide / 2, framey - 2);
//if(snake->speed==0)
if (snake->count == HEIGHT_POINTS)
printf("恭喜你通关了!!!");
else
printf("你输了!!!");
break;
}
//如果没有长按,蛇滞留的时间为
Sleep(snake->delay);
//如果长按,蛇滞留的时间为 20ms,即加速
else
Sleep(20);
}
ECK = CLK;
//跳出循环时 ,滞留场景一段时间
Sleep(3000);
//清屏
system("cls");
//显示结束界面
//if(snake->speed==0)
if (snake->count == HEIGHT_POINTS)
printf("\n\n\n\n\n\t\t\t你赢了\n\n\t\t\t你得到了满分:%d\n\n\t\t\t你用了:%02d:%02d:%02d\n\n\n", HEIGHT_POINTS, ECK / 60 / 60, ECK / 60, ECK % 60);
else
printf("\n\n\n\n\n\t\t\t你输了\n\n\t\t\t你的最终得分是:%d\n\n\t\t\t你用了:%02d:%02d:%02d\n\n\n", snake->count, ECK / 60 / 60, ECK / 60, ECK % 60);
printf("\t\t\t按Y继续玩,按N退出。\n\n\n");
char x;
x = _getch();
if (x == 'Y' || x == 'y') {
system("cls");
return 1;
}
else return 0;
}
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论