python scratch file что это
Scratch files
Scratch buffers are simple text files without any coding assistance features. Scratch buffers can be used for simple task lists and notes to yourself. They are also not stored in the project directory but can be accessed and opened from another project. You can create up to five scratch buffers with default names, which are rotated and reused by clearing the content.
Create scratch files
PyCharm numbers scratch files sequentially starting from 1. If you close a tab with an empty scratch file, PyCharm deletes it.
If a scratch file grows into something that you want to use in your project, you can easily move it into the desired place of your project structure.
Include a scratch file into your project
Drag a scratch file from the Scratches and Consoles | Scratches directory in the Project view to the target directory in your project.
Create scratch buffers
There is no dedicated menu item for the action to create a new scratch buffer, but you can use the Find Action popup Ctrl+Shift+A and run the New Scratch Buffer action.
You can also add a shortcut for the New Scratch Buffer action as described in Configure keyboard shortcuts.
View all scratch files and buffers
Consoles are used to compose and execute SQL statements for databases defined in PyCharm as data sources. This functionality is available only when the Database Tools and SQL plugin is enabled. For more information, see Query consoles.
Use the Find Action popup Ctrl+Shift+A to invoke the Show Scratch Files action and view all available scratch files in a popup:
✅Разница между Scratch и Python. С чего начать детям?
Курсы программирования для детей приобретают популярность в среде родителей, заинтересованных в развитии своего ребенка. Практика обучения показала, что лучше всего дети воспринимают языки Scratch и Python. Давайте посмотрим, чем они отличаются, выявим достоинства, а потом решить, с чего стоит начать обучение на курсах веб-программирования в Киеве конкретно вашему ребенку.
Scratch для детей
Если формулировать правильно, то Scratch для детей – это не язык, а целая среда (сфера, виртуальный мир), созданная специально для обучения программированию младших школьников. Свое название Скретч получил от scratching – действий диджеев, крутящих пластинки взад-вперед для получения нужного аудиального эффекта.
Идея рождения Scratch для детей родилась, как продолжение виртуализации легендарного конструктора Лего. Разработали эту тему программисты Массачусетского технологического университета.
Основа обучения Scratch в Киеве – работа с графическими блоками. Создано 8 блоков. Каждый имеет свое английское название, характерный цвет и отвечает за конкретное действие. В ходе работы с этим языком дети оперируют числами, списками (динамическими массивами), логическими значениями, текстом, миксуя блоки и создавая их рабочие комбинации на свое усмотрение. Одновременно с этим вводится понятие на право собственности – что можно, и чего нельзя сделать с производными, полученными при помощи языка Scratch.
Python для детей
Кроме того, Python имеет собственную философию – так называемый Дзен Пайтон. Автор – Тим Петерс, который считает, что красивое должно доминировать над уродливым. Простое – над сложным. Практичное – над безупречным. Ошибки должны быть исправленными. А из всех возможных способов решения задачи следует выбирать самый логичный, однозначный и очевидный. Считается, что обучение Python в Киеве – перспективно, потому что язык активно развивается и даст большие возможности «кодирования пространства» тому, кто им овладел.
С чего начать детям? Scratch и Python?
Scratch для «продвинутых»
Клонирование и переменные в Scratch
Моему ученику нравилась игра — «Зомби против растений». И ему было интересно самому запрограммировать её. Давайте вспомним как данная игра работает? С правой стороны у нас есть шеренга растений, которая расстреливает приближающихся зомби.
Есть множество решений данной задачи, но на мой взгляд более элегантное решение — задействовать минимально возможное количество спрайтов, т.е. использовать клонирование.
Как сделать так, чтобы у каждого отдельного клона был собственный уровень жизни? Что выбрать переменные или списки? Сделали попытку использовать списки, но после более детальной проработки поняли, что данная структура данных не помогает решить проблему. У переменных и списков, в Scratch есть 2 типа видимости для каждого типа данных — это «для всех спрайтов» или «только для этого спрайта». Пришлось проверять область видимости. Начали мы с переменных.
Дойдя до рабочего варианта переменной с областью видимостью «только для этого спрайта». В классических языках программирования такой тип видимости называют — локальным или приватным в зависимости от контекста.
Оказывается, что если эта переменная с данной областью видимости используется в клоне, то в клоне создается экземпляр переменной, принадлежащий конкретному клону и который используется для внутренних вычислений/работы клона. В нашем случае, у каждого клона есть своя «жизнь». Если стало интересно, то советую обратиться к справочнику. А вот картинка, которая показывает, как спрайты или клоны работают с переменными разных типов видимости.
Переменная с областью видимости «для всех спрайтов» (рисунок слева) — одна на всех. Кстати, здесь вы можете с детьми посмотреть работу с критическими секциями и что такое гонка за ресурс. А если область видимости переменной — «только для этого спрайта», то у спрайта и у его клонов появляется собственная переменная с тем же именем, с которой они работают (рисунок с права). И клоны не имеют доступа к переменной оригинала и переменной другого клона.
Это стало неожиданным и приятным открытием свойств Scratch для создания подобных алгоритмов.
ВАЖНО: Переменная — это очень мощный инструмент настоящего программиста, поэтому я сразу учу детей правильному именованию переменных, так как этот навык поможет им в проектах разной сложности.
Имена объектов как их идентификаторы
ВАЖНО: все переменные с зоной видимостью «только для этого спрайта».
Данный инструмент для меня стал совсем неожиданным. Давайте начнем с истории о том, как мы с учеником наткнулись на данную особенность языка. Мой ученик решил, создать игру с «искусственным интеллектом». Игра представляет звездные войны на космических кораблях и у игрока есть возможность управлять одним кораблем, в то время как противники гоняются за вами и за друг другом. Чтобы они могли преследовать вас или друг друга, им нужно как-то принимать решение о том, кого преследовать. Данную задачу можно решить в лоб и задать очередность преследования кораблей, но игра потеряет свою интеллектуальность и быстро наскучит. Поэтому ученик решил настроить интеллект таким образом, чтобы корабли с интеллектом преследовали ближайшего противника. Давайте посмотрим, как он начал решать данную задачу.
На мой взгляд хорошее решение для создания быстрого прототипа. Но какие ограничения здесь есть? Первое, усложнение кода по мере добавления новых кораблей. Следовательно, сложность кода повышается и не исключены мутации кода из-за усложнения. Время поиска ошибки и отладки алгоритма будет расти. И конечно, никто не отменял такую прикольную метрику, как старение кода (advance level SW Development). Что же делать? А делать необходимо следующее, нужно сделать обобщеный алгоритм, который будет динамично приспосабливаться к увеличению или уменьшению количества кораблей.
Для данного алгоритма нам и понадобиться свойство языка — имя как идентификатор объекта. Пришло время больших изменений и здесь вы, как учитель, можете рассказать про такое явление как рефакторинг. Это последовательное изменение кода, улучшение его структуры и его оптимизация. А главное, чтобы каждое изменение не ломало работу программы, и объем изменений тоже должен очень аккуратно подобран. Слишком много изменений — плохо, слишком мало — долго. Сформированный навык рефакторинга даст преимущество и эффективность работы программиста. Но для формирования навыка нужно работать головой, а не просто тыкаться. У меня получилось сделать 4 изменения в первоначальной программе и результат не изменился.
Заметьте, что я еще не удалил блоки, а оставил их. Зачем? Потому, что если что-то пойдет не так, мы можем вернуть предыдущий вариант, начав все заново. Но как только я проверю правильность выполнения обновленного скрипта, я сразу же их удалю, чтобы не отвлекаться на них в последующем.
Заметили? Сейчас в блоке «повернуться к …» стоит переменная и эта штука работает. Т.е. мы минимальными усилиями проверили, что данный подход работает. Это просто круто. Теперь мы можем начать писать алгоритмы, которые позволят определять объект преследования ближайшего корабля.
Что нам пригодится? Это из структур данных — это переменные и списки. Из алгоритмов — это нахождение минимального числа (расстояния) в списке. Еще нам необходим алгоритм, который определит имя объекта для преследования по минимальному расстоянию.
Сейчас будет написано много кода. Но для того, чтобы потом не захлебнуться и не запутаться в куче скриптов, нам необходимо использовать еще одну классную функцию, а именно создание собственных блоков. Эта функция очень мощная, но ее редко используют школьники, да и некоторые программисты, а ведь она позволяет создать понятный с первого прочтения алгоритм программы. Кстати, можете почитать про приемы создания понятного кода в книге Мартина Фаулера «Рефакторинг. Улучшение существующего кода»
Как и перед любым масштабным строительством нам необходимо все спланировать. Давайте спланируем в каком порядке будем разрабатывать блоки:
Для того, чтобы создать обобщенный алгоритм нам чем-то нужно пожертвовать, например, оригинальными именами спрайтов, придется их стандартизировать и получим следующий расклад.
И теперь мы готовы описать 1 часть программы. Все пишем для 1-ого корабля. Запускаем отдельно данный скрипт и смотрим результат. Поехали!
Если мы добавим новый корабль, нам нужно изменить в данном алгоритме лишь одну циферку. Клево? Клево!
Погнали дальше. А давайте научим его 2 алгоритму. Смотрим, что получилось. Это сразу конечный результат со вспомогательными функциями.
Ура! Работает. Проверить это можно следующим образом, должен быть обязательно 0 одним из значений в списке расстояний. Если у вас это не так, ищите ошибку.
Едем дальше! Поиск минимального расстояния. Заметили, что расстояние всегда положительно. И всегда будет минимальное число — 0. Ай-я-яй! Вывод — искать минимум, но не ноль. Можете попробовать свои силы и оптимизировать код самостоятельно, чтобы не делать расчет расстояния от корабля 1 до корабля 1 (это не опечатка).
Обучаем спрайт новой функции и получаем.
Не забываем проверять! Для этого можно даже остановить игру и запустить отдельный скрипт.
Мы написали все, что необходимо, теперь главное правильно использовать данные функции.
Если у вас все работает правильно, то вы должны увидеть следующее:
Заметили, что корабль с «искусственным интеллектом» разрывается между разными противниками. Вы можете усовершенствовать программу и усложнить принятие решения. Например, если у преследуемого корабля осталось мало жизни, то он добивает его, а если он нашел, ближе и с еще меньшим здоровьем, то добить сначала слабейшего.
Кстати, в данной программе можно уменьшить количество действий и усовершенствовать алгоритмы. Попробуйте свои силы. Взять данную программу можно здесь.
Подводим итоги
Вот на таких кейсах я узнал, как Scratch дает возможность ученикам быстрее освоить множество реальных техник программирования. На нем можно рассказывать про работу критических секций, про обобщенные алгоритмы, про переменные и их области видимости, про создание собственных блоков и структурирование кода. А также на данном языке можно рассказывать про профессиональные навыки, например, рефакторинг.
Это лишь малая часть инструментария программиста, но она являет очень важной. А в Scratch это объяснить становится чуточку легче.
Python
Python is a programming language that is generally considered to be easy to learn. It was first released in 1991 by Guido van Rossum, named after the Monty Python comedy group. [1] The language is commonly learnt after Scratch. [ citation needed ]
This page describes using Python with Scratch and various Scratch-related Python programs.
Contents
Extensions
There are libraries that can help ease writing code that connects Python to Scratch.
| The extension mechanisms for Scratch 1.4 and Scratch 2.0 are quite different, and are not compatible. |
Scratch 3.0
Scratch 2.0
Scratch 1.4
See the guide for setting up Remote Sensor Connections in Scratch 1.4.
Projects that interact with Scratch using Python and remote sensor connections:
Software
Scratch-related software written in Python:
Scratch-related libraries that can be used in Python code:
Trivia
See also: Scratch 2.0
Scratch 2.0 used Python as its back-end, or server-side code. This means that pages on the site (such as a studio or profile page) is produced by Python code. Between Python and the front-end is Django, a Python library for creating large database-driven websites.
Русские Блоги
Создайте сетевую игру с помощью Scratch + Python
Scratch2 имеет расширенную функцию, которая позволяет подключать Scratch и сторонние приложения через http для реализации таких приложений, как доступ к данным веб-сайта и управление оборудованием. Сегодня мы будем использовать это расширение для подключения к сетевому сервису, реализованному на Python, для создания онлайн-игры. Я надеюсь, что каждый сможет получить некоторые базовые знания по сетевому программированию в ходе сегодняшнего исследования и знать аспекты, которые необходимо учитывать для создания более сложной системы.
Давайте сначала используем Scratch в качестве монопольной игры: более двух игровых персонажей (в данном примере, кошка и собака) управляются двумя компьютерами. Персонажи по очереди бросают кости, а количество шагов определяется случайным образом по количеству игральных костей. При ходьбе можно встретить разные магические команды, которые могут изменить путь, добавить очки и так далее. Тот, кто достигает конца, первым побеждает. Экран игры выглядит следующим образом:
Создайте сетевую игру с помощью Scratch + Python
Структурная схема системы
Схема архитектуры системы с двумя игроками выглядит следующим образом:
Создайте сетевую игру с помощью Scratch + Python
Диаграмма архитектуры системы, о которой мы здесь говорим, является структурной схемой компьютерной системы. Описанные объекты включают в себя различные аппаратные и программные компоненты, которые непосредственно составляют систему, а также способы соединения и связи между различными компонентами.
Схема архитектуры системы является основой для построения компьютерных систем и так же важна, как и проектные чертежи, которые архитекторы должны выполнить перед началом строительства. Современная крупномасштабная компьютерная система похожа на сложное и огромное здание, требующее множества компьютерных сетей, взаимодействия аппаратного и программного обеспечения и большого количества знаний. Если вы не думаете об архитектуре системы и деталях дизайна до формального построения, это часто приводит к умножению, даже если позже вы обнаружите неразрешимые проблемы в проекте и придется изобретать велосипед.
Если вы участвуете в нескольких компонентах (или объектах) в процессе программирования, особенно если вы участвуете в сетевом программировании, обязательно проясните взаимосвязь между компонентами, нарисовав диаграмму архитектуры системы, прежде чем начинать писать программу.
Диаграммы компьютерного проектирования, такие как архитектурные чертежи, используются для того, чтобы помочь нам понять и поддерживать компьютерные системы и облегчить связь с другими отделами. Для формата диаграмм различные устройства могут предъявлять разные требования. В целом, если это удобно для соответствующего персонала Просто пойми. Более известный формат называется Unified Modeling Language (UML), и вы можете узнать о нем больше.
Приведенная выше схема архитектуры показывает, что в случае двух игроков будет:
Один сервер
Два персональных компьютера
Фактически, два ПК могут быть напрямую соединены для участия в сетевых сражениях. Почему сервер такой сложный? Причина в том, что если у одного из игроков нет компьютера и сервера, другому игроку не так просто найти нового игрока. Даже если новый проигрыватель найден, сетевые параметры должны быть сброшены между двумя компьютерами для достижения сетевого взаимодействия. Это очень трудно для людей, которые не имеют большого компьютерного знания и хотят просто играть в игру. Сервер обычно обеспечивает 7 * 24 часа для обеспечения стабильного обслуживания. После установки адреса сервера во время разработки игры любой игрок может открыть игру и подключиться к тому же серверу, а затем использовать сервер, чтобы найти других онлайн-игроков для игры.
5 программных компонентов:
Сервер Python на сервере (для обеспечения совместной работы и обмена данными в сетевых играх)
Клиент Python на каждом компьютере (отвечает за подключение к серверу, который является мостом между сервером и скретч-игрой)
Скретч-терминал на каждом компьютере (отвечает за отображение игрового экрана)
Приведенная выше схема архитектуры также иллюстрирует протокол соединения между различными компонентами. Протокол здесь можно понимать как язык для общения между компонентами. Скретч-игры не могут напрямую взаимодействовать с клиентами, написанными на Python, клиенты и серверы, написанные на Python, распределяются по обоим концам сети, и связь между ними не так проста, как общение на одном компьютере (например, прямой доступ). Документы), это требует выбора протоколов связи в соответствии с потребностями.
Расширение Scratch предусматривает использование только протокола http, поэтому сторонние приложения должны использовать протокол http для связи с игрой Scratch. Легко написать приложение, которое поддерживает протокол HTTP на Python.
Существует множество протоколов подключения, которые могут быть выбраны клиентом и сервером Python. Мы не выбрали наиболее удобный протокол http, потому что протокол http может запрашивать только один путь, то есть сервер может отправлять информацию клиенту только после того, как клиент инициирует запрос к серверу. Наши онлайн-игры требуют частой двусторонней связи, и этот протокол не очень подходит.
Мы выбрали websocket в качестве протокола связи между клиентом и сервером Python. Метод подключения Websocket такой же, как и для http, только сервер должен определить интерфейс подключения, и на клиенте не требуется никаких дополнительных настроек сети. После подключения клиент и сервер могут отправлять сообщения друг другу в любое время.
Http (Hypertext Transfer Protocol) должен быть наиболее широко используемой интернет-технологией для всех. Когда вы откроете любую веб-страницу с помощью браузера, вы увидите четыре буквы http в адресной строке.
Создайте сетевую игру с помощью Scratch + Python
Каждая служба http должна быть связана с адресом для получения запроса, например, адрес веб-сайта Baidu: http://www.baidu.com.Другими словами, адрес сервера сайта Baidu www.baidu.com, Этот адрес называется доменным именем. Его можно понимать как имя человека, зарегистрированного в сети. Обратите внимание, что это имя немного отличается от нашего, потому что оно уникально в Интернете.
Существует также адрес, который называется IP-адресом, например 183.232.231.173. IP-адрес похож на идентификационный номер человека. Это уникальный идентификационный код для каждого устройства в Интернете. Каждое доменное имя должно быть сопоставлено с IP-адресом, прежде чем его можно будет использовать. В Интернете сначала есть IP-адрес, а затем имя домена. Поскольку IP-адреса так сложно запомнить, люди придумали доменные имена, чтобы людям было легче запоминать разные сайты.
Чтобы узнать IP-адрес веб-сайта очень просто, введите «CMD» в строке меню Windows, чтобы открыть командную строку, затем введите ping и пробел плюс доменное имя веб-сайта. Например, следующая команда находит IP-адрес веб-сайта Baidu 183.232.231.173:
Создайте сетевую игру с помощью Scratch + Python
Сервер с IP-адресом может предоставлять множество услуг, таких как служба веб-сайта, служба передачи файлов FTP, служба почты SMTP и т. Д., Эти услуги могут быть реализованы с помощью одного IP-адреса. Итак, как сервер различает различные сетевые сервисы? Очевидно, что вы не можете полагаться только на IP-адреса, потому что отношения между IP-адресами и сетевыми службами один-ко-многим. На самом деле разные сервисы различаются по «IP-адрес + номер порта». Для запуска нескольких программ на одном устройстве концепция порта разработана искусственно, аналогичным примером является добавочный номер внутри компании.
Сетевое устройство может иметь 65536 портов, большинство из которых заняты операционной системой в диапазоне от 0 до 1024, поэтому фактический номер порта после 1024 обычно используется в программировании.
Чтобы получить доступ к различным портам одного и того же веб-сайта, вы можете просто добавить двоеточие (:) и номер порта после адреса, например, получить доступ к порту 80 Baidu:http://www.baidu.com:80
Scratch расширенный протокол связи
Расширенный коммуникационный протокол Scratch имеет особые спецификации.
Во-первых, вам нужно создать файл описания «.s2e» для определения блоков расширения. Файл в формате JSON. Затем импортируйте файл в Scratch, чтобы сгенерировать блоки расширения. Метод импорта заключается в том, чтобы удерживать клавишу «Shift» на клавиатуре с нуля, а затем нажать «Файл», затем выбрать «Импортировать расширение HTTP-эксперимента», а затем выбрать файл «.s2e». После успешного импорта вы можете увидеть настроенные блоки в «Больше блоков».
Создайте сетевую игру с помощью Scratch + Python
Ниже приведен пример файла «.s2e»:
Создайте сетевую игру с помощью Scratch + Python
После импорта вы увидите в категории «Больше блоков»:
Создайте сетевую игру с помощью Scratch + Python
Третья строка начинает определять различные блоки.
Пятая строка определяет параметр команды set, который будет передавать «_» в «set symbol to_». Если выполняется блок «установить символ на 3», запрос http будет отправлен на адрес http: // localhost: 12345 / setChar / 3.
Царапина отправляет около 30 запросов «/ poll» на http-сервер каждую секунду и получает последние значения параметров из ответного сообщения на запрос «/ poll». Http-сервер должен уведомить Scratch о любой информации, или результаты должны быть переданы через ответное сообщение «/ poll». Каждая пара возвращаемых параметров и возвращаемого значения занимает одну строку, а две пары разделены символом «/ n». Между возвращаемым параметром и возвращаемым значением должен быть пробел. Следующее ответное сообщение:
Он возвращает два параметра: значение getCharacter равно abc, а значение age равно 12. Значение getCharacter может быть определено шестой строкой выше
Создайте сетевую игру с помощью Scratch + Python
«Строительные блоки приобрели.
Нажатие на конец красного шара в Scratch вызовет запрос «/ reset_all» на http-сервер. Некоторые вещи, которые необходимо выполнить при перезагрузке или остановке игры, можно поместить в модуль обработки этого запроса. Но в моем эксперименте иногда зеленый флаг вызывает запрос «/ reset_all», но не каждый раз. Поэтому, если вам нужно выполнить некоторые действия по сбросу, когда игра еще не закончена (не нажимайте на красный шар), лучше всего определить блок «сброса» для вашей собственной безопасности.
Ключевым моментом или ограничением расширения Scratch является то, что Scratch может получать информацию только с http-сервера с помощью запросов на опрос, но не с помощью других запросов или инструкций. Другими словами, если http-сервер хочет отправить сообщение с нуля, он может только поместить содержимое сообщения в ответ на запрос опроса.
Scratch расширенные знания протокола связи, которые мы должны использовать для онлайн-игр, выше. Далее мы представляем некоторые ключевые части онлайн-игр. Порядок связи между разными модулями. Мы используем диаграмму под названием «диаграмма последовательности», чтобы описать это отношение.
Давайте посмотрим на диаграмму последовательности для просмотра доступных функций роли:
Создайте сетевую игру с помощью Scratch + Python
Информация «доступных персонажей» хранится на стороне сервера, поэтому каждый игровой интерфейс (на стороне нуля) должен получить эту информацию, подключив клиент Python, а затем подключившись к стороне сервера. В верхней части диаграммы последовательности указаны названия трех компонентов. Каждый компонент имеет вертикальную линию жизни. Направленные связи между линиями жизни указывают на сотрудничество различных компонентов. Сплошная линия указывает, что компонент инициирует запрос к другому компоненту, а направление стрелки указывает направление запроса, пунктирная линия указывает на возвращение результата запроса. Временная последовательность сверху вниз. Вышеуказанное изображение означает, что следующие шаги выполняются в хронологическом порядке:
Программа Scratch Game инициирует запрос checkAvailChar (проверка доступных символов) к клиенту Python (через протокол http на том же компьютере).
Программа Scratch Game выполняет инструкцию, которая ждет 1 секунду. Здесь мы ожидаем получить возвращаемое значение доступных символов из сети в течение 1 секунды.
Клиент Python (через протокол веб-сокета в сети) инициирует запрос checkAvailChar (проверка доступной роли) на сервер. Этот шаг выполняется синхронно с шагом 2, у нас нет возможности контролировать порядок 2 и 3.
Сервер Python возвращает клиенту результат запроса ролей, доступных для шага 3.
Программа Scratch Game отправляет запрос на опрос клиенту Python. Как упоминалось выше, программа Scratch Game фактически отправляет около 30 запросов на опрос в секунду. Просто клиент Python возвращает правильное значение в игру «Царапина» только через опрос после того, как серверная сторона возвращает доступную информацию о персонаже, а до этого игра «Царапина» может получить только неправильное значение.
Клиент Python возвращает результат запроса ролей, доступных на шаге 5, стороне Scratch. Только после того, как клиент получит правильное доступное значение роли с сервера, он сможет вернуть правильный результат на пустое место. В противном случае возвращается значение по умолчанию.
Выше приведено простое введение в диаграмму последовательности. Диаграммы последовательности очень важны для программистов, часто трудно понять сложную систему, включающую несколько компонентов, если смотреть на программу напрямую. Когда я писал эту небольшую онлайн-игру, я чувствовал, что, если я не смотрю на диаграмму последовательности, программа, которую я написал вчера, была бы очень сложной сегодня. Это относится и к одному и тому же автору: если это программа, написанная на разных языках в разных отделах и разных областях, она больше похожа на книгу. Диаграммы последовательности предоставляют универсальный, простой и понятный язык для описания связей между различными компонентами. Это также основная роль или цель UML-предоставить унифицированный язык общения дизайна.
Другое преимущество построения диаграммы последовательности состоит в том, что она позволяет людям по-настоящему понять логические взаимосвязи базовой системы, прежде чем писать программу раньше, и может найти серьезные логические ошибки как можно скорее. Важное правило разработки компьютерных систем заключается в том, что чем раньше проблема обнаружена, тем меньше ресурсов (затрат), необходимых для модификации. Простой пример: если ошибка проектирования обнаруживается на этапе тестирования, многие отделы (проектирование, разработка, тестирование) часто пытаются ее исправить, а если она обнаруживается на этапе проектирования, в отделах разработки и тестирования нет дублирования работы.
Диаграмма последовательности может быть нарисована отдельно в соответствии с различными функциями, например, приведенная выше диаграмма включает только функцию проверки доступных символов. И для этого не нужно включать весь логический порядок системы.Некоторые очевидные шаги внутри небольшого компонента системы не нужно проводить. Конечно, это зависит от опыта и способностей команды, особенно дизайнера. Для начинающих все интерактивные части, включающие различные компоненты (такие как программы, распространяемые на разных компьютерах или программы, написанные на разных языках), должны быть нарисованы с помощью диаграмм последовательности.
Общий принцип построения диаграмм последовательности, в том числе других проектных диаграмм, состоит в том, чтобы облегчить коммуникацию и понимание системы, и не требует много времени, чтобы красиво рисовать. Это не то, что видят конечные пользователи.
Создайте сетевую игру с помощью Scratch + Python
Напишите класс SimpleHTTPRequestHandler для наследования класса Python BaseHTTPRequestHandler:
from http.server import BaseHTTPRequestHandler
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
SimpleHTTPRequestHandler переопределяет метод do_GET родительского класса BaseHTTPRequestHandler для обработки http-запросов:
Метод do_GET возвращает разные результаты в зависимости от запрошенного адреса. Например, если вы получили запрос «/ poll», он возвращает «привет»:
from http.server import HTTPServer
httpd = HTTPServer((‘localhost’, 12345), SimpleHTTPRequestHandler)
Поддержите этот сервер в рабочем состоянии:
Теперь простой http-сервер работает. Вы можете использовать свой браузер для тестирования и открыть http: // localhost: 12345 / poll, браузер отобразит «привет», чтобы указать на успех.
Создайте сетевую игру с помощью Scratch + Python
Для получения дополнительной информации о службе Python http, пожалуйста, обратитесь к:
Websocket клиент и сервер
Мы использовали реализацию веб-сокета на основе Python от Aymeric Augustin. Это делает использование websocket чрезвычайно простым. Ниже приведен простой клиент websocket, который подключается к серверу websocket, расположенному на локальном порту «localhost» 8765, и отправляет ему строку «Hello server»:
async def hello(uri):
Ниже приведен сервер websocket, который использует порт 8765 и отправляет строку «Hello client» при получении сообщения от клиента:
import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
await websocket.send(“Hello client”)
asyncio.get_event_loop().run_until_complete(
websockets.serve(echo,‘localhost’,8765))
asyncio.get_event_loop().run_forever()
Создайте сетевую игру с помощью Scratch + Python
Для подробного использования веб-сокета Aymeric Augustin, пожалуйста, обратитесь к:
Для Python Asyncio, пожалуйста, обратитесь к:
Техническая часть этой простой онлайн игры была представлена. Надеюсь, вы можете узнать эти пункты:
Прежде чем создавать сложные системы, нарисуйте схемы проектирования, такие как диаграммы архитектуры, диаграммы последовательности и т. Д.
Основная концепция и использование протокола HTTP и веб-сокета
Адрес сайта, порт и другие понятия
Как использовать расширение Scratch
Полная схема игры и исходный код могут быть получены по следующему адресу: