void gotoxy(int x,int y) //移动坐标 { COORD coord; coord.X=x; coord.Y=y; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); } void hidden()//隐藏光标 { HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cci; GetConsoleCursorInfo(hOut,&cci); cci.bVisible=0;//赋1为显示,赋0为隐藏 SetConsoleCursorInfo(hOut,&cci); } void create(int x,int y) //随机生成迷 { int c[4][2]={0,1,1,0,0,-1,-1,0}; //四个方向 int i,j,t; //将方向打乱 for(i=0;i<4;i++) { j=rand()%4; t=c[i][0];c[i][0]=c[j][0];c[j][0]=t; t=c[i][1];c[i][1]=c[j][1];c[j][1]=t; } map[x][y]=Road; for(i=0;i<4;i++) if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) { map[x+c[i][0]][y+c[i][1]]=Road; create(x+2*c[i][0],y+2*c[i][1]); } }
时间: 2023-11-24 13:05:23 浏览: 43
这段代码是用于随机生成迷宫的函数。函数名为create,参数为起点的坐标x和y。
其中,c数组表示四个方向,即向上、向下、向左、向右。i和j是循环计数器,t用于交换两个方向。首先将四个方向打乱,然后从起点开始,随机选取一个方向,如果该方向的下一个位置是墙壁,则将当前位置和下一个位置之间的墙壁打通,表示有一条路可以通行,然后递归调用create函数,以该方向的下一个位置为起点,继续生成迷宫。
最终生成的迷宫是一个由Road和Wall组成的二维数组,Road表示可以通行的路,Wall表示不可通行的墙壁。
相关问题
void gotoxy(HANDLE hOut, int x, int y) { COORD pos; pos.X = x; //横坐标 pos.Y = y; //纵坐标 SetConsoleCursorPosition(hOut, pos); } 这代码什么意思
这段代码定义了一个名为 `gotoxy` 的函数,用于将控制台光标移动到指定的位置。参数 `hOut` 是控制台输出的句柄,参数 `x` 和 `y` 是要移动到的横坐标和纵坐标。函数内部创建了一个 `COORD` 结构体变量 `pos`,并将 `x` 和 `y` 分别赋值给 `pos` 的 `X` 和 `Y` 成员变量。最后调用了 Windows API 函数 `SetConsoleCursorPosition`,将光标移动到 `pos` 所指定的位置。
void gotoxy(int x, int y) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); }
这段代码是一个实现在控制台中移动光标位置的函数。具体而言,代码中的 gotoxy 函数接受两个参数,表示要移动到的目标位置的横坐标和纵坐标。函数内部使用了 Windows API 的 SetConsoleCursorPosition 函数来设置控制台光标的位置,该函数需要传入一个控制台句柄和一个 COORD 类型的结构体作为参数。在这里,我们使用 GetStdHandle 函数获取了标准输出的句柄,然后将目标位置的横坐标和纵坐标分别赋值给 COORD 结构体的 X 和 Y 字段,最后将结构体传入 SetConsoleCursorPosition 函数即可实现光标的移动。