miniproject black jack--Fail

第一部分

  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字。记录自己的挣扎。
  • 上周日去爬东莞银瓶嘴,好久好久没爬山了,久违的云雾缭绕,就是人太多了,不过有个基友一起,感觉还是很不错的,希望有空收集些新路线报给登山会长参考。
时间: 2024-10-07 06:47:37

miniproject black jack--Fail的相关文章

微信支付get_brand_wcpay_request:fail

最近做了微信支付功能,和后端一起踩坑中,微信一直报错:get_brand_wcpay_request:fail 前端js部分实现方法: 1.利用微信js sdk实现.调起微信js SDK,并注入事件chooseWXPay 2.利用内置对象 刚开始我采用第一种方法,一直报错后我采用第二种方法,发现还是报错后,我求助了度娘. 出现该问题的原因: 1.生成的sign签名有问题 2.支付授权目录配置有问题 在经过仔细的检查,后端也重新生成了签名后,这个问题还是存在.折腾了几天没有解决,发邮件咨询了微信官

【cl】解决Fail to create the java Virtual Machine

eclipse打开,提示Fail to create the java Virtual Machine 解决方法: 1.到eclipse安装目录下,找到eclipse.ini 2.按键盘ctrl+F,复制以下字符“launcher.XXMaxPermSize”,去掉引号,查找 3.将随后出现的两个216m改成128m

URAL 1684. Jack's Last Word KMP

题目来源:URAL 1684. Jack's Last Word 题意:输入a b 把b分成若干段 每一段都是a的前缀 思路:b为主串 然后用a匹配b 记录到b的i位置最大匹配的长度 然后分割 分割的时候要从后往前 如果a = abac b = abab 那么如果从前往后 首先覆盖了aba 然后b就不能覆盖了 从后往前就可以了 首先覆盖ab 下一次还是ab 因为已经记录了到i位置的最大匹配长度 根据长度从末尾倒退 每次倒退的时候只要是最大的匹配的长度 因为如果在某一次的递推 记录的最大匹配的前缀

。。。。。。。MMP抽离fail树

#include <cstring> #include <cstdio> #include <vector> #include <queue> #define Max 100 #define Mod 1000000007LL void read (int &now) { now = 0; register char word = getchar (); while (word < '0' || word > '9') word = get

fail树

前置技能:AC自动机 假设我们有了一个AC自动机,然后在上面进行字符串匹配. 上面是一个有四个字符串的AC自动机(abcde.aacdf.cdf.cde),虚线是fail指针,实线是转移. 这是上一次讲AC自动机的时候的匹配代码: int match(char* s) { int cur=rot,ans=0; for(int i=0;s[i];i++) { int c=s[i]-'a'; cur=ch[cur][c]; for(int f=cur;f!=rot;f=fail[f]) ans+=c

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

E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard input output:standard output The best programmers of Embezzland compete to develop a part of the project called "e-Government" — the system of automa

【屌丝程序的口才逆袭演讲稿50篇】第十三篇:爱迪生欺骗了我们!【张振华.Jack】

演讲稿主题:<爱迪生欺骗了我们>  --作者:张振华Jack,摘抄<马云为雅虎员工的演讲稿:爱迪生欺骗了我们> 很多人都记得爱迪生说的那句话吧:天才就是99%的汗水加上1%的灵感. 其实爱迪生是因为懒的想他成功的真正原因,所以就编了这句话来误导我们.      世界上最富有的人,比尔盖茨,他是个程序员,懒的读书,他就退学了.他又懒的记那些复杂的dos命令,于是,他就编了个图形的界面程序,叫什么来着?我忘了,懒的记这些东西.于是,全世界的电脑都长着相同的脸,而他也成了世界首富.  

夜话测试之Hi,Jack

有个村子有很多的耕地,村民们按照祖宗留下来的方法种植玉米,同样的方式延续了几十年,偶尔一些年份龙王喝多了撒个酒疯,或者旱魃出来撒点野,但因为玉米这东西总能在各种恶劣天气里自动适应和折中,所以也算得上旱涝保收. 科技进步以后,有眼光的村长引进了各种机械设备辅助耕种和收割,并为这些田地买了基本的旱涝保险:从此以后,尽管有些劳动还需要手工作业,但村民们不再像以前那样辛苦,出了什么天灾也有保险公司买单,更是乐得其所: 对于村长来说,虽然创收上乏善可陈,但却认为自己的政绩比比皆是,看着田里的机器耕种得有条

微信企业号开发之weixin://preInjectJSBridge/fail

最近几天遇到个奇怪的问题,目前只有在Andriod平台上出现:weixin://preInjectJSBridge/fail 不止我一个人遇到这个问题,群里也有好几个问了这个问题.这个问题直接导致我们后续的页面加载不全或者js执行莫名其妙的异常. 一开始搜索了一下,大家这样说:  但是也有很多人是没有用ES6语法,甚至只是最基础的jQuery.我的页面中也遇到了这个问题,关键是我连微信的JS-SDK都没哟引用过,只是简单的跳转. 然后今天有dubug了一个微信群发出来的文章,结果发现微信自己的页

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

2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Status][Discuss] Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母.经阿狸研究发现,这个打字机是这样工作的:l 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最