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

Продолжаем начатое. Добавим в игру увеличение скорости если питон ест, и подсчет очков. Добавим переменные:

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

А теперь изменим функцию Draw_python, добавив отрисовку количества очков, а так-же увеличение скорости и количества очков при поедании:

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

Теперь не хватает последнего: проигрыша в случае столкновения головы с хвостом. Объявим глобальный цикл в котором будет крутится игра, в нём разместим цикл игры. При проигрыше выводим вопрос «Вы проиграли хотите еще (Y/N)» Если игрок выбирает Y, то из глобального цикла не выходим, иначе покидаем глобальный цикл.

Окончательную версию игры можно скачать здесь

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

В предыдущей части, мы научили питона двигаться. Теперь чуть усложним задачу: раскидаем по игровому полю еду, и в том случае если питон её съедает, то питон растёт. В результате получится что-то вроде:

Что делаем сначала? А сначала инициируем массив с едой, где будет храниться координаты еды, и её тип. В зависимости от типа еды, ёё цвет будет разным. Так-же определим массив с доступными цветами еды, и количество еды доступной на поле одномоментно:

.

Далее напишем функцию, которая генерирует распределение еды на поле случайным образом. При генерации проверяется, совпадение координат с телом питона — нужно не допустить генерацию «внутри» питона. Сюда же поместим и отрисовку сгенерированной еды:

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

Код результат, можно скачать здесь

Пишем игру Питон на 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

1 20 21 22 23 24 293