The fateful moment has arrived- when I reveal to the list actual scripts I have written, showing the true depth of my coding abilities. Despite the shallowness of these snippets and the possibility that some of you more educated programmers might snicker a bit at my naivet�, I'm quite proud of the fact that I was able to cobble this together on my own and that it actually WORKS!
Well, make that "works up to a point." I'm not so proud of myself I won't ask for help.
Here's the background-
This is a foreign language vocabulary drill program. It uses audio bits and images in a multiple-choice format- the user clicks a button to hear the audio of the vocab word, then selects an answer from one of four images. If the image corresponds with the audio, it displays an affirmative graphic, if it doesn't a negative graphic appears.
I'll present the scripts I use to get to this point before I give you the problem I'm facing right now. For development purposes, I have this in three buttons, but button one would likely be in an openStack handler in a finished product, since it only needs to occur once. Button two could not be a button at all or combined with button three, since it never actually gets pressed by the user. I had them separate to keep actions clear in my mind while developing. Hope it doesn't confuse the issue.
Button one starts off the show, taking the comma-delimited data from a field ("SourceData"), then putting it into a variable. Each line in the field is two paths- one to the audio file and the other to the corresponding graphic. Forgive me if there are global variables that aren't used in every handler... I've changed them so many times as I've worked on this that there are a few unused, I think.
global gSourceData, gRandomLines on mouseUp put field "SourceData" into gSourceData put empty into gRandomLines send mouseUp to button "Button 2" end MouseUp
The next button figures out how many lines are in the gSourceData, and puts it into a variable. Then grabs a random one of those lines as the correct answer, then three other lines to represent incorrect answers. Since the lines are deleted from the gSourceData in the process, the "wrong" answers are added back to gSourceData so that they can be used as answers again. The "correct" answer is removed so that it does not appear as a correct answer again, however, it cannot be used as an incorrect answer either, which is a shortcoming of my script.
global gSourceData, gSourceLines, gRandomLines, gTempSource, gSelection, gSolution, gAltSolutions,
on mouseUp
put empty into gAltSolutions
put the number of lines of gSourceData into gSourceLines -- If there are 10 lines, gSourceLines will be "10"
put random(gSourceLines) into gSelection
put line gSelection of gSourceData into line 1 of gRandomLines
delete line gSelection of gSourceData
put gRandomLines into gSolution
put empty into gRandomLines
repeat with x = 1 to 3 times
put the number of lines of gSourceData into gSourceLines -- If there are 10 lines, gSourceLines will be "10"
put random(gSourceLines) into gSelection
put line gSelection of gSourceData into line x of gRandomLines
delete line gSelection of gSourceData
end repeat
put gRandomLines into gAltSolutions
put gRandomLines&return&gSourceData into gSourceData
end mouseUp
The final button takes the correct and incorrect answers and assigns them to one of four positions on the screen. It is pressed by the user to get a new correct answer to advance the program.
global gSourceData, gSourceLines, gRandomLines, gTempSource, gSelection, gSolution, gAltSolutions, gRandomImage1, gRandomImage2, gRandomImage3, gRandomImage4
on mouseUp
put field "gImage Source" into gImageSource
put empty into gRandomImage1
put empty into gRandomImage2
put empty into gRandomImage3
put empty into gRandomImage4
repeat with x = 1 to 4 times
put the number of lines of gImageSource into gImageSourceLines -- If there are 10 lines, gSourceLines will be "10"
put random(gImageSourceLines) into gImageSelection
put line gImageSelection of gImageSource into line x of gImageLines
delete line gImageSelection of gImageSource
end repeat
-- Set the correct answer
set the fileName of player "Question" to item 1 of line 1 of gSolution
put line 1 of gImageLines into gRandomImage1
set the fileName of gRandomImage1 to item 2 of line 1 of gSolution
-- Set the Alt Selection 1
set the fileName of player "Alt1" to item 1 of line 1 of gAltSolutions
put line 2 of gImageLines into gRandomImage2
set the fileName of gRandomImage2 to item 2 of line 1 of gAltSolutions
-- Set the Alt Selection 2
set the fileName of player "Alt2" to item 1 of line 2 of gAltSolutions
put line 3 of gImageLines into gRandomImage3
set the fileName of gRandomImage3 to item 2 of line 2 of gAltSolutions
-- Set the Alt Selection 3
set the fileName of player "Alt3" to item 1 of line 3 of gAltSolutions
put line 4 of gImageLines into gRandomImage4
set the fileName of gRandomImage4 to item 2 of line 3 of gAltSolutions
send mouseUp to button "Button 2"
end mouseUp
Finally, each image has a script as well that functions as a button to reveal whether the user has selected the correct answer when clicked.
global gRandomImage1 on mouseUp if the name of me is gRandomImage1 then show field "CorrectDisplay" else show field "FalseDisplay" wait 1 sec hide field "FalseDisplay" end if wait 1 sec hide field "CorrectDisplay" end mouseUp
That's pretty much it, though there is a problem, which appears as I get to the end of the listings in gSourceData. Once there are less than four questions left, a line is left blank, meaning that there is no path for the image in the following questions. So instead of a pretty vocabulary image, there's a blank spot, which repeats until the last item in the list happens to be the randomly-selected "correct" answer.
I haven't been able to figure out a simple way to run through the complete list without getting this blank spot. Actually, I did think of one way, but have no idea how to do the code- I'm afraid I do fine with small steps, but trying to implement something large gets the better of me. I'm sure there is a much more elegant solution to than what I've already created- unfortunately, I haven't any idea how to proceed!
Sorry for the long post. I've rambled enough- any ideas from anyone out there in Rev land?
Thanks,
-Jason _______________________________________________ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
