Как сделать игру в города на python

Добавил пользователь Дмитрий К.
Обновлено: 10.09.2024

Я изучаю программирование на Python и пытаюсь сделать рабочую популярную карточную игру.

Можете ли вы помочь мне понять, как заставить его работать?

РЕДАКТИРОВАТЬ: Да, я вставил неправильный код, вот тот, в котором мне нужна помощь:

Спасибо всем за ваши ответы! Теперь я лучше понимаю все это, я переписываю это по-другому!

2 ответа

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

Теперь, если я добавлю что-то в руку p1 :

Это потому, что я определил hand на уровне class , и поэтому p1.hand и p2.hand являются действительно > . Чтобы изменить это, вам нужно, чтобы hand был присоединен к экземпляру, используя self.hand и метод dunder __init__ , который действует как конструктор для экземпляров класса.

Теперь p1.hand является совершенно другим объектом, чем p2.hand , потому что они были созданы при каждом вызове __init__ . Теперь, если я добавлю что-то в p1.hand :

Они не оба модифицированы. Теперь коснемся функций класса. По умолчанию функции в классах имеют уровень экземпляра, что означает, что self или класс instance будут неявно переданы в качестве первого аргумента. Если у вас нет заполнителя для self , вы получите ошибки:

Программа

Чтобы нарисовать карту, вы можете использовать следующее:

Метод класса remove удалит значение из списка. В сочетании с вашим class.hand подходом:

Или как метод в классе Player :

Хотя вы можете считать это немного многословным. Если вы хотите сохранить свой метод случайного перемешивания, вы можете каждый раз перетасовывать колоду и использовать pop , чтобы получить случайную карту, как подсказал @ibonyun.

Вы используете классы неправильно. Создание класса Player - это то же самое, что определение игрового процесса. Это идея о том, что значит быть игроком в карточную игру. Вы не можете играть в карточную игру только с идеей игрока; вам нужны настоящие игроки, которые иллюстрируют игривость. С точки зрения программирования, игроки будут создавать экземпляры класса Player.

Вы пытаетесь играть в игру с самим классом, а не с экземплярами класса. Вам нужно создать экземпляр Giocatore дважды (один раз для каждого игрока) и поиграть с экземплярами. Для создания экземпляра вам нужно сделать что-то вроде этого:

Внизу вы создали подкласс Giocatore с новыми классами, названными в честь игроков. Если у каждого игрока нет разных способностей (т.е. атрибутов и / или методов), это не нужно. И это не то же самое, что создание экземпляра Giocatore .

когда я пытался взять карты с player1, он также добавлял карты в руку player2 . Как я могу поменять его, чтобы он добавлял карты игроку и только ему, удаляя их из колоды? Что не так с моим решением?

Есть 2 причины. Во-первых, вы играете с самим классом, как я описал выше. Но даже если вы этого не делали, есть еще одна проблема: вы сделали mano атрибут class вместо атрибута instance , Это означает, что все экземпляры будут совместно использовать этот атрибут; поэтому все игроки будут использовать одну и ту же руку. В методе draw вместо Giocatore.mano.append(pesco) должно быть self.mano.append(pesco) . Таким образом, вы кладете новую карту только в руку этого игрока, а не в общую руку всех игроков.

Чтобы сделать руку атрибутом экземпляра, вы должны определить его внутри __init__ . Этот метод должен выглядеть примерно так:

Создание игры Arkanoid на PyGame Zero

В данной статье мы расскажем, как при помощи Python и PyGame Zero можно быстро и легко написать клон игры Арканоид (Breakout).

Содержание статьи

Что ж, приступим!

Весь код, который будет использоваться в данном руководстве, доступен по ссылке.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Изображения были взяты с Kenney. На данном сайте есть множество клевых бесплатных ассетов для создания игры. Обязательно зацените его!

Установка Pygame Zero

Первым делом нужно создать пустое окно:

Здесь мы импортируем Pygame Zero. Переменная TITLE — это заголовок отображаемого окна, а переменные WIDTH и HEIGHT определяют ширину и высоту данного окна соответственно.

Метод pgzrun.go() запускает программу.

Вы должны увидеть пустое окно:

Игра Арканоид на Python

Давайте попробуем отобразить несколько игровых блоков.

Добавим следующий код под высотой и шириной:

Actor отвечает за то, как Pygame Zero будет показывать картинки. Изображения всегда хранятся в папке images , которая находится в том же месте, где расположен скрипт игры.

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

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

Итак, у нас есть изображения, загруженные в память, однако они пока не отображаются. Давайте это исправим. В Pgzero есть встроенная функция draw() , которая вызывается автоматически при запуске игры. Есть также функция update , которая вызывается 60 раз в секунду и обновляет экран по мере вашего движения.

По сути, у нашей игры будет 60 FPS.

Функции update() и draw() в Pgzero

Функции update и draw похожи — разница лишь в том, что update вызывается 60 раз в секунду, в то время как draw вызывается только в тех случаях, когда что-то нужно изменить, нарисовать…

Здесь нет никаких строгих правил, но я бы использовал функцию update для вещей, которые часто меняются. Например, для стенки с кирпичиками и мячика. В то время как для фоновых изображений можно использовать draw .

Создание двигающейся панели и мячика

Для начала воспользуемся функцией draw() , а update() пока оставим пустой:

Игра Арканоид на Python

Давайте сделаем еще кое-что. Вам не кажется, что сейчас фон очень скучный? Давайте сделаем его немного повеселее.

Обновим функцию draw() :

В качестве фона мы используем файл background.jpg , который находится в папке images . Функция blit() рисует наше изображение на экране. Кортеж (0,0) является стартовой позицией, где x=0 и y=0 . Систему координат в Pygame Zero мы обсудим немного позже.

Игра Арканоид на Python

Создание стенки с кирпичиками для игры Арканоид

Сейчас мы займемся созданием стенки с кирпичиками, которых будет сбивать мяч.

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

Игра Арканоид на Python

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

Здесь мы создаем начальные переменные для координат x и y — bar_x инициализируется на 120 , а bar_y — на 100 .

Мы выполняем цикл 8 раз. Почему 8? Потому что именно столько кирпичиков мы можем удобно разместить на экране.

Для каждого цикла мы создаем объект Actor , инициализируем его координаты x и y и рисуем все на экране. Затем делаем следующее:

Игра Арканоид на Python

Неплохо. Теперь нужно разложить все остальные кирпичи. Я планирую построить 3 ряда, причем цвет каждого будет отличаться.

Первым делом я хочу превратить приведенный выше код в удобную функцию:

Здесь я поместил использованный раннее код в функцию place_blue_bars() .

Я мог бы создать больше функций наподобие create_red_bars() и так далее, но, думаю, будет лучше использовать более умный подход.

Итак, у нас будет общая функция place_bars() :

В верхней части мы также создадим еще одну глобальную переменную bars_list = [] . Мы будем использовать ее для проверки того, какие кирпичики отображать, а какие удалять после попадания в них мячика.

Передадим начальные координаты x и y первого кирпичика, а также изображение, которое мы будем использовать. Конечная функция выглядит следующим образом:

Единственное изменение заключается в том, что мы инициализируем x , y и изображение из полученных входных данных.

coloured_box_list = [ "element_blue_rectangle_glossy.jpg" , "element_green_rectangle_glossy.jpg" , "element_red_rectangle_glossy.jpg" ]

У нас есть список с 3 изображениями. Мы инициализируем значения x и y . Затем делаем цикл for по списку:

Нам нужно сделать y += 50 в каждом цикле, иначе кирпичики будут располагаться друг над другом.

Нам нужно сделать еще кое-что. Создадим кирпичики, но отображать их не будем. Обновим функцию draw() :

Игра Арканоид на Python

Теперь у нас есть красивый макет. Наконец-то можно заняться логикой!

Добавление физики для двигающейся панели

Давайте начнем с добавления физики для нижней панели. Нам нужно, чтобы игрок мог двигать данный элемент туда-сюда, стараясь отбить мячик. В Pygame Zero это сделать очень просто — вы можете просто проверить события клавиатуры напрямую. Давайте обновим функцию update() :

if keyboard.left проверяет, нажата ли левая стрелка на клавиатуре, и если да, то изменяет x-позицию двигающейся панели на -5 (то есть перемещает ее влево на 5 пикселей). И то же самое происходит для правой стрелки на клавиатуре.

Почему я выбрал 5 пикселей? Чтобы найти баланс между слишком быстрым/медленным перемещением. Попробуйте изменить значения на 1 и 10 и посмотрите, что получится.

Нажмите на левую и правую стрелки — теперь вы можете перемещать нижнюю панель.

Добавление физики для движения мячика в игре

Помните, что встроенный метод update() вызывается 60 раз в секунду. Поэтому любая игровая логика, например, перемещение мяча, проверка столкновений (коллизии) и тому подобное, будет происходить здесь.

Мы создадим новую функцию update_ball() , которую будем вызывать из функции update() .

Таким образом мы меняем позиции x и y для мяча.

Система координат в Pygame Zero

Система координат в PyGame Zero

Координаты верхней левой части экрана — 0, 0 то есть x=0, y=0 .

Если вы двигаетесь вправо, то значение x возрастает.

Если вниз, то возрастает значение y .

При движении влево, уменьшается x . При движении вправо, увеличивает x .

Для передвижения вниз, увеличиваем y . Вверх — уменьшаем y .

Учитывая все это:

ball.x -= 1 двигает мяч влево (так как -1 = влево, +1 = вправо)

ball.y -= 1 двигает мяч вверх (так как -1 = вверх, +1 = вниз)

Итак, в начале игры мяч будет двигаться вверх и влево. Это просто случайное решение — вы можете с таким же успехом выбрать движение вниз и вправо. Но пока что я буду придерживаться этого решения, чтобы объяснить вам возникшую проблему:

Мяч за пределами экрана! Вот незадача!

Нам нужно добавить проверки, чтобы при ударе о стены мяч отскакивал назад. Это физическая часть.

Давайте добавим проверку.

Сначала добавим глобальную переменную для скорости x и y . Добавьте эти глобальные переменные в верхнюю часть файла:

Как установить


Однозначного ответа на вопрос о том, какую версию python скачивать, не существует. До 2019 эксперты ещё не решили, какая версия лучше подходит для написания игр. Но чтобы не возникало лишних проблем и вопросов, лучше скачать 3.7.

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

В самом конце, когда платформа будет установлена, она предложит убрать ограничение длины служебной переменной. Эта функция влияет на запуск Python из любого места системы компьютера. Необходимо просто кликнуть на текст в рамке.

Чтобы проверить правильность установки, нужно открыть командную строку и вписать туда слово python. После нажатия на Enter должен появится номер версии и список из нескольких команд для освоения в новой системе.

Для более удобного взаимодействия дополнительно необходимо установить Code VS.

Теория

Для начала работы с платформой и создания игры необходимо знать некоторые теоретические данные, которые не только будут полезны в дальнейшем, но и помогут понимать все процессы, происходящие в компиляторе с написанным кодом.

Pygame

Для создания собственной игры нужно работать со средой Pygame. Это так называемая игровая библиотека. Если проще, то набор инструментов, которые способствуют созданию игр.

Это три основных аспекта:

  1. Звуки (как музыка внутри игры, так и звук открытия дверей, падения шара и т. п.).
  2. Управление (привязанное к чему угодно, как классические средства ввода, так и различные геймпады).
  3. Графика и анимированные вставки.

Игровой цикл – основа нашей игры. Это кусочек кода, который запускается огромное количество раз, именно поэтому написанное визуализируется. Каждый такой цикл, который присутствует в окончательном виде, называют кадр.

В таком кадре происходит огромное количество процессов, но для понятности их можно разделить всего на три вида:

  1. Обновление. Это изменение всех предметов или явлений, происходящих за один кадр. Например, если объект подпрыгнул, его силой гравитации должно потянуть обратно к земле. Или если две движущиеся машины сталкиваются, то они должны отскочить друг от друга и получить повреждения.
  2. Ввод. Реакция программы на то, что происходит вне поля кода. То есть клики мышкой, какие-либо нажатия клавиатуры, управление стиками геймпада.
  3. Прорисовка. Этап, на котором код превращается в фон, персонажей, выпадающее меню, окружающую среду и прочие вещи, которые пользователь должен увидеть при взаимодействии.

Скорость работы цикла

FPS или Frames Per Second – количество кадров в секунду. Термин, знакомый любому геймеру. Многие знают только то, что для комфортной игры это значение должно быть больше 60. Программисты же понимают термин так: значение, указывающее количество повторений цикла за одну секунду.

Это необходимо для того, чтобы написанная программа не была слишком быстрой или медленной. Также важно, чтобы разные ПК или ноутбуки обрабатывали такое значение с одинаковой скоростью. Если машина должна ехать 7 секунд до столкновения, то это время не должно изменяться на разных компьютерах.

Практика

Ознакомившись с теоретической частью, можно начинать создавать свою первую игру. Самый первый шаг – создание обычной программы pygame, которая откроет окно и запустит цикл игры. Собственно, это и есть начало любого кода на питоне.

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


Первая и вторая строка отвечает за библиотеки, а все остальные — за разрешение окна и количество обновления циклов за секунду.

Теперь откроем само окно игры. Первая строчка запускает игровую библиотеку. Третья выполняет развертывание окна по заданным изначально параметрам, у нас это 1024x720. Пятая создается для того, чтобы мы могли убедиться в правильности частоты кадров.


Третьим шагом идет создание цикла игры. И далее пошагово прописываются три основных события, которые будут происходить в сцене. За сам цикл отвечает команда while, которая контролируется переменной running. Значит, если мы хотим завершить игру, нужно изменить значение переменной с TRUE на FALSE. Теперь заполняем все три строки тем кодом, который нам необходим.

Отрисовка

У нас нет ничего, кроме окна с фоном, с ним и будем работать. Можно его залить цветом, но как? Сколько цветов может обрабатывать компьютер?

Чтобы вычислить это значение, необходимо возвести число 256 в третью степень. Получим значение 16 777 216. Многовато для запоминания.

Экран состоит из пикселей, и каждый может обработать три базовых цвета: зеленый, синий, и красный. Цвет определенного пикселя зависит от того, как горят базовые. Ниже представлена таблица RGB цветов.

Красный Зеленый Синий Цвет
0 0 0 Черный
255 0 0 Красный
0 255 0 Зеленый
0 0 255 Синий
0 255 Голубой
255 255 0 Желтый
255 0 255 Пурпурный
255 255 255 Белый

Каждый из цветов имеет значение от 0 до 256, где 0 — это выключенная функция, а 255 — включенная на максимум. Таким образом, регулируя три основных цвета, можно добиться нужного. Поэтому таблицу цветов назвали RGB, по аналогии с заглавными буквами трех основных цветов.

Теперь мы знаем, как отображаются цвета, и можем залить весь экран, например, желтым. Это сложный цвет, состоящий из двух.

YELLOW = (255, 255, 0)

После того как мы задали командой желтый, можем выполнить заливку экрана.

Двойная буферизация

У нас есть двусторонний предмет, например кусочек фанеры. И его можно повернуть, показав или с одной стороны, или с другой. Тыльная сторона будет дисплеем, с которым взаимодействует пользователь, а обратную сможет обрабатывать только наш компьютер. Каждый кадр рендерится на обратной части, а когда отрисовка полностью завершена, фанеру переворачивают и показывают пользователю. Так отрисовывается изображение не при добавлении новых элементов, а один раз в каждый кадр.

К нашей команде screen.fill(YELLOW) добавляем строку pygame.display.flip, и все начинает работать.

Эта функция должна находиться в самом конце отрисовки, иначе содержимое, которое задано после флипа, просто не отобразится на экране пользователя.

События

Так как у нас отсутствует игра, мы не можем точно угадать, какие кнопки меню или управления нам будут необходимы. Если прямо сейчас запустить программу, будет ясно, что окно просто так не закроется. Мы не рассматриваем возможность нажать на красный крестик в углу, так как это недостаточно для конечного игрока.

Закрытие – функция, которая должна быть сообщена программе для того, чтобы была возможность считать её и завершить процесс. Если проще, чтобы значение TRUE было заменено на FALSE.

Нужно учитывать все детали и то, что кадры каждую секунду генерируют события. Просто подумайте, что если во время того как программа отрисовывает картинку, пользователь захочет нажать на кнопку прыжка?

Использовать окно кода просто чтобы создать статичную картинку – недостаточно. Pygame хранит все события, которые происходили с момента отрисовки последнего кадра. Язык не будет пропускать команды, сколько бы их ни было. Программа в окне создает список действий, а цикл FOR пройдет по всем.

Одно из важнейших событий pygame.QUIT, оно запускается после нажатия крестика и меняет значение переменной Running с TRUE на FALSE, тем самым заканчивая игровой цикл.

Шаблон

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


Последней, 30-й, строчкой обязательно пишем окончание программы, чтобы она нормально закрывалась.

Создание окружения

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

Кроме того, мы можем нарисовать несколько простейших объектов:

  • Line (создание линии);
  • Circle(создает окружность);
  • Rect (создает квадрат).

Есть много других методов и команд, но эти три являются самыми распространенными в использовании новичками.

В конце цикла всегда надо обновлять сцену, чтобы на ней отрисовывались кадры, за это отвечает команда pygame.display.update

Запуск игры в окне без этой программы приведет к слишком быстрому движению, и воспринимать ее будет невозможно.

Создание простейшей игры с числами

Давайте рассмотрим проект по созданию числовой игры на определение. Исходя из текста выше, попытайтесь проанализировать строки и понять, за что каждая отвечает.


1 и 3 строка отвечают за то, чтобы переменной NTG было задано число от 0 до 200, а также чтобы число пользователя изначально было -1.

5 строка — это цикл, который будет выполняться, пока переменная NTG не совпадет с переменной, введенной пользователем в окне программы.

Строки с 6 до 10 делают основную работу и дают игроку подсказки, в какую сторону отличается написанное число. Если оно совпадет с NTG, выведется строчка, поздравляющая с победой (11).

Последняя, 13, отвечает за конец игры и завершение цикла. Второй способ, чтобы не проставлять значения TRUE и FALSE.

Но исходя из знаний, полученных выше, мы можем доработать программу, сделав окно немного интереснее. Так как в этой игре нет персонажей и объектов, заменим фон строками

YELLOW = (255, 255, 0)

Зададим желтый фон экрана. Теперь компиляция программы в окне будет более интересной. Вот и создана первая простая игра без использования pygame.

Змейка

Создавать игру будем с помощью виджета Canvas. Это нужно для того, чтобы задать объекты изображениями. Также это поможет зарегистрировать столкновение и закончить игру.

Всего возьмем 5 переменных:

  1. DELAY – скорость игры.
  2. ALL_DOTS – количество сегментов змейки, которое может быть.
  3. RAND_POS – чтобы яблоко появлялось в случайной точке.
  4. HEIGHT и WIDTH – отвечают за размер игрового поля.
  5. DOT_SIZE – размер одного сегмента и яблока.

Зададим два массива:

В них сохраняются все соединения нашего существа.


Эти 11 строк отвечают за то, чтобы в нашей игре было три картинки, сегмент, голова змеи и яблоко. Их можно как отрисовать самостоятельно, так и скачать из интернета. Три небольших изображения, которые будут у нас показываться в окне игры.

Этими двумя строками мы создали объекты на игровом поле и задали, чтобы яблоко появлялось в случайной точке окна.


Этими командами мы создадим изображения на холсте. За это отвечает команда image. Если мы хотим, чтобы изображение появлялось около границ окна, нам нужно задать параметр anchor на NW (North и West). А с помощью параметра tag можем отслеживать и идентифицировать все изображения и объекты в окне. Одним тегом можно обозначить группу объектов в нашей игре.

С помощью команды checkApple мы смотрим, съела ли наша змея яблоко, и добавляем ей сегмент в случае положительного ответа. Команда find_withtag находит один из предметов в окне, используя определенный заданный тег. Нам требуется всего два объекта — яблоко и змеиная голова.

Если яблоко будет съедено, то есть столкнется с головой, мы создадим новый сегмент на месте столкновения. И запустим метод locateApple, он удалит яблоко из холста и создаст новое в рандомной точке.

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

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

Вывод

В итоге мы научились создавать простенькие игры без графики, сделали шаблон для создания программы на pygames и начали делать серьезную программу типа змейки. Все эти навыки помогут в дальнейшем создании игр и прояснят фундаментальные аспекты кодинга на Python. При любых неполадках или отказе компилятора в запуске кода необходимо проверить все строки кода на ошибки и попробовать заново написать программу в другом окне. Нужно быть максимально внимательным, и тогда все получится.

Игра на Python за 19 строк Python, Игры, Обучение, Программирование

Хеллоу ворлд! Если вам надоели задачки из видео курсов или книг можете сделать эту игру.

Сейчас мы сделаем камень, ножницы, бумага.

Для начала импортируем рандом:

Теперь сделаем бесконечный цикл чтобы не перезапускать игру несколько раз:

Пропишем правила для игроков:

print('Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти напишите: выход.')

Теперь сделаем выбор для игрока:

player = input('Вы выбрали:')

И вот мы подошли к тому как все-таки реализовать проверку того что написал игрок, а также выход из игры:

if player not in ['к', 'н', 'б', 'выход']:

print('Не правильный ввод!')

if player == 'выход':

Теперь пропишем выбор для бота и тут нам поможет рандом:

comp_choice = gen[random.randint(1, 3)]

Что ж мы сделали почти все шаги в игре, но осталось сделать победные комбинации:

Последний и самый простой шаг обозначаем победу или ничью:

if player == comp_choice:

elif (player,comp_choice) in win_combination:

print('Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти напишите: выход.')

player = input('Вы выбрали:')

if player not in ['к', 'н', 'б', 'выход']:

print('Не правильный ввод!')

if player == 'выход':

comp_choice = gen[random.randint(1, 3)]

if player == comp_choice:

elif (player,comp_choice) in win_combination:

Вот и все вы сделали игру и можете похвастаться перед друзьями.

Телеграм-канал @featuresfordev. Там мы делимся своими мыслями в таком формате.


Программирование на python

233 поста 7.8K подписчиков

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!

Приветствуется:

• уважение к читателям и авторам

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт

Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

Чел, ты рекламируешь свой канал, и даже не вставил свой код нормально. Я редко постам ставлю минусы, но это какое-то жуткое неуважение к читателям.

Вот полный код:
ссылка на гит.
Вы разработчик или где?

код питона без отступов выглядит идеально!

П.С. ты это сделал что бы над ньюбами поиздеваться, да?

Спасибо огромное! Я как раз хотел узнать побольше команд!

Как вариант (исключения не перехватываются, форматирование строк не применяется, Python 3) :
import random

player_win = 0
bot_win = 0

print('Это игра "Камень-ножницы-бумага."\n1 - камень, 2 - ножницы, 3 - бумага,\n4 -выход из игры.')
steps=
combs=
while True:
player=int(input('Ваш ход: '))
if player == 4: break
bot=random.randint(1,3)
comb=(str(player)+str(bot))
print(steps[player],':',steps[bot])
if comb in combs['win']: print('Победа ваша!')
player_win+=1
elif comb in combs['draw']:
print('Ничья!')
else:
print('Победил бот.')
bot_win+=1
print('Статистика игры:',player_win,':',bot_win)

Смысл этого поста? Он обучает разве что копипастить код.

> gen = > comp_choice = gen[random.randint(1, 3)]

Хотя бы так тогда:

while True:
print('Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага.Чтобы выйти напишите: выход.')
player = input('Вы выбрали:')
if player not in patterns.values():
print('Не правильный ввод!')
elif player == 'выход':
break
comp_choice = patterns.get(random.randint(1, 3))
print(f'Бот выбрал: ')

if player == comp_choice:
print('Ничья')
elif (player, comp_choice) in win_combination:
player_win += 1
print('Игрок победил')
else:
bot_win += 1
print('Победа бота')
print(f'Статистика игры:\n игрок - \n бот - ')

Отступы нужны в коде, без них не полетишь..

Мне очень жаль, но на Pikabu не возможно сделать отступы( или я чего-то не знаю если это так, то помогите, пожалуйста) . Я не согласен с утверждением что это реклама, я разместил ссылку в самом низу и это значит что ее могут увидеть лишь заинтересованные .


Пост-бомба, с которого всё началось: Как меня чуть не взяли в рабство при поиске работы.
=-=-=-
Через некоторое время некий Владимир из компании РУНИКС (под ником @Roonyx) опубликовал ответ в формате видео.

Кстати, Владимир, ФИО полностью озвучьте, please, чтобы можно было вписать Вас в историю поисковых систем наравне с основательницей ООО "РУНИКС" (Тераудс Инга Андровна).

Также, думаю, стоит вписать в историю учредителей ООО "Циферблат" (помимо Инги Андровны): Чуранов Михаил Владимирович, Камалетдинова Наталья Олеговна.

Честно, говоря, надеялся, что представитель ООО "РУНИКС" заявит, что, мол, мы никогда не желали судиться с соискателями, а все эти пункты в договоре - это просто фикция, но, увы и ах. Владимир начал двигать тему про траты компании, про время наставников, про компетенции. Так себе оправдание, учитывая получившийся резонанс.

Кстати, по данным на 1-е января 2021 года в РУНИКС числится всего один сотрудник. И тут сразу вопрос - если договор пользователю @ILONMASK предлагали заключать с ООО "РУНИКС", то он был бы вторым сотрудником? Весьма странная ситуация, когда ЮЛ существует с 2020 года, на HH-ru в описании - с 2005 года, но официальных сотрудников - 1 единица, а остальные (от 2 до 25) - это либо самозанятые, либо ИП? Странная ситуация, не находите?

Есть упоминание о ключевом продукте - DealerPoint, но вот что-то такое получается, если погуглить .


Микроконтроллер ESP32 MicroPython. Пример первой программы

Рассмотрим распиновку микроконтроллера ESP32 DEVKIT V1.

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

Более подробную информацию о назначении GPIO ESP32 DEVKIT V1 читайте тут.

Рассмотрим, как можно с помощью консоли REPL проводить отладку кода без загрузки в микроконтроллер.

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

Определимся с очерёдностью выполнения файлов интерпретатором MicroPython.

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

Боле подробное описание и исходные материалы к уроку можно посмотреть тут.

Надеюсь моя информация будет полезной.

Спасибо! Всем добра!

Каждый питонист в душе 2Д тян

Каждый питонист в душе 2Д тян Юмор, Мемы, Аниме, Программирование, Python


Небольшой туториал(а может и нет)о том как можно пробиться в IT нишу(опыт junior Django backend разработчика)

Я джун, хочу рассказать что делал, учил, как двигался дабы устроиться на работу.

Может быть мой опыт будет вам полезен, если вы пытаетесь найти работу или только учитесь / начинаете учиться.

Если есть дополнения: книги, youtube, курсы и т.д. ставьте вызов меня и дополнение, и если я разберусь как тут дополнять, то буду по чуть-чуть расширять пост вашими комментариями с пометкой *комментарий пользователя и ваш ник

Это не таблетка которая работает 100%, а исключительно мой опыт. На всё ушло полтора года(1 год учёбы + пол года поиск работы).

Пишу пост, так как часто отвечаю на вопросы в тг и в последнее время участилось здесь. Отвечаю потому что в свое время мне никто не помогал и этого очень не хватало на пути становления.
Не любитель писать(поймете по моей орфографии) поэтому скажем так это первый мой и последний пост скорее всего здесь.
Не знаю можно оставлять ссылки или это будет считаться рекламой, так что где-то они будут, где-то нет. Но на всякий случай пост НЕ в рекламных целях.

Немного о себе:
Для того чтобы представить полноценную картину. Мне 27 лет, работал в Альфа-банке и ушел из-за того, что не могу навязывать людям продукты. Прогорел бизнес в 24 года(ателье). Устроился работать в макдоналдс в ночную смену(так называемый "ночник"- что-то типа уборщицы и посудомойки), проработал год и понял что хватит плыть по течении и надо брать жизнь в руки.
Высшего образования не имею(Ушел с 5 курса 'Эконом безопасности'), в дальнейшем не восстанавливался, так как хотел доказать себе, что обладание дипломом, а не знаниями это уже прошлый век, но это отступление.

Собственно информация ради которой был создан пост:

Как искал работу:

На поиск работы ушло около полугода. Запаситесь терпением и будьте настойчивы, рынок около-джунами переполнен, а в мидлах-сеньорах в дефиците, вот такая вот штука.
Отшивать будут часто, много. Искал работу по РФ с возможностью переезда куда угодно, хоть за границу, хоть куда.
Типичные вопросы:
- Рассказать несколько алгоритмов
- Решить логическую задачку (у меня была часто задачка 'Задача с девятью шарами' в гугле можно найти спокойно)
- Рассказать про структуры данных
- Ревью моего кода (или их кода) с человеком( почему так, почему сяк) проговаривая в слух мою логику
- Тестовая задачка ( задачи достаточно легкие, смог решить задачу на Golang не зная этого языка)
Типичные отказы:
- Мало / Нет опыта разработки в команде
- Рассматриваем кандидатов только из своего города
- Мы уже наняли
- Без диплома не рассматриваем
- Бесплатная стажировка(тут уже отказывался я)

На данный момент уже требуется еще front часть от меня (css, js, ajax), так как планируется перевести на зп по выше в фулл-стак разраба, но на начальном этапе требовался исключительно back(sql, django,drf, unix(просто умение поставить сервер),docker) всё на базовом уровне

Составить резюме, набраться определенного багажа знаний, иметь гитхаб и gist гитхаб ну и просто пробивать себе путь, так как дорогу осилит идущий:)

Спасибо за внимание!


Почему бы не написать свой блог на Django

Почему бы не написать свой блог на Django Программирование, IT, Python, Веб-разработка

Код открыт. В Readme подробно расписал, как запустить на локальном хосте. С удовольствием отвечу на вопросы если кого-то заинтересует проект.

Немного расскажу о процессе написания. Оказалось, что написать блог, которым будет удобно пользоваться администратору и читателю не совсем тривиальная задача. Не то чтобы сложно, но и не так просто как в любом туториале по созданию блога, которым не планируется пользоваться. Например, при внедрении WYSIWYG редактора оказалось, что нет удобных решения по вставке картинок в текст. Вернее картинку вставить не проблема, а вот с удалением возникают трудности. Убрав картинку с текста, она никуда не девается с сервера. Искать её файловым менеджером то ещё удовольствие, а если их на сервере будут храниться десятки или сотни? Пришлось придумывать своё решение. В моём варианте всё делается через стандартный административный интерфейс без сторонних файловых менеджеров. И таких мелочей попадалось по пути достаточно много, короче было интересно. Особенности приложения расписал в readme, здесь повторятся не буду.

Ну и пользуясь случаем апну парочку своих старых постов:


Урок 1. MicroPython ESP32. Установка и настройка IDE

В этом уроке поговорим о том, с чего начать работу с MicroPython. Установим необходимое программное обеспечение.

Если вы считаете этот учебный курс полезным, пожалуйста, поделитесь им! Чтобы он мог охватить больше людей, которым это может быть интересно.

1. Установка Thonny Python IDE.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

2. USB-драйвер для ESP8266 и ESP32.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

3. Загрузите прошивку MicroPython.

Сейчас прошивку для ESP8266 или ESP32 можно с официального сайта.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

Установка прошивки для ESP32 с помощью Thonny Python.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

Подробное описание читайте тут.

Надеюсь моя информация будет полезной.

Спасибо! Всем добра!


It обучение (с 0 до готового проекта)

Также хотелось бы услышать бывалых, как искать работу в моей ситуации или ещё рано и надо подучиться. На данный момент знаю, как мне кажется, достаточно хорошо: питон, sql, джанго, git, а также различные мелкие библиотеки.


Уроки по программированию на Python c Minecraft для детей: создаем свои игры! В этом курсе займемся запуском своих проектов внутри вселенной Minecraft.

Игровая вселенная Minecraft — это невероятно удобная и интересная среда, чтобы начать изучать Python ребенку. Мы проведем детей по увлекательному путешествию и покажем, как захватывающе писать текстовый код и тут же видеть его в действии.

Этот видеокурс предназначен для тех, кто уже приобрел начальные навыки программирования на Python и хочет создавать более сложные игры в Minecraft. Мы будем решать комплексные задачи, развивать логическое мышление и запускать самые красочные программы.

Урок 1. Создаем игру "Лабиринт" | Обучение Minecraft

Урок 2. Создаем игру "Загадочный дом. Побег от огненного монстра" | Обучение Minecraft

Урок 3. Аквадискотека в Minecraft | Обучение Minecraft

В этом видео мы построим аквадискотеку в Minecraft c помощью языка программирования Python. Мы создадим пять высоких фонтанов, а для разноцветного пола используем алмазный, железный и золотой блоки.

Урок 4. Как создать сервер для Minecraft? - Загрузка карты на сервер| Обучение Minecraft

В этом видео расскажем, как создать свой сервер в Minecraft, чтобы исследовать игровую вселенную вместе с друзьями. Для этого нужно воспользоваться платным хостингом и правильно настроить сервер.

Урок 5. Игра "Железное облако" | Обучение Minecraft

Урок 6. Как построить небоскреб в Майнкрафт на Python| Обучение Minecraft

Каждый уважающий себя игрок в Minecraft должен уметь строить красивый дом. Хоть дома из блоков грязи и по сей день остаются актуальными, но сегодня мы с вами будем учиться строить небоскрёб из блоков стекла и железа.

Урок 7. Как сделать ПОП ИТ в Minecraft на Python| Обучение Minecraft

Самым популярным предметом на сегодня является игрушка-антистресс под названием Pop it (поп ит или попыт). Мы подумали: почему бы не сделать поп ит в Minecraft при помощи Python? Посмотрите, как мы создали эту игрушку при помощи текстового кода!

Урок 8. Как сделать секретную дверь в Minecraft на Python

В этом видео мы сделаем тайный замок на дверь в Майнкрафте. Он будет открываться после того, как наш персонаж коснется граней алмазного блока в определенной последовательности. Чтобы наша мини-игра заработала, напишем код на Python и запустим его.

Урок 9. Как сделать ловушки в Minecraft на Python

В этом видео мы сделаем зону ловушек в Майнкрафте: расставим капканы, в которые будут попадать игроки. В виде приманки будут использованы алмазный, железный и золотой блоки.

Плейлист видеоуроков постоянно дополняется, подписывайтесь на канал и следите за обновлениями. Наши видеоуроки по созданию игр на Python выходят на русском языке и полностью бесплатны.

Нужен наставник? Записывайтесь на онлайн-уроки программирования для детей в школе "Пиксель": онлайн-курс по программированию на Python в Minecraft.

Читайте также: