软工作业2:硬币游戏——代码的分析与改进

时间:2021-03-03 16:52:47

 

目的:

  • Python 程序阅读理解
  • 学习Python 编码风格指南中译版(Google SOC), 改进Python程序
  • 如何设计游戏规则,使得慈善事业可持续。 地铁口放置硬币箱(初始值500硬币),顾客可取、可放。请设计一组规则,使得该钱箱永远有钱取(尽量符合实际)
  • 参考:地铁口钱箱

作业步骤:

step 1: fork 老师的仓库

+硬币游戏:http://git.oschina.net/juking2017/Game.git 将其 fork 到自己的码云仓库。

step2:clone 到本地,修改后 push 到自己的远端仓库

首先,从软件管家中安装Python软件,安装成功后,要运行还要安装pip,安装链接为http://blog.csdn.net/qy20115549/article/details/52179800,就安装好了。

软工作业2:硬币游戏——代码的分析与改进

打开IDLE,open之前克隆的GameMain.py

软工作业2:硬币游戏——代码的分析与改进

单击Run,结果如下图所示:(里面的数字都是随机的)

软工作业2:硬币游戏——代码的分析与改进

软工作业2:硬币游戏——代码的分析与改进

学习 Python 编码风格指南中译版(Google SOC); 依据代码规范改进代码。

根据上述python编码风格,修改代码,将所有用tab实现的空格重新用空格键打出来,修改后的代码如下图所示:

软工作业2:硬币游戏——代码的分析与改进

将我的修改commit 并 push 到我远端的仓库。

软工作业2:硬币游戏——代码的分析与改进

查看我的码云,界面如下图所示:

 软工作业2:硬币游戏——代码的分析与改进

 

附:

1.修改后的程序代码:

#!/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()

2.我的远端仓库的链接:

https://gitee.com/LiuYiLun/Game