Vending machine help
Author |
Message |
seider
|
Posted: Sat Nov 25, 2006 3:03 pm Post subject: Vending machine help |
|
|
i want to make a vending machine and i have recenlty just started using turing and it is my first programming course and i want to make it so the user can quit/go back to the start when ever he want to, and i tryed useing the GUI exit bottom but i just couldnt get it to work. so plz can someone help me.
code: |
import GUI
var quitButton : int := GUI.CreateButton (400, 10, 0, "Quit", GUI.Quit)
var itemprice:real
var change:real
var money : real
var letter : string
var number : int
var subtotal: real
var escape:string
escape := "q"
escape := "Q"
subtotal := 0
var A1:real
var A2:real
var A3:real
var A4:real
var A5:real
A1 := 1.25
A2 := 1.25
A3 := 1.25
A4 := 1.25
A5 := 1.25
var B1:real
var B2:real
var B3:real
var B4:real
var B5:real
B1 := 1.50
B2 := 1.50
B3 := 1.50
B4 := 1.50
B5 := 1.50
put "A1........BBQ Chips....1.25"
put "A2........Sour Crewam and Oinon Chips....1.25"
put "A3........Miss Vickies Chips....1.25"
put "A4........Regular Chips....1.25"
put "A5........All Dressed Chips....1.25"
put "B1........Oreos....1.50"
put "B2........Chocolate Chip Cookies....1.50"
put "B3........Fishies....1.50"
put "B4........Gummy Bears....1.50"
put "B5........Sour Sticks....1.50"
put " "
loop
loop
put "Please enter which item letter want"
get letter
put "Please enter which item number want"
get number
if letter = "a" or letter = "A" or letter = "b" or letter = "B" then
put " "
elsif letter not= "a" or letter not= "A" or letter not= "b" or letter not= "B" then
put "invalid entry"
end if
exit when letter = "b" and number = 5 or letter = "b" and number = 4 or letter = "b" and number = 3 or letter = "b" and number = 2 or letter = "b" and number = 1 or letter = "B" and number = 5 or letter = "B" and number = 4 or letter = "B" and number = 3 or letter = "B" and number = 2 or letter = "B" and number = 1 or letter = "a" and number = 5 or letter = "a" and number = 4 or letter = "a" and number = 3 or letter = "a" and number = 2 or letter = "a" and number = 1 or letter = "A" and number = 5 or letter = "A" and number = 4 or letter = "A" and number = 3 or letter = "A" and number = 2 or letter = "A" and number = 1
end loop
loop
put "Put in your money "
get money
subtotal := subtotal +money
put "The amount of money you have in the machine is $",subtotal
if subtotal < 1.25 then
put "not enough money please put in more"
end if
exit when letter = "a" and subtotal > 1.24 or letter = "A" and subtotal > 1.24 or letter = "b" and subtotal > 1.49 or letter = "B" and subtotal > 1.49
end loop
loop
if letter = "a" or letter = "A" and number = 1 then
put "Here are your bbq chips"
elsif letter = "a" or letter = "A" and number = 2 then
put "Here are your sour cream and onion chips"
elsif letter = "a" or letter = "A" and number = 3 then
put "Here are your miss vickies chips"
elsif letter = "a" or letter = "A" and number = 4 then
put "Here are your regular chips"
elsif letter = "a" or letter = "A" and number = 5 then
put "Here are your all dressed chips"
elsif letter = "b" or letter = "B" and number = 1 then
put "Here are your oreos"
elsif letter = "b" or letter = "B" and number = 2 then
put "Here are your chocolate chip cookies"
elsif letter = "b" or letter = "B" and number = 3 then
put "Here are your fishies"
elsif letter = "b" or letter = "B" and number = 4 then
put "Here are your gummy bears"
elsif letter = "b" or letter = "B" and number = 5 then
put "Here are your sour sticks"
end if
exit when letter = "b" and number = 5 or letter = "b" and number = 4 or letter = "b" and number = 3 or letter = "b" and number = 2 or letter = "b" and number = 1 or letter = "B" and number = 5 or letter = "B" and number = 4 or letter = "B" and number = 3 or letter = "B" and number = 2 or letter = "B" and number = 1 or letter = "a" and number = 5 or letter = "a" and number = 4 or letter = "a" and number = 3 or letter = "a" and number = 2 or letter = "a" and number = 1 or letter = "A" and number = 5 or letter = "A" and number = 4 or letter = "A" and number = 3 or letter = "A" and number = 2 or letter = "A" and number = 1
end loop
if letter = "b" and number = 5 or letter = "B" and number = 5then
itemprice := B5
elsif letter = "b" and number = 4 or letter = "B" and number = 4then
itemprice := B4
elsif letter = "b" and number = 3 or letter = "B" and number = 3then
itemprice := B3
elsif letter = "b" and number = 2 or letter = "B" and number = 2then
itemprice := B2
elsif letter = "b" and number = 1 or letter = "B" and number = 1then
itemprice := B1
elsif letter = "a" and number = 5 or letter = "A" and number = 5then
itemprice := A5
elsif letter = "a" and number = 4 or letter = "A" and number = 4then
itemprice := A4
elsif letter = "a" and number = 3 or letter = "A" and number = 3then
itemprice := A3
elsif letter = "a" and number = 2 or letter = "A" and number = 2then
itemprice := A2
elsif letter = "a" and number = 1 or letter = "A" and number = 1then
itemprice := A1
end if
change := subtotal - itemprice
put "Here is your change $", change
exit when GUI.ProcessEvent
end loop
|
|
|
|
|
|
![](images/spacer.gif) |
Sponsor Sponsor
![Sponsor Sponsor](templates/subSilver/images/ranks/stars_rank5.gif)
|
|
![](images/spacer.gif) |
jamesonline
|
Posted: Fri Dec 01, 2006 4:41 pm Post subject: (No subject) |
|
|
hey
you could do an if...then statement to give the user the option to quit
put it anywhere - incorporate it into the first input as Q or at the end
adding on a delay of a second or so ( delay (1000) )would help the program too
for the line "exit when GUI.ProcessEvent, change it to:
and remove one of the two loops that you have up at the top.
As for the button, i couldnt help you, perhaps a menubar or move the button to the right an add scroll bars???
i dunno |
|
|
|
|
![](images/spacer.gif) |
Hackmaster
|
Posted: Fri Dec 08, 2006 10:23 pm Post subject: (No subject) |
|
|
GUI is hard for people who have just started...it is simple enough, but It can blow some brains apart...i've seen it happen. it's a risk you take.
the code to create a new button is simple. it is:
code: |
var name : int := GUI.CreateButton (x, y, width :int, "text": string, actionProc : procedure)
|
whoa! I could hear the brains exploding from here!... let me explain a bit.
"var name : int:=" is basically giving the Button a name so you can talk to it later.
the x, y, and width are where you want it and how wide you want it to be. it already has a predefined height.
"text" is what you want the button to say.. in your case, "Quit" would probably be what you want.
actionproc is the procedure you want the button to execute when it's pressed. in your case, you probably want it to quit, and GUI has a predefined function for it... in that space, put GUI.Quit, just like that.
anyways... it looks like you've got all of that. I thought I would just explain for refrence. but, james is right... the problem here is with your GUI.ProcessEvent loop... but he already told you how to fix that.
also... may I suggest something?
please... for the love of god...don't do your if statements like that. bloody hell. You can barely read it! if you must have all those ORs, then please, please, space them better. the proper (readable) way to do this would probably be:
code: |
exit when
letter = "b" and number = 5 or
letter = "b" and number = 4 or
letter = "b" and number = 3 or
letter = "b" and number = 2 or
letter = "b" and number = 1 or
letter = "B" and number = 5 or
letter = "B" and number = 4 or
letter = "B" and number = 3 or
letter = "B" and number = 2 or
letter = "B" and number = 1 or
letter = "a" and number = 5 or
letter = "a" and number = 4 or
letter = "a" and number = 3 or
letter = "a" and number = 2 or
letter = "a" and number = 1 or
letter = "A" and number = 5 or
letter = "A" and number = 4 or
letter = "A" and number = 3 or
letter = "A" and number = 2 or
letter = "A" and number = 1
end loop
|
much more readable. |
|
|
|
|
![](images/spacer.gif) |
|
|