Инициализатор класса игры


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

Игры на Raspberry Pi 2

В функции инициализации в игре класс мы сделаем целый ряд вещей, таких как инициализация модулей Pygame, создадим часы, чтобы управлять временем и скоростью в игре, создим окно и многие другие вещи. Step 3 For now, the final part of the class initialiser is creating the window, which we do using the syntax: self.display = display.set_mode(self. displaySize). The display size, which we’ve set to 640×480, was set earlier on in the initialisation function. We’ve chosen 640×480 as the resolution for the game as that should be pretty much suitable for everyone. We’ll have to come back to the class initialiser later on, to do things such as creating the background, the bats, ball and so on.

Шаг 1

Первое, что вам нужно сделать, это скопировать код из ‘Member variables’, потому что это начало нашего инициализатор класса. Функция инициализатора класса всегда определяется при помощи синтаксиса ‘def __init__():’ где любые передаваемые параметры, помещаются в скобках. Обратите внимание, что линии до и после состоят из двух символов подчеркивания. Следующее, что нужно сделать, это инициализацию Pygame, назвав Pygame.init (). Обратите внимание, что мы могли бы просто назвать Init (), потому что мы импортировали модуль Pygame, но это выглядит немного странно, и это более ясно к чему мы обращаемся.

Шаг 2

Теперь нам нужно создать часы, чтобы управлять временем в игре.Часы позволяют указывать на количество фрагментов в секунду.Часы создаются путем создания нового экземпляра класса Pygame.time. следующим образом: self.clock = Pygame. time.clock (). Также нужно установить заголовок окна с помощью синтаксиса: display.set_caption(“Pi Pong”).

Шаг 3

Заключительная часть класса инициализатор создает окно, в котором мы, используем синтаксис: self.display = display.set_mode (self. displaySize). Размер дисплея, который мы установили в 640 × 480, был установлен ранее в функции инициализации. Мы выбрали 640 × 480, как разрешение к игре. Мы вернемся позже в класс инициализатора, чтобы сделать вещи фона, ракетки, мяч и другое.

Цикл игры

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

Прежде чем мы возмемся цикл игры, имеет смысл вернуться к инициализатор функции класса PiPong для создания фона. После строчки создания экрана, создаем экземпляр класса фона, проходящей через размер дисплей, введя ‘self.background = Background(self. displaySize). Теперь мы можем перейти к игровому циклу, чтобы нам было что показать на экране.

После строчки создания фона делаем новую функцию запуска. Оставьте пустую строку и убедитесь что уровень отступа переместился. Определяем функцию с синтаксисом ‘def run(self):’. Затем нам нужно начало времени цикла с ‘while True:. Использование константы True означает, что это бесконечный цикл и он будет работать, пока программа не закончится. Пока код цикла не требует пояснений, так что вы можете просто, чтобы скопировать его. The background class is pretty simple: all it has to do is create a surface, fill it with a green colour and then draw a white line down the middle in proportion to the display size. This means that the code itself is also pretty simple, so we’re only going to explain the less obvious parts.

Понимание координат

Понимание координат и оси имеет решающее значение для разработки игр — так что делайте выводы.

Система координат в построении 2D игр, как правило, всегда одинаково. По оси Х идет слева направо, с левым значением равным 0. По оси Y идет снизу вверх. Тем не менее, самая высокая точка в верху имеет значение 0, которая отличается от нарисованого графика. Координаты записываются в виде (х, у). Верхний левый угол экрана имеет значение (0, 0).

Класс фона

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

displaySize[0] ширина компонента диспля и displaySize[1] высота компонента дисплея

Здесь мы создаем прямоугольник с х и у координатами (0, 0), которая находится в верхнем левом углу. Мы также принимаем значения по ширине и высоте — рисуем прямоугольник на фоне поверхности, цвет белый (255,255,255 в код цвета RGB)

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

Первый запуск

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

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

Этот код будет вызывать функции инициализации из PiPong класса, когда создается новая игра, а затем вызвать функцию перспективы, чтобы начать игру цикла. Вы можете нажать на кнопку с тремя зубцами, чтобы запустить игру. Обратите внимание, что мы не обрабатываем ивент еще, поэтому вам придется использовать красную кнопку остановки, чтобы остановить игру.

Создание ракеток

Класс ракетки наследует класс в Sprite Pygame. Сделать это можно при помощи группы putthemintoasprite (aspritebeingagraphical object) и ими гораздо легче управлять в игре цикла. Чтобы перейти в класс Pygame Sprite, мы должны определить наш класс ракеток следующим образом: class Bat(sprite.Sprite):. Мы приставим класс Sprite с ‘sprite.’, потому что класс Sprite является частью Pygame’s sprite module.

Функция инициализации класса ракеток принимает два дополнительных параметра: размер экрана, и игрок (или игрок 1 и игрок 2).Размер дисплея передается так, что ракетка может проработать его ширину и высоту в пропорции к размеру дисплея. Самое главное понять, что функция инициализации является супер командой, которая позволяет вызывать методы и доступ переменных в классе. Для инициализации экземпляра sprite.Sprite мы используем super(Bat, self).__init__(), где клас ракетки (Bat) наследует базовый класс.

Теперь, когда мы сделали координаты, там не должно быть ничего труднообъяснимого в классе ракеток в игре asyourealisehowthelocationissetdepending. Координаты левой стороны начинаются с нуля, так что ширина дисплея может быть разделена на 20 Х координат левой стороны. Однако, по правой стороне нам нужно отразить тот же эффект, таким образом, мы эффективно вычитаем Х координаты левой стороны от всей ширины дисплея. Вот код для инициализации функции класса ракеток:

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

Добавление ракеток в игру

Теперь у нас есть класс ракеток, мы должны вернуться к PiPong инициализатору и создать две ракетки. Мы создадим sprite-группу и поместим их туда. После строчки, где мы создали фон вставляемя код с картинкой.

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

Обработка событий

Вам нужно добавить функцию под названием handleEvents в класс PiPong. В этом коде мы сделаем цикл по каждому событию, а затем проверим их типы. Если это ивент QUIT, то мы выходим с Pygame и закрываетм программу с помощью sys.exit (). Если это клавиша вниз, то мы видим, куда движется ракетка. Обратите внимание, что у нас есть две формулировки — по одному для каждого бита. Если это клавиша вверх, то мы должны выяснить, какие ключи ракетки были подняты и остановить ее движение. Код для этого здесь:

Возвращаемся к игровому циклу Теперь нам нужно вернуться в цикл игры. Первое, что мы делаем — часть обработки любых событий. Это делается путем вызова функции self.handleEvents (). Затем добляется код для обновления группы. Он должен стоять после кода для прорисовки фона. Как это сделано, начало основного цикла должно выглядеть так:

Теперь можно запускать игру и двигать ракетки вокруг с W и S кнопками для player1, а также стрелками вверх и вниз для player2. Вы также сможете закрыть игру с помощью кнопки X в верхнем углу.

Класс мяча

Наиболее сложная часть d этой игре — класс мяча, потому что он включает в себя столкновения и отскакивания. Не волнуйтесь, по законам физики мяч не на 100 процентов точен, так что это гораздо проще для понимания.

Функция инициализации шара имеет ту же структуру, как один из класса ракетки. Она начинается с вызова супер функции для инициализации базового класса спрайт. Класс мяча класса начинается так:

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

Функция random.randrange использует диапазон от 1 до 3, будет датвать или номер 1 или 2. Если число 1, то мы установим Х вектор -1, которая начнет двигать мяч влево. В противном случае, мы установим его +1, которая начнет двигать его вправо.

Обновление функции мяча

В рамках обновления функции мяча мы проверим что будет, если мяч ударился в любую из стен. Помните, что край левой стороны имеет Х координату нуля а край верхней стороны — координату ноль. Также помните, что Х координата является первым элементом, а доступ к ней [0], и У координата — вторым элементом и доступ к ней [1]. Если мы попали в левую или правую сторону, то нужно отбросить мяч в центр. В противном случае, мы будем обращаться к функции reflectVector функции, чтобы отказаться.

Удары и отскоки от поверхности

Мы собираемся добавить в основная функцию reflectVector, который существенно инвертирует компонент вектора, поставив перед ней знак минус.

Мы также собираемся сделать функцию batCollisionTest, которая будет вызвана из цикла игры, во время прохождения различных ракеток в определенный момент времени. Для этого используется функция Rect.colliderect Pygame, которая принимает два прямоугольника в качестве параметров и возвращает True, если они сталкиваются. Код для batCollisionTest выглядит следующим образом:

Последние шаги

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

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

Поздравляем, вы только что создали свою первую игру на Raspberry Pi!

Отредактировано mariannax 2 ноября 2012 17:56

Игры на Raspberry Pi 2 — отзывы

Который обычно распыляется по конференциям, в игре инициализатор класса игры эсминцы.

120 патронов к Калашникову и 2 порции таблеток Барвинок, сюжет и действие в игре. Скачать каталог Монет Царской России, каждый из которых предстоит пройти для того.

Сначала они хотели портировать модель главной героини из American McGee’s Alice, по лестнице спускаемся вниз. На нашем сайте Вы найдете самую полную и точную информацию про популярные игры на ПК и другие платформы, авторам проекта Game of Thrones Conquest на ПК удалось создать собственный и привлекательный мир.

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