Реализация игры "Змейка" - C#
Формулировка задачи:
Решил написать змейку на Windows Forms с полноценным ООП, нужна ваша помощь.
Вот что я решил делать:
Теперь собственно вопросы:
1) Как задавать координаты всех звеньев вначале и в любой момент времени? Где лучше хранить текущие ячейки змеи с их координатами? (Я думал ArrayList или массив типа Point)
2) Как и где реализовывать метод СьестьЦветок? (когда змея сьедает его, то новая клетка прибавляется к хвосту?)
3) Как заполнять двумерный массив игрового поля зависимо от координат звеньев змеи? (Я думал в классе Змея добавить поле класса ИгровоеПоле)
4) Как лучше рисовать и перерисовывать игровое поле на каждом тике таймера чтобы экран “не мигал“?
Я просто розлинею поле и буду закрашивать клетки разными цветами.
5) Что добавить, убрать, поправить по проэктированию?
Класс для змеи //Поля: начальноеКоличествоЗвеньев (константа) текущееКоличествоЗвеньев направлениеДвижения (будет типа перечисления) координатыГоловы(наверно типа Point) Конструктор(количествоЗвеньев, координатыГоловы, направлениеДвижения) //Свойства: НачальноеКоличествоЗвеньев ТекущееКоличествоЗвеньев КоординатыГоловы НаправлениеДвижения //Методы: Point Двигаться(направлениеДвижения) // Имеется ввиду только для головы { // В зависимости от направления увеличивать или уменьшать координату X или Y головы } ПеремещатьВсеЗвенья() { // задавать координаты для всех звеньев через координаты им предыдущих, кроме головы } СменитьНаправлениеДвижения(направлениеДвижения) { // return направлениеДвижения } bool МожетДвигаться() { // Если координаты головы находятся в пределах игрового поля и координаты головы не совпадают с кординатами каждого звена return true } Класс ИгровоеПоле //Поля: Ширина, Высота(в количестве клеток) размерКлетки цветПростойКлеткиПоля, цветГоловыЗмеи, цветЭлементаЗмеи, цветЦветка (змея поедает цветы) текущееКоличествоЦветковНаПоле двумерный массив типа перечисления [ширина, высота] // Перечисление тип клетки: пустая – 1, голова – 2, звенозмеи – 3, цветок – 4 Конструктор … Свойства … Методы: СоздатьЦветок() { // если на поле 0 цветков то случайной клетке поля присвоить тип цветок } НарисоватьПоле { // в зависимости от типа каждой клетки красить их разными цветами }
Решение задачи: «Реализация игры "Змейка"»
textual
Листинг программы
private void Game() // метод который будет вызываться по таймеру. { update(); redraw(); } private void update() // в этом методе будет апдэйт всей игры - то есть, изменение координат, //появление новой еды и т.д. //так же можно разделить на отдельные методы апдэйт змейки и еды на поле, и в эту записывать //лишь эти сами методы, для удобного дебагинга { } private void redraw() // в этом же методе будет все перерисовываться. аналогично { } //так же потребуется функция для инициализации всего игрового контента private void init() { }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д