Знаете ли вы самого знаменитого водопроводчика в мире? С легкой руки компании Nintendo вымышленный усатый и немного полноватый дядечка в красной кепке стал героем для нескольких поколений геймеров. Если вы не знаете, о ком речь, вот вам ссылка на классическую игру 1985 года: поверьте, она всё ещё хороша и заслуживает внимания!
Также можно найти вариант классического Super Mario для смартфонов или оффлайновых эмуляторов. Всё это нам нужно для общего развития, это еще, к сожалению, не задание;). А задание состоит вот в чем. В конце первого уровня Mario каждый игрок видел вот такую полупирамидку:
Создайте файл mario.c в вашей директории pset1
. Наша рограммка будет рисовать полупирамиду, подобную той, что вы видите, но прямо в консоли, без графики: каждый из блоков будет состоять из значка хэша (#). Даже если вы еще не сообразили, как это сделать, поверьте: это просто. Чтобы сделать задачу более интересной, добавим в неё возможность задавать высоту полупирамидки с помощью неотрицательного целого числа от 0 до 23. Высота пирамидки на картинке считается в самом высоком месте, то есть равна 8. Если пользователь неправильно вводит число, нужно попросить его сделать это ещё раз. Затем сгенерировать с помощью printf
пирамидку.
Позаботьтесь о том, чтобы выровнять нижний левый угол вашей полупирамиды по левому краю окна терминала, как в примере ниже. Подчеркнутый текст — это то, что пользователь вводит самостоятельно.
username:~/workspace/pset1 $ ./mario
height: 8
##
###
####
#####
######
#######
########
#########
Обратите внимание, что два крайних правых столбца имеют одинаковую высоту. Генерировать трубы, облака и самого Марио пока не стоит=). По крайней мере для этого задания.
Если пользователь ввел неправильные данные (ввел не число, или число, которое меньше единицы или больше, чем 23), программа должна снова попросить его ввести данные, как в примере внизу, где подчеркнутый текст — то, что вводил пользователь с клавиатуры.
Для считывания введенной строки используйте GetInt
. Она может помочь проверить неправильный ввод, но не для всех случаев.
username:~/workspace/pset1 $ ./mario
Height: -2
Height: -1
Height: foo
Retry: bar
Retry: 1
##
Чтобы скомпилировать программу, введите строку в терминале:
make mario
или более прозрачный, но длинный вариант:
clang -o mario mario.c -lcs50
после этого запустите программу на исполнение:
./mario
Если вы хотите проверить правильность выполнения программы, запускайте check50
:
check50 2015.fall.pset1.mario mario.c
А если вы хотите поиграться с версией mario, созданной ассистентами курса, mario набирайте следующую строку:
~cs50/pset1/mario
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ