软件工程第二次作业

任务:

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

 

作业步骤:

  • step 1:fork 老师的仓库

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

  • step2:将自己仓库Game clone 到本地,修改后 push 到你的远端仓库  将你的仓库Game.git clone到本地, 运行Python 程序,截图。
  •  

  • step3:运行Python 程序并打开游戏代码
  • step4.规范化的代码
    #!/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()

     

  •  钱箱使用规则

    1. 在地铁口放置钱箱,内放500枚硬币
    2. 如需要零钱,可以取其中1~5枚硬币,如果不足所需,则取光。 取钱倾向多取
    3. 善良的人可以往其中放置1枚硬币。放钱倾向少放
  • 将Threshold 调整为 2,得到下图结果

  • 上传到码云:
  •  

  • 远端仓库的链接https://gitee.com/lanerup/Game/blob/master/src/GameMain.py

     

     


     

 

 

 

 

 

 

 

 

 

 

posted @ 2017-09-21 19:07  lanerup  阅读(102)  评论(1编辑  收藏  举报