分享
 
 
 

第九章选择题第三部分

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

⑵界面有了,关键就是要怎样把题目显示出来给学生做,这就是第二部分的功能了。

在“出题”那个交互结构中,里面包括了八个按钮交互,分别是三个单选按钮,用来选择题目难度;一个“OK”按钮,用来根据选择的难度读入相应的题库;一个“重选”按钮,方便进行难度的重新选择;一个“开始”按钮,用来开始出第一题;一个“下一题”按钮,用来出下一题;一个“退出”按钮,用来退出程序。

实现出题这一步的思路是:首先把不同难度的题目存放到不同的TXT文、件中,用1.txt、2.txt、3.txt命名,数字越大难度越高。然后在选择难度的单选按钮中,记录选择的是1、2还是3,在按下“OK”按钮时,根据刚才选择的数字,从磁盘上读入相应的题库,存入一个变量中;当按下“开始”按钮时,用Random()函数从刚才的变量中选择题目,然后在变量中把这个题目删除,防止下次选到重复的题目;按“下一题”按钮时,再次用Random()函数选题。

①首先来介绍三个单选按钮如何设计

这三个单选按钮是互斥的,也就是说只能有一个被选中,在设计时,就要保证在单击一个单选按钮时,其它两个按钮要显示未选中的状态,要做到这一点,只要在一个单选按钮被选中时,把其它两个按钮的checked属性值设为0,以难度为“高”的单选按钮为例,它下面的【计算】图标中的代码如下:

Checked@"中":=0

Checked@"低":=0

同理,当单击“中”单选按钮时,应执行:

checked@"低":=0

checked@"高":=0

当单击“低”单选按钮时,应执行:

checked@"高":=0

checked@"中":=0。

②然后是“OK”按钮

当选完难度后,按“OK”按钮读入题库,先用一组判断语句判断是哪个单选按钮被选中(也就是哪个单选按钮的checkecd属性是等于1),然后用ReadExtFile()函数读入相应的题库,具体代码如下:

--使OK按钮失效

okClick:=1

--使选择难度的单选按钮失效

ok:=1

--使开始按钮有效

start:=1

--开始选择读入相应题库

if Checked@"高"=1 then

nandu:=3

else

if Checked@"中"=1 then

nandu:=2

else

nandu:=1

end if

end if

tiku:=ReadExtFile(FileLocation^"题库\\"^String(nandu)^".txt")

nandu变量保存选择的难度,tiku变量保存读入的题库,ReadExtFile()函数读入磁盘中的文件内容,它要求完整路径作为参数。FileLocation系统变量记录的是当前程序所在的文件夹的完整路径,string()函数把当前数据类型转换成字符串类型。如果nandu的值是1的话,FileLocation^"题库\\"^String(nandu)^".txt"的意思就是:当前程序所在文件夹下的“题库”文件夹下的1.txt。

③读入了题库

按“开始”按钮就开始出题了。出题的思路是:LineCount()函数判断题库的总行数,把它除以6就是题目总数。用Random()函数实现随机取题和随机分配答案。具体代码如下所示:

--记录题库的总行数

tikuLine:=LineCount(tiku)

--如果题库中已经没有题目了,转到题库空图标去处理

if tikuLine=0 then

start:=0

timuNext:=0

GoTo(@"清空屏幕显示")

end if

--随机取题,因为题库中每题加上答案是占5行,所以tikuLine要除以5

getnum:=Random(1,tikuLine/5,1)

--保存正确答案

right:=GetLine(tiku,getnum*5-3)

--读入选择答案

ans:=Array(0,4)

ans[1]:=GetLine(tiku,getnum*5-3)

ans[2]:=GetLine(tiku,getnum*5-2)

ans[3]:=GetLine(tiku,getnum*5-1)

ans[4]:=GetLine(tiku,getnum*5)

--读入选择的题目

timu:=GetLine(tiku,getnum*5-4)

--删除已经选择的题目及答案,防止重复选题

tiku:=DeleteLine(tiku,getnum*5-4,getnum*5)

--随机分配答案

--用于屏幕显示的数组

display:=Array(0,4)

--每次用随机取得的num,把ans数组中对应的元素传给display数组,

--再用ans数组中的剩下的最后的一个元素覆盖刚才的ans[num],保证每个答案都被选择一次

repeat with i:=1 to 4

num:=Random(1,4-i+1,1)

selex:=ans[num]

ans[num]:=ans[4-i+1]

display[i]:=selex

end repeat

GoTo(@"判断对错")

关键是随机分配答案的算法,这里用了一个循环语句来实现:

display:=Array(0,4)

repeat with i:=1 to 4

num:=Random(1,4-i+1,1)

display[i]:=ans[num]

ans[num]:=ans[4-i+1]

end repeat

display是保存并显示候选答案的数组,ans是暂时保存候选答案的数组,在循环中,首先从候选的四个答案中随机选择一个传递给display[1],然后在ans数组中用最后一个答案覆盖刚才选出来的答案,这样ans中的前三个答案就是还没有选择过的答案,下一次的循环就只要在ans的前三个答案中选择就行了,选择的结果传递给display[2],然后还是用当时的最后一个答案(也就是ans[3])覆盖刚选的答案,那ans的前两个答案就是还未选择的答案,第三次循环就只要从这两个答案中选择就行了,第四次循环也是如此。

至此,选题完毕,最后用GoTo(@"判断对错")转到判断对错的交互,等待用户的选择。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有