---恢复内容开始---

首先是miniproject的说明:

combin text drawing in canvas with time to build digital stopwatch.
tenths of a second-秒后有一个小数点
3 buttons "Start" "Stop""Reset"
1.interval: 0.1s---creat_timer参数interval以毫秒为单位,0.1秒=100ms.用int,不要float
2.event handler function for canvas draws current time event handler 为了在画布中间上显示现在的时间。在draw之前用str转换现在的时间为字符串
3.添加“Start Stop" event handler 作用是开始和结束 ”Reset"结束及时,重新开始现在的时间,从0开始。框架刚打开的是0状态
4.写一个helper function,  format(t)  return a string  A :BC.D   ACD [0,9]  B[0,5]有可供测试的模板。粘贴format函数def到模板中。。string return by format函数应该包含0占位。例如:format(11) = 0:01.1  format(613) = 1:01.3---提示:用除法和余数将全局变量转化成相应格式
5.插入一个call to format到draw handler里面,秒表只要能工作超过10min就行,超过10min之后随便怎样
6.将stopwatch变成一个测反映速度的,X(停在整数秒)Y(总体实验次数)
7.按“Stop”后timer stop但不改变得分数。建议添加布尔变量 True-秒表工作 False-秒表停止,然后用这个数值决定按stop的时候是否更新score
8.modify Reset设置这些数值归零
#第四步 format(t)参考code clinic(论坛),看那里面的process可以节省时间
评分要点:
1.按Run,打开一个框架-有个静止的秒表
1.有”start“按钮,可以实现开始功能
1.有”stop“按钮,实现停止功能,并更新success/attampts
1.有”Reset“按钮,实现复位功能
4.画布上显示的时间符合格式要求,分秒,十分位秒,还有空白位的0
2.按”stop"后秒表不停???success/attampts结果能更新.如果计时器已经停止,按stop仍然更新success/attampts只得1分
1.“Reset"清除success、/attampts结果

下面是我纠结的编码思考过程:
首先是 format(t),将递增数字t转化成A:BC.D的格式:
t:每隔0.1s count+1
format(t),将t转化成A :BC.D的格式---第一节单位转换
1325-2:12.15      1325//600 = 2-----a
1325-2*600 = 125       125%60 = 5          125-5 = 120    120//100 = 1 ----b (除60是不是多余呢?换一个数字试试
第二种算法 125//10 = 12
1325-2*600 = 125       125%60 = 5          125-5 = 120    120/10 = 12    12//10 = 2----c
有些算错了,BC这两个数字不对,考虑用string来表达?
设t=214,格式为A:BC:D正确结果应该是0:21.4
 
如果按照这个公式计算B = ((t - t // 600 * 600) - (t - t // 600 * 600) % 60) // 100
t//600 = 0   t-t//600*600 =214    (t-t//600*600)%60=
10/8晚上洗完澡后,冷静思考,确认A和D的表达没问题,问题出在B和C,然后运用推理写出了B和C的表达,format(t)的终板如下:

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任务总结的更多相关文章

  1. IIPP迷你项目(三)“Stopwatch: The Game”

    0 本周项目说明 这一次博客是Coursera的IIPP课程第三周迷你项目的实现,基础要求是做一个秒表,能start能stop能reset,更高的要求是在此秒表的基础上完成两个小游戏,但是鉴于第二个小 ...

  2. Coursera,Udacity,Edx 课程列表(更新ing)

    Coursera,Udacity,Edx 课程列表(更新ing) Coursera有很多特别好的课程,平时没有机会听到国外大牛的课程,通过Coursera算是可以弥补一下吧,国外的课程普遍比国内的老师 ...

  3. Coursera上一个不错的Java课

    地址:https://www.coursera.org/learn/java-chengxu-sheji/home/welcome 复习天昏地暗,看点视频调剂一下.发现这个讲的还是很不错的.北大毕竟比 ...

  4. java stopwatch 功能

    C#中有一个stopwatch的功能,主要是用来监测程序执行时间的.java之前一直都在用如下方式完成: public static void main(String[] args) { long s ...

  5. 计时器StopWatch示例

    计时器 StopWatch stwatch = new StopWatch(getClass().getSimpleName()); try{ stwatch.start(joinPoint.getS ...

  6. Coursera系列-R Programming第二周

    博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html  --- 好久没发博客 且容我大吼一句 终于做完这周R Progra ...

  7. Coursera系列-R Programming第三周-词法作用域

    完成R Programming第三周 这周作业有点绕,更多地是通过一个缓存逆矩阵的案例,向我们示范[词法作用域 Lexical Scopping]的功效.但是作业里给出的函数有点绕口,花费了我们蛮多心 ...

  8. 监测程序运行的时间,stopWatch

    ArrayList arrInt = new ArrayList(); //用stopwatch来计时 运行的时间 Stopwatch watch = new Stopwatch(); watch.S ...

  9. [转]使用Stopwatch类实现高精度计时

    对一段代码计时同查通常有三种方法.最简单就是用DateTime.Now来进行比较了,不过其精度只有3.3毫秒,可以通过DllImport导入QueryPerformanceFrequency和Quer ...

随机推荐

  1. 必应缤纷桌面的必应助手-软件分析和用户市场需求之-----二.体验部分 Ryan Mao (毛宇11061171) (完整版本请参考团队博客)

    <必应缤纷桌面的必应助手> 2.体验部分 Ryan Mao (毛宇11061171) (完整分析报告请参考团队博客http://www.cnblogs.com/Z-XML/) 我花了2天的 ...

  2. Centos 6.4 32位 gcc 升级(已验证)

    具体需要升级成什么版本自行下载https://gcc.gnu.org/ 本文升级为4.8.5 1.下载编译所需依赖库 cd gcc-4.8.5 ./contrib/download_prerequis ...

  3. WebView的写法

    public class MainActivity extends Activity { private WebView wv; @Override protected void onCreate(B ...

  4. SU suwind命令学习

  5. 水题 ZOJ 3869 Ace of Aces

    题目传送门 水题,找出出现次数最多的数字,若多个输出Nobody //#include <bits/stdc++.h> //using namespace std; #include &l ...

  6. 数学 ACdream 1196 KIDx's Triangle

    题目传送门 /* 这道题花了好长时间AC,思路有,但是表达式少写了括号一直乱码,囧! 注意:a==0时要特判:) */ #include <cstdio> #include <alg ...

  7. Self Numbers[HDU1128]

    Self Numbers Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  8. Matrix Chain Multiplication[HDU1082]

    Matrix Chain Multiplication Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  9. BZOJ3276 : 磁力

    按距离建立线段树,维护区间重量最小值 然后跑一遍拓扑,每次将所有能取的加入队尾 #include<cstdio> #include<algorithm> #define N 2 ...

  10. WP7:模拟开始屏幕Tile漂动效果

    在WP7手机的开始屏幕,如果你Hold住某一个瓷贴,就会发现除了你按住的那个瓷贴其他全部下沉半透明,然后开始在不停地漂来漂去~~今天来模仿一下这个效果.新建一个项目,然后在Grid里放一个ListBo ...