Snake c#
Goddag alle eksperter... jeg sidder med et mindre problem...Skal til at igang med at lave snake i c#. Jeg har lavet et mindre "spil", som jeg vil videre bygge på...
Og nå skal jeg jo så igang med at lave mit snake... Problemet er at jeg ikke kan finde ud af om det skal være i en user controle form, som de andre levels i spillet, eller om det skal være en windowed form...
Det skal jo lavet så jeg kan oprette et array, og bruge system.drawing;
Men kan det lade sig gøre at oprette et array på en usercontrole from?... Kan ikke rigtigt få lortet til at virke... har undet et eksempel på nettet... men vil gerne have det til at kører i en user controle...
Er der eventuelt en der kan smide et eksempel op ? bare på hvordan arrayet skal oprettes, så jeg kan brynde at lave algoritmer og billeder... :)?..
Mange tak..
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Snake
{
public partial class Form1 : Form
{
//somewhat of a coordinate system for the game
bool[,] point = new bool[51, 51];
//sets the direction that the snake is supposed to move: 1:up, 2:down, 3:left, 4:right,
int direction = 4;
public Form1()
{
//This sets the starting snake
point[0, 0] = true;
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
//according to the array point this displays the blocks of the snake and fruit
Graphics g = e.Graphics;
int x = 0; int y = 0;
while (y < 51)
{
bool skip = false;
if (point[x, y] == true)
{ g.FillRectangle(Brushes.GreenYellow, x * 10, y * 10, 10, 10); }
if (x >= 50) { x = 0; y++; skip = true; }
if (x < 50 && skip == false) { x++; }
}
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
int x = 0; int y = 0;
while (y < 51)
{
bool skip = false;
if (direction == 4)
{ if (point[x, y] == true) { point[x, y] = false; point[x + 1, y] = true; break; } }
if (direction == 3)
{ if (point[x, y] == true) { point[x, y] = false; point[x - 1, y] = true; break; } }
if (direction == 2)
{ if (point[x, y] == true) { point[x, y] = false; point[x, y + 1] = true; break; } }
if (direction == 1)
{ if (point[x, y] == true) { point[x, y] = false; point[x, y - 1] = true; break; } }
if (x >= 50) { x = 0; y++; skip = true; }
if (x < 50 && skip == false) { x++; }
}
Invalidate();
}
catch { }
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
// Invalidate the Eater before moving it
string result = e.KeyData.ToString();
/* switch (result)
{
case Left
{
direction = 3; break;
}
case Right
{
direction = 4; break;
}
case Up
{
direction = 1; break;
}
case Down
{
direction = 2; break;
}
} */
}
}
}