随机走动——醉酒蟑螂
来源:互联网 发布:python运行空间 编辑:程序博客网 时间:2024/04/28 21:44
//一只喝醉了的蟑螂在N*M的方格中爬,它可以沿八个方向任意的爬,沿八个方向的概率相等。
//蟑螂不会爬出方格,打印蟑螂爬满所有格子的行迹
#include<stdio.h>
#include<conio.h>//getch()
#include<string.h>//memset函数
#include<windows.h> //SetConsoleCursorPosition()函数
#include<stdlib.h>//srand()函数和rand()函数
#include<time.h>//time()函数
//界面数组的大小
#define N 10
#define M 10
void init();
void display();
void move();
void goto_xy(int x, int y);
int array[N][M];//界面数组
struct roach//蟑螂的坐标结构体
{
int x;
int y;
}roach;
int d[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};//八个方向数组,从右边开始,顺时钟方向转
int dir;//方向,取值0~7
int cell = N*M;
int main()
{
init();
while(cell != 0)
{
move();
sleep(50);//每走一格延时200ms
}
getch();
return 0;
}
void init()
{
srand((unsigned)time(NULL));;//初始化随机发生器
memset(array,0,sizeof(array));//将数组中全部置0
roach.x = rand()%N;//开始时随机生成蟑螂的横坐标
roach.y = rand()%M;//开始时随机生成蟑螂的纵坐标
display();//显示界面
array[roach.x][roach.y] = 1;
goto_xy(roach.y<<1,roach.x);
printf("%2c",2);//将当前格置为蟑螂,用值为2的ASCII码图形表示
cell--;//蟑螂每走过一个空格就将cell减去1
}
void move()
{
do
{
dir = rand()&7;//随机生成0~7的随机值
}while(roach.x+d[dir][0]<0||roach.x+d[dir][0]==N||roach.y+d[dir][1]<0||roach.y+d[dir][1]==M);
if(array[roach.x+d[dir][0]][roach.y+d[dir][1]] == 0)//只有蟑螂走进空格才能使cell减一
{
cell--;
}
array[roach.x][roach.y] = 1;
goto_xy(roach.y<<1,roach.x);
printf("■");//蟑螂走过的路显示的图案
roach.x += d[dir][0];
roach.y += d[dir][1];
array[roach.x][roach.y] = 1;
goto_xy(roach.y<<1,roach.x);
printf("%2c",2);//将当前格置为蟑螂
}
void display()
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("□");//开始时显示的画面
}
printf("\n");
}
}
void goto_xy(int x, int y)
{
HANDLE hOut;
COORD coord;
coord.X = x;coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
//蟑螂不会爬出方格,打印蟑螂爬满所有格子的行迹
#include<stdio.h>
#include<conio.h>//getch()
#include<string.h>//memset函数
#include<windows.h> //SetConsoleCursorPosition()函数
#include<stdlib.h>//srand()函数和rand()函数
#include<time.h>//time()函数
//界面数组的大小
#define N 10
#define M 10
void init();
void display();
void move();
void goto_xy(int x, int y);
int array[N][M];//界面数组
struct roach//蟑螂的坐标结构体
{
int x;
int y;
}roach;
int d[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};//八个方向数组,从右边开始,顺时钟方向转
int dir;//方向,取值0~7
int cell = N*M;
int main()
{
init();
while(cell != 0)
{
move();
sleep(50);//每走一格延时200ms
}
getch();
return 0;
}
void init()
{
srand((unsigned)time(NULL));;//初始化随机发生器
memset(array,0,sizeof(array));//将数组中全部置0
roach.x = rand()%N;//开始时随机生成蟑螂的横坐标
roach.y = rand()%M;//开始时随机生成蟑螂的纵坐标
display();//显示界面
array[roach.x][roach.y] = 1;
goto_xy(roach.y<<1,roach.x);
printf("%2c",2);//将当前格置为蟑螂,用值为2的ASCII码图形表示
cell--;//蟑螂每走过一个空格就将cell减去1
}
void move()
{
do
{
dir = rand()&7;//随机生成0~7的随机值
}while(roach.x+d[dir][0]<0||roach.x+d[dir][0]==N||roach.y+d[dir][1]<0||roach.y+d[dir][1]==M);
if(array[roach.x+d[dir][0]][roach.y+d[dir][1]] == 0)//只有蟑螂走进空格才能使cell减一
{
cell--;
}
array[roach.x][roach.y] = 1;
goto_xy(roach.y<<1,roach.x);
printf("■");//蟑螂走过的路显示的图案
roach.x += d[dir][0];
roach.y += d[dir][1];
array[roach.x][roach.y] = 1;
goto_xy(roach.y<<1,roach.x);
printf("%2c",2);//将当前格置为蟑螂
}
void display()
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("□");//开始时显示的画面
}
printf("\n");
}
}
void goto_xy(int x, int y)
{
HANDLE hOut;
COORD coord;
coord.X = x;coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
- 随机走动——醉酒蟑螂
- 随机漫步问题 :醉酒的蟑螂
- 随机走动问题
- 随机走动的模拟
- C_Random Walk随机走动问题
- 蟑螂
- 醉酒
- 醉酒
- OpenCV学习——安防监控可疑走动报警
- OpenCV学习——安防监控可疑走动报警
- <Win32_18>平滑的人物走动 —— 解决闪屏
- 驱赶 蟑螂
- 蟑螂效应
- 醉酒了,
- 醉酒后...
- 20081207-醉酒
- 一次醉酒
- 醉酒仙
- IPhone开发秘籍(第2版)中文
- 解决IE6、7、8中的按钮、select边框背景色
- 一生何求
- SQL OVER的运用。
- SQL Server 2008性能监视
- 随机走动——醉酒蟑螂
- 自定义JSTL函数
- Oracle管理控制文件
- 我多想告诉你
- hdu1425 sort
- Vim入门(一)
- 红尘恋歌
- tomcat资源泄漏
- 约瑟夫环