当前课程知识点:Python 交互式程序设计导论 > 第1周 > 本周项目:“老虎杠子鸡虫”游戏 > 程序说明
返回《Python 交互式程序设计导论》慕课在线视频课程列表
本项目我们尝试用Python语言设计一个计算机程序来模拟“杠子老虎鸡虫”游戏。程序的文件名称为HitChopsticks.py,程序将使用到import、def、if/elif/else、return等Python保留词,也会用到print( )、random.randrange( )等Python函数,还会使用到变量、数学运算表达式、逻辑条件表达式、字符串运算表达式、自定义函数、代码格式、注释等Python语言的一些特性。
通过该项目你可以获得以下能力:
我们希望能设计一个函数,名称为play_one_round(玩一把),该函数有5个参数,player1_name参数为第一个玩家的姓名, player1_code参数为第一个玩家喊拳的代码, player2_name参数为第二个玩家的姓名, player2_code参数为第二个玩家喊拳的代码。最后一个参数为print_msg = True,形式参数的名称为print_msg,该参数的数据类型为逻辑型,默认值为True(真),表示需要输出信息,如果该参数的值为False(假),则表示不要输出信息。该函数可以判定对决结果,并将结果以数字形式返回给调用者,0表示平局,1表示第一个玩家获胜,2表示第二个玩家获胜。当第五个参数的是为True是,该函数可以用文字的形式输出对决的过程和输赢结论。
还需要设计shout_out(name)函数实现喊拳的功能,该函数的唯一参数是一个字符串,可能取值为:“杠子”、“老虎”、“鸡”、“虫子”或“随机”,返回的值为一个数字,用来表示对应喊拳名称的数字代码,3代表“杠子”、2代表“老虎”、1代表“鸡”、0代表“虫子”;如果参数值为“随机”,返回一个0到3的随机数字,否则调用name_to_number函数返回对应的数字。有兴趣的同学可以尝试播放对应的喊声音效。
name_to_number(name)函数用来实现将玩家的喊拳从字符串转换为数字代码的功能,该函数的唯一参数是一个字符串,可能取值为:“杠子”、“老虎”、“鸡”或“虫子”,返回的值为一个数字,用来表示对应喊拳名称的数字代码,3代表“杠子”、2代表“老虎”、1代表“鸡”、0代表“虫子”,如果参数的值不是“杠子”、“老虎”、“鸡”或“虫子”中的一个,则返回-1。
设计number_to_name(number) 函数用来实现将玩家的喊拳从数字代码转换为字符型名称的功能,该函数的唯一参数是一个在数字,可能取值为:3、2、1、0,返回的值为一个字符串,用来表示数字代码对应的喊拳名称。如果参数的值不是3、2、1、0中的一个,则返回“所喊无效!”。play_one_round会利用该函数输出便于人阅读理解的信息。
最后是设计probability_calculate()函数,该函数通过多次调用play_one_round实现概率事件的反复试验功能(第五个参数最好为False,因为我们主要关心输赢结果),它能累加试验的总次数、累加甲方获胜的次数、累加平局的次数、累加甲方失败的次数,计算三种事件的概率,我们相信随着试验次数的增加,比如十万次,试验的结果会接近理论计算的结果。 如果在probability_calculate()函数进行了128次对决,可能的输出结果如下: 甲乙随机比赛128次,验证对决结果的概率为:
-课程简介
--课程简介
-A 课程视频(算数操作符及表达式)
--绪论
-B 课程视频(变量及赋值)
--变量
--项目提交
-C 辅助视频(计算机结构、Python开发环境安装)
-D 辅助视频(如何提交项目)
--项目提交
-第0周--小测验
-本周项目:"我喜欢Python"
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
--项目提交
-A 课程视频(函数)
--函数
--其它操作符
--随机函数
-B 课程视频(逻辑及表达式)
--逻辑值和比较
--条件
--编程技巧
-第1周--小测验
-本周项目:“老虎杠子鸡虫”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(Python交互式应用)
--事件驱动编程
--按钮
-B 课程视频(输入框、全局变量)
--输入框
--编程技巧
-第2周--小测验A
-第2周--小测验B
-本周项目:猫咪藏在哪个房间
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(画布绘图)
--画布和图形绘制
--字符串处理
--图片和音效
-B 课程视频(计时器)
--计时器
--交互式绘图
--“神奇时钟”游戏
--编程技巧
-第3周--小测验A
-第3周--小测验B
-本周项目:“神奇时钟”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(列表)
--列表
--键盘输入
--碰撞和反射
-B 课程视频(键盘控制)
--速度控制
--运动
--编程技巧
--“桌上冰球”游戏
-第4周--小测验A
-第4周--小测验B
-本周项目:“桌上冰球”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(鼠标输入、列表进阶)
--鼠标输入
--Video
--Video
--Video
-B 课程视频(字典和图片)
--Video
--Video
--Video
--Video
-第5周--小测验A
-第5周--小测验B
-本周项目:“世界杯八强连连看”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类)
--华容道中的类
-B 课程视频(平铺图片)
--平铺图片
--理解对象
--编程技巧
--“华容道”游戏
-第6周--小测验A
-第6周--小测验B
-本周项目:“华容道”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类进阶及文件操作)
--集合
--文件操作
--文字块类
--处理停止的文字块
-B 课程视频(游戏状态控制)
--游戏记分规则
--编程技巧
-第7周--小测验A
-第7周--小测验B
-本周项目:决战三字经
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板
-A、课程视屏(精灵集合)
--Video
--精灵类
--战士类
--编程技巧
-B、课程视屏(动画)
--精灵碰撞
--精灵动画
--编程技巧
--保卫家园游戏
-第8周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板