Какой .NET Framework я использую для создания настольной игры? - PullRequest
0 голосов
/ 19 ноября 2010

Я бы хотел использовать .NET для создания настольной игры.

  1. Я планирую реализовать базовую настольную игру (что-то похожее на шахматы, но менее сложную) в качестве дипломного проекта по искусственному интеллекту.
  2. Графический интерфейс не очень важен (он не должен быть простым в использовании, интуитивно понятным, анимированным и т. Д.), Но если он не добавляет особых сложностей, я хочу добавить лучший графический интерфейс.
  3. Основная цель - представить в качестве термина проекта, но я хочу поделиться им с сообществом, чтобы другие тоже могли играть.Развертывание должно облегчить совместное использование игры с рабочими станциями Windows.

Какие рамки вы, ребята, предлагаете для такого проекта?Я знаю эту тему, но это не то, что я ищу.

Ответы [ 6 ]

5 голосов
/ 19 ноября 2010

Если вы сказали, что графический интерфейс на данный момент не важен , то вам не нужна игровая среда , которая только замедлит вас при создании игры.Для вас более чем достаточно форм Windows.

Вы должны сосредоточиться на реализации сборки игрового движка.Эта сборка должна иметь открытый протокол связи и НЕ должна знать о каком-либо графическом интерфейсе.Другими словами, вы должны отделить свой движок от GUI.

Позже вы и другие могли бы создать графический интерфейс на своем языке по своему выбору, который будет использовать ваш протокол для связи и отображения позиции вашей игры.

Удачи!

4 голосов
/ 19 ноября 2010

Если вы хотите сделать в .NET что-то, связанное с разработкой игры, ваш лучший способ - использовать .NET XNA Framework .

Что касается создания игровой доски, вынужно будет научиться программировать видеоигры;на самом деле не существует встроенного фреймворка для перетаскивания и создания настольной игры.

Похоже, у кого-то есть учебник по , как создать "настольную" игру XNA 4.0.

1 голос
/ 19 ноября 2010

WinForms является самым простым в использовании, если вы только начинаете. Тем не менее, если ваш основной интерес заключается в тестировании логики, вы можете даже начать с консольного приложения и подождать разработки пользовательского интерфейса, пока у вас не будет стабильного представления о том, как будет работать игра. Я бы не рекомендовал XNA для вашего первого прохода. Если вы действительно хотите превратить его в отлаженную игру, вы всегда можете создать интерфейс XNA поверх вашей логики позже.

Ключевым моментом здесь является разработка вашего приложения таким образом, чтобы логика и пользовательский интерфейс были разделены. Если вы сделаете это правильно, то вы можете свободно использовать различные интерфейсы, возможно, начиная с консоли, заканчивая приложением WinForms в стиле «отладки», с грубым интерфейсом, разработанным для вашего потребления, и, наконец, более отточенный интерфейс для других.

1 голос
/ 19 ноября 2010

Если вы делаете настольную игру, такую ​​как шахматы, и вам не очень интересно использовать ее в качестве части в портфолио игрового программирования, я бы порекомендовал вам просто использовать среду пользовательского интерфейса Windows, такую ​​как WPF. В такой системе очень легко подключиться к событиям, и вы получите возможность использовать встроенный дизайнер макетов пользовательского интерфейса в Visual Studio. Просто создайте сетку кнопок (используя изображения для их содержимого) / других элементов управления. Это позволит вам потратить гораздо меньше времени на то, как он выглядит, а также на задачи программирования, связанные с графикой / пользовательским интерфейсом, и быстро научит программировать игровую логику.

Если вы используете этот проект для портфолио игрового программирования, я согласен с Джорджем - используйте XNA. Если вы сделаете это, пригласите друга художника, чтобы позаботиться о дизайне пользовательского интерфейса и графическом контенте для вас (но, конечно, не о графическом программировании).

Вы также можете иметь лучшее из обоих миров. Вы можете сделать свою игровую логику независимой от пользовательского интерфейса, а затем программировать ее лучше. Почтовые шахматы - тому подтверждение.

0 голосов
/ 19 ноября 2010

Лично я создал приложение Connect4 с небольшим количеством искусственного интеллекта и использовал базу данных, чтобы «учиться» на своих ошибках, как мой проект Senior. Несколько советов, хотя:

  • Не слишком усложняй вещи. Не сидите там и не пишите целую структуру для работы с несколькими игровыми досками или странными возможными настройками (например, добавление третьего игрока в микс).
  • Использование хорошего шаблона и языка значительно упростит тестирование и отладку (мой любимый вариант - WPF с использованием MVVM).

Кроме того, если вы решите пойти по маршруту Connect4, вот как я настраиваю свои классы:

C4Board.cs

  • Я превратил его в неизменный объект, представляющий состояние GameBoard.
  • C4Board Insert(int col) вернет новую GameBoard или выдаст пользовательское исключение, если столбец будет заполнен.
  • Я сделал его неизменным для работы с «историческим» списком состояний игры в представлении.

GamePlayer.cs - Перечисление (NULL, P1, P2) - Методы расширения, которые позволяют вам перейти от GamePlayer -> GamePiece

GamePiece.cs - Перечень (ПУСТО, ЧЕРНЫЙ, КРАСНЫЙ) - Методы расширения, которые позволяют вам перейти от GamePiece -> GamePlayer

GameWinner.cs - Перечисление (NONE, P1, P2, TIE)

Это простая игра с простыми правилами, легко отделить вашу логику и добавить ИИ и т. Д. Это гораздо лучше, чем пытаться придумать игру в шахматы или игру в Го и т. Д.

0 голосов
/ 19 ноября 2010

В прошлый раз, когда мне понадобилась доска, я просто создал двумерный массив пользовательских элементов управления, дал каждому пользовательскому элементу управления границу, и его метод рисования нарисовал что-нибудь на внутренней стороне доски.Вы можете иметь свой пользовательский элемент управления на игровом поле и пользовательский элемент управления своей игрой в виде отдельных объектов или одного и того же объекта, в зависимости от того, что вы делаете.Эта стратегия займет всего несколько часов, и дает вам много сил.Например, легко добавить функции для распознавания таких вещей, как перетаскивание, щелчок и т. Д.

Еще один способ создания игрового поля - просто использовать DataGridView .Это на самом деле не предназначено для использования этого класса, и код для него станет немного уродливым, но если вы напишите обертку вокруг него, это, вероятно, не будет слишком плохим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...