Flaw In Menu
Archives Forums/Blitz3D SDK Programming/Flaw In Menu
| ||
In the following program everthing works well but if you hit "write code message" and then hit "Main Menu" in that it wont go back. does any one know why? Thanks Graphics 800,600,64,2 AutoMidHandle True SeedRnd MilliSecs() Global result Global seed Global code_in_nums Dim letters(charnum) mainmenu() Function mainmenu() While Not KeyDown(1) Cls result = menu() Text 10,10, result If result = 1 Then writem() If result = 2 Then readm() If result = 3 Then End Wend End End Function Function mainmenu1() result = menu1() If result = 1 Then mainmenu() End Function Function menu1() While result = 0 If RectsOverlap(600,520,100,50,MouseX(),MouseY(),1,1) Then result = 1 End Wend Return result End Function Function menu() Cls Rect(300,90,200,50,0) Text(325,110,"Write Code Message") Rect(300,290,200,50,0) Text(325,310,"Read Code Message") Rect(300,490,200,50,0) Text(360,510,"Quit") Flip While result = 0 If MouseHit(1) Then If RectsOverlap(300,90,200,50,MouseX(),MouseY(),1,1) Then result = 1 If RectsOverlap(300,290,200,50,MouseX(),MouseY(),1,1) Then result = 2 If RectsOverlap(300,490,200,50,MouseX(),MouseY(),1,1) Then result = 3 EndIf Wend Return result End Function Function writem() Cls seedresult = seedmenu() If seedresult = 1 Then seed = Rand(1,100) Cls Text 10,10,"Seed = " + seed EndIf If seedresult = 2 Then Cls seed = Input("Enter Seed (Must Be Between 1 and 100)") If seed > 100 Then Cls Text 400,200,"Invalid Seed, Press Any Key To Try Again" WaitKey seedmenu() EndIf EndIf If seedresult = 3 Then mainmenu() EndIf Cls Text 10,10,"Seed = " + seed Text 300,220,"Press Any Key To Continue And Write The Messge" WaitKey writemessage() End Function Function readm() Cls seed = Input("Enter Seed: ") charnum = Input("Enter Amount Of Numbers In Code: ") x = 400 y = 400 For i = 1 To charnum num = Input("Enter Number: ") letternum = num / seed Select letternum Case 1 letter$ = "a" Case 2 letter$ = "b" Case 3 letter$ = "c" Case 4 letter$ = "d" Case 5 letter$ = "e" Case 6 letter$ = "f" Case 7 letter$ = "g" Case 8 letter$ = "h" Case 9 letter$ = "i" Case 10 letter$ = "j" Case 11 letter$ = "k" Case 12 letter$ = "l" Case 13 letter$ = "m" Case 14 letter$ = "n" Case 15 letter$ = "o" Case 16 letter$ = "p" Case 17 letter$ = "q" Case 18 letter$ = "r" Case 19 letter$ = "s" Case 20 letter$ = "t" Case 21 letter$ = "u" Case 22 letter$ = "v" Case 23 letter$ = "w" Case 24 letter$ = "x" Case 25 letter$ = "y" Case 26 letter$ = "z" Default Text 400,400,"Unkown Letter" x = x + 100 End Select x = x + 10 If x > 800 Then x =0 y = y + 50 EndIf Text x,y, letter$ + " " Next WaitKey() .mainmenu End Function Function seedmenu() Cls Rect(300,90,200,50,0) Text(325,110,"Random Seed") Rect(300,290,200,50,0) Text(325,310,"Create Seed") Rect(300,490,200,50,0) Text(360,510,"Main Menu") While seedresult = 0 If MouseHit(1) Then If RectsOverlap(300,90,200,50,MouseX(),MouseY(),1,1) Then seedresult = 1 If RectsOverlap(300,290,200,50,MouseX(),MouseY(),1,1) Then seedresult = 2 If RectsOverlap(300,490,200,50,MouseX(),MouseY(),1,1) Then seedresult = 3 EndIf Wend Return seedresult End Function Function writemessage() Cls x = 10 y = 400 charnum = Input("Enter Amount Of Charecters In Message: ") For i = 1 To charnum Text 10,540,"Seed: " + seed letter$ = Input("Write Message In Lower Cases: ") Select letter$ Case "a" code_in_nums = 1 * seed Case "b" code_in_nums = 2 * seed Case "c" code_in_nums = 3 * seed Case "d" code_in_nums = 4 * seed Case "e" code_in_nums = 5 * seed Case "f" code_in_nums = 6 * seed Case "g" code_in_nums = 7 * seed Case "h" code_in_nums = 8 * seed Case "i" code_in_nums = 9 * seed Case "j" code_in_nums = 10 * seed Case "k" code_in_nums = 11 * seed Case "l" code_in_nums = 12 * seed Case "m" code_in_nums = 13 * seed Case "n" code_in_nums = 14 * seed Case "o" code_in_nums = 15 * seed Case "p" code_in_nums = 16 * seed Case "q" code_in_nums = 17 * seed Case "r" code_in_nums = 18 * seed Case "s" code_in_nums = 19 * seed Case "t" code_in_nums = 20 * seed Case "u" code_in_nums = 21 * seed Case "v" code_in_nums = 22 * seed Case "w" code_in_nums = 23 * seed Case "x" code_in_nums = 24 * seed Case "y" code_in_nums = 25 * seed Case "z" code_in_nums = 26 * seed Default Text 400,400,"Invalid Letter" End Select x = x + 50 If x > 800 Then x = 10 y = y + 20 EndIf Text x,y,+ code_in_nums+ ", " Flip Next WaitKey() menu() End Function |
| ||
since result is global it looks like you didn't reset it to 0 before going back so it goes back through the menu system with the last result that was used... least as far as i can tell just by looking at the code. |
| ||
Thanks. That works great but after the for loop that writes the words in numbers it wont go back to menu(). why? |
| ||
Why doesent this code work the same in blitzplus? Thanks. |