汽车独立式空调:如何在AUTHORWARE中做打单词游戏

来源:百度文库 编辑:神马品牌网 时间:2024/05/06 02:19:55
我用读取文本的方式做了个打单词效果,但是只能读取第一行,然后输入正确单词用炮打了后就不往下走了,不知道什么原因,下面是我的简单程序:
流程线上第一个是显示图标,放的是飞机模型
然后第二个是函数定义
里面计算图标内容如下:
-- 读取文本
wen:=ReadExtFile (FileLocation^"dict1.txt")
--初始化变量
--从第一行依次比较到最后一行.
第三行是初始化变量,里面的计算图标内容是
num1:=0
num2:=0
num3:=0
num4:=0--num1,num2,num3,num4定义出现的字符串
num5:=0
num6:=0
num7:=0
num8:=0
num9:=0
num10:=0
num11:=0
charnum:=0--定义出现的字符串得次数
count:=0--定义输入正确的字符窜次数
point:=0--统计正确率
path:=0--判断在正确率下将执行那个路经的内容
right:=0
第四行是背景图片
第五行是一个交互图标,交互图标左边分支有三项:第一个群组条件交互,名称为right=0,里面是三个内容,第一个计算,名称为定义,内容如下:jieshi:=ReplaceString(jieshi,Find(".", jieshi),1,".\r")--得到一个词语
position:=Random(0,10,1)--定义字符串出现的位置。
第二个显示图标,名称为显示字符串,在显示窗口里的左上角放置{jieshi},设置好字体大小和颜色。第三个是计算,名称为更改字符重复,内容如下:right:=1--更改字符串出现的条件
charnum:=charnum+1
第一分支完毕,交互的第二分支是群组文本输入,名称为:*,群组里第一个是计算图标,名称为“获得输入”,内容是danci:=EntryText,第二个是决策,名称为“判断输入正误”,属性设置里的重复设置为不重复,分支是计算分支结构,判断条件是“Test(hangdan=danci,1,2)”,决策的计算里面内容是:
-- 读取文本
wen:=ReadExtFile (FileLocation^"dict1.txt")
--从第一行依次比较到最后一行.

repeat with i:=1 to LineCount(wen)
--读取第i行
hang:=GetLine(wen,1,i)
--取得该行中的单词
hangdan:=SubStr(hang,1,Find(":",hang)-1

--获取该行中的解释
jieshi:=SubStr(hang,Find(":",hang)+1,CharCount(hang))
--插入一个回车符(当然也可以在文本文件中直接加入的)
jieshi:=ReplaceString(jieshi,Find(".", jieshi),1,".\r")

end repeat
决策的左边第一个群组,名称为正确,正确群组里第一项是计算,名称为计算输入正确次数,内容是count:=count+1,第二个是显示图标,名称为提示正确文本,图片是字符“输入正确”的提示文本,第三个是移动图标,就是将飞机模型移动到正确位置,第四个是激光图片,就是画得一个激光图片,第五是一个声音图标,放置的是激光发出的声音,第六个是等待,设置为0.5秒,第七擦除,擦除的是前面的提示正确文本图标和显示字符串图标。这个分支完毕。

还是我,问题继续说明:
在决策的错误群组分支里就是第一个是图片图标,名称是提示错误,图片是字符“输入错误”的提示文本,下面一个等待,也是0.5秒,最后一个是擦除,擦除的是提示错误图标和显示字符串图标。这个群组分支也完毕。
然后再回到*大群组的决策下方来,它下面是一个计算,名称为“重新产生新的字符串”,内容是right:=0,这整个*文本输入群组就彻底完了。
我们回到交互中来,在*文本输入群组左侧是最后一个群组,按钮群组,名称为统计,这个统计群组里面共七项,第一项是擦除,名称是“擦除字符串和飞机及提示”,擦除的是“产生字符串和判断”交互,飞机图标和显示字符串图标,第二项是计算,名称为“计算正确率和执行路径”,内容是charnum:=charnum-1
if charnum=0 then
point:=0
else
point:=count/charnum*100
end if
if point>=90 then
path:=1
else
if point>=60&point<90 then
path:=2
else
path:=3
end if
end if
第三项是显示结果图标,显示内容在图片的左上角:字符出现的次数:{charnum}

输入正确的次数:{count}
第四项是绘制正确率的矩形条块计算,内容为:
SetFill(TRUE,RGB(255,0,0))
SetFrame(TRUE,RGB(255,0,0))
Box(1,300,200,325,200-point)
第五项是决策图标,左边有三个群组,第一个名称为是path1,群组里面有两项,第一项是图片,名称为“Untitled”,显示的是字符“你的指法太好了!”然后下面放一个等待,设置为1秒。
第二个名称为path2,第一项也是图片,名称也为“Untitled”,显示的是字符“你的指法刚好合格!!”然后下面放一个等待,设置为1秒。最后一个名称为path3,第一项也是图片,名称也为“Untitled”,显示的是字符"你的指法差了,要继续努力",然后下面也放一个等待,设置为1秒。
这三个群组完毕了,返回到统计群组流程线决策图标的下方来,它的下面是个计算,名称为“是否继续”,内容如下:
a:=MessageBox(WindowHandle, "是否继续", "指法练习", 36) -- 6=Yes, 7=No
if a=6 then GoTo(IconID@"飞机")
else
Quit()
end if
这样所有的就都完了,现在一运行后能够读取文本中的汉字解释部分,然后在下面的文本输入中输入正确的单词就会启动大炮发射激光打掉它,但是有一个问题就是文本读的解释始终是第一行文本,也就是说我的Dict1文本中的第一行是airport:n.飞机场,它就读出
“n.
飞机场”,你输入正确的单词“airport”,大炮就跑到它的下面把“n.飞机场”打掉,但是无论如何也不会读取下一行,不知道是哪里出了错,请高手指教。