#include<iostream>
using namespace std;
#include <ctime>
#include <cstdlib>
#include<string.h>
#include<windows.h>
class map
{
public:
int *tu;//=new int[100];
int player1_num,player2_num;
suiji();
show_map();
show(int *num,int n1,int n2);
//show_game();
start_game();
wanjia(char *n1,char *n2);
//player_move(int &a,int &b);
player1_move(int &a1,int &a2);
player2_move(int &a1,int &a2);
int state1,state2;
};
map::suiji()
{player1_num=0,player2_num=0; state1=0,state2=0;
int i,k;
int num;
srand(unsigned(time(0)));
tu=new int[100];
for(i=0;i<100;i++)
{
tu[i]=0;
}
for(k=0;k<6;k++) //幸运轮盘
{
do {
num=rand()%99;
} while(tu[num]!=0);
tu[num]=1;
}
for(k=0;k<8;k++) //地雷
{
do {
num=rand()%99;
} while(tu[num]!=0);
tu[num]=2;
}
for(k=0;k<5;k++) //暂停
{
do {
num=rand()%99;
} while(tu[num]!=0);
tu[num]=3;
}
for(k=0;k<7;k++) //时空隧道
{
do {
num=rand()%99;
} while(tu[num]!=0);
tu[num]=4;
}
}
map::show_map() //展示原地图
{int i,j;
cout<<"起点 1.男 2.女"<<endl;
for(i=0;i<30;i++)
{
if(tu[i]==0) cout<<"∷";//普通
else if(tu[i]==1) cout<<"¤";//幸运轮盘
else if(tu[i]==2) cout<<"★";//地雷
else if(tu[i]==3) cout<<"■";//暂停
else if(tu[i]==4) cout<<"〓";//时空隧道
else if(tu[i]==5) cout<<"男";
else if(tu[i]==6) cout<<"女";
}
cout<<endl;
for(i=30;i<35;i++)
{
for(j=0;j<29;j++) cout<<" ";
if(tu[i]==0) cout<<"∷";
else if(tu[i]==1) cout<<"¤";
else if(tu[i]==2) cout<<"★";
else if(tu[i]==3) cout<<"■";
else if(tu[i]==4) cout<<"〓";
else if(tu[i]==5) cout<<"男";
else if(tu[i]==6) cout<<"女";
cout<<endl;
}
//cout<<endl;
for(i=64;i>34;i--)
{
if(tu[i]==0) cout<<"∷";
else if(tu[i]==1) cout<<"¤";
else if(tu[i]==2) cout<<"★";
else if(tu[i]==3) cout<<"■";
else if(tu[i]==4) cout<<"〓";
else if(tu[i]==5) cout<<"男";
else if(tu[i]==6) cout<<"女";
}
cout<<endl;
for(i=65;i<70;i++)
{if(tu[i]==0) cout<<"∷";
else if(tu[i]==1) cout<<"¤";
else if(tu[i]==2) cout<<"★";
else if(tu[i]==3) cout<<"■";
else if(tu[i]==4) cout<<"〓";
else if(tu[i]==5) cout<<"男";
else if(tu[i]==6) cout<<"女";
cout<<endl;
}
for(i=70;i<=99;i++)
{if(tu[i]==0) cout<<"∷";
else if(tu[i]==1) cout<<"¤";
else if(tu[i]==2) cout<<"★";
else if(tu[i]==3) cout<<"■";
else if(tu[i]==4) cout<<"〓";
else if(tu[i]==5) cout<<"男";
else if(tu[i]==6) cout<<"女";
}
cout<<"终点"<<endl;
}
map::show(int *num,int n1,int n2) //画出地图
{int i,j;
num[n1-1]=5; num[n2-1]=6;
system("cls");
cout<<"起点 1.男 2.女"<<endl;
for(i=0;i<30;i++)
{
if(num[i]==0) cout<<"∷";//普通
else if(num[i]==1) cout<<"¤";//幸运轮盘
else if(num[i]==2) cout<<"★";//地雷
else if(num[i]==3) cout<<"■";//暂停
else if(num[i]==4) cout<<"〓";//时空隧道
else if(num[i]==5) cout<<"男";
else if(num[i]==6) cout<<"女";
}
cout<<endl;
for(i=30;i<35;i++)
{
for(j=0;j<29;j++) cout<<" ";
if(num[i]==0) cout<<"∷";
else if(num[i]==1) cout<<"¤";
else if(num[i]==2) cout<<"★";
else if(num[i]==3) cout<<"■";
else if(num[i]==4) cout<<"〓";
else if(num[i]==5) cout<<"男";
else if(num[i]==6) cout<<"女";
cout<<endl;
}
//cout<<endl;
for(i=64;i>34;i--)
{
if(num[i]==0) cout<<"∷";
else if(num[i]==1) cout<<"¤";
else if(num[i]==2) cout<<"★";
else if(num[i]==3) cout<<"■";
else if(num[i]==4) cout<<"〓";
else if(num[i]==5) cout<<"男";
else if(num[i]==6) cout<<"女";
}
cout<<endl;
for(i=65;i<70;i++)
{if(num[i]==0) cout<<"∷";
else if(num[i]==1) cout<<"¤";
else if(num[i]==2) cout<<"★";
else if(num[i]==3) cout<<"■";
else if(num[i]==4) cout<<"〓";
else if(num[i]==5) cout<<"男";
else if(num[i]==6) cout<<"女";
cout<<endl;
}
for(i=70;i<=99;i++)
{if(num[i]==0) cout<<"∷";
else if(num[i]==1) cout<<"¤";
else if(num[i]==2) cout<<"★";
else if(num[i]==3) cout<<"■";
else if(num[i]==4) cout<<"〓";
else if(num[i]==5) cout<<"男";
else if(num[i]==6) cout<<"女";
}
cout<<" 终点"<<endl;
}
map::start_game()
{int num;
cout<<"请选择玩家:";
cin>>num;
switch(num)
{
case 1:
wanjia("玩家男","电脑女"); break;
case 2:
wanjia("玩家女","电脑男");break;
}
}
map::wanjia(char *n1,char *n2)
{
int num1,num2;
int i,num[100];
int yuan1,yuan2;
yuan1=player1_num;
yuan2=player2_num;
do
{
if(state1==0)
{
srand(unsigned(time(0)));
cout<<n1<<"请投掷骰子.....";
getchar();
num1=rand()%6+1;
cout<<num1;
if(num1==6)
{
state1=1;
cout<<"玩家飞机起飞!"<<endl;
cout<<"飞行中请投掷骰子...";
getchar();
num2=rand()%6+1;
player1_num+=num2;
cout<<num2;
}
getchar();
for(i=0;i<100;i++)
num[i]=tu[i];
system("cls");
show(num,player1_num,player2_num);
//getchar();
}
else
{
srand(unsigned(time(0)));
cout<<n1<<"请投掷骰子.....";
getchar();
num1=rand()%6+1;
player1_num+=num1;
cout<<num1<<endl;
if(player1_num==player2_num)
{player1_num-=1;
cout<<"电脑已经在此降落,倒退1格"<<endl;
}
if(player1_num>100)
{ int snu;
snu=player1_num-100;
cout<<"超过预定高度,无法降落,返回"<<(player1_num-100)<<"格"<<endl;
player1_num=100-snu;
if(player1_num==player2_num)
{player1_num-=1;
cout<<"电脑已经在此降落,再倒退1格"<<endl;
}
}
else if(player1_num==player2_num)
{
cout<<"电脑已降落,玩家无法降落,倒退3格到";
player1_num-=3;
}
cout<<player1_num<<endl;
player1_move(player1_num,player2_num);
getchar();
for(i=0;i<100;i++)
num[i]=tu[i];
show(num,player1_num,player2_num);
if(player1_num==100)
{
cout<<"玩家胜!"<<endl; return 0;
}
}
if(state2==0)
{
srand(unsigned(time(0)));
cout<<n2<<"投掷骰子.....";
num1=rand()%6+1;
cout<<endl<<num1;
if(num1==6)
{
state2=1;
cout<<"电脑飞机起飞!";
cout<<"飞行中请投掷骰子...";
num2=rand()%6+1;
cout<<num2;
player2_num+=num2;
}
getchar();
system("cls");
for(i=0;i<100;i++)
num[i]=tu[i];
show(num,player1_num,player2_num);
}
else
{
cout<<n2<<"投掷骰子"<<endl;
srand(unsigned(time(0)));
num2=rand()%6+1; player2_num+=num2;
cout<<num2<<endl;
if(player2_num==player1_num)
{player2_num-=1;
cout<<"玩家已经在此降落,倒退1格"<<endl;
}
if(player2_num>100)
{ int snum;
snum=player2_num-100;
cout<<"超过预定高度,无法降落,返回"<<(player2_num-100)<<"格"<<endl;
player2_num=100-snum;;
if(player2_num==player1_num)
{player2_num-=1;
cout<<"玩家已经在此降落,再倒退1格"<<endl;
}
}
else if(player2_num==player1_num)
{
cout<<"玩家已降落,电脑无法降落,倒退3格";
player2_num-=3;
}
cout<<player2_num<<endl;
player2_move(player1_num,player2_num);
getchar();
for(i=0;i<100;i++)
num[i]=tu[i];
show(num,player1_num,player2_num);
if(player2_num==100)
{
cout<<"电脑胜!"<<endl; return 0;
}
}
}while(player1_num!=100||player2_num!=100);
}
map::player1_move(int &a1,int &a2)
{
int i,a3,num2;
int y1;
int num[100];
y1=a1;
int k1;
k1=a1;
srand(unsigned(time(0)));
for(i=0;i<100;i++)
num[i]=tu[i];
int add;
int addnum[4]={2,5,8,11};
if(tu[y1-1]==1) //幸运轮盘
{ if(player2_num-a1>3)
{ cout<<"AB交换位置";
a3=a1;a1=player2_num;player2_num=a3;
}
else {player2_num=player2_num-3;if(player2_num<0) player2_num=0; cout<<"轰炸,电脑B倒退3格到"<<player2_num<<endl;}
}
else if(tu[y1-1]==2) //地雷
{
a1=a1-2;
if(a1<0) a1=0;
cout<<"玩家A踩到地雷了!倒退2格到"<<a1<<endl;
}
else if(tu[y1-1]==3)//暂停
{ system("cls");
//清屏
show(num,a1,a2);
cout<<"玩家暂停中......"<<endl; //清屏
cout<<"电脑"<<"投掷骰子"<<endl;
srand(unsigned(time(0)));
num2=rand()%6+1; player2_num+=num2;
cout<<num2<<endl;
for(i=0;i<100;i++)
num[i]=tu[i];
show(num,player1_num,player2_num);
}
else if(tu[y1-1]==4) {//时空隧道
int shu1=a1;
srand(unsigned(time(0