首页后端开发ASP.NETC++实现贪吃蛇游戏的详细步骤及实战演示

C++实现贪吃蛇游戏的详细步骤及实战演示

时间2024-01-30 22:29:03发布访客分类ASP.NET浏览1098
导读:收集整理的这篇文章主要介绍了C++实现贪吃蛇游戏的详细步骤及实战演示,觉得挺不错的,现在分享给大家,也给大家做个参考。学习C++过程中做的一个小程序,比较简单,只实现了贪吃蛇小游戏最基本的功能。上传代码作为学习的记录,同时也为其他同学提供作...
收集整理的这篇文章主要介绍了C++实现贪吃蛇游戏的详细步骤及实战演示,觉得挺不错的,现在分享给大家,也给大家做个参考。学习C++过程中做的一个小程序,比较简单,只实现了贪吃蛇小游戏最基本的功能。上传代码作为学习的记录,同时也为其他同学提供作为一个小小的参考。实现环境为:Microsoft Visual C++6.0集成开发环境 。

#includeiostream>
    #includecmath>
    #includecstdlib>
    #includecstdio>
    #includectime>
    #includeconio.h>
    #includewindows.h>
    using namespace std;
    /*光标定位*/HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coord;
void  locate(int x, int y){
    	coord.X = y;
    	coord.Y = x;
    	SetConsoleCursorPosITion(hout,coord);
}
    ;
/*光标隐藏*/void hide(){
	CONSOLE_CURSOR_INFO cursor_info = {
1,0}
    ;
     //bVisible=0;隐藏光标	SetConsoleCursorInfo(hout, &
    cursor_info);
//获取光标状态}
/*生成随机数*/double random(double start, double end){
    	return start + (end - start)*rand()/(RAND_MAX+1.0);
//生成一个数,大于等于start,小于end;}
    /*定义地图的长和宽*/int m, n;
/*定义蛇 的长度,坐标,方向,食物的位置*/struct node{
    	int x, y;
}
    snake[1000];
    //蛇的坐标int snake_length, dir;
    //蛇的长度,方向node food;
int direct[4][2] = {
 {
-1,0}
, {
1,0}
, {
0,-1}
, {
0,1}
 }
    ;
//食物的位置/*输出围墙:一个矩形框*/void PRint_wall(){
    	//输出第一行 “----------”	cout  " ";
    	for (int i = 1;
     i = n;
 i++)	{
    		cout  "-";
	}
    	cout  endl;
    	//输出第一列“|”,中间输入空格,最后一列输出“|”	for (int j = 0;
     j = m-1;
 j++)	{
    		cout  "|";
    		for (int i = 1;
     i = n;
     i++)			cout  " ";
    		cout  "|"  endl;
	}
    	cout  " ";
    	//输出最后一行“----------”	for (int i = 1;
     i = n;
     i++)		cout  "-";
}
/*首次输出蛇,其中snake[0]代表头部*///蛇的外型:“@*****”void print_snake(){
    	locate(snake[0].x,snake[0].y);
    	cout  "@";
    	for (int i = 1;
     i  snake_length - 1;
 i++)	{
    		locate(snake[i].x, snake[i].y);
    		cout  "*";
	}
}
/*判断是否撞墙或者头部是否碰到身体的任意一个部位,碰到则游戏失败*/bool is_correct(){
    	if (snake[0].x == 0 || snake[0].y == 0 || snake[0].x == m + 1 || snake[0].y == n + 1) return false;
    //头部碰到边缘	for (int i = 1;
     i = snake_length - 1;
     i++)		if (snake[0].x == snake[i].x  &
    &
      snake[0].y == snake[i].y)return false;
    //头部碰到身体的任意一个部位		return  true;
}
/*随机生成食物的位置*/bool print_food(){
    	srand((unsigned)time(0));
    //随机种子	bool e;
	while (1)	{
    		e = true;
    		int i = (int)random(0,m)+1;
    		int j = (int)random(0,n)+1;
    		food.x = i;
     food.y = j;
    //食物的位置随机		for (int k = 0;
     k = snake_length - 1;
 k++) //食物不能出现在蛇的身体的任意位置处		{
    			if (snake[k].x == food.x  &
    &
  snake[k].y == food.y)			{
    			   e= false;
    			   break;
 			}
		}
    		if (e)break;
	}
    	//在食物的位置处标记,食物符号为“$”;
    	locate(food.x,food.y);
    	cout  "$";
    	return true;
}
/*蛇的前进*/bool go_ahead(){
    	node tmp;
    	bool e = false;
    	tmp = snake[snake_length-1];
    //蛇尾	for (int i = snake_length - 1;
     i >
    = 1;
i--)	{
    		snake[i] = snake[i - 1];
//后移一位	}
    	snake[0].x += direct[dir][0];
    	snake[0].y += direct[dir][1];
    	locate(snake[1].x, snake[1].y);
    //定位到头部的后一位	cout  "*";
    	/*吃到食物*/	if (snake[0].x == food.x&
    &
snake[0].y == food.y)	{
    		snake_length++;
    		e = true;
    		snake[snake_length - 1] = tmp;
	}
	/*输出此时蛇状态*/	if (!e)	{
    		locate(tmp.x, tmp.y);
    		cout  " ";
	}
    	else		print_food();
    	locate(snake[0].x, snake[0].y);
    	cout  "@";
	/*** 如果自撞 ***/	if (!is_correct())	{
    		System("cls");
    		cout  "You lose!"  endl  "Length: "  snake_length  endl;
    		return false;
	}
    	return true;
	}
int main(){
    	//游戏提示:	cout  "--------------------贪吃蛇---------------------"  endl;
    	cout  "请先输入两个数,表示地图大小.要求长宽均不小于10."  endl;
    	cout  "请注意窗口大小,以免发生错位.建议将窗口调为最大."  endl;
    	cout  "再选择难度.请在1-10中输入1个数,1最简单,10则最难"  endl;
    	cout  "然后进入游戏画面,以方向键控制方向.祝你游戏愉快!"  endl;
    	cout  "-----------------------------------------------"  endl;
    	cin >
    >
     m >
    >
     n;
    	if (m  10 || n  10 || m>
    25 || n>
40)	{
    		cout  "ERROR"  endl;
    		system("pause");
    		return 0;
	}
    	//输入难度系数:1-10;
    	int hard;
    	cin >
    >
     hard;
    	if (hard = 0 || hard >
 100)	{
    		cout  "ERROR"  endl;
    		system("pause");
    		return 0;
	}
    	//数据初始化:蛇的位置,长度,方向	snake_length = 5;
    //长度	clock_t a, b;
    	char ch;
    	double hard_len;
    	for (int i = 0;
     i = 4;
 i++)//位置	{
    		snake[i].x = 1;
    		snake[i].y = 5 - i;
	}
    	dir = 3;
    //方向	//输出原始地图、食物和蛇	system("cls");
    	hide();
    	print_wall();
    	print_food();
    	print_snake();
    	//在(0,m+2)出显示长度:	locate(m + 2, 0);
    	cout  "Now Length:";
	//开始游戏	while (1)	{
       /*难度随长度的增加而提高*/		hard_len = (double)snake_length / (double)(m*n);
    		/*调节时间,单位是ms*/		a = clock();
		while (1)		{
    			b = clock();
    			if (b - a >
    = (int)(400 - 30 * hard)*(1 - sqrt(hard_len)))break;
		}
		//接收键盘输入的方向//https://blog.csdn.net/wenweimin/article/details/105561		if (_kbhit())		{
    			ch = _getch();
			if (ch == -32)			{
    				ch = _getch();
				switch (ch)				{
    				case 72:if (dir == 2 || dir == 3)dir = 0;
     break;
    				case 80:if (dir == 2 || dir == 3)dir = 1;
     break;
    				case 75:if (dir == 0 || dir == 1)dir = 2;
     break;
    				case 77:if (dir == 0 || dir == 1)dir = 3;
     break;
				}
			}
		}
    		//前进		if (!go_ahead())break;
    		//输出此时的长度		locate(m + 2, 12);
    		cout  snake_length;
	}
    	system("pause");
    	return 0;
}
    	

相关推荐:

H5的canvas实现贪吃蛇小游戏

js贪吃蛇游戏实现思路和源码_javascript技巧

Java游戏项目:拼图游戏的开发视频教程

以上就是C++实现贪吃蛇游戏的详细步骤及实战演示的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: 设计一个c++ 通用链表:实现多态...下一篇:C/C++区别有哪些?很多人都不知道...猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: C++实现贪吃蛇游戏的详细步骤及实战演示
本文地址: https://pptw.com/jishu/593121.html
jquery怎么给某个类元素增加点击事件 必学!C++实现多态机制满足的基本条件条件

游客 回复需填写必要信息