Подтвердить что ты не робот

(Текстовые) игры для практики С++

В настоящее время я изучаю С++, и поэтому я подумал, что было бы неплохо попытаться (пере) программировать некоторые "общие" текстовые игры. (Мысль о охоте на Wumpus, Угадайте (псевдо) случайное число, сгенерированное компьютером,...)

Однако я не могу найти хороших источников для таких задач.

  • Какие текстовые игры могут быть "воспитывать" для меня для программирования?
  • Помните ли вы специальную игру, которую вы запрограммировали (желательно на языке С++), которая вас многому научила?
  • Было бы неплохо, если бы вы могли включить:
    • Общая концепция игры
    • Какие аспекты программирования на языке С++ для этой игры потребуются/включают
4b9b3361

Ответ 1

Я пытаюсь вспомнить некоторые из забавных вещей, которые я делал, когда учился в классе CS в средней школе. Они не все игры, но вот оно:

Анимация на основе текста (ASCII). В основном я анимировал дракон ASCII, пришедший в терминал, что-то сказал и ушел. После "рисования" каждого кадра он был очищен, так что в основном это был кадровый генератор анимации ASCII.

Лабиринт. Используются символы Юникода в виде одной и той же концепции. Я получил ввод с клавиатуры со стрелками и перерисовал ваш блок, проходящий через лабиринт, на основе вашего ввода. Снова очистите экран после каждого кадра и снова распечатайте текст.

Snake - аналогичная концепция, как указано выше, но это была игра змеи.

Простой чат - этот опрос обменивался текстовым файлом на центральном сервере в нашей школе (кто-то случайно chmoded 0777) и облегчал в основном действительно простой чат.

Beeper - эта программа стала печально известной в моей школе. До XP, по-видимому, звуковой буфер на компьютерах Windows мог легко перегружать текст. Запуск этого заставил компьютер подавать звуковой сигнал, пока вы его не отключили (и в большинстве случаев также заставляли его увязнуть так сильно, что вам пришлось выполнить жесткую перезагрузку). Определенно обозленный администрация нашей средней школы. Плюс это всего лишь 2-футовый.

char o = 7;  
while(1) cout << o;

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

Ответ 2

Самообучающаяся версия "20 вопросов" может быть довольно забавной (если вы не знакомы с этим, есть довольно забавная реализация этого в Guess the Dictator/Sit-Com Персонаж).

Пример сеанса (на основе вопросов с этого веб-сайта):

Are you female?
> N
Are you overweight?
> N
Do you live in an apartment building?
> Y
Do you travel for your job?
> N
Do you have strange schemes to make money? 
> N
Do you live in California?
> N
Are you a new doctor?
> N
Is your father gay?
> Y
Are you gay?
> N
Are you an actor?
> N
Are both your parents gay?
> N
Are you black?
> N
I guess you are Chandler from Friends, am I right?
> Y

В этот момент, если бы я ответил N, я должен был сказать, о ком я думаю, выберите вопрос, который отличает моего выбранного диктатора/сит-кома от Чандлера от друзей, а затем скажите, отвечает ли ответ на мой вопрос вопрос "да" или "нет". Затем этот вопрос запоминается, и программа постепенно становится все более осведомленной о персонажах сик-комов и диктаторах.

В зависимости от того, как вы это сделали, это может помочь вам узнать:

  • Консольный ввод-вывод (чтобы задать пользователю вопросы)
  • Двоичные деревья (каждый вопрос представляет собой node в двоичном дереве, а дочерние узлы - задаваемые вами вопросы в зависимости от ответа "да/нет" ).
  • File I/O (если вы сохраните дерево на диск)

Ответ 3

Zork, конечно!

Ответ 4

В Facebook есть интересные крутые инженерные загадки, которые мне нравятся, но они могут быть немного продвинуты для начала. Я - так программист на С++, поэтому решил головоломки сначала на Python, затем на С++.

Отъезд: Facebook Engineering Puzzles

Кажется, у них есть все, от легкого (Hors d'oeuvre) до довольно сложного (Buffet).

Я считаю, что эти головоломки были созданы для вербовки, но они веселились сами по себе. (Может быть, я отвратителен?)

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

Ответ 5

Несколько основных настольных игр, которые вы играли в детстве. Линкоры! (В некоторых странах, известных как subs) → Это учит вас возиться с массивами, передавая буферы. Может также (если вы кодируете AI) заставляете вас играть с этим.

Шашки/Шахматы → Внедрение ИИ выходит за рамки изучения основ, но довольно легко закодировать текстовое представление игры.

Стратегические или основные wargames → Структуры данных и ООП.

Ответ 6

Хорошим источником классических игр является

http://www.atariarchives.org/basicgames/

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

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

Это не столько то, что вы делаете, сколько растягивает свои навыки и переходит от тривиального к чему-то менее...

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

Ответ 7

Как насчет Nim? Есть два варианта: один с несколькими сваями, где вам разрешено брать столько жетонов в одной куче, сколько пожелаете, и одну с одной стопкой, где вам разрешено принимать 1-я токены сразу (N обычно около 3), Человек, который возьмет последний токен, побеждает или проигрывает.

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

Ответ 8

Вы должны пойти в самую крутую текстовую игру, Elite.

Вы можете получить исходный код в очень читаемом и очень интересном C-коде. Источник доступен по адресу сайт Иана Белла.

Элита славилась своей "бесконечной" вселенной. Это довольно умный дизайн.

Ответ 9

Охота на Wumpus была бы фантастической. Это относительно простая игра, но большинство примеров - старый процедурный код в BASIC. Вы можете начать с нуля и написать OO-версию на С++.

Conway Game of Life - еще один хороший, так как он не требует какого-либо взаимодействия с пользователем. В начале моей карьеры я написал 3D-версию и нашел ее полезной. И это увлекательно смотреть: -)

< кроме >
Я на самом деле скучаю по старым временам, когда в компьютерных журналах были списки программ в спину, которые вы могли набрать сами. У них были игры, утилиты, что угодно. Я так многому научился, просто копируя то, что писали другие.
& Л; /& в сторону GT;

Ответ 10

В тот же день я сделал многопользовательскую рулетку с горячим местом, которая научила меня некоторым основам, все на основе текста. В принципе, игроки будут по очереди делать ставки на разных уровнях на разных уровнях ставок, будет ничья (с анимацией и звуками), двойная или ничтожная для победителя. Было очень весело.

Ответ 12

шашек. Мне очень понравилось писать это в смеси cobol и fortran давным-давно

есть настоящие острые ощущения, когда ваше творение действует умно

конечно, вы проходите много итераций, где он действует глупо, прежде чем вы дойдете до этой точки.

Ответ 13

Jotto - отличная игра, которая практически подходит для того, чтобы кто-то учился. Вам нужно много думать о нескольких хороших структурах данных, но вы можете легко собрать забавную игру менее чем в 1000 строк на С++.

Ответ 14

Вы должны проверить сайт для интерактивной художественной литературы на английском языке:

http://www.intfiction.org/forum/

Здесь собираются новые разработчики текстовых игр, чтобы обсудить их. Однако реализация больше не выполняется на С++ - вместо этого используются несколько специализированных языков программирования, называемых Inform, TADS и Hugo.

Вы найдете много текстовых игр (в том числе Zork, руководство Hithhiker для галактики, Wumpus...) в ifarchive:

http://ifarchive.org/

Здесь вы можете найти реализацию одной из моих игр на С++:

http://www.caad.es/baltasarq/if/csa/csa-cpp.zip

Это может быть полезно, если вы можете читать по-испански. Во всяком случае, я сам перешел к Inform 6.

Ответ 15

Настольные игры, такие как шашки и Отелло. Еще в 90-х годах у меня были конкуренты Othello-AI с моими коллегами. Я думаю, что я начал с tic-tac-toe перед этим.

Etudes for Programmers имеет несколько интересных проектов, если вы можете найти копию.

Ответ 16

когда-то был приключенческий (на английском языке) язык записи под названием ALPS, и я помню, как кодировал версию этого, плюс tcp и рудиментарный многопользовательский обработчик, как мой первый проект C/С++ (сначала первый, последний). Проект был аккуратно укушенными "модулями" с окончательным критерием и приятным конечным результатом: я использовал его, чтобы создать странную MUD с моим могучим 32K BBC Micro. Кодирование C/С++ ALPS в конечном итоге обучило мне лингви буквально неделю - к достойному рабочему стандарту (далекому от эксперта).