Дали задание, сделать змейку на C#, нашел статьи и исходник на змейку, из исходника взял только сетку, помогите мне с едой для змейки пять дней пытаюсь сделать это но не выходит, должно на поле быть 15 шт съедобной еды и после того как змейка съедает игра заканчивается. В программирование щас толком не разбираюсь. Отметил красным нужную процедуру которую пытаюсь доработать
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace SnakeGame
{
public partial class MainForm : Form
{
#region Fields and members
//Поля и члены класса
private int score;
private Keys direction;
private Keys arrow;
private Point lastsegment;
private Snake snake;
private Bitmap OffScreen;
private Graphics GraphBit;
private Graphics OnScreen;
private Point foodCoordinate;
private List<Point>wallCoordinate=new List<Point>();
private int time = 0;
private int speed = 300;
private byte levelNumber = 0;
private int alltime = 0;
private byte n = 0;
private byte rNumber;
private int next = 2500;
private bool isPaused = false;
#endregion
#region MainForm Constructor
//Конструктор
public MainForm()
{
InitializeComponent();
direction = Keys.Left;
arrow = direction;
OffScreen = new Bitmap(250, 250);
snake = new Snake();
lastsegment = snake.Coordinate[snake.Lenght - 1];
}
#endregion
//Функция прорисовки игрового поля и объектов
private void Draw()
{
switch (levelNumber)
{
case 0:
GraphBit.Clear(Color.SteelBlue);
break;
case 1:
GraphBit.Clear(Color.Gray);
break;
case 2:
GraphBit.Clear(Color.DarkMagenta);
break;
default:
GraphBit.Clear(Color.Gray);
break;
}
//if(GridCheckBox.Checked==true)
GreedLine(GraphBit);
GraphBit.FillEllipse(new SolidBrush(Color.Goldenrod),
(foodCoordinate.X * 10),(foodCoordinate.Y * 10),10,10);
for (int i = 0; i < 3; ++i)
{
foreach (Point p in wallCoordinate)
{
GraphBit.FillEllipse(new SolidBrush(Color.Red),
(p.X * 10), (p.Y * 10), 10, 10);
}
}
for (int i = 0; i < snake.Lenght; ++i)
{
GraphBit.FillEllipse(new SolidBrush(Color.Green),
(snake.Coordinate[i].X * 10), (snake.Coordinate[i].Y * 10), 10, 10);
}
OnScreen.DrawImage(OffScreen,0,0);
}
#endregion
#region Food logic
//Набор функций, отвечают за появление и поведение еды
private void FoodCheck()
{
for (int i = 0; i < poisonNumber; ++i){
if(snake.Coordinate[0]==foodCoordinate)
{
snake.IncLength();
snake.Coordinate[snake.Lenght-1]=lastsegment;
score+=1;
ScoreLabelCaption.Text = score.ToString();
NewLevel();
CreateFood();
}
}
}
private void CreateFood()
{
bool onPlace;
do
{
Random md=new Random();
foodCoordinate=new Point(md.Next(0,25),md.Next(0,25));
onPlace=false;
for(int i= 0;i<snake.Lenght;++i)
{
if(foodCoordinate==snake.Coordinate[i])
{
onPlace=true;
break;
}
}
}
while(onPlace==true);
}
#endregion
// заканчивается процедура с едой
//Обработка нажатия на кнопку "Начать игру"
P.S. добавляю исходник с игрой, навсякий случай. Буду признателен вашей помощи!
SnakeGame.rar