All pastes #1982279 Raw Edit

restaurant code

public text v1 · immutable
#1982279 ·published 2010-11-04 23:13 UTC
rendered paste body
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Kartik's Restaurant Program
%Created: Oct 31, 2010
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


import GUI
var window : int := Window.Open ("noButtonBar")      %Removes Buttonbar from output window

%Variables
var sideMeal : int
var mainMeal : int
var drinkSize : int
var drinkType : int
var discount : int := Rand.Int (1, 3)
var sideMealCost : real
var mainMealCost : real
var drinkCost : real
var sideName : string
var mainName : string
var drinkName : string
var drinkSizeName : string
var font1 : int := Font.New ("Arial:30")
var font2 : int := Font.New ("Arial:20")

%%%%%%%%%%%%%%%%%
%PROGRAM PROCESS
%%%%%%%%%%%%%%%%%


%Drawing Procedure
proc drawing

    %Fries
    Draw.ThickLine (138, 156, 76, 232, 17, black)
    Draw.ThickLine (138, 156, 76, 232, 15, yellow)
    Draw.ThickLine (112, 160, 112, 246, 17, black)
    Draw.ThickLine (112, 160, 112, 246, 15, yellow)
    Draw.ThickLine (122, 157, 87, 244, 17, black)
    Draw.ThickLine (122, 157, 87, 244, 15, yellow)
    Draw.ThickLine (107, 169, 100, 250, 17, black)
    Draw.ThickLine (107, 169, 100, 250, 15, yellow)
    Draw.ThickLine (120, 169, 130, 250, 17, black)
    Draw.ThickLine (120, 169, 130, 250, 15, yellow)
    Draw.ThickLine (138, 156, 143, 245, 17, black)
    Draw.ThickLine (138, 156, 143, 245, 15, yellow)
    Draw.ThickLine (164, 156, 162, 240, 17, black)
    Draw.ThickLine (164, 156, 162, 240, 15, yellow)
    Draw.ThickLine (153, 162, 173, 237, 17, black)
    Draw.ThickLine (153, 162, 173, 237, 15, yellow)
    Draw.ThickLine (169, 158, 202, 235, 17, black)
    Draw.ThickLine (169, 158, 202, 235, 15, yellow)



    %Fry Container
    drawline (100, 100, 80, 200, red)
    drawarc (140, 100, 40, 10, 0, 180, red)
    drawline (180, 100, 200, 200, red)
    drawline (200, 200, 184, 195, red)
    drawline (80, 200, 96, 195, red)
    drawarc (140, 195, 45, -32, 180, 360, red)
    drawdot (186, 195, red)
    drawdot (185, 195, red)
    drawdot (181, 102, red)
    drawdot (186, 194, red)
    drawdot (99, 102, red)
    drawdot (81, 199, red)
    drawdot (186, 194, red)
    drawdot (186, 195, red)
    drawdot (185, 195, red)
    drawfill (130, 140, red, red)

end drawing


%Side Meal procedure
proc sidemeal

    locate (13, 1)
    put "Please choose a side meal:"
    put "1)Normal Fries              $1.25"
    put "2)Curly Fries               $1.75"
    put "3)Poutine                   $3.25"    %Gives options side meals for user
    put "4)Salad                     $1.50"
    put "5)Nothing"
    put " "
    get sideMeal
    put " "
    if sideMeal = 1 then
        sideMealCost := 1.25
        sideName := "Normal Fries,"
        put "You have selected a normal fries."
    elsif sideMeal = 2 then
        sideMealCost := 1.75
        sideName := "Curly Fries,"
        put "You have selected a curly fries."
    elsif sideMeal = 3 then
        sideMealCost := 3.25
        sideName := "Poutine,"
        put "You have selected a poutine."            %Gives a variable an amount for future use
    elsif sideMeal = 4 then
        sideMealCost := 1.5
        sideName := "Salad,"
        put "You have selected a salad."
    elsif sideMeal = 5 then
        sideMealCost := 0
        sideName := ""
        put "You have selected none of the above side meals."
    end if
    if sideMeal > 5 then
        put "You have chosen an invalid side meal. The program will close in 5 seconds."
        delay (5000)
        Window.Close (window)                                      %If an option is selected over the given amount then the program will close in 5 seconds
    end if
    delay (1000)
    cls
end sidemeal


%Main Meal procedure
proc mainmeal
    Font.Draw ("Greasy Side Stop!", 100, maxy - 40, font1, 9)
    locate (11, 1)
    put "Please choose a main meal:"
    put "1)Hotdog                    $1.25"
    put "2)Cheese Burger             $2.00"
    put "3)Plain Burger              $2.50"              %Gives user options for meals
    put "4)Mexican Wrap              $2.00"
    put "5)Vegetarian Wrap           $1.80"
    put "6)Nothing"
    put " "
    get mainMeal
    put " "
    if mainMeal = 1 then
        mainMealCost := 1.25
        mainName := "Hot Dog,"
        put "You have selected a HotDog."
    elsif mainMeal = 2 then
        mainMealCost := 2
        mainName := "Cheese Burger,"
        put "You have selected a Cheese Burger."
    elsif mainMeal = 3 then
        mainMealCost := 2.5
        mainName := "Plain Burger,"
        put "You have selected a plain Burger."               %Gives a variable an amount for future use
    elsif mainMeal = 4 then
        mainMealCost := 2
        mainName := "Mexican Wrap,"
        put "You have selected a Mexican Wrap."
    elsif mainMeal = 5 then
        mainName := "Vegetarian Wrap,"
        mainMealCost := 1.80
        put "You have selected a Vegetarian Wrap."
    elsif mainMeal = 6 then
        mainName := ""
        mainMealCost := 0
        put "You have selected none of the above main meals."
    end if

    if mainMeal > 6 then
        put "You have chosen an invalid main meal. The program will close in 5 seconds."
        delay (5000)
        Window.Close (window)                                          %If an option is selected over the given amount then the program will close in 5 seconds
    end if
    delay (1000)
    cls
end mainmeal


%Drinks Procedures
proc drinks
    Font.Draw ("Greasy Side Stop!", 100, maxy - 40, font1, 9)
    locate (11, 1)
    put "Please choose your drink. Each drink is the same price."
    put "1)Coca Cola"
    put "2)Sprite"
    put "3)Ice Tea"                                                 %Drink Selection for user
    put "4)Orange Crush"
    put "5)Root Beer"
    put "6)Nothing"
    put " "
    get drinkType
    put " "
    if drinkType = 1 then
        drinkName := " Coco Cola"
        put "You have selected Coco Cola."
    elsif drinkType = 2 then
        drinkName := " Sprite"
        put "You have selected Sprite."
    elsif drinkType = 3 then
        drinkName := " Ice Tea"
        put "You have selected  Ice Tea."
    elsif drinkType = 4 then                                         %Gives a variable an amount for future use
        drinkName := " Orange Crush"
        put "You have selected Orange Crush."
    elsif drinkType = 5 then
        drinkName := " Root Bear"
        put "You have selected Root Bear."
    elsif drinkType = 6 then
        drinkName := ""
        drinkCost := 0
        put "You have selected none of the above drinks."
    end if
    if drinkType > 6 then
        put "You have chosen an invalid drink. The program will close in 5 seconds."
        delay (5000)                                                         %If an option is selected over the given amount then the program will close in 5 seconds
        Window.Close (window)
    end if
    if drinkType >= 1 and drinkType <= 5 then        %Drink Size if drink was chosen
        delay (1000)
        cls
        drawing
        Font.Draw ("Greasy Side Stop!", 100, maxy - 40, font1, 9)
        locate (10, 1)
        put "What size drink do you want?"
        put "1)Small- $1.00"
        put "2)Medium-$1.85"                               %Drink size for user selection
        put "3)Large-$2.50"
        put "4)Super Jumbo-$3.75"
        put " "
        get drinkSize
        put " "
        if drinkType = 6 then
            drinkSizeName := ""
        elsif drinkSize = 1 then
            drinkSizeName := "and a small"
            drinkCost := 1
            put "You have selected a small drink."
        elsif drinkSize = 2 then
            drinkSizeName := "and a medium"
            drinkCost := 1.85
            put "You have selected a medium drink."
        elsif drinkSize = 3 then
            drinkSizeName := "and a large"
            drinkCost := 2.5
            put "You have selected a large drink."
        elsif drinkSize = 4 then
            drinkSizeName := "and a super jumbo"
            drinkCost := 3.75
            put "You have selected a Super Jumbo drink."
        end if
        if drinkSize >= 5 then
            put "You have chosen an invalid drink size. The program will close in 5 seconds."
            delay (5000)
            Window.Close (window)
        end if
    end if
    delay (1000)
    cls
end drinks


%Pricing Procedures

proc pricing
    %Formula Procedures
    var cost : real := sideMealCost + mainMealCost + drinkCost
    var subtotal : real := cost - discount
    var freeMeal : int := Rand.Int (1, 10)
    var userInput : int

    Font.Draw ("Greasy Side Stop!", 100, maxy - 40, font1, 9)
    locate (10, 1)
    if sideMeal = 5 and mainMeal = 6 and drinkType = 6 then
        put "You have not ordered anything"
        delay (2000)
        cls
        quit
    end if
    put "Your bill"
    put "_________"

    if cost < 4 then
        put "Cost         :$", cost
        put " "
        put "You have not spent more than $4.00 and your discount is now invalid."
        delay (2000)
        put "Your Discount:$0"
        put "Subtotal     :$", cost
        put "Tax (13%)    :$", cost * 0.13 :0:2                                %Pricing for costs that are less than $4.00
        put " "
        put "Total        :$", (cost * 0.13) + cost :0:2
        put "You have ordered: ", sideName, mainName, drinkName, "."
    elsif cost > 4 then
        put "Cost         :$", cost
        put " "
        put "Your Discount:$", discount
        put "Subtotal     :$", subtotal
        put "Tax (13%)    :$", (subtotal * 0.13) :0:2                            %Pricing for costs that are over than $4.00
        put " "
        put "Total        :$", (subtotal * 0.13) + subtotal :0:2
        put " "
        put " "
        put "You have ordered: ", sideName, mainName, drinkName, "."
    end if
    put " "
    put "ENJOY YOUR MEAL!"
    put "But wait! DO YOU WANT A FREE MEAL? JUST TYPE IN A NUMBER FROM 1-10 AND SEE IF YOU GUESSED RIGHT"
    get userInput                                                       %Free Meal fun activity
    if userInput = freeMeal then
        put "Correct. This meal is now free!"
    else
        put "Wrong. You do not get the free meal!"
        put "The correct answer is ", freeMeal, "."
    end if

end pricing


%%%%%%%%%%%%%%
%MAIN PROGRAM
%%%%%%%%%%%%%%

setscreen ("graphics:600;800")
colorback (10)
GUI.SetBackgroundColor (10)


Font.Draw ("Greasy Side Stop!", 100, maxy - 40, font1, 9)
locate (5, 1)
put "Welcome to Kartik's Restaurant"
put " "
put "Finger Lick'n Greasy snacks!"
put " "
put "YOUR SPECIAL DISCOUNT! SAVE UP TO $3.00, IF YOU SPEND MORE THAN $4.00!"
put "You can save $", discount, " from your meal's total cost."                             %Introduction[Gives user their personal discount. Includes fun slogan]   
put "We use our leftover grease for bio-fuel! "
put " "
put " "

drawing
sidemeal
GUI.SetBackgroundColor (10)
drawing
mainmeal
GUI.SetBackgroundColor (10)                                                        %Runs the procedures that were created above
drawing
drinks
GUI.SetBackgroundColor (10)
drawing
pricing
delay (4000)
cls

setscreen ("graphics:600;400")
GUI.SetBackgroundColor (9)
loop
    Font.Draw ("I hope you enjoyed your meal!", 115, maxy - 40, font2, 12)
    Font.Draw ("Please come again!", 145, maxy - 140, font2, 14)
    delay (750)

    Font.Draw ("I hope you enjoyed your meal!", 115, maxy - 40, font2, 4)
    Font.Draw ("Please come again!", 145, maxy - 140, font2, 24)
    delay (750)                                                                  %Ending slogan and program finish

    Font.Draw ("I hope you enjoyed your meal!", 115, maxy - 40, font2, 8)
    Font.Draw ("Please come again!", 145, maxy - 140, font2, 6)
    delay (750)

    Font.Draw ("I hope you enjoyed your meal!", 115, maxy - 40, font2, 24)
    Font.Draw ("Please come again!", 145, maxy - 140, font2, 16)
end loop

loop
    exit when GUI.ProcessEvent
end loop