Реализация игры "Змейка" - 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()
- {
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д