第一部分

  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)

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

  • 1 pt - 程序在画布上显示“Blackjack”
  • 1 pt - 控制区域显示三个按钮(“Deal","Hit"和”Stand“)
  • 2 pts - 程序用图片形式生动的显示玩家的手牌。(1 pt如果文本显示在控制台)
  • 2 pts - 程序生动的显示庄家的手牌使用卡片图片。庄家的卡片全部向上是允许的当计算子弹的时候
  • 1 pt - 庄家的底牌是隐藏的直到本局结束。在这局结束后,把他翻过来
  • 2 pts - 按”Deal"会发两张陪给玩家和庄家。(一方得1 pt)
  • 1 pt - 在一回合中按“Deal"按钮会导致玩家这局失败。
  • 1 pt - 按”Hit"按钮给玩家再添一张牌。
  • 1 pt - 按“Stand"按钮必要的情况下加一张牌给庄家。
  • 1 pt - 程序准确的识别玩家是否爆了。
  • 1 pt - 程序准确的识别庄家是否爆了。
  • 1 pt - 程序正确的计算手牌值并且宣布胜利者。基于消息来评估。
  • 2 pts - 程序准确的提供玩家和信息”Hit or stand?"和“New deal?"(1 pt没个信息)
  • 1 pt - 程序以计分形式正确的反应输赢次数。这部分计分可以宽松一点

    hand类怎么做。停牌以后庄家底牌揭示。爆了以后庄家底牌揭示,显示“You went bust and lose". Deal相当于重新开始,hand要实现什么效果?什么功能?视频里面有么?有几个参数,fild是啥,codeclinic

    连续两个mini project没搞定了。现在再怎么悔恨也没用,上周重感冒一整周,从周日爬山开始回来就重感冒了,现在已经周二,八天了,仍然有点流鼻涕,还有点咳嗽,还有点痰,有点想做一个个人电子病历本,就好像记账有随手记一样。这个貌似是我的独特想法?百度了一下好像没人做呢。黑杰克这个project连URL都没有提交,其实简单的还是能够得1分的,怎么办?姜鸿说碰到class类就不学了,姜鸿说全文翻译没用,也有点道理,挑重点的翻译吧,能理解就行。无论如何也要提交URL,尽量完成这门课,编程并不是青春饭,我在微信公众号上看到了一篇文章,虽然学习碰到了一点困难,知乎上有给出新的参考书目,我们还要尝试,加油,我的挣扎不漂亮,我要挣扎。这周开局不错,今天才星期二,quiz已经完成了。看看下班前能不能尽量把相关信息翻译完。看看自己的博客,已经写了4篇,我坚持了一个月,加油!上周经常从早上就开始忙,然后一忙就是一整天,但是我真正高效率的时间是上午,等我忙完已经下午了,这时候我再学python效率就不高了,不理解的时候经常有挫败感,所以本周我尽量把工作内容放在下午,上午的时候用来学习python,效果不错,今天周二,我已经连蒙带唬把quize完成了。这个经验很好。司马迁的《史记》并不是太史公的工作内容,但是《史记》流传千古,所以去做自己真正想做的事情吧。《小强升职记》说将任务放在篮子里,专注把手头的任务完成,这样才井井有条,这个我执行了一次,感觉很不错,“2分钟内能完成的事情,马上去完成”这个还没执行,应该也是很有道理的。下午的时间如何利用,现在还没找到规律。
  • 本周的主要任务:半程马拉松;完成spaceship,起码要提交URL,健身胸背肩。我还记得自己的承诺,每周一篇博客,超过800字。记录自己的挣扎。
  • 上周日去爬东莞银瓶嘴,好久好久没爬山了,久违的云雾缭绕,就是人太多了,不过有个基友一起,感觉还是很不错的,希望有空收集些新路线报给登山会长参考。

miniproject black jack--Fail的更多相关文章

  1. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  2. BZOJ 3172: [Tjoi2013]单词 [AC自动机 Fail树]

    3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3198  Solved: 1532[Submit][Status ...

  3. fail树

    前置技能:AC自动机 假设我们有了一个AC自动机,然后在上面进行字符串匹配. 上面是一个有四个字符串的AC自动机(abcde.aacdf.cdf.cde),虚线是fail指针,实线是转移. 这是上一次 ...

  4. bzoj 2434 阿狸的打字机 fail树的性质

    如果a串是另b串的后缀,那么在trie图上沿着b的fail指针走一定可以走到a串. 而a串在b串里出现多少次就是它是多少个前缀的后缀. 所以把fail边反向建树维护个dfs序就行了. 并不是很难... ...

  5. 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组

    E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  6. 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 508  Solved: 158[Submit][Sta ...

  7. 解决:编译CM14.1 提示Jack “Out of memory error”错误

    Android 7.1编译到33%时出现JDK内存溢出的错误: Out of memory error (version f95d7bdecfceb327f9d201a1348397ed8a84384 ...

  8. 解决:ERROR: Cannot launch Jack server

    问题重现: Install: /home/dinphy/sm/out/target/product/ido/system/lib/libdl.so java -Xmx3500m -jar /home/ ...

  9. [Android Tips] 23. How to fail/stop Gradle task immediately if some conditions are not met

    throw new GradleException("conditions are not met") 参考 How to fail/stop task immediately i ...

  10. fail to create java virtual machine..

    今天打开zend stdio 的时候 出现的错误  fail to create java virtual machine... 然后找度娘了,,都说改xxxxx, 我打开360  ,把内存清理了一遍 ...

随机推荐

  1. 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem G: Check The Check(模拟国际象棋)

    Problem G: Check The Check Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 10  Solved: 3[Submit][Statu ...

  2. vijos 1025 背包 *

    链接:点我 输入顺序又反了 #include<cstdio> #include<iostream> #include<algorithm> #include< ...

  3. 下面就介绍下Android NDK的入门学习过程(转)

    为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大. 2. 在NDK中调用第三方C/C++库,因为大部分的开源库 ...

  4. android开发 NDK 编译和使用静态库、动态库 (转)

    在eclipse工程目录下建立一个jni的文件夹 在jni文件夹中建立Android.mk和Application.mk文件 Android.mk文件: Android提供的一种makefile文件, ...

  5. BZOJ 1192: [HNOI2006]鬼谷子的钱袋 数学结论

    1192: [HNOI2006]鬼谷子的钱袋 Description 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政.有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的 ...

  6. 【word xml】将word转化为xml格式后,如何在xml中卫word添加分页符

    1.首先在xml中找到我们需要添加分页符的位置 例如:我需要在这个第一部分上面添加一个分页符 2.找到这个[第一部分]这个位置之后,开始往上找,找到对应的位置 3.在</w:pPr>下方添 ...

  7. HUE的时区问题

    转自 http://molisa.iteye.com/blog/1953390   我主要是根据这个说明调整的HUE的时区问题 在使用Cloudera Hue时遇到一问题: 1. 使用Sqoop导入功 ...

  8. 文件上传漏洞演示脚本之js验证

    文件上传漏洞演示脚本之js验证 0 0       716   关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码 ...

  9. node相关--WebSocket

    socket:socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. ajax: 通过HTTP请求+响应模式的方式来发送和 ...

  10. 简单几何(线段相交) POJ 2826 An Easy Problem?!

    题目传送门 题意:两条线段看成两块木板,雨水从上方往下垂直落下,问能接受到的水的体积 分析:恶心的分类讨论题,考虑各种情况,尤其是入口被堵住的情况,我的方法是先判断最高的两个点是否在交点的同一侧,然后 ...