coursera-miniproject stopwatch任务总结
---恢复内容开始---
首先是miniproject的说明:
下面是我纠结的编码思考过程:
def format(t):
A = t // 600
B = (t - t // 600 * 600) // 100
C = (t - t // 600 * 600) // 10 - (t - t // 600 *600) // 100 * 10
d = str (t)
D = d[-1]
return str(A) + ":" + str(B) + str(C) + "." + D
第二天试验了一些数据,应该是没问题的。
然后开始写可视frame
Timer的格式?
Timer不能工作 报错
Count在最前面定义t
Format(t)将count得到的t转换成A:BC.D的格式
Draw_handler在画布上将Format(t)显示出来
删掉多余的,单纯实验timer
我解决了timer的问题!!!柳暗花明又一村啊!!!刚才躺床上都想放弃了,我删掉多余的,单纯实验timer就解决问题啦,原来simplegui.creat_timer creat少打了一个e,应该是create啊!
然后又报错canvas.draw_text(format(t),[100,100],24,”white”) t没有定义
我就设置t为全局变量 t = 0。但是画布上只显示了0:00.0,我再在tick里面声明全局变量t,
Def tick()
t+=1
return t
点击run,就可以啦:
现在还需要:
1.3个可以工作的按钮;
貌似已经解决了,用timer.start() timer.stop()
但是开始的时候秒表就开始跑了,这是咋回事?
2.记分牌,按到stop整秒记1分,如何表达记分牌
3.按Run启动的秒表应该是停止状态,按start才开始框架刚打开的是0状态
先处理第三个问题
关于第二个问题,Stop的逻辑应该是比较复杂的,start按钮应该是比较简单的,因为stop是要记分数的
按start后t = 0,
现在我run以后马上开始count,不应该这样,应该是我点start之后开始count
Tick 应该是停止的状态?
Timer.start()
T=0这个全局变量是否应该存在?
点开始 timer就开始运行,第二个参数tick
解决了!!!在最后写
Timer.stop()
就!行!啦!
第二个问题:如何写两个draw handler? 用空白的试一试?看一看视频?看完视频我就知道怎么写了,是写两行:
Def draw(canvas):
Canvas.draw_text(format(t), [100, 100], 24, “White)#format(t)必须是字符串
Canvas.draw_text(“Hello!”, [200, 50], 24, “White)
按下stop,X/Y,Y值加1,X值是否加1要看是否是整数秒
Reset"清除success、/attampts结果
A:BC.D
每次点击Stop, Y加1
只要D=0,X就加1
否则X不加1
D = d[-1] = str(t)[-1]
下面的代码,不能工作,stop,start,Reset都不好使了
---------------------------------------------------------------------------
def stop():#stop不工作
x = 0
y = 0
y += 1
if int(str(t)[-1]) == 0:
x += 1#x,y都是整数,非字符串
else:
return x#这里好像有问题?
timer.stop()
return str(x) + "/" + str(y)#这里应该不用return成字符串的,应该是 canvas.draw_text(str(x) + "/" + str(y)
======================================
Stop具体要实现什么功能?
1.秒表停止 2.Y值加1 3.如果t为整数秒,X加1
不改动的话功能1可以实现,现在要考虑如何实现功能2。3
另外定义一个X/Y?
先看看code clinic
l 按照code clinic说法,stop 按钮应该检查t% 10 == 0
l Draw handler call format(t)
用布尔函数,True of False; 。建议添加布尔变量 True-秒表工作running False-秒表停止stop,然后用这个数值决定按stop的时候是否更新score
If timer.is_running():
之前有模板说可以给出True 和false的?
def stop_button_handler():
global
num_pushes,num_succ_pushes
if timer.is_running() and
tenths_of_sec==0:#可以改
num_succ_pushes += 1
num_pushes += 1
timer.stop()
elif timer.is_running():
num_pushes += 1
timer.stop()
else:
timer.stop()
现在参考上面的代码,试一试,上面的代码启发了我(论坛有人贴的)
难道是draw_handler_text出了问题?一定要是字符串?
Canvas.draw_text(str(x) + “/” + str(y),
[200, 200], 24, “Green”)#这里才关键,之前一直想要这样:canvas.draw_text(stop(), [200,200])
我搞!定!了!
def
stop():
global x, y
if timer.is_running() and t % 10 == 0:
x += 1
y += 1
timer.stop()
elif timer.is_running():
y += 1
timer.stop
else:
timer.stop
删掉timer.is_running()不行,因为删掉后,计时器已经停止了,按stop x,y依然家1
最后完成了,reset是这样的:
Def reset():
Global t, x, y
T = 0
X = 0
Y = 0
Timer.stop()
# template for "Stopwatch: The Game"
import simplegui t = 0
x = 0
y = 0
# define helper function format that converts time
# in tenths of seconds into formatted string A:BC.D def format(t):
A = t // 600
B = (t - t // 600 * 600) // 100
C = (t - t // 600 * 600) // 10 - (t - t // 600 *600) // 100 * 10
d = str (t)
D = d[-1]
return str(A) + ":" + str(B) + str(C) + "." + D # define event handlers for buttons; "Start", "Stop", "Reset"
def start():
timer.start()#在某一个时间停止, def stop():
global x, y
if timer.is_running() and t % 10 == 0:
x += 1
y += 1
timer.stop()
elif timer.is_running():
y += 1
timer.stop() def reset():
global t, x, y
t = 0
x = 0
y = 0
timer.stop() # define event handler for timer with 0.1 sec interval def tick():
global t
t += 1#不需要return # define draw handler
def draw(canvas):
canvas.draw_text(format(t), [80, 120], 50, "White")
canvas.draw_text(str(x) + "/" + str(y), [220, 30], 35, "Green")
# create frame
f = simplegui.create_frame("Stopwatch", 300, 200) # register event handlers
f.add_button("Start", start, 100)
f.add_button("Stop", stop, 100)
f.add_button("Reset", reset, 100)
f.set_draw_handler(draw)
timer = simplegui.create_timer(100, tick)
# start frame
f.start()
timer.stop()
# Please remember to review the grading rubric
很有成就感!嗯!
coursera-miniproject stopwatch任务总结的更多相关文章
- IIPP迷你项目(三)“Stopwatch: The Game”
0 本周项目说明 这一次博客是Coursera的IIPP课程第三周迷你项目的实现,基础要求是做一个秒表,能start能stop能reset,更高的要求是在此秒表的基础上完成两个小游戏,但是鉴于第二个小 ...
- Coursera,Udacity,Edx 课程列表(更新ing)
Coursera,Udacity,Edx 课程列表(更新ing) Coursera有很多特别好的课程,平时没有机会听到国外大牛的课程,通过Coursera算是可以弥补一下吧,国外的课程普遍比国内的老师 ...
- Coursera上一个不错的Java课
地址:https://www.coursera.org/learn/java-chengxu-sheji/home/welcome 复习天昏地暗,看点视频调剂一下.发现这个讲的还是很不错的.北大毕竟比 ...
- java stopwatch 功能
C#中有一个stopwatch的功能,主要是用来监测程序执行时间的.java之前一直都在用如下方式完成: public static void main(String[] args) { long s ...
- 计时器StopWatch示例
计时器 StopWatch stwatch = new StopWatch(getClass().getSimpleName()); try{ stwatch.start(joinPoint.getS ...
- Coursera系列-R Programming第二周
博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html --- 好久没发博客 且容我大吼一句 终于做完这周R Progra ...
- Coursera系列-R Programming第三周-词法作用域
完成R Programming第三周 这周作业有点绕,更多地是通过一个缓存逆矩阵的案例,向我们示范[词法作用域 Lexical Scopping]的功效.但是作业里给出的函数有点绕口,花费了我们蛮多心 ...
- 监测程序运行的时间,stopWatch
ArrayList arrInt = new ArrayList(); //用stopwatch来计时 运行的时间 Stopwatch watch = new Stopwatch(); watch.S ...
- [转]使用Stopwatch类实现高精度计时
对一段代码计时同查通常有三种方法.最简单就是用DateTime.Now来进行比较了,不过其精度只有3.3毫秒,可以通过DllImport导入QueryPerformanceFrequency和Quer ...
随机推荐
- [译]SQL Server 之 查询优化器
因为生成查询计划的代价比较大,所以查询计划将会被缓存. 树形结构 SQL 查询首先被转化为树形结构,每个节点都是一个查询操作.例如: SELECT * FROM Customers C INNER J ...
- thinkphp的mvc理解
ThinkPHP支持多层设计. .模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层等不同的模型层可以在模块目录下创建Model,L ...
- java程序员必须会的技能
1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:a ...
- CC2540开发板学习笔记(八)—— 看门狗
一.功能: 防止程序跑飞,使得系统重新进入工作状态,即一种复位操作吧. 但需要不停地喂狗= =(就是不断的执行某种操作),假如说你的程序跑到了不知道哪里去的错误时,即不会实现喂狗,就会发生复位,程序就 ...
- JNI常见错误1
1, java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "signal" referenced ...
- Codeforces 161D Distance in Tree(树的点分治)
题目大概是,给一棵树,统计距离为k的点对数. 不会DP啊..点分治的思路比较直观,啪啪啪敲完然后AC了.具体来说是这样的: 树上任何两点的路径都可以看成是一条过某棵子树根的路径,即任何一条路径都可以由 ...
- Unity Built-in Shader详解三
上次讲的是Transparent Shader Family,他们是绘制半透明的对象使用的,但他们并不能满足我们全部的要求. Transparent Cutout Shader Family是对半透明 ...
- it's hard to say
Ew,it's hard to begin.In fact I don't know what to say either.So here is a sad story.First of all ,m ...
- Extjs3.3 + swfUpload2.2 实现多文件上传组件
[该上传组件已经停止更新,该上传组件已经在项目中使用.在使用过程中如果发现bug请大家回复此贴.2011-02-27] 主要是为了用swfUpload实现上传,为了新鲜好玩. 理解swfUpload可 ...
- BZOJ4373 : 算术天才⑨与等差数列
设$pre[i]$表示第$i$个数上一次出现的位置,$d[i]=abs(a[i]-a[i+1])$. 用线段树维护区间内$a$的最小值.最大值,$pre$的最大值以及$d$的$\gcd$. 对于询问$ ...