
-----------------------------------
Pinto2
Wed Feb 02, 2005 4:36 pm

Shape Program
-----------------------------------
Cool shape program, input in welcome.

%The shape drawing program
%Daniel Simmonds and Martin Lindsy
%January 27 2005
setscreen ("graphics:max;max,nobuttonbar")  %makes screen larger and removes the button bar
var shape, nothing, box_col : string  %creates variable able to hold both numbers and letters
var box_base, box_height, box_col1, radius : int  %creates variables able to hold rounded numbers
var x, triangletype, y, x2, x3, y2 : int  %creates variables able to hold rounded number
var triangle_base, triangle_height, para_base, para_height, hex_base : real  %creates variables able to hold unrounded number
var font : int  %creates variables able to hold rounded number
font := Font.New ("Palatino:24:bold,italic")  %assigns the variable 'font' a font style to use
proc drawhexagon (base, hexagonarea : real)
    cls %clear screen
    x := round ((maxx div 2) - (base div 2) * 20) %places x coordinate at a point to center the hexagon when drawn
    x2 := round (x + base * 20) %when line is drawn the space between x and x2 is the base length
    y := round ((maxy div 2) - (base div 2) * 20) %y is set to a coordinate to center the hexagon
    drawline (x, y, x2, y, brightred) %draws the bottom line of the hexagon
    y2 := round (y + (base * 0.66666) * 20) %sets y2 2/3 times the base above the last y variable, for a 60 degree angle
    x3 := round (x - (base div 2) * 20) %x3 is half of the base to the left of the x coordinate
    drawline (x, y, x3, y2, brightred) %draws the bottom left line
    x := round (x2 + (base div 2) * 20) %sets x to half the base to the right of x2 to achieve a 60 degree angle
    drawline (x2, y, x, y2, brightred) %draws bottom right line
    y := round (y2 + (base * 0.66666) * 20) %sets the y coordinate 2/3 of the base over the last y corrdinate to achieve a 60 degree angle
    x2 := round (x3 + (base div 2) * 20) %x2 is now the same as the x corrdinate was first
    drawline (x3, y2, x2, y, brightred) %draws top left line
    x3 := round (x - (base div 2) * 20) %x3 i now the same as what x2 started as
    drawline (x3, y, x, y2, brightred) %draws top right line
    drawline (x2, y, x3, y, brightred) %draws top base line
    put "base=", base, "cm    area=", (round (hexagonarea * 100)) / 100, "cm" .. %outputs  base height and area
    put chr (170) %squared symbol
end drawhexagon
procedure draw_box (box_height, box_base, box_col1 : int)
    cls %clear screen
    drawfillbox (200, 200, box_base, box_height, box_col1) %draws box using user given variables variables
end draw_box
proc circle (radius : int)
    drawfilloval (400, 300, radius * 20, radius * 20, brightred) %draws circle using user given variables
end circle
proc drawparalellogram (para_base, para_height : real)
    cls %clears screen
    x := (maxx div 2) - ((para_base * 20) div 2) - 20 %x is put in a spot  so that when drawn, the parolellogram is centered
    x2 := round (x + para_base * 20) %x2 and x will be as far away from each other as the base
    y := (maxy div 2) - ((para_base * 20) div 2) %y will be in the a spot so that when drawn, the parolellogram will be centered
    drawline (x, y, x2, y, brightred) %draws the base line
    y2 := round (y + para_height * 20) %y2 will be the height higher than the y coordinate
    x3 := x + 40 %x3 will be 40 pixels to the right of x
    drawline (x, y, x3, y2, brightred) %draws the left line
    x := round (x3 + para_base * 20) %x is recycled to the base length to the right of x3
    drawline (x, y2, x2, y, brightred) %draws right line
    drawline (x, y2, x3, y2, brightred) %draws top line
    locate (30, 30)
    put "Base=", para_base, "    height=", para_height, "    area=", para_base * para_height .. %outputs the base height and area
    put chr (170) %squared symbol
end drawparalellogram
proc drawtriangle (triangle_base, triangle_height : real)
    cls %clear screen
    x := round ((maxx div 2) - ((triangle_base * 20) div 2)) %x is at a point so that when draw, the triangle will be centered
    x2 := round (x + triangle_base * 20) %x2 is the distance of the base away from the x
    y := round ((maxy div 2) - ((triangle_base * 20) div 2)) %y is at a point so that when drawn, the triangle will be centered
    drawline (x, y, x2, y, brightred) %draws bottome line
    locate (30, 30)
    put "base=", triangle_base, "cm   height=", triangle_height, "cm" %outputs base height and area
    y2 := round (y + triangle_height * 20) %y2 is the height away from the y coordinate
    if triangletype = 1 then %if isosceles
	x3 := maxx div 2 %x3 is centered
    elsif triangletype = 2 then %if right angle
	x3 := x2 %then x3 is x2
    else
	x3 := x + 15 %if scalene, then x3 is 15 right of x
    end if
    drawline (x, y, x3, y2, brightred) %draws left line
    drawline (x2, y, x3, y2, brightred) %draws right line
end drawtriangle
colourback (black) %screen's background will be black
cls %clears screen
Font.Draw ("Welcome to Daniel's and Martin's program!!", 85, 350, font, brightgreen)
Font.Draw ("5", 450, 200, font, brightgreen)
delay (1500)
cls
Font.Draw ("Welcome to Daniel's and Martin's program!!", 85, 350, font, brightgreen)
Font.Draw ("4", 450, 200, font, brightgreen)
delay (1500)
cls
Font.Draw ("Welcome to Daniel's and Martin's program!!", 85, 350, font, brightgreen)
Font.Draw ("3", 450, 200, font, brightgreen)
delay (1500)
cls
Font.Draw ("Welcome to Daniel's and Martin's program!!", 85, 350, font, brightgreen)
Font.Draw ("2", 450, 200, font, brightgreen)
delay (1500)
cls
Font.Draw ("Welcome to Daniel's and Martin's program!!", 85, 350, font, brightgreen)
Font.Draw ("1", 450, 200, font, brightgreen)
delay (1500)
cls
Text.Colour (white) %all writing will be white
%main program begins here.
loop
    cls %clears screen
    locate (1, 1)
    put "type 0 to exit."
    locate (5, 5)
    put "Please pick one of the following shapes that you would like to see drawn, and explained."
    locate (10, 15)
    put "1) Triangle"
    locate (11, 15)
    put "2) Rectangle"
    locate (12, 15)
    put "3) Circle"
    locate (13, 15)
    put "4) Paralellogram"
    locate (14, 15)
    put "5) Hexagon"
    locate (15, 15)
    put "Which shape would you like to see drawn?  " ..
    get shape %prompts user for input on their decision
    if shape = "triangle" or shape = "Triangle" then
	cls
	put "Enter the base for the triangle (1-20).. " ..
	get triangle_base %prompts user for base
	if triangle_base > 20 then %keeps size reasonable
	    cls
	    loop
		locate (15, 35)
		put triangle_base, " is not valid input."
		exit
	    end loop
	end if
	put "Enter the height for the triangle (1-20).. " ..
	get triangle_height %user inputs height
	if triangle_height > 20 then %keeps height reasonable
	    cls
	    locate (15, 35)
	    put triangle_height, " is not valid input."
	end if
	cls
	put "Enter the type of triangle you would like drawn.."
	put "(1) isoceles"
	put "(2) Right-Angle"
	put "(3) Scalene"
	put "Triangle type.. " ..
	get triangletype %asks user what triangle they want drawn
	drawtriangle (triangle_base, triangle_height) %calls triangle procedure
    elsif shape = "1" then
	cls
	loop
	    locate (1, 1)
	    put "Enter the base for the triangle (1-20).. " ..
	    get triangle_base %user enters base
	    if triangle_base > 20 then %keeps base reasonable
		cls
		locate (15, 35)
		put triangle_base, " is not valid input."
		exit
	    end if
	    put "Enter the height for the triangle (1-20).. " ..
	    get triangle_height %user enters height
	    if triangle_height > 20 then %keeps height reasonable
		cls
		locate (15, 35)
		put triangle_height, " is not valid input."
		exit
	    end if
	    put "Enter the type of triangle you would like drawn.."
	    put "(1) isoceles"
	    put "(2) Right-Angle"
	    put "(3) Scalene"
	    put "Triangle type.. " ..
	    get triangletype %asks user what kind of triangle they want drawn
	    drawtriangle (triangle_base, triangle_height) %calls triangle procedure
	    exit
	end loop
    elsif shape = "2" then
	cls
	locate (12, 25)
	put "This is what a rectangle looks like..."
	drawfillbox (200, 200, 450, 300, brightred) %gives example of rectangle
	locate (25, 25)
	put "Are you ready to see more!!  " ..
	get nothing
	cls
	drawfillbox (200, 200, 450, 300, brightred) %redraws example box
	locate (2, 2)
	put "Would You like to try?  " ..
	locate (30, 25)
	put "Height of 5"
	locate (30, 40)
	put "Base of 8"
	locate (2, 25)
	get nothing
	put "OK, please give me the Base!! (1-30)  " ..
	get box_base %user enters base
	put "Ok, know give me the Height!! (1-20)  " ..
	get box_height %user enters height
	box_col := "red" %sets colour to red
	if box_col = "blue" then
	    box_col1 := 1
	elsif box_col = "green" then
	    box_col1 := 2
	elsif box_col = "red" then
	    box_col1 := 4
	elsif box_col = "yellow" then
	    box_col1 := 14
	elsif box_col = "white" then
	    box_col1 := 31
	else
	end if
	put "invalid input"
	%this part multiplys all lengths by 20 for scale ratio
	box_height := box_height * 20
	box_base := box_base * 20
	box_base := box_base + 200
	box_height := box_height + 200
	draw_box (box_height, box_base, box_col1) %calls the draw box procedure
    elsif shape = "rectangle" or shape = "Rectangle" then
	cls        %clears screen
	locate (12, 25)
	put "This is what a rectangle looks like..."
	drawfillbox (200, 200, 450, 300, brightred) %draws example box
	locate (25, 25)
	put "Are you ready to see more!!  " ..
	get nothing
	cls %clears screeen
	drawfillbox (200, 200, 450, 300, brightred) %redraws example box
	locate (2, 2)
	put "Would You like to try?  " ..
	locate (30, 25)
	put "Height of 5"
	locate (30, 40)
	put "Base of 8"
	locate (2, 25)
	get nothing
	put "OK, please give me the Base!! (1-30)  " ..
	get box_base %user enters base
	put "Ok, know give me the Height!! (1-20)  " ..
	get box_height %user enters height
	box_col := "red" %sets colout to red
	if box_col = "blue" then
	    box_col1 := 1
	elsif box_col = "green" then
	    box_col1 := 2
	elsif box_col = "red" then
	    box_col1 := 4
	elsif box_col = "yellow" then
	    box_col1 := 14
	elsif box_col = "white" then
	    box_col1 := 31
	else
	end if
	put "invalid input"
	%this code multiplys lengths by 20 to make a scale
	box_height := box_height * 20
	box_base := box_base * 20
	box_base := box_base + 200
	box_height := box_height + 200
	draw_box (box_height, box_base, box_col1) %calls box procedure
    elsif shape = "3" then
	cls
	put "This is what a circle looks like."
	drawfilloval (400, 300, 70, 70, brightred) %draw example circle
	locate (30, 2)
	put "Would you like to see more?  " ..
	get nothing
	cls %clears screen
	drawoval (400, 300, 70, 70, brightred) %redraws example circle
	drawline (400, 300, 470, 300, brightred)
	locate (17, 50)
	put "Radius of 4"
	locate (2, 2)
	put "Would you like to try?  " ..
	get nothing
	cls %clears screen
	locate (2, 2)
	put "Please give me the radius! (1-15) " ..
	get radius %user enters radius
	cls
	circle (radius) %calls circle procedure
	put "Area=", round ((3.14 * radius ** 2) * 100) / 100 %outputs area
    elsif shape = "circle" or shape = "Circle" then
	cls
	put "This is what a circle looks like."
	drawfilloval (400, 300, 70, 70, brightred) %draws example circle
	locate (30, 2)
	put "Would you like to see more?  " ..
	get nothing
	cls
	drawoval (400, 300, 70, 70, brightred) %redraws example circle
	drawline (400, 300, 470, 300, brightred)
	locate (17, 50)
	put "Radius of 4"
	locate (2, 2)
	put "Would you like to try?  " ..
	get nothing
	cls %clears screen
	locate (2, 2)
	put "Please give me the radius! (1-15)  " ..
	get radius %user enters radius
	cls %clears screen
	circle (radius) %calls circle procedure
    elsif shape = "paralellogram" or shape = "Paralellogram" or shape = "4" then
	cls %clears screen
	put "Enter the base of the shape (1-20).. " ..
	get para_base %user enters base
	put "Enter the height of the shape (1-20).. " ..
	get para_height %user enters height
	drawparalellogram (para_base, para_height) %calls procedure for paralellogram
    elsif shape = "Hexagon" or shape = "hexagon" or shape = "5" then
	cls %clears screen
	put "Enter the desired base (1-15).. " ..
	get hex_base %user enters base
	if hex_base > 15 or hex_base < 1 then %keeps the size reasonable
	    hex_base := 15
	end if
	drawhexagon (hex_base, hex_base * (hex_base * 0.66) / 2 * 6) %calls haxagon procedure
    elsif shape = "0" then
	exit
    else %if choice is invalid
	cls
	locate (12, 20)
	put shape, " is an invalid input, please try again." %tells user its invalid
    end if
    delay (3000) %delays 3 seconds
end loop %goes back to the top of the menu part
cls
put "Thank you."

-----------------------------------
cycro1234
Wed Feb 02, 2005 4:41 pm


-----------------------------------
You could have used code tags. Or at least added it by attachment.

-----------------------------------
Bacchus
Wed Feb 02, 2005 4:41 pm


-----------------------------------
didnt you already put this and then we told you that it belonged in source code and to use code tags?

-----------------------------------
cycro1234
Wed Feb 02, 2005 4:43 pm


-----------------------------------
LMAO

-----------------------------------
Pinto2
Wed Feb 02, 2005 4:44 pm


-----------------------------------
Yes i did already put this, but then it went missing.  I don't know how.  I didn't have a chance to change it yet.  Oh, and i tried the attachment, it wouldn't work, mabe my computer is messed?

-----------------------------------
cycro1234
Wed Feb 02, 2005 4:45 pm


-----------------------------------
What error does it give you?

-----------------------------------
Pinto2
Wed Feb 02, 2005 4:47 pm


-----------------------------------
No error, just didn't show it, i cant figure it out.  If it gets anyone mad just copy this program onto your turing and then put that attachment on this thread.  I will then deleate the 500 lines of code.

-----------------------------------
Bacchus
Wed Feb 02, 2005 4:53 pm


-----------------------------------
your post didnt disapear, a mod moved it to the right forum and added the tags to it

-----------------------------------
Pinto2
Wed Feb 02, 2005 4:56 pm


-----------------------------------
How was i supposed to know that, i looked in the other places and couldn't find it.  And how is this not the correct place for it.

-----------------------------------
person
Wed Feb 02, 2005 4:59 pm


-----------------------------------
turing source code is the right section

-----------------------------------
cycro1234
Wed Feb 02, 2005 5:02 pm


-----------------------------------
It's ok, nobody is angry :D

-----------------------------------
Bacchus
Wed Feb 02, 2005 5:04 pm


-----------------------------------
dont worry about, everyone makes mistakes. this forum is for completed program exes (blah .exe)  the source code forum if for bits like this (the .t one) where u can accually see the code. also the syntax tags help a lot for other people to read it. ([code]code here [/code ] 