#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include<time.h>
#define random(x) rand()%(x)
using namespace std;
string room[5][5];
bool check[5][5]={false};
char b='NUT';
// 辅助函数用于随机分配房间类型
void roomtype(string type, int count){
for(int i=1;i<=count;i++){
int x=random(5);
int y=random(5);
if(check[x][y]==true){
while(check[x][y]==true){
x=random(5);
y=random(5);
}
}
room[x][y]=type;
check[x][y]=true;
}
}
//plain iland*6
//stone key *4
//magic iland *8
//gold key*1
//prop*4
//exit*1
//all 24
void randomroom(){
check[3][3]=true;
roomtype("plain", 6);
roomtype("stone", 4);
roomtype("magic", 8);
roomtype("gold ", 1);
roomtype("prop ", 4);
roomtype("exit ", 1);
room[3][3]="start";
}
int main() {
srand(time(0));
randomroom();
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
cout<<room[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
设想,将25个房间除了起始点(3,3)其余的按照随机顺序生成。则最后输出应该为注释中的各房间数量的5×5的方阵
实际输出
输出一、 gold magic magic plain prop magic magic plain plain stone stone stone start prop stone magic magic prop plain
输出二、 stone stone magic magic magic gold exit prop stone plain plain magic start plain magic plain plain stone prop
输出三、 prop gold stone plain magic plain magic exit plain stone stone prop start magic magic stone magic magic plain
可见都比设想的结果少六个(一行零一列) 求调