Как создать блоки тетриса в XNA с помощью C#?

StackOverflow https://stackoverflow.com/questions/2449524

  •  20-09-2019
  •  | 
  •  

Вопрос

Я делаю клон тетриса на C# с помощью XNA и не уверен, как на самом деле реализовать эти блоки.

Я не думаю, что создание фигур в виде изображений будет работать (поскольку части удаляются при формировании линий), поэтому у меня есть блоки для составления таких частей, как Этот.

К сожалению, я не знаю, как на самом деле определить блоки для создания деталей, а также не знаю, как манипулировать ими, чтобы заставить их вращаться и т. д.

Редактировать:Мне также понадобится помощь в том, чтобы научиться делать сетку тетрис.

Это было полезно?

Решение

Раньше я не создавал тетрис, но после некоторых размышлений я считаю, что для создания своих фигур я бы использовал простую матрицу.Например, все ваше игровое поле будет представлять собой одну большую матрицу.Подмножество этой матрицы, скажем, ее блок 4х4, будет элементом игры.Какие части этого блока 4х4 будут заполнены, будет зависеть от того, какую конкретную часть вы хотите создать.Каждая часть матрицы может иметь логический флаг, указывающий, заполнена она или нет.Это очень упрощенный взгляд на это, но я думаю, что это жизнеспособное решение.

Другие советы

Используйте логическую матрицу для моделирования состояния экрана.Каждая часть сама по себе представляет собой еще одну булевую матрицу меньшего размера.

Вращать деталь так же просто, как немного поиграть с координатами (я оставил это на ваше усмотрение).

О том, как визуализировать: просто нарисуйте кусок плитки для каждого истинного значения в вашей матрице. ored при этом текущий падающий кусок смещается и вращается.

Что касается блоков, я настоятельно рекомендую работать в 3D.Вы по-прежнему можете сделать игру похожей на 2D, заблокировав камеру и т. д., но работа с векторной графикой принесет вам большую пользу.Ваши блоки будут представлять собой простые кубы (плоские или с некоторой глубиной), которые вы вращаете и перемещаете по экрану.

Что касается сетки, посмотрите ответы @fortran и @aaron, логическая матрица поможет.

Возможно, эта ссылка на Кодирование4Fun помогу.Он на немецком языке, но вы сможете получить исходный код и посмотреть, как здесь решена проблема.

На всякий случай, вот прямая ссылка для скачивания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top