| Jorbalax's Tools/Etc 
 
	 
	
		| Author | Message |   
		| Jorbalax 
 
  
 
 
 | 
			
				|  Posted: Wed Apr 27, 2005 11:55 pm    Post subject: Jorbalax's Tools/Etc |  |   
				| 
 |  
				| Just a couple tools/projects that I've created to help me work on a game and to get a better grasp of Turing and it's commands. 
 
 ---Colour Grid---
 
 
 I couldn't find a chart with all 256 color codes on it, so I made one.  Notably laggy, and some of the colors return the same value since I used the whatdotcolor command.
 
 
 	  | code: |  	  | 
%Colour Codes%
 %By Jorbalax%
 
 View.Set ("graphics:max;max, nobuttonbar, offscreenonly, title:Colour Codes")
 var mousex, mousey, mousebutton : int
 var x, xc, y : int := 0
 var xincrement := maxx div 16
 var yincrement := maxy div 16
 var picID: int
 
 
 %Draws the grid%
 for i : 0 .. 255
 Draw.FillBox (x, y, x + xincrement, y + yincrement, (i))
 x := x + xincrement
 xc := xc + 1
 if xc = 16 then
 y := y + yincrement
 xc := 0
 x := 0
 end if
 end for
 View.Update
 
 %Capture the grid
 picID := Pic.New (0, 0, maxx, maxy)
 
 
 %Display Value depending on where mouse is.
 loop
 for i: 0..255
 Mouse.Where (mousex, mousey, mousebutton)
 if whatdotcolor (mousex, mousey )= (i) then
 put (i)
 View.Update
 end if
 cls
 Pic.Draw (picID, 0, 0, picCopy)
 end for
 end loop
 
 | 
 
 
 
 
 ---Multi-Ball Stream---
 
 
 Working with classes and procedures to produce multiple balls bouncing around the screen.   Edit the constants near the top to change Ball amount, size, and their speed (lower is faster).
 
 
 	  | code: |  	  | 
%Draws a fixed amount of balls on the screen that have random colors and bounce off of walls.%
 
 View.Set ("graphics:max;max, nobuttonbar,title:Mult-Ball Stream,  offscreenonly")
 
 %Editable Constants%
 const BALLCOUNT := 500
 const BALLRADIUS := 5
 const BALLSPEED := 0
 
 class RandomCircles
 import BALLRADIUS, BALLSPEED
 export StartValues, BallDirection, BallCreate
 
 var cx, cy, cdirectionx, cdirectiony, iColour : int := 0
 var chars : string (1)
 
 %Starting Values for Balls (location, color, and direction)
 procedure StartValues
 randint (cx, 0+BALLRADIUS*2, maxx-BALLRADIUS*2)
 randint (cy, 0+BALLRADIUS*2, maxy-BALLRADIUS*2)
 loop
 randint (iColour, 1, 255)
 randint (cdirectionx, -5, 5)
 randint (cdirectiony, -5, 5)
 exit when cdirectionx not = 0
 exit when cdirectiony not = 0
 end loop
 end StartValues
 
 %Wall collision
 procedure BallDirection
 cx := cx + cdirectionx
 cy := cy + cdirectiony
 if cx < BALLRADIUS or cx > maxx - BALLRADIUS then
 cdirectionx := -cdirectionx
 end if
 if cy < BALLRADIUS or cy > maxy - BALLRADIUS then
 cdirectiony := -cdirectiony
 end if
 end BallDirection
 
 %Ball Creation Procedure%
 procedure BallCreate
 Draw.FillOval (cx, cy, BALLRADIUS, BALLRADIUS, iColour)
 BallDirection
 delay (BALLSPEED)
 end BallCreate
 
 
 end RandomCircles
 
 
 %Draws all of the balls%
 procedure DrawBall
 
 %Creates an array of pointers%
 var p : array 1 .. BALLCOUNT of pointer to RandomCircles
 for i : 1 .. BALLCOUNT
 new RandomCircles, p (i)
 end for
 
 %Produces starting values and creates each ball simultaneously%
 loop
 for i : 1 .. BALLCOUNT
 p (i) -> StartValues
 end for
 loop
 for i : 1 .. BALLCOUNT
 p (i) -> BallCreate
 
 end for
 View.Update
 cls
 end loop
 end loop
 end DrawBall
 
 %Executes%
 DrawBall
 
 | 
 
 
 
 
 ---Simple Etch-a-Sketch Program---
 
 
 Simple enough.  Arrow keys to move, space bar resets.
 
 
 	  | code: |  	  | 
%Simple Etch-a-Sketch Program%
 %By Jorbalax%
 %Use arrow keys to move, space bar to clear.%
 %-------------------------------------------%
 View.Set ("graphics:400;300, offscreenonly, Title:Etch-a-Sketch")
 
 const RADIUS := 3
 const DCOLOR := 7
 const DDISTANCE := 1
 const DELAYTIME := 10
 
 var x, y : int
 var chars : array char of boolean
 x := 200
 y := 150
 
 %Determines if boundaries have been reached, and acts on them (resets ball on other side)%
 procedure DrawBounds
 if x > 400 then
 x := 0
 end if
 if y > 300 then
 y := 0
 end if
 if x < 0 then
 x := 400
 end if
 if y < 0 then
 y := 300
 end if
 end DrawBounds
 
 %Resets screen%
 procedure Reset
 for i : 0 .. 300
 Draw.Line (0, (i), 400, (i), 7)
 View.Update
 cls
 end for
 end Reset
 
 %Determines if a key has been entered, and acts on it%
 procedure KeyInput
 Input.KeyDown (chars)
 if chars (KEY_UP_ARROW) then
 y := y + DDISTANCE
 end if
 if chars (KEY_DOWN_ARROW) then
 y := y - DDISTANCE
 end if
 if chars (KEY_LEFT_ARROW) then
 x := x - DDISTANCE
 end if
 if chars (KEY_RIGHT_ARROW) then
 x := x + DDISTANCE
 end if
 if chars (' ') then
 Reset
 end if
 end KeyInput
 
 %Execution%
 %----------------------------------------------%
 
 loop
 Draw.FillOval (x, y, RADIUS, RADIUS, DCOLOR)
 View.Update
 delay (DELAYTIME)
 KeyInput
 DrawBounds
 end loop
 
 | 
 
 
 More to come, I'm sure.
 [EDIT] Fixed Etch a Sketch program, I had accidently put an older version of it up.  Also changed space character like suggested.
  |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Sponsor Sponsor
 
  
   |  |   
		|  |   
		| jamonathin 
 
  
 
 
 | 
			
				|  Posted: Thu Apr 28, 2005 8:24 am    Post subject: (No subject) |  |   
				| 
 |  
				| Those are nice simple little progs.  I'd definately work on that color prog. 
 
 And here's a little tip for your etch a sketch.  Instead of using chr(32), you can simple use.... (' '). That work for any key that inserts a character.
 [ ('a') or ('t') or ('0') or (]') and so on ]
 
 Good work though.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Shyfire 
 
  
 
 
 | 
			
				|  Posted: Thu Apr 28, 2005 10:36 am    Post subject: (No subject) |  |   
				| 
 |  
				| screen cord finder 
 
 
 	  | code: |  	  | var keys:array char of boolean
var x,y:int:=10
 loop
 drawfilloval(x,y,2,2,255)
 View.Update
 Input.KeyDown (keys)
 if keys (KEY_UP_ARROW) and whatdotcolor (x,y+5) not=255 then
 y+=1
 View.Update
 elsif keys (KEY_RIGHT_ARROW) and whatdotcolor (x+5,y) not=255  then
 x+=1
 View.Update
 elsif keys (KEY_LEFT_ARROW) and whatdotcolor (x-5,y) not =255  then
 x-=1
 View.Update
 elsif keys (KEY_DOWN_ARROW) and whatdotcolor (x,y-5) not=255  then
 y-=1
 View.Update
 
 end if
 locate(1,2)
 put"x"
 locate(1,6)
 put x
 locate(2,2)
 put"y"
 locate(2,6)
 put y
 end loop
 | 
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| jamonathin 
 
  
 
 
 | 
			
				|  Posted: Thu Apr 28, 2005 11:18 am    Post subject: (No subject) |  |   
				| 
 |  
				| KISS, you can make one of those in 6 lines using mousewhere  |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Jorbalax 
 
  
 
 
 | 
			
				|  Posted: Thu Apr 28, 2005 10:59 pm    Post subject: (No subject) |  |   
				| 
 |  
				| Simpler Color Code program.  Notice the somewhat ackward location of the text on some of the circles.  I'm assuming this is because the text is auto aligned to a colum/row.  If someone knows a way to stop it from happening, please do tell. 
 
 	  | code: |  	  | 
%Colour Code Program%
 %Displays all 255 colours%
 View.Set ("graphics:max;max, nobuttonbar,title:Colour Codes)")
 
 var x, y, RADIUS: int :=0
 RADIUS := 100
 
 %Auto-adjusts radius size to screen
 loop
 if RADIUS*RADIUS*2 > maxx or RADIUS*RADIUS*2 > maxy then
 RADIUS -=1
 end if
 exit when RADIUS*RADIUS*2 < maxx or RADIUS*RADIUS*2 < maxy
 end loop
 
 x:=0 + RADIUS
 y:=maxy - RADIUS
 
 %Draws circles and places number
 for i:0..maxcolor
 color(i)
 Draw.FillOval (x, y, RADIUS, RADIUS, i)
 locatexy (x, y)
 color (black)
 put (i)
 if x = (maxx - RADIUS * 3) or  x > (maxx - RADIUS * 3) then
 y:= y - RADIUS*2
 x:=0 + RADIUS
 else
 x:=x + RADIUS*2
 end if
 end for
 | 
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| prdukt 
 
  
 
 
 | 
			
				|  Posted: Mon May 23, 2005 7:59 pm    Post subject: (No subject) |  |   
				| 
 |  
				| Nice Work  |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Jorbalax 
 
  
 
 
 | 
			
				|  Posted: Wed Jun 01, 2005 5:27 pm    Post subject: (No subject) |  |   
				| 
 |  
				| Ah, I've been busy.  Let's start with my newer, MUCH better, color grid. 
 ---Colour Grid V2---
 
 Again, uses whatdotcolor to determine color, so some values will return the same (7 and 248, for example).
 
 
 	  | code: |  	  | 
%Colour Grid V2%
 %By Jorbalax%
 
 View.Set ("graphics:max;max, nobuttonbar, title:Color Grid V2")
 const BOXSIZE := 20 %Determine size of color boxes
 var x, y, button : int %Mouse variables
 var cx, cy, clr : int
 
 %start locations%
 cx := 30
 cy := maxy - 30
 
 %create grid
 for i : 0 .. 255
 drawfillbox (cx - BOXSIZE, cy - BOXSIZE, cx + BOXSIZE, cy + BOXSIZE, i)
 cx += BOXSIZE * 2 + 5
 if cx + BOXSIZE >= maxx then
 cx := 30
 cy -= BOXSIZE * 2 + 5
 end if
 end for
 
 %determine color
 loop
 Mouse.Where (x, y, button)
 clr := whatdotcolor (x, y)
 locatexy (maxx div 2, cy - 50)
 put clr
 delay (50)
 end loop
 
 | 
 
 ---Record and Array Example---
 
 A simple program that takes the age and name of members of a population.  It then asks the user to select any age, and outputs the names of the individuals who are that age.
 
 
 
 	  | code: |  	  | %Record and Array Example%
%By Jorbalax%
 
 var AgeEntered : int :=0
 var Population : int := 0
 
 put "Enter the population amount."
 get Population
 
 %Create an array of a record.  The record contains the element's "name" and "age"
 var NameAge : array 1..Population of
 record
 name : string (20)
 age : int
 end record
 
 %retrieve the data for the elements of the array
 for i : 1..Population
 put "Enter Name:"..
 get NameAge (i).name
 put "Enter Age:"..
 get NameAge (i).age
 put " "
 end for
 
 %Takes an age
 put "Enter an age."
 get AgeEntered
 
 %Outputs the names of people in the population who are that age
 for i : 1..Population
 if NameAge (i).age = AgeEntered then
 put NameAge (i).name
 end if
 end for
 
 | 
 
 
 I have some more at school, I'll post them tomorrow.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		|  |  
 |