Jump to content

  • Log In with Google      Sign In   
  • Create Account


snake game array


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 burnt_casadilla   Members   -  Reputation: 423

Like
0Likes
Like

Posted 01 May 2013 - 10:47 PM

I'm having trouble coming up with a solution on how to use an array for my snake game. I have a head which is 20x20 pixels on a 400x400 size window. 
 
         int[,] areaGrid = new int[20, 20];
 
So naturally, there will be 400 "blocks" that the head of the snake plus the tail can occupy. If I could figure out how to place the head of my snake in the grid and move it around, Im sure I could figure out the rest of the code. How would I go about doing this? Would it be easiest to use a method to get the location?
 
EDIT:
 
I came up with this
 
 int[,] areaGrid = new int[rows, columns];

            for (int x = 0; x < rows; x++)
            {
                for (int y = 0; y < columns; y++)
                {
                    areaGrid[x, y] += 20;
                    Console.WriteLine(areaGrid[x, y]);
                }
            }

 

The console write line doesnt work. I just wanted it to make sure that my array was working properly

 

edit part 2:

 

just figured out how to view output and it didnt work properly. everything is set to 20


Edited by burnt_casadilla, 01 May 2013 - 11:56 PM.

If you see a post from me, you can safely assume its C# and XNA :)


Sponsor:

#2 Andy474   Members   -  Reputation: 651

Like
0Likes
Like

Posted 02 May 2013 - 02:32 AM

So whats the question? how to use a int[,]? How to assign something in your matrix a value? how to find the position of any given tile?



#3 burnt_casadilla   Members   -  Reputation: 423

Like
0Likes
Like

Posted 02 May 2013 - 11:03 AM

Lol shouldve added that part. I just want to know how to move my Head object around the array because once I figure that out I could figure out the rest of the game

 

 Vector2[,] areaGrid = new Vector2[columns, rows];

            for (int x = 0; x < columns; x++)
            {
                for (int y = 0; y < rows; y++)
                {
                    areaGrid[x, y] = new Vector2(x * 20, y * 20);
                    Console.WriteLine("areaGrid[{0},{1}] = {2}", x, y, areaGrid[x, y]);
                }
            }

 

the finished loop


If you see a post from me, you can safely assume its C# and XNA :)


#4 VladR   Members   -  Reputation: 722

Like
0Likes
Like

Posted 02 May 2013 - 11:59 AM

What if you created an array that would contain just the offsets of each piece from the previous piece ?

 

Say, you have:

struct Offset
{
  int x;
  int y;
}

Now, create the "Snake" Array:

List <Offset> Snake = new List <Offset> ();

for (int i = 0; i < 5; ++i)
  Snake.Add (new Offset (x,0));

And finally, create a method that can Draw the snake at any position:

void DrawSnake (int ScreenXP, int ScreenYP, List <Offset> Snake)
{
  foreach (Offset O in Snake)
  {
    DrawSnakeBitmap (ScreenXP, ScreenYP);
    ScreenXP += O.x;
    ScreenYP += O.y;
  }
}

As an initial Brute-force method, you can create the same method that will erase Snake at the same position, so that you can draw it a new position.


VladR    My 3rd person action RPG on GreenLight:    http://steamcommunity.com/sharedfiles/filedetails/?id=92951596

 


#5 burnt_casadilla   Members   -  Reputation: 423

Like
0Likes
Like

Posted 02 May 2013 - 11:12 PM

Well before I even think about drawing and creating the tail I want to create the head and movement first. I have the head drawn in the array at [5, 5] which is coords 100, 100 on the grid. I want the head to move 20 pixels at a time which is a new point in the array. So for examply, a movement to the right would place the head at [5, 6] in the array and at 120, 100 on the grid. I just dont know how to do that


If you see a post from me, you can safely assume its C# and XNA :)





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS