import turtle import time #初始化 def init(): global question_list, answer_list, option_list, position_list, question_index, question, answer # 题目列表 question_list = [’[整数在Python中是用什么表示的?]’, ‘[怎样在Python中输出?]’, ‘[条件判断在Python中是怎么写的?]’] # 选项列表 option_list = [[‘A.int’, ‘B.float’, ‘C.str’], [‘A.while’, ‘B.print’, ‘C.input’], [‘A.if’, ‘B.list’, ‘C.turtle’]] # 答案列表 answer_list = [‘int’, ‘print’, ‘if’] # 选项位置列表 position_list = [[-180,-100],[0,-100],[200,-100]] # 问题画笔 #问题序号 question_index = 0 #创建画笔 question = turtle.Pen() question.hideturtle() # 结果画笔 answer = turtle.Pen() answer.hideturtle() answer.penup() answer.goto(-100,-50) #在屏幕上绘制出相应文字 def drawText(p, color , text, size=40): p.pencolor(color) p.pensize(size) p.write(text, font=(‘宋体’,size, ‘normal’)) #在屏幕上显示出下一个问题 def getQuestion(p, index): # 注意清空屏幕!!!!!!!!!!!! p.clear() # global init p.penup() p.goto(-300, 150) # 检测题目是否回答完 if index > 2: p.goto(-50, 0) drawText(p, ‘green’, ‘通关了!’) else: drawText(p,‘black’,question_list[index]) for a in range(3): p.up() p.goto(position_list[a][0], position_list[a][1]) # p.down() drawText(p,‘black’ ,option_list[index][a]) index += 1
#############参考代码段############################# #注意点:
1、每次点击屏幕,onscreenclick都会把坐标传给checkPos让他去判断,所以checkPos只需要对当前这个题目的选项来循环检查可以啦
#2、33行加了清空屏幕的功能
#检查点击的坐标是否为正确选项 def checkPos(x, y): global question_index #将获得的坐标和本题的每个选项逐一比较,用来先确定是哪个选项,再确定选项是否正确 #多点击几次,总归能选择正确 for i in range(len(option_list)): #判断是否为某选项的坐标 if position_list[i][0] - 80 < x < position_list[i][0]+30 and position_list[i][1] < y < position_list[i][1] + 80: #将选项(例如A.int)分割获得 int ,再和答案列表进行比较 if option_list[question_index][i].split(’.’)[1] == answer_list[question_index]: #回答正确后要做的事情!!!!!!!!
#1、显示提示
result(answer, 'right')
#2、修改题目序号,显示下一题
question_index += 1
getQuestion(question, question_index)
else:
result(answer, 'wrong')
#显示回答问题的结果 def result(p, r): p.goto(-100, 100) p.goto(-100, 100) if r == ‘right’: drawText(p, ‘green’, ‘恭喜你回答正确’, 30) else: drawText(p, ‘red’, ’ 再想想哦’, 30) time.sleep(1) #注意清空屏幕!!!!!!!!!!!! p.clear()
###########################常郝自己即将完成的代码段######################### #注意点:每次点击屏幕,onscreenclick都会把坐标传给checkPos让他去判断 #所以checkPos只需要对当前这一个题目的选项来循环检查可以啦
#通过判断坐标,检测用户点击选项是否正确 def checkPos(x, y): answer = 0 global position_list,answer_list if x >=-240 and x<=240 and -10<= y <=10: if -240<=position_list[0]<=-80: answer = 0 elif -80<=position_list[0]<=80: answer = 1 elif 80<=position_list[0]<=240: answer = 2
turtle.tracer(False) init() getQuestion(question, question_index) turtle.onscreenclick(checkPos)
turtle.done()
|