#include <iostream>
using namespace std;
#include "basic.h"
#include "empty.h"
#include "grass.h"
#include "rabbit.h"
#include "fox.h"
#include "world.h"
World::World(int index)
{
curMap=new Map[N];
initWorld(); //初始化世界,默认为全空
switch(index)
{
case WORLD_OF_GRASS:
worldOfGrass();
break;
case WORLD_OF_RABBIT:
worldOfRabbit();
break;
case WORLD_OF_FOX:
worldOfFox();
break;
}
}
void World::initWorld()
{
for (int i=0;i<N;i++)
for (int j=0;j<N;j++)
{
(*curMap)[i][j]=EMPTY;
}
}
void World::worldOfGrass()
{
//待补充
}
void World::worldOfRabbit()
{
//待补充
}
void World::worldOfFox()
{
for (int i=2;i<N-2;++i)
for (int j=2;j<N-2;++j)
{
if ((i+j)%3==0)
{
(*curMap)[i][j]=RABBIT;
}
else
{
if ((i+j)%3==1)
{
(*curMap)[i][j]=FOX;
}
else
{
(*curMap)[i][j]=GRASS;
}
}
}
}
void World::update()
{
for (int i=1;i<N-1;i++)
for (int j=1;j<N-1;j++)
{
LivingUnit* p=locate(i,j);
int m=(*curMap)[i][j];
int n=p->nextState();
(*curMap)[i][j]=p->nextState();
}
}
void World::display()
{
for (int i=0;i<N;++i)
{
cout<<endl;
for (int j=0;j<N;++j)
{
switch((*curMap)[i][j])
{
case 0:
cout<<color(FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED)<<(*curMap)[i][j];
break;
case 1:
cout<<color(FOREGROUND_GREEN)<<(*curMap)[i][j];
break;
case 2:
cout<<color(FOREGROUND_RED|FOREGROUND_GREEN)<<(*curMap)[i][j];
break;
case 3:
cout<<color(FOREGROUND_RED)<<(*curMap)[i][j];
break;
}
}
}
cout<<endl<<endl;
}
LivingUnit* World::locate(int row,int colum)
{
switch((*curMap)[row][colum])
{
case EMPTY:
return(new EmptyUnit(this,row,colum));
break;
case GRASS:
return(new GrassUnit(this,row,colum));
break;
case RABBIT:
return(new RabbitUnit(this,row,colum));
break;
case FOX:
return(new FoxUnit(this,row,colum));
break;
}
}
void World::sums(Position pos,int sum[STATES]) //世界某个位置周围的各类生物的总数的列表
{
int i,j;
sum[EMPTY]=sum[GRASS]=0;
sum[RABBIT]=sum[FOX]=0;
State state;
for (i=-1;i<1;i++)
for (j=-1;j<1;j++)
{
state=(*curMap)[pos.row+i][pos.colum+j];
sum[state]++;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
sim.rar_C++_QT_layqpj_sim c++_thinke1j
共37个文件
h:9个
cpp:9个
obj:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 106 浏览量
2022-09-15
01:21:53
上传
评论
收藏 660KB RAR 举报
温馨提示
C++简单的生态仿真实验,用QT库实现简易的图形界面
资源推荐
资源详情
资源评论
收起资源包目录
sim.rar (37个子文件)
sim
worldDefine.h 0B
sim.dsw 514B
empty.h 231B
scene.cpp 351B
living.h 520B
world.cpp 2KB
fox.cpp 333B
basic.h 1003B
rabbit.cpp 344B
sim.plg 1KB
fox.h 253B
sim.dsp 5KB
scene.h 231B
rabbit.h 281B
main.cpp 201B
grass.cpp 296B
world.h 890B
predator.cpp 30B
empty.cpp 422B
Debug
sim.pdb 1.09MB
grass.obj 21KB
living.obj 2KB
sim.pch 183KB
fox.obj 21KB
empty.obj 22KB
vc60.idb 241KB
main.obj 20KB
rabbit.obj 22KB
vc60.pdb 140KB
world.obj 164KB
sim.exe 528KB
sim.ilk 775KB
scene.obj 22KB
sim.opt 52KB
grass.h 231B
sim.ncb 137KB
living.cpp 10B
共 37 条
- 1
资源评论
朱moyimi
- 粉丝: 64
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功