% Victoria Esnard
% Chapter 7 Question 6
% April 17th 2009
% try to finish this one off by looking at spencer's
% just get daytons helpp, also add in paramiters on procedures
setscreen ("graphics")
% variable for counting the number of loops
var count : int := 0
% varables to moves the loading dot over horizontally
var xdot : int := 60
% variables for fonts used in program
var font1, font2 : int
font1 := Font.New ("shruti:12:bold")
font2 := Font.New ("shruti:40:bold")
% variable for time delay
var tim1, tim2 : int
tim1 := 50
tim2 := 500
var bg : int := 53
% variables to move the ball
var x : int := 710
var y : int := 305
var y2 : int := 305
var t : int := 0
% variables for window settings( size of window, buttonbar or no, and window title.)
var lowin := Window.Open ("graphics:400;50,nobuttonbar,title:Please Wait")
var mainwin := Window.Open ("graphics:700;500,buttonbar,title:Cliff Physics")
% ADDON:loading procedure is done. Add a moving ball along the bottom or a loading bar
% ADDON:increase by 8 % each time for loading bar
% ADDON:or have a ball rolling along the bottom
% Procedure that displays a small loading screen. This allows the program to look more offical.
proc loading
loop
Window.Show (lowin)
Window.SetActive (lowin)
Window.Hide (mainwin)
put "Loading"
loop
drawdot (xdot, 38, 7)
delay (tim2)
xdot := xdot + 5
count := count + 1
exit when xdot = 80
end loop
xdot := 60
cls
exit when count = 12
end loop
end loading
% procedure for the introduction to Cliff Physics
proc intro
% Hides the loading bar window and hows the main window
Window.Show (mainwin)
Window.SetActive (mainwin)
Window.Hide (lowin)
% FIX UP: fix spelling mistakes
% Displays a pictures of a cliff and a small explanation of whats going to happen.
Pic.ScreenLoad ("cliff for C7 Q6.JPG", 0, -130, picMerge)
Font.Draw ("Welcome to Cliff Physics", 40, 460, font2, 9)
Font.Draw ("Cliff Physics is a program used to show you how a rock will react if it falls off a cliff.", 35, 440, font1, 9)
Font.Draw ("For all intentive purposes, the rock may look similar to a ball.", 120, 420, font1, 9)
% ADDON:add in the options to chose what the ball is made of so that program can be completely physics
end intro
% Procedure to allow the user to move onto the next screen by pressing anykey.
procedure anykey
var line : string (1)
locatexy (230, 400)
put "Please press any key to contine."
locatexy (500, 400)
getch (line)
cls
end anykey
% ADDON: add the choices for gravity difference here
proc gvariables
put "Physics is the study"
end gvariables
% ADDON:add blue bg for sky, and make the text appear in clouds
% shows the center coords of the ball in the top left hand part of screen.
proc show_center_of_ball
colorback (bg)
locatexy (90, 490)
put "Ball Location: (",x, ", ", y,")"
end show_center_of_ball
% procedure that draws the background, cliff, clouds, and sun.
proc cliff_drawings
% Sky
drawfillbox (0, 0, maxx, maxy, 53)
% Cliff
drawfillbox (maxx, 0, 300, 285, 27)
% Clouds
drawfilloval (600, 450, 50, 20, 31)
drawfilloval (580, 430, 50, 20, 31)
drawfilloval (195, 395, 35, 20, 31)
drawfilloval (230, 405, 40, 20, 31)
% Sun
drawfilloval (0, maxy, 70, 70, 14)
end cliff_drawings
% procedure that moves the ball along the top of the cliff
proc moving_ball_part1
loop
drawfilloval (x, y2, 20, 20, 12)
delay (tim1)
drawfilloval (x, y2, 20, 20, 53)
x := x - 5
show_center_of_ball
exit when x = 300
end loop
end moving_ball_part1
% procedure that moves the ball don off the cliff with attention to gravity
proc moving_ball_part2
loop
drawfilloval (x, y2, 20, 20, 12)
delay (tim1)
drawfilloval (x, y2, 20, 20, 53)
var yc2 : real := 0
yc2 := yc2 + 0.08
% fix this so that the eqn qorks propery
% should be something lie y := 305 - .5*9.81*t^2
y2 := (round (-9.81 * 0.5 * yc2 * yc2) + 305)
end loop
end moving_ball_part2
% Procedure that takes all the procedures and calls them with only one procedure.
proc Call_All
loading
intro
anykey
show_center_of_ball
cliff_drawings
moving_ball_part1
moving_ball_part2
end Call_All
Call_All