时间:2022-08-09 08:33:35 | 栏目:C代码 | 点击:次
本文实例为大家分享了C语言实现骑士飞行棋的具体代码,供大家参考,具体内容如下
/* Author Mr.Long * Date 2015年12月2日17:33:17 */ #include<iostream> #include<string> #include<windows.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x) using namespace std; string player[2]={"玩家A","玩家B"}; int map[100]; int playerPos[2]={0,0}; int gamePlayer = 0; bool isGameOver = false; int winer = -1; int pausePlayer = -1; //0□正常 1☆幸运轮盘 2◎地雷 3△暂停 4?d时空隧道 string getLogo(int pos){ string res = "□"; if((playerPos[0] == pos) && (playerPos[1] == pos)){ res = "<>"; }else if(playerPos[0]==pos){ res = "A"; }else if(playerPos[1]==pos){ res = "B"; }else{ switch(map[pos]){ case 1: res = "☆"; // 幸运轮盘 break; case 2: res = "◎"; // 地雷 break; case 3: res = "△"; // 暂停 break; case 4: res = "?d"; // 时空隧道 break; } } return res; } void drowMap(){ //绘制地图 for(int i = 0;i<=29;++i){ cout<<getLogo(i); } cout<<endl; for(int i = 30;i<=34;++i){ for(int j = 0;j<=28;j++){ cout<<" "; } cout<<getLogo(i)<<endl;; } for(int i =64;i>=35;i--){ cout<<getLogo(i); } cout<<endl; for(int i = 65;i<=69;++i){ cout<<getLogo(i)<<endl; } for(int i = 70;i<=99;i++){ cout<<getLogo(i); } cout<<endl; cout<<"地图说明:【☆幸运轮盘 ?d时空隧道 ◎地雷 △暂停 <>玩家同处一个位置】"<<endl; } void gameOver(){ //游戏结束 isGameOver = true; winer = gamePlayer; playerPos[gamePlayer]=99; system("cls"); drowMap(); cout<<"***游戏结束!恭喜["<<player[gamePlayer]<<"]取得胜利!"<<endl; system("PAUSE"); } void initMap(){ //初始化地图 int luckyTurn[] = {6,23,40,55,69,83};//幸运轮盘1 int landMine[] = {5,13,17,33,38,50,64,80,94};//地雷2 int pause[] = {9,27,60,93};//暂停3 int timeTunnel[] = {20,25,45,63,72,88,90};//时空隧道4 int i; for(i =0;i<6;++i){ int pos = luckyTurn[i]; map[pos] = 1; } for(i =0;i<9;++i){ int pos = landMine[i]; map[pos] = 2; } for(i =0;i<4;++i){ int pos = pause[i]; map[pos] = 3; } for(i =0;i<7;++i){ int pos = timeTunnel[i]; map[pos] = 4; } } void initUI(){ //初始化界面 cout<<"*******************小游戏*****************"<<endl; cout<<"* *"<<endl; cout<<"* 骑士飞行棋 *"<<endl; cout<<"* *"<<endl; cout<<"****************@诗意的叛逆***************"<<endl; } void joinPlayer(){ //加入玩家 string tmpStr = ""; cout<<"请输入玩家A的名字___" <<endl; cin>>tmpStr; while(tmpStr==""){ cout<<"玩家名字不能为空请重新输入___" <<endl; cin>>tmpStr; } player[0] = "A" + tmpStr; cout<<"请输入玩家B的名字___" <<endl; cin>>tmpStr; while(tmpStr==""){ cout<<"玩家名字不能为空请重新输入___" <<endl; cin>>tmpStr; } while(tmpStr == player[0]){ cout<<"玩家名字不能重复,请重新输入___" <<endl; cin>>tmpStr; } player[1] = "B" + tmpStr; system("cls"); cout<<"***玩家加入成功..."<<endl; cout<<"***地图中[A]表示玩家["<<player[0]<<"]的位置..."<<endl; cout<<"***地图中[B]表示玩家["<<player[1]<<"]的位置..."<<endl; } void yaoYiYao(){ //投掷骰子 short number = 0; while(!isGameOver){ char a; cout<<"***请["<<player[gamePlayer]<<"]输入g投掷骰子..."<<endl; cin>>a; if(a=='g'){ system("cls"); number = random(6)+1; cout<<"***玩家["<<player[gamePlayer]<<"]投掷的骰子数为:"<<number<<endl; playerPos[gamePlayer] += number; int pos = playerPos[gamePlayer]; if(pos >=99){ gameOver(); }else{ switch(map[pos]){ case 0: if(pausePlayer = -1){ gamePlayer = !gamePlayer; }else if(pausePlayer = 0){ pausePlayer++; }else if(pausePlayer = 1){ pausePlayer = -1; } break; case 1: int cnumber; cout<<"***哇哦!玩家["<<player[gamePlayer]<<"]获得幸运转一转的机会..."<<endl; cout<<"***请输入数字选择要进行的操作...."<<endl; cout<<"1--与对方交换位置"<<endl<<"2--轰炸对方"<<endl; cin>>cnumber; if(cnumber == 1){ int t = 0; t = playerPos[gamePlayer]; playerPos[gamePlayer] = playerPos[!gamePlayer]; playerPos[!gamePlayer] = t; }else if(cnumber == 2){ playerPos[!gamePlayer] -=6 ; }else{ cout<<"输入非规定数字!机会丢失。"<<endl; } gamePlayer = !gamePlayer; break; case 2: cout<<"***啊哦!玩家["<<player[gamePlayer]<<"]踩到地雷啦,后退6步..."<<endl; playerPos[gamePlayer] -= 6; gamePlayer = !gamePlayer; break; case 3: cout<<"***悲剧呀!玩家["<<player[gamePlayer]<<"]暂停投掷一次..."<<endl; pausePlayer = 0; gamePlayer = !gamePlayer; break; case 4: cout<<"***真棒!玩家["<<player[gamePlayer]<<"]穿越时空隧道..."<<endl; playerPos[gamePlayer] += 10; if(playerPos[gamePlayer]>=99){ gameOver(); } gamePlayer = !gamePlayer; break; } } }else if(a == 'a'){ winer = 0; gameOver(); }else if(a == 'b'){ winer = 1; gameOver(); } for(int i=0;i<=1;i++){ if(playerPos[i]<0) playerPos[i] = 0; } if(!isGameOver){ drowMap(); } } } int main(){ srand((unsigned)time(NULL)); initUI(); cout<<"***开始初始化玩家设置..."<<endl; joinPlayer(); initMap(); drowMap(); cout<<"***本场游戏开始:["<<player[0]<<"] VS ["<<player[1]<<"]"<<endl; gamePlayer = random(2); yaoYiYao(); return 0; }