1. 程式人生 > >軟件工程作業2——硬幣遊戲—— 代碼分析與改進

軟件工程作業2——硬幣遊戲—— 代碼分析與改進

軟件工程 循環 ast money res nsh () odi wid

任務:

  • Python 程序閱讀理解
  • 學習Python 編碼風格指南中譯版(Google SOC), 改進Python程序
  • 如何設計遊戲規則,使得慈善事業可持續。 地鐵口放置硬幣箱(初始值500硬幣),顧客可取、可放。請設計一組規則,使得該錢箱永遠有錢取(盡量符合實際)
  • 參考:地鐵口錢箱

步驟:

1. fork 老師的倉庫

+硬幣遊戲:http://git.oschina.net/juking2017/Game.git 將其 fork 到你的碼雲倉庫。

技術分享

2.clone 到本地,修改後 push 到你的遠端倉庫

  • 將你的倉庫Game.git clone到本地, 運行Python 程序,截圖。

技術分享

3.運行Python,並打開遊戲代碼

技術分享

技術分享

4.規範化後的代碼

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import mlab
from matplotlib import rcParams


# 初始參數設置
Box_sum =500         # 箱子中剩余硬幣數量,初始值
People_Flag= random.randint(1,10)       # flag 模擬人們取硬幣或放硬幣的概率 1~10 
Threshold 
= 2.5 # 閾值,可調: 1~Threshold 為取硬幣,Threshold+1 ~10 為放硬幣 Max_TakeCoin=5 # 最多可取硬幣數量 Max_DonateCoin=1 # 最多可放硬幣數量 delata=0 # 取、放硬幣數量 Box_per_remain= [500] # 每次箱子中硬幣余額,list # 算法模擬 for x in range(1,5000): # 循環次數表示參與人數 flag= random.randint(1,10) # flag 模擬人們取硬幣或放硬幣的概率 if
flag > Threshold: # 放硬幣 delta=random.randint(1,Max_DonateCoin) delta=random.randint(1,delta) # 模擬了人們捐款可能性,有偏少的傾向 Box_sum =Box_sum + delta Box_per_remain.append(Box_sum) else: # 取硬幣 delta=random.randint(1,Max_TakeCoin) delta=random.randint(delta,Max_TakeCoin) # 模擬了人 取硬幣的可能性,偏多的傾向 if Box_sum < delta: Box_sum =0 # 如果不夠取,則取光 else: Box_sum =Box_sum - delta Box_per_remain.append(Box_sum) print(Box_per_remain) # 繪圖區 fig = plt.figure() ## 1. 標題、X、Y 軸 label plt.title(‘Subway testing‘) plt.xlabel(‘Time‘) plt.ylabel(‘Money remained‘) x= np.arange(len(Box_per_remain)) ## 2. data plt.plot(x,Box_per_remain,color=‘r‘) plt.bar(x,Box_per_remain,alpha=.5,color=‘g‘) plt.show()

5.修改遊戲規則:初始值改為1000

閾值改為3.5

技術分享

代碼修改部分:技術分享

6.上傳到碼雲技術分享

7.我的遠端倉庫鏈接:https://gitee.com/LuLe123/Game/blob/master/src/GameMain.py

軟件工程作業2——硬幣遊戲—— 代碼分析與改進