#include<zyh.h>
using namespace std;
int x=29,y=29,q;
char G[40][40];
void chu(){
for(int i=0;i<40;i++){
for(int j=0;j<40;j++)
G[i][j]=' ';
}
}
void map1(){
G[x][y]='#';
color(11);
for(int i=1;i<=42;i++)
cout<<'*';
cout<<endl;
for(int i=0;i<40;i++){
color(11);
cout<<'*';
color(14);
for(int j=0;j<40;j++)
cout<<G[i][j];
color(11);
cout<<'*';
cout<<endl;
}
color(11);
for(int i=1;i<=42;i++)
cout<<'*';
color(7);
}
void sui(){
G[x][y]=' ';
int xa;
srand(time(0)+q);
if(x==0&&y==0){
xa=rand()%2;
if(xa==0){
y++;
}else{
x++;
}
}else if(x==0&&y==39){
xa=rand()%2;
if(xa==0){
x--;
}else{
y++;
}
}else if(x==39&&y==0){
xa=rand()%2;
if(xa==0){
x++;
}else{
y--;
}
}else if(x==39&&y==39){
xa=rand()%2;
if(xa==0){
y--;
}else{
x--;
}
}else if(x==0&&(y>0&&y<39)){
xa=rand()%3;
if(xa==0)
x++;
else if(xa==1)
y--;
else
y++;
}else if(y==0&&(x>0&&x<39)){
xa=rand()%3;
if(xa==0)
x++;
else if(xa==1)
x--;
else
y++;
}else if(y==39&&(x>0&&x<59)){
xa=rand()%3;
if(xa==0)
x++;
else if(xa==1)
x--;
else
y--;
}else if(x==39&&(y>0&&y<59)){
xa=rand()%3;
if(xa==0)
y++;
else if(xa==1)
x--;
else
y--;
}else{
xa=rand()%4;
if(xa==0)
y--;
else if(xa==1)
y++;
else if(xa==2)
x--;
else
x++;
}
}
int main(){
system("title 随机移动");
system("mode con cols=44 lines=42");
h();
x=0;
y=0;
chu();
while(1){
map1();
sui();
Sleep(100);
system("cls");
q++;
if(q==2000)
q=0;
}
return 0;
}
写这个程序时没有太多写注释的意识,所以来讲解一下!
函数功能如下:
chu() | 初始化程序数组 |
map1() | 画出数组特效 |
sui() | 实现#随机移动 |
这里有几个值得说一下的地方:
1.system("cls") 实现清屏
2.随机数:rand()一个程序第一次运行是随机,以后都不变了。
加上sand(time(0)); 可以使用随机数种子,因为每一次打开时间不一样,所以看起来是随机。
3.限制
#位置有9种情况,4边4角和中间,每一种不一样的判断,所以sui()最复杂。
这个程序比较简单,不过作为随机数练习就不错,以后改进一下,加几面墙,到时再发表。
我是初学者,欢迎大家在评论区指教指教。