C++模拟疫情在校园的传播

1)  思路一:地图的绘制

地图的绘制我们采用了C++图形库Easyx来实现,通过设计draw()函数来实现地图的绘制

  1. 思路二:人的设计

在设计仿真实验时,我们将学生在这里简化为质点,然后构建结构体struct movers。分别用以下的参数来设计小球的状态:

COLORREF color;       // 用小球颜色仿真学生的状态

    double x, y;          // 坐标

    double vx, vy;        // 速度

    double radius;        // 半径

int kouzhao;        //是否带口罩,1表示戴口罩,2表示不戴

  1. 思路三:初始变量的设计

我们设计了startup()函数对小球的初始状态进行了设计,小球的速度采用随机函数rand( )分别对vx,vy随机出 -1, 0, 1三个值,对小球的半径统一设计为两个像素点,初始位置设计在宿舍。

  1. 思路四:路线的规划及时间控制

在设计仿真实验中,每个学生一天的日常活动路线为:

宿舍→食堂→教学楼90%(实验楼10%)→食堂→宿舍→教学楼90%(实验楼10%)→食堂→教学楼70%(实验楼10%、运动场20%)→宿舍

在这里我们采用了时间变量

time_t      systimeStart, systimeEnd; // 时间

time(&systimeStart);                 // 获取初始时间

time(&systimeEnd);                       // 获取终止时间

来实现小球在固定的场所运动确定的时间。

而小球在建筑里面的运动我们分别设计了

sushe();jiaoxuelou();shiyanlou();yundong();shitang();

等函数来实现小球在建筑里的模拟运动。

小球在建筑之间的运动我们设计了move( )等函数实现,

  1.  思路五:人机交互(按钮类的设计)

我们对按钮的设计采用了Easyx中自带的ExMessagegetmessagepeekmessage函数来获取鼠标信息,同时采用Easyx自带的inboxput函数进而实现按钮的效果。

  1.  思路六:小球状态的变化

我们对小球状态的变化设计了全局变量

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]分别记录每个小球状态变化的时间,从而实现对每个小球状态变化时间的记录,进而确定小球在确定的时间内实现状态的转换。

  1. 思路七:对每个状态小球的记录

对每个小球状态的记录我们设计了全局变量count1,count3,count5分别记录无症状感染者,确诊患者,累计治愈人次的记录,count4[ ]数组来实现对前一天核酸阳性人数的记录。

 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值