【接箱子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;
}
制作不易,求赞