2010-09-03 7 views
3

Я преподаю класс программирования C++ начального уровня. Мы используем только iostream в классе (без GUI). Похоже, что студенты не очень рады распечатать строки и номера на своей консоли. (Большинство студентов даже никогда не использовали консоль раньше.) Трудно мотивировать или передать волнение программирования, показывая строки в консоли.Интересная консольная программа для начинающих C++

Что было бы хорошей и захватывающей консольной программой, которую могут написать новички C++? Я ищу что-то выполнимое с базовым навыком C++ + немного сложным + очень интересным, что может побудить студентов изучать языки программирования.

Любые комментарии будут оценены.

ответ

2

Когда я преподавал курс вступительного вступительного курса, мы сделали Game of Fifteen в прямом C как третий проект домашней работы. Это довольно хорошо охвачено, и это игра, поэтому есть какая-то присущая им мотивация.

1

Мне всегда нравились проблемы, где есть настоящая цель для этого. Что-то вроде вычисления математического уравнения или диапазона простых чисел. Я бы подумал, что много вещей на ProjectEuler будет хорошо. Не всем нравится математика (но опять же, это нечто необходимое для информатики!).

0

Когда я взял C++, нам пришлось реплицировать игру Тесей и игру Минотавров. Это хорошо дает вывод нескольких строк на консоль, чтобы сформировать что-то «графическое», и это легко основано на наборе реализованных правил.

0

Мне уже пришлось программировать Tower of Hanoi игру в консоли, я нашел это довольно весело. Это требует использования базовых структур данных, ввода пользователем, проверки условий игры, поэтому было бы хорошо для начинающего, которого я считаю.

0

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

Это не должно быть чем-то действительно продвинутым, просто быть способным манипулировать пикселями и материалами должно быть достаточно, чтобы заинтересовать их. Создание простого графического класса вокруг SDL должно быть в порядке. Может быть, что-то вроде этого:

int main() 
{ 
    GraphicWindow graphic; 
    graphic.setPixel(10,20,GraphicWindow::Red); 
    graphic.idle(); 
} 

Тогда вы будете давать задания, как «реализовать функцию DrawRect» и т.д.

2

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

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

Наконец, хороший дизайн позволит им переключить консоль для интерфейса gui позже (например, промежуточного класса).

1

Вместо того, чтобы просто печатать на экране, вы можете сделать анимацию ascii.

+1

Я где-то потерял код, но когда-то я реализовал аквариум с размахивающими растениями и плавающими рыбами в качестве анимации ASCII, используя проклятия для рисования. Он прошел удивительно хорошо через 2400 бод-модем. – RBerteig

1

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

Например, создайте клон GNU head и tee утилит и, возможно, добавьте новую утилиту под названием cap, которая заглавны буквами.Затем продемонстрируйте, как вы можете получить первые 3 строки текстового файла, заглавные и tee'd, в файл и stdout. Затем продемонстрируйте, как вы используете одни и те же утилиты, не меняя ни одной строки кода, чтобы взять первые 5 строк файла и вывести на экран заглавные буквы и в файл оригинальные буквы.

3

Назад, когда я преподавал, я сделал ранний проект банкоматом.

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

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

Другие подобные идеи были бы кассовыми аппаратами (возврат денег, купоны, предметы, оцененные фунтом, налог с продаж, специальные предложения и т. Д.), Или биллинговая программа сотового телефона (отдельная дневная, ночная, и выходные минуты, текстовые сообщения, текстовые сообщения отдельно и т. д.).

0

Возможно, текстовая версия Lunar Lander game. Вы могли бы сделать полное искусство и анимацию ASCII (возможно, с ncurses) в качестве расширенного упражнения, но даже в виде чистого текста это может быть интересно.

Я помню, как играла версия, работавшая на калькуляторе HP 67, и это было интересно только с семисегментным дисплеем.

Я смутно вспоминаю версию, которая, вероятно, была запущена на ALTAIR 8800, написанном в MITS/Microsoft BASIC, которая использовала ведущую часть линии, чтобы показать высоту над землей как искусство ASCII, с подсказкой о следующем тике ожога справа ,

Другим традиционным выбором было бы реализовать Hunt the Wumpus, или для амбициозного, линкор.

0

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

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

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