snake game array

Started by
3 comments, last by ChristianFrantz 10 years, 11 months ago
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

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

Advertisement

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?

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 :)

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

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 :)

This topic is closed to new replies.

Advertisement