更新:更新了潜伏期。
注:红是感染者,蓝是健康人,橘是潜伏期。
主程序:
from listturtle import *
import turtle
from 疫情 import *
list1=[]
list1=createlist(10)
list1=createpeople(list1,5)
list1=listrandom(list1)
for i in range(5):
list1=refresh2(list1,100,14)
list1=refresh(list1)
printlist(list1)
draw2dlist(list1,20,-200,200)
turtle.reset()
draw2dlist(list1,20,-200,200)
疫情模块:
import random
def createlist(c):
a=[]
b=[]
for i in range(c):
b=[]
for j in range(c):
b.append(0)
a.append(b)
return a
def printlist(a):
for i in range(len(a)):
print(a[i])
print()
def createpeople(list,people):
for i in range(len(list)-1):
for j in range(people):
list[i][j]=1
list[0][0]=2
return list
def listrandom(list):
for i in range(len(list)):
for i in range(len(list[i])):
random.shuffle(list[i])
random.shuffle(list)
return list
def goto(list,x,y,a):
if list[y][x]!=0:
if a==1:
if y-1>=0 and list[y-1][x]!=1 and list[y-1][x]!=2:
list[y-1][x]=list[y][x]
list[y][x]=0
if a==2:
if y+1
list[y+1][x]=list[y][x]
list[y][x]=0
if a==3:
if x-1>=0 and list[y][x-1]!=1 and list[y][x-1]!=2:
list[y][x-1]=list[y][x]
list[y][x]=0
if a==4:
if x+1
list[y][x+1]=list[y][x]
list[y][x]=0
return list
def refresh(list):
for i in range(len(list)):
for j in range(len(list[i])):
if list[i][j]!=0 and list[i][j]<=2:
list=goto(list,j,i,random.randint(1,4))
if list[i][j]>2:
list[i][j]=list[i][j]-1
list=goto(list,j,i,random.randint(1,4))
return list
def disease(list,a,x,y,q):
if list[y][x]==1:
if y+1=2:
b=random.randint(1,100)
if b<=a:
list[y][x]=q
if y-1>-1 and list[y-1][x]>=2:
b=random.randint(1,100)
if b<=a:
list[y][x]=q
if y+1=2:
b=random.randint(1,100)
if b<=a:
list[y][x]=q
if y+1-1 and list[y+1][x-1]>=2:
b=random.randint(1,100)
if b<=a:
list[y][x]=q
if y>-1 and x+1=2:
b=random.randint(1,100)
if b<=a:
list[y][x]=q
if y-1>-1 and x-1>-1 and list[y-1][x-1]>=2:
b=random.randint(1,100)
if b<=a:
list[y][x]=q
return list
def refresh2(list,s,q):
for i in range(len(list)):
for j in range(len(list[i])):
if list[i][j]==1:
list=disease(list,s,i,j,q)
return list
listturtle模块:
import turtle
import time
def point(a):
turtle.speed(0)
turtle.pensize(3)
turtle.pencolor(a)
turtle.hideturtle()
turtle.circle(1)
def drawpoint(x,y,a):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
point(a)
def drawlist(list,bc,y,x):
turtle.pendown()
for i in range(len(list)):
if list[i]==1:
drawpoint(x,y,"blue")
elif list[i]==2:
drawpoint(x,y,"red")
elif list[i]>2:
drawpoint(x,y,"orange")
x+=bc
def draw2dlist(list,bc,x,y):
for i in range(len(list)):
drawlist(list[i],bc,y,x)
y-=bc
turtle.penup()
turtle.goto(x,y)
time.sleep(1)