How do I get this program to ask more than one question?
- Posted by bubba Jan 03, 2009
- 2647 views
I am trying to write a quiz program that will ask 10 or 20 random questions and then grade it. I got it working great for the first question, but can't figure out how to ask another question.
I am obviously missing something very big in my Euphoria knowledge.
This is a stripped down version for your perusal.
handler.exw - written by Ron Austin 386-688-4057 without warning with trace
include win32lib.ew win32 library include datetime.e include gstring.e George Walters string functions
atom correct object Win,Win1,Win2,Win3,record,Win4,ans1,ans2,ans3,ans4 sequence Data,text,key,test,keyindex,right,wrong,question,answer1,answer2,answer3,answer4,rightans integer ct,recs,line,Okay,ans, qcount,fields,RecNum
question=repeat(0,5) answer1=repeat(0,5) answer2=repeat(0,5) answer3=repeat(0,5) answer4=repeat(0,5) right=repeat(0,5) qcount=5 fields = 9 Okay=0 Data = repeat(0,fields)
constant Ver = "Version 1.0", App = "Handler Demo"
ans1 = create(Radio,"",Win2,5,22,12, 12,0) ans2 = create(Radio,"",Win2,5,62,12, 12,0) ans3 = create(Radio,"",Win2,5,102,12, 12,0) ans4 = create(Radio,"",Win2,5,142,12, 12,0)
setFont( Win1, "Arial", 12, Bold ) setFont( Win2, "Arial", 16, Bold+Italic ) setFont( Win3, "Arial", 12, Bold )
procedure LoadQuestions() question[1]="WHO IS BURIED IN GRANT'S TOMB?" question[2]="5 + 5 = ?" question[3]="HOW MANY TEETH DOES AN ADULT HUMAN HAVE?" question[4]="WHAT IS THE CAPITAL OF THE STATE OF FLORIDA?" question[5]="APPROXAMENTALY HOW MILES IS IT TO THE SUN?"
answer1[1]="GRANT" answer2[1]="LINCON" answer3[1]="NOBODY" answer4[1]="WASHINGTON"
answer1[2]="5" answer2[2]="10" answer3[2]="25" answer4[2]="50"
answer1[3]="36" answer2[3]="35" answer3[3]="32" answer4[3]="40"
answer1[4]="MIAMI" answer2[4]="ORLANDO" answer3[4]="JACKSONVILLE" answer4[4]="TALLAHASSEE"
answer1[5]="90,000,000" answer2[5]="89,000,000" answer3[5]="93,000,000" answer4[5]="91,000,000"
right[1]="A" right[2]="B" right[3]="C" right[4]="D" right[5]="C" end procedure
LoadQuestions()
procedure DisplayQuestion () line=15 setPenPosition(Win1,5,line) wPuts( Win1,question[RecNum])
setPenPosition(Win2,30,line) wPuts(Win2,answer1[RecNum]) line=line+40
setPenPosition(Win2,30,line) wPuts(Win2,answer2[RecNum]) line=line+40
setPenPosition(Win2,30,line) wPuts(Win2,answer3[RecNum]) line=line+40
setPenPosition(Win2,25,line) wPuts(Win2,answer4[RecNum]) end procedure
for i= 1 to 3 do repaintWindow(Win1) repaintWindow(Win2) repaintWindow(Win3) RecNum = rand(qcount) key=keyindex[RecNum] DisplayQuestion() end for end procedure
procedure Accept(integer self, integer event, sequence parms)
find out which radio button was picked ans=0 if isChecked(ans1) then ans=2 end if if isChecked(ans2) then ans=3 end if if isChecked(ans3) then ans=4 end if if isChecked(ans4) then ans=5 end if
convert letter of right answer to a number correct=0 if equal (right[RecNum],"A") then correct=2 rightans=answer1[RecNum] end if if equal (right[RecNum],"B") then correct=3 rightans=answer2[RecNum] end if if equal (right[RecNum],"C") then correct=4 rightans=answer3[RecNum] end if if equal (right[RecNum],"D") then correct=5 rightans=answer4[RecNum] end if
setPenPosition(Win3,10,10) wPuts(Win3,"The correct answer is") setPenPosition(Win3,10,40) wPuts(Win3,Data[correct]) wPuts(Win3,rightans)
create pushbutton Okay = create( PushButton, " Next Question", Win3, 500, 20, 100, 40, 0 ) end procedure
setHandler(Win, w32HActivate, routine_id("Activate_MainWin"))
setHandler({ans1,ans2,ans3,ans4}, w32HClick, routine_id( "Accept" ))
setHandler(Okay,w32HClick, routine_id( "Next_Question" ))