miniproject black jack--Fail

时间:2014-11-04 19:17:21   收藏:0   阅读:435

第一部分

  1. 下载这个小项目的程序模板并回顾card类的定义。这个类已经执行了所以你的任务是自己熟悉下代码。开始,通过粘贴card类定义到程序模板中并验证我们的代码如预期那样工作。
  2. 实现“__init__,__str__,add_card方法在Hand类里面。我们建议建模hand作card列表对象,啥呢,存储在Hand对象的域里面。__init__类函数应该复位Hand对象来有一个空的card对象列表。add_card应该添加一个card对象到cards列表里面。__str__函数应该返回一个代表Hand对象在一种可以人类阅读的方式的字符串。

    为了帮你实现__str__函数,回去看看the solution的第四个问题在week 5a的练习题。记得使用字符串函数对Card对象来将每张卡片在手牌卡片列表转变成字符串。(不要在add_card里面将一张card对象转换成字符串来让你的字符串函数工作)一旦你应用Hand类,用测试模板来测试一下。

  3. Deck类的实现方法已经列在mini_project的模板中了。我们建议以列表的形式表达一副牌。你可以形成这个列表使用一对嵌套的for循环或者一个列表比较。记得使用Card初始化来创建你的卡片,使用random.shuffle()来洗牌。一旦你完成了Deck类,使用提供的测试模板测试你的Deck类,记得洗牌后deck变成随机的了,所以输出,测试模板应该在形式上但不需要在准确的数值对应备注里面的输出。
  4. 完成”Deal"的handler啥呢,洗牌并给庄家和玩家各两张牌。事件handler deal对应这个按钮应该洗牌(以全局变量的形式存储),创建新玩家和庄家(以全局变量的形式存储),并加给他们两张牌。为了从一叠牌里面发一张牌给到人家手里,你应该联合使用Deck类里面的“deal_card" 函数和Hand类里面的add_card函数。hands的结果应该被打印到控制台待遇合适的信息表明哪只手是哪个。
  5.  实现Hand类里面的get_value函数。你应该使用提供的VALUE字典来查找单张卡片的值用视频里面的逻辑对这个项目来计算手牌的值。一旦你完成了get_value函数,利用提供的测试模板来测试一下。
  6. 完成”Hit"按钮。如果手牌小于等于21,点击这个按钮添加一个额外的卡片到玩家手中。如果按hit后值超过21,打印“你爆了”
  7. Remember the dealer wins ties in our version.完成“Stand"按钮。如果玩家爆了,提醒玩家他已经爆了。否则,再次点击dealer直到他的手牌是17或者更大(使用while循环),如果庄家爆了,要让玩家知道。否则,比较玩家和庄家手牌的数值。如果玩家的手牌低于或等于庄家的手牌,庄家赢。否则玩家赢,记得在我们的版本里面庄家赢得领带。

在我们的blackjack版本中,当游戏开始的时候一手牌自动的发给玩家和庄家。尤其,在复位的时候程序模板包含一个调用deal()函数。在这一点上,我们建议测试你的普遍的执行balckjack

第二部分

在第二部分,你将添加5个特写。包括用全局变量画,记得复位这些变量来适当的值(就好像创建空白的手牌给玩家和庄家)在开始框架之前

  1. 完成你自己的draw函数对于hand类用draw函数,啥呢,card类里面的draw函数。我们建议画手牌作水平卡片序列在哪呢,pos参数位于左上角最左边卡片,为了简化你的代码,呢可以假设只有前五张玩家的手牌在画布上是可见的。
  2. 通过画文本信息到画布上代替打印到控制台,我们建议添加一个全局outcome字符串变量啥呢使用draw_text在draw handler里面。这些信息应该提供给玩家去要求一些行为并且有类似“Hit or stand"和”新牌?“.另外,画出游戏的标题”balckjack"在画布的任意位置。
  3. 使用全局变量in_play添加逻辑来跟着是否玩家的手牌仍然在玩,如果仍然在玩,呢应该画出一个卡片的背面图案(模板有提供)超过庄家的第一个(hole)卡来隐藏它。一旦回合结束,庄家的牌应该被揭示
  4. 添加一个计分跟踪输赢次数,我们演示的是最简单的情况,程序显示出赢得次数减去输得次数。当然,你也可以制作花哨一点的计分系统
  5. Modify the logic for the "Deal" button to create and shuffle a new deck (or restock and shuffle an existing deck) each time the "Deal" button is clicked. This change avoids the situation where the deck becomes empty during play.修改“deal"按钮的逻辑来创建并洗一副新牌(或者重新进货并且洗一副已经存在的牌)
  6. Finally, modify the deal function such that, if the "Deal" button is clicked during the middle of a round, the program reports that the player lost the round and updates the score appropriately.最后,修改deal函数,如果”Deal"按钮在回合中已经按了,程序报告玩家输了这局并且合适的更新比赛分数。

恭喜!你已经建立了黑杰克,为了包裹起来,请回顾我们视频里面的演示版本,包装你的版本功能全面。

Grading rubric - 18 pts total (scaled to 100)

你一定要执行黑杰克最简单的规则。跟我们的版本小小的不同是可以接受的,比如显示手牌的值或者加入下注系统。但你不要更改游戏的逻辑系统。在提交日期结束以后,欢迎提交你的加强版黑杰克比如添加双倍下注。

原文:http://www.cnblogs.com/tufei7/p/4074118.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!