纸牌project
- 用range[0,8)的列表表示牌,这些数字要出现两次。我们建议你通过连接两个range[0,8)的列表来创建这个list.利用Docs来安排列表串联操作
- 写一个draw handler啥样的draw handler呢?用for循环来迭代Memory deck,并用draw_text在画布上画出表示每个卡片的数字。结果应该是一个水平均等间隔的数字序列画在画布上
- 用random.shuffle()来洗牌。在洗牌之前记得消灭你canvas drawing代码的bug,这样的话消灭bug会比较容易一点
- 然后,修改draw handler来或者画一个空白的绿色矩形或者卡片数值。为了执行这个行为,我们建议你建立第二个叫做exposed的list。在这个exposed列表里面,这个ith应该是True如果ith卡片朝上,并且它的值是可见的;值是False如果ith卡片朝下并且它的值是隐藏的。我们建议你初始化exposed在一些已知的数值当测试你的drawing代码用这种修饰
- 现在,添加函数来确定你已经用鼠标点击了哪张卡片。添加一个鼠标点击event handler,这个函数有鼠标点击的位置并在控制台打印出你已经点击的纸牌的索引。为了简单的确认你已经点击了哪张卡片,我们建议用标准的画布,这样的话这一系列的卡片可以完整的填充画布。
- 修改鼠标点击的event handler以达到根据鼠标点击的位置来翻转卡片的目的。如果玩家点击第i张卡片,你可改变exposed[i]的值,从False改成True。如果卡片已经揭露了,你应该忽略鼠标点击。在这一点上,这就是这个游戏的基本构造。
- 现在你要添加游戏逻辑到鼠标点击handler里面为了选择两种卡片并确认他们是否是一对。我们建议跟随模板里面的游戏逻辑。状态0对应游戏开始的状态,在状态0,如果你点击一个没被揭露的卡片,那卡片就被揭露了,并且你转换到状态2.状态2对应一个turn结束了。在状态2,如果你点击一个没被揭露的卡片,那卡片就被揭露了并且你转换到状态1.
- 记得在状态2的情况下,你也要决定是否之前的两对卡片是一对的或者不是一对的。如果他们不是一对的,你要把它们翻转回去,这样的话他们就被隐藏起来了在移动到状态1.我们建议你使用两个全局变量来存储每两张卡片的索引,啥索引呢,我们之前的turn点击
- 添加一个计数器干啥的呢?用来跟踪回合次数并用set_text来更新这个计数器作为一个控制面板里面的标签。
- 最后,执行new_game()功能(如果你还没)这样的话“Reset"按钮可以洗牌,重置回合计数器并重新开始游戏。开始的时候所有的卡片是隐藏的。
- (可选)你可以替换 draw_text对每张卡片通过draw_image用一个里面的8个不同图片。
一旦按了开始按钮,游戏应该开始。你不用按”Reset"来开始。一旦游戏结束,你要按“Reset"来重新开始游戏。
尽管这个游戏开始可能觉得挺难的,我们完整的代码包含注释和空格不到100行。如果你觉得有难度,集中注意到第六步。我们的经验是,在这个点上,你将开始看的你的游戏组装起来了,接下来就更简单了。
评分标准
- 1 pt - 游戏正确的在画布中画出16张卡片(水平,或者栅格)。使用图像代替文本数字比较好,但是提交者有责任确保能加载图片
- 1 pt - 卡片是8对
- 1 pt - 游戏忽略点击已经揭示的卡片
- 1 pt - 游戏开始的时候,点击一张卡片,卡片可以被揭示
- 1 pt - 如果一张没配对的卡片被揭开了,点击第二张没被揭示的卡片,这第二张卡片应该被显露出来
- 1 pt - 如果两个没配对的卡片被揭露出来,点击一个没被揭露出来的卡片,这张卡片可以被揭露出来并且没配对的两张卡片翻转过去。
- 1 pt - If all exposed cards are paired, a click on an unexposed card exposes the card that was clicked on and does not flip any other cards.如果所有的卡片都配对了,点击到一个没配对的卡片会揭露这张被点击的卡片,其他已经配对的不会被翻过去。
- 1 pt - .配对的卡片通过一个循环里面的两次点击以被揭露的状态保留知道开始下一次游戏。
1 pt - 游戏 在控制区域以标签的形式 正确的更新并显示当前的游戏回合次数。计数器要在一个回合里面增加在第一或者第二张卡片翻转过来
- 1 pt - 这个游戏包含一个“Reset"按钮,这个Reset按钮可以重置回合计数器并且重置这个游戏
- 1 pt - 每次按Reset,8个数字序列也要洗牌,所以每次纸牌顺序都不
Tip #1
你们许多人想要使用16个if语句来控制每个可能的卡片位置在画布上。别那么做。学习如何使用for loops循环,例如,下面的代码是一个比较好的开端来画卡片
for c in cards:
canvas.draw_text(str(c), pos, ....)
pos[0] += ...
0votes received.
Joe WarrenINSTRUCTOR· 20 days ago
Tip #2
在你的鼠标点击handler里面,你要确定你已经点击了哪张卡片。不要在这使用一个长长的 if/elif/else陈述。通过pos[0]//50计算卡片的序列.你之后也可以利用这个序列,当操作显露出来的list,显露出来的list是永康控制是否一个卡片被画出或者没被画出。
0votes received.
Joe WarrenINSTRUCTOR· 20 days ago
Tip #3
但你接近完成这个项目的时候,当你从状态2过度到状态1的时候你将需要决定是否两张卡片是一对。这的关键是记录两张卡片的目录,啥呢,最后一个回合里面点击的(在两个独立的变量)所以你可以在下一个回合里面测试是否他们的数字是相等的
0votes received.
def draw(canvas):
cards = range(0,8)
cards.extend(cards)
random.shuffle(cards)
for c in cards:
canves.draw_text(str(c), (pos[0],50), 12, "White")#canvas少写了个a
pos[0] += 50#报错了,用简化模式试试看
下面的好的
def draw(canvas):
cards = range(0,8)
cards.extend(cards)
random.shuffle(cards)
pos = [10, 70]
for c in cards:
canvas.draw_text(str(c), (pos), 60, "White")
pos[0] += 50
线宽50--48
我画出了第一个绿色矩形,如何画16个呢,画出来了但是不清楚是否正确,我的边缘是黑色的,而且数字在一直闪
==========================================================================================
def draw(canvas):
cards = range(0,8)
cards.extend(cards)
random.shuffle(cards)
pos = [10, 70]
posa = 25
exposed = [True, False,False, False,False,False, False,False,False, False,False,False,False,False,False, False]
for c in cards:
canvas.draw_text(str(c), (pos), 60, "White")
pos[0] += 50
canvas.draw_line((posa, 0),(posa, 100), 48, "Green")
posa += 50
===============================
根据参考答案,数字不闪了
这个任务估计是做不完了,因为没时间,为啥没时间?因为上周的时间都被浪费了,有很多意外,都有啥意外?
昨晚头痛(接到猎头电话高兴过头了?);调部门的事情也让我心情不太好,周日去姑姑那没学习,约会3次。补考勤的事情也花了很长时间。有一天健身花了一个多小时。看北大的课程刷了一整晚,明天要去爬山,
这一周经常感觉看视频的进度很慢,在quiz上浪费了太多时间。
下周该怎么做呢?这个任务该怎么办呢?
首先,上午的时间一定要安排给coursera,尽量排除其他事情的干扰,我能漂亮的完成一门课程已经不错了,不要好高骛远。即使是紧急的事情也要清楚我的最重要的任务是什么。用最好的时间研究视频,跟着视频敲代码,一段段的敲,不要全部看完再敲,会忘记的,迅速过一遍视频,然后做quie,quize不要花太多时间,超过80分就赶快着手mini project
对于本次任务,我已经提交了一个狗屎版本,我一定要自己写出来,
我又一次fail了,但是我还要挣扎,还要再次站起来
纸牌project的更多相关文章
- C语言-纸牌计算24点小游戏
C语言实现纸牌计算24点小游戏 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的.程序主要功能已完成,目前还有部分细节 ...
- Code Project精彩系列(转)
Code Project精彩系列(转) Code Project精彩系列(转) Applications Crafting a C# forms Editor From scratch htt ...
- .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
.NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- ASP.NET Core project.json imports 是什么意思?
示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...
- PhpStorm和WAMP配置调试参数,问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.
PhpStorm和WAMP配置调试参数 问题描述: Error. Interpreter is not specified or invalid. Press “Fix” to edit your p ...
- Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)
作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...
- CSharpGL(20)用unProject和Project实现鼠标拖拽图元
CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...
- Microsoft Visual Studio 2013 — Project搭载IIS配置的那些事
前段时间在改Bug打开一个project时,发生了一件奇怪的事,好好的一直不能加载solution底下的这个project,错误如下图所示:大致的意思就是这个project的web server被配置 ...
随机推荐
- 测试服务API的_苏飞开发助手_使用说明
1 工具说明_json对象字符串拼接 2 工具说明_纯字符串拼接
- AutoMapper使用笔记
AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...
- Sprint第一个冲刺(第十一天)
一.Sprint介绍 修改登录信息界面(修改用户名.密码.邮箱.电话.年龄),且同步到云端:修改Item布局:增添设置页. 实验截图: 任务进度: 二.Sprint周期 看板: 燃尽图:
- HDU3341 Lost's revenge(AC自动机+DP)
题目是给一个DNA重新排列使其包含最多的数论基因. 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数 ...
- 【BZOJ】1051: [HAOI2006]受欢迎的牛(tarjan)
http://www.lydsy.com/JudgeOnline/problem.php?id=1051 这题还好-1A了..但是前提还是看了题解的 囧.....一开始认为是并查集,oh,不行,,无法 ...
- windows环境下nginx的启动、停止
Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...
- const 与指针
深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p ...
- 使用javabean连接数据库时遇到的问题
1.whitespace问题.是便签了每空格如: 就会出现下面的问题.contentType前每空格.空格后就解决了 2. 这是部署问题,关闭,重新部署 追问 怎么部署? 回答 1.选中项目 F5(e ...
- C# 从数据库中删除,插入,修改 索引选中条目
一.删除 1. ) { var currentSelectIndex = usrListView.SelectedIndex; var item = usrView[currentSelectInde ...
- mysql 常用知识
1.uuid guid UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长.比如:550e8400-e29b-41d4-a716-446655440000 CH ...