miniproject black jack--Fail
第一部分
- 下载这个小项目的程序模板并回顾card类的定义。这个类已经执行了所以你的任务是自己熟悉下代码。开始,通过粘贴card类定义到程序模板中并验证我们的代码如预期那样工作。
- 实现“__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类,用测试模板来测试一下。
- Deck类的实现方法已经列在mini_project的模板中了。我们建议以列表的形式表达一副牌。你可以形成这个列表使用一对嵌套的for循环或者一个列表比较。记得使用Card初始化来创建你的卡片,使用random.shuffle()来洗牌。一旦你完成了Deck类,使用提供的测试模板测试你的Deck类,记得洗牌后deck变成随机的了,所以输出,测试模板应该在形式上但不需要在准确的数值对应备注里面的输出。
- 完成”Deal"的handler啥呢,洗牌并给庄家和玩家各两张牌。事件handler deal对应这个按钮应该洗牌(以全局变量的形式存储),创建新玩家和庄家(以全局变量的形式存储),并加给他们两张牌。为了从一叠牌里面发一张牌给到人家手里,你应该联合使用Deck类里面的“deal_card" 函数和Hand类里面的add_card函数。hands的结果应该被打印到控制台待遇合适的信息表明哪只手是哪个。
- 实现Hand类里面的get_value函数。你应该使用提供的VALUE字典来查找单张卡片的值用视频里面的逻辑对这个项目来计算手牌的值。一旦你完成了get_value函数,利用提供的测试模板来测试一下。
- 完成”Hit"按钮。如果手牌小于等于21,点击这个按钮添加一个额外的卡片到玩家手中。如果按hit后值超过21,打印“你爆了”
- Remember the dealer wins ties in our version.完成“Stand"按钮。如果玩家爆了,提醒玩家他已经爆了。否则,再次点击dealer直到他的手牌是17或者更大(使用while循环),如果庄家爆了,要让玩家知道。否则,比较玩家和庄家手牌的数值。如果玩家的手牌低于或等于庄家的手牌,庄家赢。否则玩家赢,记得在我们的版本里面庄家赢得领带。
在我们的blackjack版本中,当游戏开始的时候一手牌自动的发给玩家和庄家。尤其,在复位的时候程序模板包含一个调用deal()函数。在这一点上,我们建议测试你的普遍的执行balckjack
第二部分
在第二部分,你将添加5个特写。包括用全局变量画,记得复位这些变量来适当的值(就好像创建空白的手牌给玩家和庄家)在开始框架之前
- 完成你自己的draw函数对于hand类用draw函数,啥呢,card类里面的draw函数。我们建议画手牌作水平卡片序列在哪呢,pos参数位于左上角最左边卡片,为了简化你的代码,呢可以假设只有前五张玩家的手牌在画布上是可见的。
- 通过画文本信息到画布上代替打印到控制台,我们建议添加一个全局outcome字符串变量啥呢使用draw_text在draw handler里面。这些信息应该提供给玩家去要求一些行为并且有类似“Hit or stand"和”新牌?“.另外,画出游戏的标题”balckjack"在画布的任意位置。
- 使用全局变量in_play添加逻辑来跟着是否玩家的手牌仍然在玩,如果仍然在玩,呢应该画出一个卡片的背面图案(模板有提供)超过庄家的第一个(hole)卡来隐藏它。一旦回合结束,庄家的牌应该被揭示
- 添加一个计分跟踪输赢次数,我们演示的是最简单的情况,程序显示出赢得次数减去输得次数。当然,你也可以制作花哨一点的计分系统
- 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"按钮的逻辑来创建并洗一副新牌(或者重新进货并且洗一副已经存在的牌)
- 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的更多相关文章
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- BZOJ 3172: [Tjoi2013]单词 [AC自动机 Fail树]
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 3198 Solved: 1532[Submit][Status ...
- fail树
前置技能:AC自动机 假设我们有了一个AC自动机,然后在上面进行字符串匹配. 上面是一个有四个字符串的AC自动机(abcde.aacdf.cdf.cde),虚线是fail指针,实线是转移. 这是上一次 ...
- bzoj 2434 阿狸的打字机 fail树的性质
如果a串是另b串的后缀,那么在trie图上沿着b的fail指针走一定可以走到a串. 而a串在b串里出现多少次就是它是多少个前缀的后缀. 所以把fail边反向建树维护个dfs序就行了. 并不是很难... ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 解决:编译CM14.1 提示Jack “Out of memory error”错误
Android 7.1编译到33%时出现JDK内存溢出的错误: Out of memory error (version f95d7bdecfceb327f9d201a1348397ed8a84384 ...
- 解决:ERROR: Cannot launch Jack server
问题重现: Install: /home/dinphy/sm/out/target/product/ido/system/lib/libdl.so java -Xmx3500m -jar /home/ ...
- [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 ...
- fail to create java virtual machine..
今天打开zend stdio 的时候 出现的错误 fail to create java virtual machine... 然后找度娘了,,都说改xxxxx, 我打开360 ,把内存清理了一遍 ...
随机推荐
- 分享一款超棒的jQuery旋钮插件 - jQuery knob
转自:http://www.cnblogs.com/gbin1/archive/2012/05/08/2489908.html 在线演示 本地下载 如果你也在寻找一款生成漂亮旋钮(knob)的jQu ...
- 微信公众账号开发之微信登陆Oauth授权-第一篇
我曾经在2012年的时候开始研究微信,那时微信的版本还是处于1.0,当时给朋友帮忙做一个基于微信端的web应用,官方的文档是相当少的,百度搜索出来的东西基本也没有多少实用价值,不过是在官网的基础上作了 ...
- DFS POJ 2676 Sudoku
题目传送门 题意:数独问题,每行每列以及每块都有1~9的数字 分析:一个一个遍历会很慢.先将0的位子用vector存起来,然后用rflag[i][num] = 1 / 0表示在第i行数字num是否出现 ...
- 概率 Gym 100502D Dice Game
题目传送门 /* 题意:两个人各掷两个骰子,给出每个骰子的最小值和最大值,其余值连续分布 问两人投掷,胜利的概率谁大 数据小,用4个for 把所有的可能性都枚举一遍,统计每一次是谁胜利 还有更简单的做 ...
- 模拟 Codeforces Round #249 (Div. 2) C. Cardiogram
题目地址:http://codeforces.com/contest/435/problem/C /* 题意:给一组公式,一组数据,计算得到一系列的坐标点,画出折线图:) 模拟题:蛮恶心的,不过也简单 ...
- 使用“Empty 模式”改进 Null Object
概述 Null Object 是Martin 大师提出的一种重构手段,其思想就是通过多态(派生一个Null对象)来减少逻辑(if … then …else)的判断. 而.NET中已经有Null Obj ...
- MapReduce多线程下的错误
最近在写一个MR调度程序,在以服务进程中同时开启了两个MapReduce线程.这两个MR共享同一份输入源,此时会造成Cast异常: java.lang.ClassCastException: org. ...
- ZOJ3228 Searching the String(AC自动机)
题目大概是给一个主串,询问若干个模式串出现次数,其中有些模式串要求不能重叠. 对于可以重叠的就是一个直白的多模式匹配问题:而不可重叠,在匹配过程中贪心地记录当前匹配的主串位置,然后每当出现一个新匹配根 ...
- c# windows service
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- BZOJ4348 : [POI2016]Park wodny
首先特判全部都是A或者全部都是B或者$n=1$的情况. 然后把矩阵四周都填充上A,枚举一个块,分以下情况讨论: 1.在它四周选两个块扩展,此时平方暴力枚举即可. 2.在它四周选定一个方向扩展两步. 3 ...