Sign in to follow this  
ChristianFrantz

snake game array

Recommended Posts

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

Share this post


Link to post
Share on other sites
Andy474    694

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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
VladR    722

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this