1) 思路一:地图的绘制
地图的绘制我们采用了C++图形库Easyx来实现,通过设计draw()函数来实现地图的绘制
- 思路二:人的设计
在设计仿真实验时,我们将学生在这里简化为质点,然后构建结构体struct movers。分别用以下的参数来设计小球的状态:
COLORREF color; // 用小球颜色仿真学生的状态
double x, y; // 坐标
double vx, vy; // 速度
double radius; // 半径
int kouzhao; //是否带口罩,1表示戴口罩,2表示不戴
- 思路三:初始变量的设计
我们设计了startup()函数对小球的初始状态进行了设计,小球的速度采用随机函数rand( )分别对vx,vy随机出 -1, 0, 1三个值,对小球的半径统一设计为两个像素点,初始位置设计在宿舍。
- 思路四:路线的规划及时间控制
在设计仿真实验中,每个学生一天的日常活动路线为:
宿舍→食堂→教学楼90%(实验楼10%)→食堂→宿舍→教学楼90%(实验楼10%)→食堂→教学楼70%(实验楼10%、运动场20%)→宿舍
在这里我们采用了时间变量
time_t systimeStart, systimeEnd; // 时间
time(&systimeStart); // 获取初始时间
time(&systimeEnd); // 获取终止时间
来实现小球在固定的场所运动确定的时间。
而小球在建筑里面的运动我们分别设计了
sushe();jiaoxuelou();shiyanlou();yundong();shitang();
等函数来实现小球在建筑里的模拟运动。
小球在建筑之间的运动我们设计了move( )等函数实现,
- 思路五:人机交互(按钮类的设计)
我们对按钮的设计采用了Easyx中自带的ExMessage,getmessage,peekmessage函数来获取鼠标信息,同时采用Easyx自带的inboxput函数进而实现按钮的效果。
- 思路六:小球状态的变化
我们对小球状态的变化设计了全局变量
float NOINFECTED1 = 10;//潜伏者与未感染者均不戴口罩时的感染概率1
float NOINFECTED2 = 20;//感染者与未感染者均不佩戴口罩是的感染概率2
float YNINFECTED1 = 5;//潜伏者戴口罩,未感染者不戴口罩5
float YNINFEVTED2 = 1;//感染者戴口罩,未感染者不戴口罩6
float YESINFECTED1 = YNINFECTED1 / 2;//潜伏者与未感染者都戴口罩时的感染概率3
float YESINFECTED2 = YNINFEVTED2 / 2;//感染者与未感染者都戴口罩时的感染概率4
float NYINFECTED1 = NOINFECTED1 / 2;//未感染者佩戴口罩,潜伏者不戴口罩7
float NYINFECTED2 = NOINFECTED2 / 2;//未感染者佩戴口罩,感染者未戴口罩8
来实现对小球在不同的情况下感染概率输入
propability( )函数来选择概率,colourchange()函数实现小球状态的变化。在colourchange()中我们设计了time_t timey[t]分别记录每个小球状态变化的时间,从而实现对每个小球状态变化时间的记录,进而确定小球在确定的时间内实现状态的转换。
- 思路七:对每个状态小球的记录
对每个小球状态的记录我们设计了全局变量count1,count3,count5分别记录无症状感染者,确诊患者,累计治愈人次的记录,count4[ ]数组来实现对前一天核酸阳性人数的记录。