Flaw In Menu

Archives Forums/Blitz3D SDK Programming/Flaw In Menu

nyybaseball(Posted 2014) [#1]
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


Leon Drake(Posted 2014) [#2]
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.


nyybaseball(Posted 2014) [#3]
Thanks. That works great but after the for loop that writes the words in numbers it wont go back to menu(). why?


nyybaseball(Posted 2014) [#4]
Why doesent this code work the same in blitzplus? Thanks.