我们不叫接箱子了,我们叫打灰机~
———————————————————————————————
最近脑子突然 一抽 转过来弯了,把360一卸,换成了火绒。然后,电脑速度嗖
嗖嗖的,小游戏弄的看不清…还好,加上了“等待”指令,闪烁又恢复正
常了。
【注】:155行“等待”指令可适当调整
———————————————————————————————
更新内容:
1.技能系统
2.退出、暂停系统
3.皮肤系统
4.调节初始界面顺序
———————————————————————————————
不多说,直接上源码:
#include
#include //for srand(time(0));种子随时间生成
// for rand();随机数生成
#include //for getch();键盘直接输入
// for kbhit();检测键盘是否输入
#include //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;//定义子弹一维坐标X
int jnxs;//定义技能显示坐标
system("cls");//数据初始化完毕
//主界面//
cout<<"打灰机1.0小游戏\n\n请先切换至\n英文输入法小写(Ctrl+空格)\n\n按任意键继续...";
getch();//按任意键继续 + 清屏
system("cls");
cout<<"更新公告:\n1.技能系统\n2.退出、暂停系统\n3.皮肤、大灰机系统\n4.调节初始界面顺序\n\n按任意键继续...";
getch();//按任意键继续 + 清屏
system("cls");
cout<<"请全屏游玩!!!\n\n请输入难度\n(1~10,越高越难)\n ";
cin>>runan;//输入难度
cout<<"请输入人物皮肤\n(可输入一个英文大小写字母或英文符号):\n ";
char rw;
cin>>rw;
cout<<"按任意键继续...";
getch();
//地图、坐标创建//
while(1)
{// 252=14*18
now: 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
7,2,9,9,9,9,9,9,9,9,9,9,10,0};// y: 0~16
fkk=(fy*14)+fx; //敌机二维坐标转一维坐标
ree=(zbry*14)+zbrx;//小人(误)二维坐标转一维坐标
daa=(dy*14)+dx;//子弹二维坐标转一维坐标
int sj=rand()%11+1;//生成1~ 11随机数用于箱子坐标
//输入及坐标更新//
dy--;//子弹向上飞
nan=11-runan; //难度转换
int ddd;
ddd++;// 难度转换成箱子速度//
if((ddd%nan)==0)
fy++;//箱子下落
/*技能*/if(fen>=5)//技能花费分数
map[250]=8;//显示技能就绪
map[251]=2;
/*输入*/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<15))//下移检测
zbry++;
if(ch==' ')//发射子弹
{
dx=zbrx;
dy=zbry-1;
}
if((ch=='f')&&(fen>=5))//技能
{
fen-=5;//重置技能 技能只使用一次
fen+=1;//得一分
fy=0 ;//重置箱子坐标
fx=sj;
}
if(ch=='+')//调试用
fen++;
if(ch=='p')//暂停检测
{
cout<<"暂停中...\n按任意键继续...";
getch();
}
if(ch=='q')//退出检测
goto ed;//跳转至 ed
}
//击败及得分系统//
if(fy>16)//失分判定
{
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;//-------------- ↑
map[fkk-15]=4;
map[fkk-13]=4;
map[ree+1]=11;
map[ree-1]=11;
map[ree-14]=11;
map[ree+15]=11;
map[ree+13]=11;
//地图(显示模块)//
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<<rw; break;//3 输出为 人物
case 4: cout<<"#"; break;//4 输出为 #
case 5: cout<<"_"; break;//5 输出为 _
case 6: cout<<"|"; break;//6 输出为 子弹 "|"
case 7: cout<<"技能:降维打击"; break;
case 8: cout<<"就绪!!(消耗5分)\n";break;
case 10:cout<<"未就绪(需要5分)\n";break;
case 11:cout<<"*"; break;
}
}
cout<<"你的分数:"<<fen<<"\n操作方法:\n使用WASD控制人物\n打到箱子即可得分\n空格发射子弹\nF键技能 Q键退出 P键暂停\n\n更新预告:\n机型选择+多种技能\n更大地图\n"<<endl;
Sleep(30);//等待30毫秒
}
//退出系统//
ed: bool opop=1;//利用布尔值判定是否退出
system("cls");
cout<<"确认退出?(AD键选择,Y键确认)\n >是< 否 \n";
while(1)
{
char edpd=getch();
if(edpd=='a')//检测 a
{
system("cls");
cout<<"确认退出?(AD键选择,Y键确认)\n >是< 否 \n";
opop=1;
}
if(edpd=='d')//检测 d
{
system("cls");
cout<<"确认退出?(AD键选择,Y键确认)\n 是 >否< ";
opop=0;
}
if(edpd=='y')//检测 y
{
if(opop)
goto end;//跳转至 end
else
goto now;//跳转至 now
}
}
end:return 0;
}
地图有点小…下次一定!
感觉还不赖的话,留个评论或者zan再走呗~