View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# 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.

4 replies to this topic

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

### #2Andy474  Members

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?

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

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

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.