Пишем игру Питон на Python ;). Часть 1

В рамках компании по попытке обучения одного товарища программированию начал писать классическую игру Питон. С правилами: питон двигается по полю, если он что-то ест, то растёт. Если натыкается на стену или на самого себя — игрок проигрывает.

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

Для отрисовки графики и получения событий нажатия клавиш будем использовать библиотеку pygame

Итак начнем. Сначала зададим настроечные переменные для игры, как то размер поля, цвета и т.п.:

Затем создадим окно с указанными размерами , закрасим его чёрным цветом, и нарисуем сетку:

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

Если мы сейчас в этот цикл вставим событие отрисовки самого питона, то он будет двигаться с дикой скоростью. Ограничим её одной клеткой в секунду, используя измерение времени. В начале цикла замерим время начала игры, и внутри цикла, если видим, что прошла секунда — отрисовываем питона, для этого чуть изменим код:

Функции отрисовки питона (Draw_python) пока нет. Создадим её.. В начале функции посчитаем радиус кружка тела. Потом если вектор направления задан, то голову передвинем на вектор, а жопу питона удалим. Таким образом создадим видимость движения питона:

Скачать результат

Тенарные операторы в python

Терпеть не могу их на самом деле, и избегаю использовать, т.к. считаю что лучше написать 2-3 лишних строчки кода. зато они будут читаться намного лучше. Однако же иногда попадаются, и иногда использую. Вот пример как использовать его в python

Синтаксис:

переменная=значение_1 if (условие выполняется) else значение_2

Пример:

Читаем так: radius будет равно a, если a больше b, иначе radius будет b. Или тоже самое в классическом виде:

Чтиво за последнее время

Михаил Гаевский. Стратег 1-2. Краткий сюжет: военный наемник выполняя задание в Афганистане попадает на борт космического корабля. И понеслось (с). По вселенной EVE: нейросети и т.п. Оценка 3/5. Читабельно

Михаил Гаевский. Такси на Энельвейт. Сюжет: простой таксист оказался не в том месте не в то время и потому попадает в лапы «Синдиката». Чтобы выкупиться необходимо работать..таксистом. Что получилось в принципе не плохо. По вселенной EVE: нейросети и т.п. Оценка 3/5. Читабельно.

Андрей Евремов: Путь хранителя 1-9. Сюжет: Вся жизнь игра. Только играют тобой «Старшие» расы. А ты и всё население планеты Земля — всего лишь клоны с заблокированными генами. Но и «Старшие» на самом деле являются лишь игрушками в руках творцов, хранителей, хаоса и пустоты. Оценка 4/5

Ascord Flow: Релокант 1-3. Люди погубили свою планету в результате Ядерной войны, но в последний момент им предоставлен шанс начать всё заново, в конкурентной борьбе с другими такими же цивилизациями уничтожившими свой ми. Оценка 4/5

Python: пишем игру «успей нажать клавишу»

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

Суть игры: компьютер загадывает случайную кнопку из списка и время за которое игрок должен успеть её нажать. Если игрок успевает нажать — ему добавляется балл.

Итак, для написания понадобится знать что такое циклы, массивы, случайные числа. Использовать будем модули keyboard, random и time

  • keyboard — для получения нажатий клавиш на клавиатуре
  • random — для получения случайных числел
  • time — для расчета времени реакции

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

Далее создадим бесконечный цикл, внутри которого будем выбирать случайную клавишу для нажатия:

Что делает этот код? Бесконечно выводит в консоль сообщение о том, что нужно нажать случайно выбранную кнопку. Давайте теперь чуть переделаем код, чтобы случайно выбиралась не только клавиша которую нужноно нажать игроку, но и время за которое ему нужно её нажать:

Что дальше? А дальше нам нужно объявить еще один цикл и ждать пока не истечет время отведенное для того чтобы игрок нажал кнопку. Для этого, перед началом цикла запомним время начала игры, и внутри цикла постоянно будем проверять, на сколько оно отличается от текущего времени:

Теперь добавим чуточку интерактивности, а именно проверку, «а не нажата ли клавиша загаданная компьютером»:

Ну и осталось чуток прилизать код, добавив возможность подсчета кто круче, компьютер или игрок:

Ход игры:

1с: Число прописью без нулей

Задача: вывести число прописью, число должно быть целым

Решение:

Ну и бонусом, перечислю наиболее распространенные варианты использования.

Вывод рублей и копеек:

Вывод процентов:

1 22 23 24 25 26 292