Программирование по-домашнему.
Вы обращали внимание, что если что-то делать "по-домашнему", то почти всё равно какая бы фигня получилась, это будет мило. Поэтому тапками не кидаемся, ниже текстовая игра на Python по-домашнему.
Играя в компьютерные игры, периодически ловил себя на мысли, что было бы неплохо вот тут добавить вот это, а вот тут изменить вот так. А почему в этой игре/программе нет русского языка и почему этой игры нет на других платформах. Ну что, неужели так сложно было всё это сделать?
Но это мысли дилетанта, который не понимает программирования. Ведь программирование это не только язык написания кода, это логика и понимание.
Раньше, просматривая код программ других людей, я видел только знакомые мне буквы и цифры. Не понимая смысла вообще. Но мне нравилась структура кода. Отступы, цветные метки и чистота форматирования. Не знаю как это правильно описать, наверное это было похоже на правильно свёрстанную и красиво напечатанную книгу. Текст мог быть посредственный, но визуально ты получал очень хорошие эмоции. Красота и гармония. И смотря на работы других людей и имея желание сделать что-то своими руками во мне просыпался будущий программист, я брал учебник по программированию, усердно пытаясь запомнить и понять что я читаю. Пишу 'хелло ворлд' и смотрю в книгу, чтобы понять что дальше, а там нет ничего, только сухие факты. Вот функции, вот переменные, это вот так, а это тут вот для этого. Пользуйся. Но я не знаю как, и для чего. И через три дня мне это становиться неинтересно, ибо Ютуб, тик ток и другие отвлекающие факторы захватывают меня в водоворот событий из которых я не пытаюсь вырываться. Так погибают молодые программисты.
И это могло продолжаться годами. Появилось желание, покупка книг, чтение форумов, сложность, непонимание, нет ответа на решение, скука, тик ток… Ленты, бесконечные ленты соцсетей… они не оставляют выбора. Ты хочешь пролистать до конца, но не можешь… и продолжаешь листать, листать, листать, ставить лайки и листать…
Однажды, мне пришла отличная идея. А что если, мне, не начинать с изучения материала, а начать и сделать что-то своё. И в процессе написания программы буду искать конкретные ответы на конкретные задачи. Для себя я понял, что мой метод обучения в практике. Одна теория не дает результатов, только практика и решение возникающих вопросов дает мне понятие и логику программирования.
Я прочитал форумы, посмотрел видео, но вот это "что-то" не было конкретным и дело не двигалось с места. И что вы думаете? Я пошел и купил книгу. Начинается новый круг.
Хотя, нет. Тут было одно изменение. Это была книга не для взрослых. Для детей.
Программирование для детей. Книга с красивыми иллюстрациями, пояснениями и примерами. В книге всё понятно. И я решил, использую эту книгу для написания своей текстовой игры. Простую. Но свою.
В итоге всё получилось. Программа работает, там есть примеры которые можно использовать в других проектах. Я специально писал всё в одном файле и не стал доводить программу до конца, т.к. чем больше информации по программированию ты получаешь, тем яснее ты понимаешь что можно улучшить, сократить и оптимизировать. Это как ремонт. Его нельзя закончить, только прекратить.
В дальнейшем я сделаю внешние файлы в которых будет находиться информация по монстрам, оружию и др. т.к. такое количество информации в одном месте захламляют код и в нем трудно ориентироваться. Также буду постепенно вводить графику, вначале статичную, позже анимацию.
Ниже сам код и несколько моих заметок которые не написаны в книгах, но они работают :)
Переходим к деталям. Их немного.
Для запуска используем Python версии 3.10.1 ссылка на программу Python
Стоит понимать что это всего-навсего поделка и она не претендует на шедевр.
Если вам показалось, что вы видите знакомые слова и надписи, то это так и есть. За основу я брал настольную игру Манчкин.
Моя версия игры не сбалансирована, многих вещей нет и возможно не появится.
Моя версия игры не сбалансирована, многих вещей нет и возможно не появится.
Подтверждать свои действия в игре приходится с помощью цифр. В игре задействованы 9, 5 и 4. Конечно это логически не вяжется с тем ответом который вы должны дать, но тестируя игру, я утомился постоянно переключать раскладку и набирать "да" или "нет" в зависимости от вопроса. Поэтому, если в игре есть вопрос и стоит цифра, то набрав её, вы подтверждаете своё действие, иначе жмете энтер.
Если начать игру с начала, названия вещей не сбросится. Лень. Оставил как есть.
Самое начало кода игры. Активно использую модуль рандом. |
На 4 строке указано, что мы будем использовать модуль рандом в данном проекте. Этот модуль является стандартным и входит в пакет IDLE.
С 6 по 21 строки список глобальных переменных. Эти переменные используются во всем коде. Просто ещё есть локальные переменные их используют только внутри какой-либо одной функции.
Когда мы делаем пользовательскую функцию def, то после происходит магия. Везде где мы будем использовать данную функцию, даже внутри другой функции, программа будет выполнять все команды или функции которые в ней описаны. Например, вот функция на 31 строке: def meetBronik(): которая описывает варианты нательной защиты.
А так её вставил в другую функцию. Строки 746-748, после оператора if ():
meetBronik ()
meetBronik ()
Отдельно хочу написать про кавычки, ага, про те которые дают понять что это текст. Итак, кавычки есть 'одинарные', "двойные" и '''тройные'''. Кавычки должны быть одинаковыми т.е. какими открыл такими и закрыл. А почему их три вида? Вроде как одинарные и двойные особо не отличаются. Но в некоторой литературе рекомендуют использовать только одинарные. С чем это связано я не помню, и не буду придумывать. Поэтому выбор за вами. Как удобно такие кавычки и вставьте. Ну ладно, а три зачем? А это нужно если ваш текст такой длинный, что не помещается в окне и вы можете перенести часть текста на следующую строку. Тройные кавычки я использовал в описании игры, там где башня.
Но, настоящие профи используют \, тогда в окне IDLE текст можно перенести на следующую строку, но в программе переноса не будет в этом месте. Программа сама, определит границ окна и перенесёт часть текста как надо. Но, есть ещё одна хитрость переноса строк. Нужно написать \n\ и тогда программа сделает перенос строки с отступом. Смотри на иллюстрации строка 842.
В этом коде есть все три варианта использования кавычек.
Кому интересно почитать про кавычки более развернуто, вот ссылка: https://proglib.io/p/vopros-veka-kakie-kavychki-ispolzovat-v-python-odinarnye-ili-dvoynye-2022-02-10
Систему рандома я использовал для разных моментов, это и встреча с монстром, и получение сокровищ или проклятия.
Как я писал ранее, такой объём информации нежелательно держать в одном файле, тяжело ориентироваться. Поэтому лучше делать отдельные файлы с описанием функций и данных.
Можно писать: переменная = переменная - 1, а можно переменная -= 1. Строка 849.
Обязательно следить за отступами. Программа их воспринимает как команду к исполнению. И если отступы неправильно расположены, то программа будет отрабатывать действия неправильно.
Прописывать действия и их вывод на экран в порядке выполнения. Если первой строкой вывести принт броня, а после присвоить какое-либо значение броне, то вы увидите данные предыдущего значения.
Ссылка на файл: Google Drive
Комментарии
Отправить комментарий