Создание простой игры «Камень, ножницы, бумага»

Разработчики часто хотят, чтобы пользователи вводили информацию, чтобы влиять на поведение программы.

Графический пользовательский интерфейс (GUI) — это система интерактивных визуальных объектов или виджетов, которые передают информацию пользователю и позволяют ему контролировать или влиять на какую-либо базовую программу или скрипт.

Простой пример — приложение-калькулятор, которое принимает пользовательский ввод и выполняет некоторую операцию. Вы можете просто написать свой сценарий, чтобы получать входные данные из командной строки и распечатывать результаты. Графические интерфейсы предоставляют пользователям гораздо более интуитивно понятный способ предоставления/получения информации и выбора.

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

Пример PySimpleGUI: камень, ножницы, бумага

PySimpleGUI на сегодняшний день является самой простой для реализации библиотекой графического интерфейса Python. Он использует виджеты из различных графических интерфейсов и позволяет создавать приложения, которые работают так, как если бы вы создали их в Tkinter или Qt, но с частью кода.

Давайте рассмотрим простой пример. Одной из первых вещей, которые я написал, была простая игра «Камень, ножницы, бумага», которую я сделал в первый год обучения в школе. Требовалось много строк кода только для того, чтобы вывести результаты на терминал.

Давайте посмотрим, насколько легко реализовать полную версию графического интерфейса с помощью PySimpleGUI.

Настройка окна

Мы просто настроим простое окно с вводным текстом, 3 кнопками (по одной для каждого варианта) и полем вывода, чтобы показать, кто выиграл. В PySimpleGUI это невероятно просто и может быть сделано всего за 12 строк.

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

Для этого у нас есть строки 9 и 10, запускающие бесконечный цикл while для чтения событий (нажатий кнопок) и значений (входных данных, даже если у нас их нет).

Строка 11 обрабатывает прерывание скрипта, когда мы выходим из окна.

Логика игры

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

Далее давайте обработаем логику исхода игры.

Мы напишем функцию для определения победителя на основе нашего выбора и выбора компьютера. Если True, мы выиграем. Если False, мы проигрываем. Если None, то ничья.

Сохраните следующий код в файле с именем common.py в том же месте, что и ваш основной скрипт.

Все вместе сейчас

Теперь объединяем наше окно графического интерфейса и игровую логику:

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

Теперь мы сделали очень простую, но функциональную игру «Камень, ножницы, бумага» с графическим интерфейсом, используя всего 45 строк Python.

Довольно круто!

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

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

Мои мысли о PySimpleGUI

Я использовал PySimpleGUI для личных проектов, таких как быстрый ввод формы для тестирования QA и быстрое построение / сравнение настроек передаточного числа на моем горном велосипеде. Это особенно полезно для быстрого преобразования сценариев в реальные инструменты, которыми вы можете поделиться с коллегами или клиентами.

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

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

Если вы ищете простую библиотеку графического интерфейса, чтобы начать создавать интерактивные настольные приложения, PySimpleGUI — отличный выбор благодаря быстрой реализации и абсолютной простоте!

Загрузите мой исходный код здесь.

Дополнительные материалы на plainenglish.io