error message help 
	 
	
		| Author | 
		Message | 
	 
		 
		sammi7
 
 
 
    
		 | 
		
		
			
				  Posted: Thu Dec 08, 2011 6:07 pm    Post subject: error message help  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				What is it you are trying to achieve?
 
<im trying to make the game Snake and add in bonus food to make the snake grow more
 
 
 
What is the problem you are having?
 
<whenever i try and eat the bonus food(blue) it says variable has no value and i dont know how to fix it.>
 
 
 
Describe what you have tried to solve this problem
 
<Answer Here>
 
 
 
Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
 
<Answer Here>
 
 
	  | Turing: | 	 		  
View.Set ("graphics,offscreenonly")
var segX  : array 1 ..  1000 of int % x-position of segments
var segY  : array 1 ..  1000 of int % y-position of segments
var foodX  : int  % x-position of the food
foodX  := Rand.Int  (30,  300)
var foodY  : int % y-position of the food
foodY  := Rand.Int  (100,  300)
%BONUS FOOD
var bonusFoodX  : int
bonusFoodX  := Rand.Int  (30,  300)
var bonusFoodY  : int
bonusFoodY  := Rand.Int  (30,  300)
var numSegs  : int % number of segments on the snake
% 1 - up, 2 - right, 3 - down, 4 - left
var direction  : int
direction  := 2
var keys  : array char of boolean
Input.KeyDown (keys )
numSegs  := 3 % starting number of segments
% STARTING POSITION OF THE 3 SEGMENTS
segX  (1) := 200
segY  (1) := 100
segX  (2) := 180
segY  (2) := 100
segX  (3) := 180
segY  (3) := 80
loop
    Input.KeyDown (keys ) % update keyboard info
    % DRAWING THE BODY
    for i  : 2 .. numSegs
         Draw.FillOval (segX  (i ), segY  (i ), 10,  10,  black)
    end for
    %DRAWING THE HEAD
    Draw.FillOval (segX  (1), segY  (1), 10,  10,  13)
    % DRAWING THE FOOD
    Draw.FillOval (foodX, foodY,  12,  12,  brightred)
    Draw.FillOval (bonusFoodX, bonusFoodY,  12,  12,  blue)
    % user input
    if keys  (KEY_UP_ARROW) = true then % moving the snake up
        direction  := 1
    elsif keys  (KEY_RIGHT_ARROW) = true then % moving the snake right
        direction  := 2
    elsif keys  (KEY_DOWN_ARROW) = true then % movng the snake down
        direction  := 3
    elsif keys  (KEY_LEFT_ARROW) = true then % moving the snake left
        direction  := 4
    end if
    % To do : CHECK IF IT HIT THE WALLS
    if segX  (1) >=  maxx then
        segX  (1) := - 7
    elsif segX  (1) <= - 7 then
        segX  (1) := maxx -  7
    end if
    if segY  (1) >=  maxy then
        segY  (1) := - 7
    elsif segY  (1) <= - 7 then
        segY  (1) := maxy -  7
    end if
    % check if food is eaten and move the food
    if whatdotcolour (segX  (1), segY  (1)) = brightred then % TODO: actually check real food
        numSegs  := numSegs +  1 % adding a segment when food is eaten
        foodX  := Rand.Int  (30,  400) % moving the food
        foodY  := Rand.Int  (60,  300) % moving the food
    end if
    %check if hit bonus food
    if whatdotcolour (segX  (1), segY  (1)) = blue then
        numSegs  := numSegs +  3
        bonusFoodX  := Rand.Int  (30,  400) % moving the food
        bonusFoodY  := Rand.Int  (60,  300) % moving the food
    end if
    
    % MOVEMENT
    % Move Body
    for decreasing i  : numSegs  ..  2
        segX  (i ) := segX  (i -  1)
        segY  (i ) := segY  (i -  1)
    end for
    % Move Head
    if direction  = 1 then     % up
        segY  (1) := segY  (1) +  20
    elsif direction  = 2 then     % right
        segX  (1) := segX  (1) +  20
    elsif direction  = 3 then     % down
        segY  (1) := segY  (1) -  20
    elsif direction  = 4 then     % left
        segX  (1) := segX  (1) -  20
    end if
    % TODO: check if hit self
    if whatdotcolour (segX  (1), segY  (1)) = black then
        numSegs  := 3
        delay (200)
    end if
    View.Update ()
    delay (100)
    cls ()
end loop
  | 	  
 
 
Please specify what version of Turing you are using
 
<4.1> | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		
			
				  Posted: Thu Dec 08, 2011 6:11 pm    Post subject: Re: error message help  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				sammi7 @ Thu Dec 08, 2011 6:07 pm wrote: it says variable has no value and i dont know how to fix it. 
 
You should assign a value to that variable.
 
 
A more helpful question -- what do you think the value of the variable is, when it's accessed? Well, it turns out that it didn't have any value assigned before use. E.g.
 
	  | code: | 	 		  
 
var value : int
 
put 5 + value
 
  | 	  
 
What should the answer be? Obviously that doesn't make sense until variable actually holds some value. Trace back through your program to see what's going on. | 
			 
			
				 
Tony's programming blog. DWITE - a programming contest. | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		sammi7
 
 
 
    
		 | 
		
		
			
				  Posted: Thu Dec 08, 2011 6:53 pm    Post subject: RE:error message help  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| but i already declared it at the top. and when i tried taking out the part about the whatdotclour for the bonus food it worked....Why does it only happen when i add the bonus food check in? | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		
			
				  Posted: Thu Dec 08, 2011 7:00 pm    Post subject: RE:error message help  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| sure, I also declared the variable called "value" at the top of my example. What's the output? | 
			 
			
				 
Tony's programming blog. DWITE - a programming contest. | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		sammi7
 
 
 
    
		 | 
		
		
			
				  Posted: Thu Dec 08, 2011 7:07 pm    Post subject: RE:error message help  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| ya i know but it works with the original red food....thats what i dont understand.....How do i make it work with both foods? | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		
			
				  Posted: Thu Dec 08, 2011 7:19 pm    Post subject: RE:error message help  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				well, you are doing something to grow the snake with regular food (assigning values to variables) that you are not doing to bonus food (variable doesn't get assigned a value before it is used).
 
 
Though looking at your implementation, it could be that regular food works just by a coincidence. | 
			 
			
				 
Tony's programming blog. DWITE - a programming contest. | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |