Jump to content
  • Advertisement
Sign in to follow this  
ChristianFrantz

snake game array

This topic is 2050 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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
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?

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

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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!