pygame小遊戲——消滅病毒保衛城市

pygame小遊戲——消滅病毒保衛城市

遊戲簡介

近期新冠肺炎疫情肆虐,考慮病毒傳播的機理,用pygame開發消滅病毒保衛城市小遊戲。本遊戲屬於策略遊戲,通過設定城市人數(決定收入),可購買道具,包括醫護人員(決定收留病人的數量,一個醫護人員可醫治5人)、研發藥物(可提升治癒率,降低致死率)、限制出行(可降低人員移動的幅度,同時減少資金的產生)、全民防護(可阻止病毒傳染)。每一天可利用收入進行道具的購買,並開始防護,等所有的感染人員均已治癒或者死亡,遊戲勝利。

遊戲界面

1.打開遊戲
在這裏插入圖片描述
在主頁面可點擊加號或減號設定城市人口,最少100人,最多1000人,增量100.
2.點擊開始遊戲
在這裏插入圖片描述
進入遊戲頁面,左上角顯示信息,包括保衛的天數,總人數、健康人數(開始爲總人數-1人)、輕症患者(開始爲1人)、重症患者、治癒人數、病亡人數等,還顯示收入。每一天可進行道具購買,點擊購買,收入扣除相應的價格,左下角可增加數量。左下角的醫院分爲治療區、治癒區和病亡區,右側爲城市,顯示健康人和感染的人,按照正態分佈進行移動,健康人與感染的人接觸後則傳染。
在這裏插入圖片描述
3.點擊主頁後可記錄進度
在這裏插入圖片描述
可點擊繼續遊戲。
點擊重新開始,則重新選擇城市人口,不記錄數據。
點擊結束遊戲,則會記錄當前數據,下次打開遊戲時,可按照本次進度繼續進行遊戲。

重點代碼

1.建立精靈組

goodmans = pygame.sprite.Group()  # 健康人
infectmans = pygame.sprite.Group()  # 感染人
……
# 建立類,生成類的實例,可添加到組中,或從組中刪除
gm = people.City(myimage)  # 生成實例
goodmans.add(gm)   # 組添加對象
……
for each in goodmans:  # 遍歷組
    goodmans.remove(each)  # 組內移除對象
  1. 精靈接觸或碰撞
for fm in infectmans:  # 顯示感染人
	isinfect = pygame.sprite.spritecollide(fm, goodmans, False, pygame.sprite.collide_mask)  # 是否接觸
……
# 成員實例需標記mask
self.mask = pygame.mask.from_surface(self.image)  # 標記圖片非透明部分
……
# 得到的接觸ininfect對象,可進行判斷,也包含接觸的對象
if isinfect:  # 用戶判斷是否接觸
……
for each in isinfect:  # 用於遍歷接觸的對象
  1. 按概率選擇,用隨機數
from random import *
illtohos = [1, 5]  # 重症住院概率,1/5
if randint(0, illtohos[1]) < illtohos[0]# 從0-5隨機產生一個數,抽取第一個數0的條件
  1. 正態分佈
import numpy as np 
from random import * 
le = np.random.normal(a, b, n)  # 隨機按照正態分佈抽取數,a爲均值,b爲標準差,n爲產生數據的數量
  1. 多個py程序文件打包成exe執行文件
pyinstaller -F -w -i favicon.ico -p people.py viralcollapse.py
# -F 產生一個文件
# -w 不顯示後臺
# -i favicon.ico 程序圖標
# -p people.py  自定義或第三方程序
# viralcollapse.py  主程序文件

小遊戲下載地址

下載地址爲:
https://download.csdn.net/download/weixin_39151703/12210846

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章