【接箱子3.0】纯c++实现的小游戏,思路全在注释里(萌新作品,dalao勿喷)

【接箱子3.0】萌新一枚,dalao勿喷

本喵这个小萌新又来啦!(^_^)
这次又优化了一下代码
加上注释,四舍五入凑够了120行【滑稽】
很开心
———————————————————————————————
更新内容:
1.更大的地图
2.可以发射子弹(为什么会有子弹?)
3.可以满地图瞎跑了
4.修复穿墙BUG
———————————————————————————————

#include<iostream>
#include<ctime>//for srand(time(0));种子随时间生成 
//               for rand();随机数生成 
#include<conio.h>//for getch();键盘直接输入
//                 for kbhit();检测键盘是否输入 
#include<windows.h>//for Sleep(a);等待a 个千分之一秒 
//                   for system("cls");清屏 
using namespace std;
int main()
{
//////////初始化部分//////////
	cout<<"加载中...";
	srand(time(0));//种子随时间生成
    int zbrx=5,zbry=15;//定义人的坐标 
    int fen=0;//定义分数
    int fx=4,fy=0;//定义箱子XY坐标 
    int nan;//定义nan度 
    int runan;//定义输ru用难度 
    int dx=0,dy=0;//定义子弹坐标(为毛子会有子弹?)
	int fkk;//定义箱子一维坐标
	int ree;//定义人一维坐标
	int daa;//定义子弹一维坐标
	system("cls");//数据初始化完毕 
//////////主界面//////////	
    cout<<"接箱子3.0小游戏\n\n请先切换至\n英文输入法(Ctrl+空格)\n请全屏游玩!!!\n\n请输入难度\n(1~10,越高越难)\n";
	cin>>runan;//输入难度
	system("cls");
	cout<<"更新公告:\n1.更大的地图\n2.可以发射子弹(为什么会有子弹?)\n3.可以满地图瞎跑了\n4.修复穿墙BUG\n\n按任意键继续..."; 
	getch();
//////////地图、坐标创建//////////	  
    while(1)
    {// 252=14*18
    	int map[252]= {1,0,0,0,0,0,0,0,0,0,0,0,1,2,//一维数组地图创建+初始化,(可以省去部分代码)
                       1,0,0,0,0,0,0,0,0,0,0,0,1,2,//0 为 空;1 为 墙;2 为 \n(换行); 
	            	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,//...... 
	             	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	             	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	             	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
		               1,0,0,0,0,0,0,0,0,0,0,0,1,2,
      	        	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
              		   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	              	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	        	       1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	        	       1,0,0,0,0,0,0,0,0,0,0,0,1,2,
		               1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	              	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	             	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,
	             	   1,0,0,0,0,0,0,0,0,0,0,0,1,2,//这些是地图的基础设施
	             	   1,5,5,5,5,5,5,5,5,5,5,5,1,2,//   x: 1~11
		        	   1,0,0,0,0,0,0,0,0,0,0,0,1,2};//  y: 0~16	
        fkk=(fy*14)+fx; //箱子二维坐标转一维坐标
        ree=(zbry*14)+zbrx;//小人(误)二维坐标转一维坐标
        daa=(dy*14)+dx;//子弹二维坐标转一维坐标 
//////////输入及坐标更新////////// 
        dy--;//子弹向上飞
    	nan=11-runan; //难度转换
    	int ddd;////////////////////
    	ddd++;// 难度转换成箱子速度// 
        if((ddd%nan)==0)////////////
            fy++;//箱子下落 
/*输入*/if(kbhit()) //重点:kbhit()函数,【非阻塞函数】:计算机执行代码至此不会暂停 
		{
			char ch=getch();//getch()函数: 【阻塞函数】计算机执行代码至此会暂停 
			if((ch=='a')&&(zbrx>1))// 左移检测 【重点】 边界判定:小人不处于边界才能向此方向移动 
				zbrx--;
       	    if((ch=='d')&&(zbrx<11))//右移检测       	    
       	        zbrx++;
		    if((ch=='w')&&(zbry>0))//上移检测
			    zbry--;
			if((ch=='s')&&(zbry<16))//下移检测
			    zbry++;
			if(ch==' ')//发射子弹 
			{
				dx=zbrx;
				dy=zbry-1;
			}      	   
		}
//////////击败及得分系统//////////		      	
       	int sj=rand()%11+1;//生成1~ 11随机数用于箱子坐标 
       	if(fy>17)//失分判定 
       	{
       		fen--;//失一分 
			fy=0;//重置箱子坐标 
       		fx=sj;//
		}
		if((fkk==ree)||(fkk==daa))//得分判定
		{
			fen+=1;//得一分 
			fy=0 ;//重置箱子坐标 
       		fx=sj;//
       		dx=0 ;//重置子弹坐标 
			dy=0 ;//
       	}
//////////将数据写入地图(显示模块)//////////		
        map[fkk]=4;//-------------- ↓
		map[daa]=6;//  坐标转图案   ■ 
		map[ree]=3;//-------------- ↑
//////////地图(显示模块)//////////		  
    	system("cls");//日常清屏 
		cout<<"接箱子\n";
    	for(int cc=0;cc<=252;cc++)//利用for循环打印图案
	    {////                 ┗━━━━━━━━━━━━━━━┓
	    	int pan=map[cc];//从map数组中提取第‘cc’个数字 【cc自增】 
	    	switch(pan)//pan定打印图案类型
	    	{
	    		case 0: cout<<" ";break;//0 输出为 空 
	    		case 1: cout<<"|";break;// 1 输出为 | 
	    		case 2: cout<<"\n";break;//2 输出为“\n”即换行 
	    		case 3: cout<<"@";break;//3 输出为 @ 
	    		case 4: cout<<"#";break;//4 输出为 # 
	    		case 5: cout<<"_";break;//5 输出为 _ 
	    		case 6: cout<<"|";break;//6 输出为 子弹 “ |  ” 
	    	}
    	}
    	cout<<"你的分数:"<<fen<<"\n操作方法:\n使用WASD控制“@”\n接到箱子即可得分\n空格发射子弹\n(为什么有子弹?)\n\n功能预告:\n技能系统\n皮肤系统"<<endl;
    }
	return 0; 
}

重点思路什么的真的都在注释里,
再看不懂就是你的问题
制作不易求赞

发布了3 篇原创文章 · 获赞 1 · 访问量 763

猜你喜欢

转载自blog.csdn.net/A_K_L_Sing/article/details/104553988
今日推荐