Реализация игры "Змейка" - C#

Узнай цену своей работы

Формулировка задачи:

Решил написать змейку на Windows Forms с полноценным ООП, нужна ваша помощь. Вот что я решил делать:
Листинг программы
  1. Класс для змеи
  2. //Поля:
  3. начальноеКоличествоЗвеньев (константа)
  4. текущееКоличествоЗвеньев
  5. направлениеДвижения (будет типа перечисления)
  6. координатыГоловы(наверно типа Point)
  7.  
  8. Конструктор(количествоЗвеньев, координатыГоловы, направлениеДвижения)
  9.  
  10. //Свойства:
  11. НачальноеКоличествоЗвеньев
  12. ТекущееКоличествоЗвеньев
  13. КоординатыГоловы
  14. НаправлениеДвижения
  15.  
  16. //Методы:
  17. Point Двигаться(направлениеДвижения) // Имеется ввиду только для головы
  18. {
  19. // В зависимости от направления увеличивать или уменьшать координату X или Y головы
  20. }
  21.  
  22. ПеремещатьВсеЗвенья()
  23. {
  24. // задавать координаты для всех звеньев через координаты им предыдущих, кроме головы
  25. }
  26.  
  27. СменитьНаправлениеДвижения(направлениеДвижения)
  28. {
  29. // return направлениеДвижения
  30. }
  31.  
  32. bool МожетДвигаться()
  33. {
  34. // Если координаты головы находятся в пределах игрового поля и координаты головы не совпадают с
  35. кординатами каждого звена
  36. return true
  37. }
  38.  
  39. Класс ИгровоеПоле
  40.  
  41. //Поля:
  42. Ширина, Высота(в количестве клеток)
  43. размерКлетки
  44. цветПростойКлеткиПоля, цветГоловыЗмеи, цветЭлементаЗмеи, цветЦветка (змея поедает цветы)
  45. текущееКоличествоЦветковНаПоле
  46.  
  47. двумерный массив типа перечисления [ширина, высота]
  48. // Перечисление тип клетки: пустая – 1, голова – 2, звенозмеи – 3, цветок – 4
  49.  
  50. Конструктор
  51. Свойства
  52. Методы:
  53. СоздатьЦветок()
  54. {
  55. // если на поле 0 цветков то случайной клетке поля присвоить тип цветок
  56. }
  57.  
  58. НарисоватьПоле
  59. {
  60. // в зависимости от типа каждой клетки красить их разными цветами
  61. }
Теперь собственно вопросы: 1) Как задавать координаты всех звеньев вначале и в любой момент времени? Где лучше хранить текущие ячейки змеи с их координатами? (Я думал ArrayList или массив типа Point) 2) Как и где реализовывать метод СьестьЦветок? (когда змея сьедает его, то новая клетка прибавляется к хвосту?) 3) Как заполнять двумерный массив игрового поля зависимо от координат звеньев змеи? (Я думал в классе Змея добавить поле класса ИгровоеПоле) 4) Как лучше рисовать и перерисовывать игровое поле на каждом тике таймера чтобы экран “не мигал“? Я просто розлинею поле и буду закрашивать клетки разными цветами. 5) Что добавить, убрать, поправить по проэктированию?

Решение задачи: «Реализация игры "Змейка"»

textual
Листинг программы
  1. private void Game() // метод который будет вызываться по таймеру.
  2. {
  3.        update();
  4.        redraw();
  5. }
  6. private void update() // в этом методе будет апдэйт всей игры - то есть, изменение координат,
  7. //появление новой еды и т.д.
  8. //так же можно разделить на отдельные методы апдэйт змейки и еды на поле, и в эту записывать
  9. //лишь эти сами методы, для удобного дебагинга
  10. {
  11. }
  12. private void redraw() // в этом же методе будет все перерисовываться. аналогично
  13. {
  14. }
  15.  
  16. //так же потребуется функция для инициализации всего игрового контента
  17. private void init()
  18. {
  19. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут