c++随机移动代码讲解

#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()最复杂。

这个程序比较简单,不过作为随机数练习就不错,以后改进一下,加几面墙,到时再发表。

我是初学者,欢迎大家在评论区指教指教。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c++学生

你的鼓励是我进步的台阶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值