【接箱子2.0】新手划过,dalao勿喷

【接箱子2.0】新手划过,dalao勿喷

哈喽,本喵这个萌新又回来啦!(^_^)
这次前前后后优化了好多次代码,终于…
我的代码突破80行啦!
开心
———————————————————————————————
更新内容:
1.箱子自动下落
2.难度可选择(推荐难度6)
3.优化UI(这叫UI? )及算法
———————————————————————————————

#include<iostream>
#include<ctime>
#include<conio.h>//for getch();键盘直接输入
//                 for kbhit();检测键盘是否输入 
#include<windows.h>//for Sleep(a);等待a 个千分之一秒 
//                   for system("cls");清屏 
using namespace std;
int main()
{
	srand(time(0));//种子随时间生成
    int zbrx=4; //定义人的坐标(只有横坐标) 
    int fen=0;//定义分数
    int fx=4,fy=0;//定义箱子XY坐标 
    int nan;//定义nan度 
	int map[100]={1,0,0,0,0,0,0,0,1,2,//一维数组地图创建, 
	              1,0,0,0,0,0,0,0,1,2,//0 为 空;1 为 墙;2 为 \n(换行); 
	              1,0,0,0,0,0,0,0,1,2,
	              1,0,0,0,0,0,0,0,1,2,
	              1,0,0,0,0,0,0,0,1,2,
	              1,0,0,0,0,0,0,0,1,2,
	              1,0,0,0,0,0,0,0,1,2,
	              1,0,0,0,0,0,0,0,1,2,
	              1,0,0,0,0,0,0,0,1,2,
	              1,5,5,5,5,5,5,5,1,2};
//初始化完毕 
    cout<<"接箱子2.0小游戏\n按空格键开始\n\n请先切换至\n英文输入法(Ctrl+空格)\n\n请输入难度\n(1~10,越高越难)\n";
    int runan;//定义输ru用难度 
	cin>>runan;//输入 
	nan=11-runan; //难度转换 
    while(1)
    {
        int fkk=(fy*10)+fx; //箱子二维坐标转一维坐标
        int ree=90+zbrx;//小人(误)坐标转一维坐标
		if(kbhit()) //重点:kbhit()函数,【非阻塞函数】:计算机执行代码至此不会暂停 
		{
			char ch=getch();//getch()函数: 【阻塞函数】计算机执行代码至此会暂停 
			if(ch=='a')// 左移检测 
			{
				zbrx--;
       	        ree=90+zbrx;
       	        map[ree+1]=5;
			}
       	    if(ch=='d')//右移检测 
       	    {
       	    	 zbrx++;
       	        ree=90+zbrx;
             	map[ree-1]=5;
			}       	   
		}       	
       	int sj=rand()%7+1;//生成1~ 7随机数用于箱子 
       	if(fy==9)//失分判定 
       	{
       		fen--;
       		fy=0;//重置箱子坐标 
       		fx=sj;//
		}
		if(fkk==ree)//得分判定 
			fen+=2;
    	int ddd;////////////////////
    	ddd++; //   难度转换成速度// 
        if((ddd%nan)==0)//        //
            fy++;///////////////////
        map[fkk]=4;//-------------- ↓ 
        map[fkk-10]=0;//坐标转图案  ■ 
		map[ree]=3; //------------- ↑ 
    	system("cls");//日常清屏 
		cout<<"接箱子\n"; 
    	for(int cc=0;cc<=100;cc++)//利用for循环打印图案
	    {	
	    	char out;
	    	int pan=map[cc];
	    	switch(pan)//pan定打印图案类型
	    	{
	    		case 0: out=' ';break;//0显示为 空 
	    		case 1: out='|';break;// 1 显示为 | 
	    		case 2: out='\n';break;//。。。 
	    		case 3: out='@';break;//
	    		case 4: out='#';break;//
	    		case 5: out='_';break;//别找啦,还是没有出界判定
	    	}
	    	cout<<out;//输出打印图案 ‘out’
    	}
    	cout<<"你的分数:"<<fen<<"\n操作方法:\n“A”为左移\n“D”为右移\n"<<endl;
    }
	return 0; 
}

制作不易,求赞

发布了2 篇原创文章 · 获赞 0 · 访问量 470

猜你喜欢

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