纸牌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被配置 ...
随机推荐
- Java Hour 47 WeatherInfo 保存到数据库
经历了上周简单的休整以后,我们继续Hibernate 之旅. 保存到数据库 private void saveWeatherInfo(Weatherinfo weatherInfo) { // Sav ...
- Java Hour 17 来个CURD吧(二)
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 突然想到我最近一直在追的小说,作者每天都会更新两章,而且质量挺高.所以从这篇开 ...
- laravel框架中注册信息验证
.路由配置 <?php Route::. 控制器分配页面及验证表单提交内容 <?php .form 表单验证 {{ Form::open(array().slideUp(); < ...
- Java反编译利器-Jad, Jode, Java Decompiler等及其IDE插件
转自:http://blog.csdn.net/superbeck/article/details/5189231 对于长年使用Java的程序员,大部分应该都会或多或少的使用到反编译软件.毕竟,不可能 ...
- Android JNI(转)
JNI,全称Java Native Interface,是用于让运行在JVM中的Java代码和运行在JVM外的Native代码(主要是C或者C++)沟通的桥梁.代码编写者即可以使用JNI从Java的程 ...
- hihoCoder挑战赛14 -1223
描述 给定n个关于X的不等式,问最多有多少个成立. 每个不等式为如下的形式之一: X < C X <= C X = C X > C X >= C 输入 第一行一个整数n. 以下 ...
- Apache服务器的下载与安装
关于PHP的运行环境搭载,网上文章繁杂,遂自己整理一篇! PHP的运行必然少不了服务器的支持,何为服务器?通俗讲就是在一台计算机上,安装个服务器软件,这台计算机便可以称之为服务器,服务器软件和计算机本 ...
- loadrunner数据库MySQL参数化列表乱码问题
问题现象: 解决方法: 1.配置mysql ODBC数据源里面的编码格式: 2.配置lr创建数据库连接: 3.再次查看:
- Objective-C专题,是学习iOS开发的前奏(转)
第一个OC的类 来源:http://www.cnblogs.com/mjios/archive/2013/04/06/3002814.html 本文目录 一.语法简介 二.用Xcode创建第一个OC的 ...
- Google地图接口API之地图类型(六)
1. Google 地图- 基本地图类型 Google Maps API 中提供了以下地图类型: MapTypeId.ROADMAP,用于显示默认的道路地图视图 MapTypeId.SATELLITE ...