cs50 марио

Знаете ли вы самого знаменитого водопроводчика в мире? С легкой руки компании Nintendo вымышленный усатый и немного полноватый дядечка в красной кепке стал героем для нескольких поколений геймеров. Если вы не знаете, о ком речь, вот вам ссылка на классическую игру 1985 года: поверьте, она всё ещё хороша и заслуживает внимания!


Также можно найти вариант классического Super Mario для смартфонов или оффлайновых эмуляторов. Всё это нам нужно для общего развития, это еще, к сожалению, не задание;). А задание состоит вот в чем. В конце первого уровня Mario каждый игрок видел вот такую полупирамидку:

Задание 2. С нами Марио! - 1

Создайте файл 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