1. 用range[0,8)的列表表示牌,这些数字要出现两次。我们建议你通过连接两个range[0,8)的列表来创建这个list.利用Docs来安排列表串联操作
  2. 写一个draw handler啥样的draw handler呢?用for循环来迭代Memory deck,并用draw_text在画布上画出表示每个卡片的数字。结果应该是一个水平均等间隔的数字序列画在画布上
  3. 用random.shuffle()来洗牌。在洗牌之前记得消灭你canvas drawing代码的bug,这样的话消灭bug会比较容易一点
  4. 然后,修改draw handler来或者画一个空白的绿色矩形或者卡片数值。为了执行这个行为,我们建议你建立第二个叫做exposed的list。在这个exposed列表里面,这个ith应该是True如果ith卡片朝上,并且它的值是可见的;值是False如果ith卡片朝下并且它的值是隐藏的。我们建议你初始化exposed在一些已知的数值当测试你的drawing代码用这种修饰
  5. 现在,添加函数来确定你已经用鼠标点击了哪张卡片。添加一个鼠标点击event handler,这个函数有鼠标点击的位置并在控制台打印出你已经点击的纸牌的索引。为了简单的确认你已经点击了哪张卡片,我们建议用标准的画布,这样的话这一系列的卡片可以完整的填充画布。
  6. 修改鼠标点击的event handler以达到根据鼠标点击的位置来翻转卡片的目的。如果玩家点击第i张卡片,你可改变exposed[i]的值,从False改成True。如果卡片已经揭露了,你应该忽略鼠标点击。在这一点上,这就是这个游戏的基本构造。
  7. 现在你要添加游戏逻辑到鼠标点击handler里面为了选择两种卡片并确认他们是否是一对。我们建议跟随模板里面的游戏逻辑。状态0对应游戏开始的状态,在状态0,如果你点击一个没被揭露的卡片,那卡片就被揭露了,并且你转换到状态2.状态2对应一个turn结束了。在状态2,如果你点击一个没被揭露的卡片,那卡片就被揭露了并且你转换到状态1.
  8. 记得在状态2的情况下,你也要决定是否之前的两对卡片是一对的或者不是一对的。如果他们不是一对的,你要把它们翻转回去,这样的话他们就被隐藏起来了在移动到状态1.我们建议你使用两个全局变量来存储每两张卡片的索引,啥索引呢,我们之前的turn点击
  9. 添加一个计数器干啥的呢?用来跟踪回合次数并用set_text来更新这个计数器作为一个控制面板里面的标签。
  10. 最后,执行new_game()功能(如果你还没)这样的话“Reset"按钮可以洗牌,重置回合计数器并重新开始游戏。开始的时候所有的卡片是隐藏的。
  11. (可选)你可以替换 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.

 

· flag

 
 
 
 
Joe WarrenINSTRUCTOR· 20 days ago

Tip #3

但你接近完成这个项目的时候,当你从状态2过度到状态1的时候你将需要决定是否两张卡片是一对。这的关键是记录两张卡片的目录,啥呢,最后一个回合里面点击的(在两个独立的变量)所以你可以在下一个回合里面测试是否他们的数字是相等的

 

0votes received.

 

· flag

 

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的更多相关文章

  1. C语言-纸牌计算24点小游戏

    C语言实现纸牌计算24点小游戏 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的.程序主要功能已完成,目前还有部分细节 ...

  2. Code Project精彩系列(转)

    Code Project精彩系列(转)   Code Project精彩系列(转)   Applications Crafting a C# forms Editor From scratch htt ...

  3. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  4. 记一个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 ...

  5. ASP.NET Core project.json imports 是什么意思?

    示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...

  6. 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 ...

  7. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  8. CSharpGL(20)用unProject和Project实现鼠标拖拽图元

    CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...

  9. Microsoft Visual Studio 2013 — Project搭载IIS配置的那些事

    前段时间在改Bug打开一个project时,发生了一件奇怪的事,好好的一直不能加载solution底下的这个project,错误如下图所示:大致的意思就是这个project的web server被配置 ...

随机推荐

  1. 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem B: Minesweeper(模拟扫雷)

    Problem B: Minesweeper Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 29  Solved: 7[Submit][Status][W ...

  2. Hibernate 分页时 Long 无法转化成Integer类型 异常

    转自:http://loquat.iteye.com/blog/818547 报错:java.lang.Long cannot be cast to java.lang.Integer   Long ...

  3. Android SeekBar自定义使用图片和颜色显示

    案例使用的图片如下:                            1.在res/drawable目录下新增一个xml风格文件,seekbar_define_style.xml ? 1 2 3 ...

  4. 2016.6.23 PHP实现新闻发布系统主体部分

    1.新闻发布系统的列表: <html><meta http-equiv="Content-Type" content="text/html; chars ...

  5. 简单几何(直线求交点) POJ 2074 Line of Sight

    题目传送门 题意:从一条马路(线段)看对面的房子(线段),问连续的能看到房子全部的最长区间 分析:自己的思路WA了:先对障碍物根据坐标排序,然后在相邻的障碍物的间隔找到区间,这样还要判断是否被其他障碍 ...

  6. 计算1至n中数字X出现的次数

    描述 计算 1 至 n 中数字 X 出现的次数,其中 $n \ge 1,X \in [0,9]$. 解题思路 这是一道比较简单的题目,举个例子先:假设 $n=11, X=1$,那么就是求 1, 2, ...

  7. win7家庭版更改桌面图标

    电脑 Win7家庭普通版 方法/步骤   1 选择左下角开始. 2 在搜索栏中,输入“ico”,选择“显示或隐藏桌面上的通用图标”. 3 出现桌面图标设置,选择“更改图标”.

  8. PO3281 Dining(最大流)

    如果只有食物或者饮料那就是个二分图最大匹配. 三个真想不出来..然后看题解..从源点到食物到牛到饮料到汇点,这样建图. 所以思维不能太局限了,不懂得把食物和饮料放到牛两边,以为牛吃食物饮料.食物饮料被 ...

  9. Eddy's problem partI

    Eddy's mistakes[HDU1161] Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  10. 关于Ruby的一些知识

    1 -9/2 = -5 当进行一个除法运算的结果是一个负数的时候,由于Ruby采取向负无穷大圆整,所以结果是-5.而由于除数是个整数,所以结果也是一个整数.而其他语言多数是向0取整. 2 连接字符串建 ...