生命游戏C++

生命游戏一般指康威生命游戏,是由剑桥大学约翰.何顿.康威设计的计算机程序。生命游戏既没有玩家之间的竞争,也没有输赢,可以归类为仿真游戏。因为其模拟和显示的图像看起来像具有生命的出生、繁衍过程,而被称之为“生命游戏”。

生命游戏规定,每个方格可以放置一个生命细胞,而每个生命细胞只有生和死两种状态。规定:

  1. 当前细胞为死亡状态时,当周围由3个存活细胞时,迭代后该细胞变成存活状态;若原先为生,则保持不变;

  1. 当前细胞为存活状态,而周围的邻居细胞小于两个存活时,则细胞死亡;

  1. 细胞为存活状态,而周围细胞存活数为2或3时,该细胞状态保持不变;

  1. 当细胞状态为存活状态,而周围存活了大于3个细胞时,则细胞死亡。

使用graphics库进行图形化

代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include 
#include //用来支持图形化的库
#include //刷新函数的头文件
#include 

#define WIDTH 540
#define HEIGHT 540
#define N 110
#define SIZE 5//细胞边长

int map[N+2][N+2];//创建初始化的细胞世界
int next[N + 2][N + 2];//存储下一刻的世界
int count;
char str[20]=" ";
int speed;//存放速度


void welcome()
{
    initgraph(WIDTH, HEIGHT);//创建窗口
    setbkcolor(RGB(200,155,200));
    cleardevice();//清屏
    settextstyle(40, 0, "楷体");
    settextcolor(BLUE);
    outtextxy(150,40,"生命游戏");//出现生命游戏标题的位置
    outtextxy(200, 300, "按空格暂停");
    outtextxy(80, 100, "按数字键控制速度");

    int c = 250;
    while (!_kbhit())//检测按键
    {
        c -= 3;
        if (c < 0)
        {
            c = 25;
        }
        settextcolor(RGB(20, c, 20));
        outtextxy(150, 350, "按任意键继续");
    }
    _getch();//任意键刷新
    cleardevice();//刷新
}

void initDATA()
{
    for (int i = 0;i < N+2;i++)
    {
        for (int j=0;j '0' && ch<'9')//用户输入数字以改变速度
        {
            speed = ('9'-ch) * 100;
        }
    }
}

int main()
{
    welcome();
    initDATA();
    recDETA();

    while (1)
    {
        drawGame();
        Sleep(speed);
        ruleGame();
        keyDOWN();
    }
    closegraph();//关闭窗口
    return 0;
}

你可能感兴趣的:(编程,算法,c++,数据结构)