Библиотека pygame для создание игровых программ


Библиотека pygame – модуль Python с открытым исходным кодом для разработки игр и мультимедийных приложений. Pygame, основанный на импортируемой библиотеке SDL, который может работать на многих платформах и операционных системах.

 

Инициализация PyGame
Инициализация ресурсов
Установка флага главного цикла отображения кадров
Проверка флага цикла
Отображение кадра
Формирование кадра бработка события
Обработка события
Освобождение ресурсов
Выход

 

 


Обзор модулей Pygame

· cursors – загрузка изображений курсора, включает стандартные курсоры

· display – управление окном или экраном

· draw – рисование графических примитивов на поверхности (класс Surface)

· event – управление событиями и очередью событий

· font – создание и отображение шрифтов TrueType

· image – сохранение и загрузка изображений

· key – управление клавиатурой

· mouse – управление мышью

· movie – проигрывание mpeg клипов

· sndarray – управление звуками с помощью класса Numeric

· surfarray – управление изображениями с помощью класса Numeric

· time – управление таймерами

· transform – изменение размеров, вращение и изменение ориентации изображений

pygame.display.set_mode((500, 400), 0, 32) – устанавливает размеры игрового окна 500х400.

pygame.display.set_caption('Уен') – устанавливает заголовок.

screen.fill((0,0,0)) – заливка фона.

pygame.image.load('ТУР.png') – загрузка рисунка в переменную

pygame.image.save('ТУР.png') – сохраняет изображение на диск.

Библиотека pygame может работать с графическими форматами JPG, PNG, GIF (без анимации), BMP, PCX, TGA (без компрессии), TIF, LBM (PBM),, PBM (PGM, PPM), XPM.

Метод screen.blit(tup, tuprect) размещает рисунок в переменной tup на окне с координатами tuprect.

Примитивы

Метод pygame.draw имеет следующие функции для изображения графических примитивов:

· rect((x1,y1),(x2,y2)) – прямоугольник

· polygon – многоугольника

· circle – круг

· ellipse – эллипс

· arc – дуга

· line – отрезок

· lines – отрезки

· anti-aliased line – сглаженный отрезок

· anti-aliased lines – сглаженные отрезки

Пример №1 Рассмотрим пример рисунка

import pygame, sys
from pygame.locals import *
pygame.init()
RASEM = pygame.display.set_mode((350, 350), 0, 32)
pygame.display.set_caption('Drawing')
RASEM.fill((255, 255, 150))
pygame.draw.polygon(RASEM, (0,150,0), ((20,20),(330,20),(330,330),(20,330)))
pygame.draw.line(RASEM, (0,0,0), (70, 60), (130, 60), 4)
pygame.draw.circle(RASEM, (0,0,255), (100, 100), 20, 0)
pygame.draw.line(RASEM, (0,0,0), (220, 60), (280, 60), 4)
pygame.draw.circle(RASEM, (0,0,255), (250, 100), 20, 0)
pygame.draw.ellipse(RASEM, (200,100,0), (160, 100, 40, 110), 0)
pygame.draw.rect(RASEM, (255,100,0), (120, 250, 110, 20))
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()

Пример №2

import pygame, sys
frompygame.locals import*
pygame.init()

DISPLAYSURF = pygame.display.set_mode((400, 300), 0, 32) # окно
pygame.display.set_caption('
РИСУНОК')

КАРА = (0, 0, 0) # определение цветов
АК = (255, 255, 255)
КЫЗЫЛ = (255, 0, 0)
ЯШЕЛ = (0, 255, 0)
ЗӘҢГӘР = (0, 0, 255)

DISPLAYSURF.fill(АК) # рисование
pygame.draw.polygon(DISPLAYSURF, КАРА, ((146, 0), (291, 106), (236, 277),
(56, 277), (0, 106)))
pygame.draw.line(DISPLAYSURF, ЯШЕЛ, (60, 60), (120, 60), 4)
pygame.draw.line(DISPLAYSURF, ЯШЕЛ, (120, 60), (60, 120))
pygame.draw.line(DISPLAYSURF, ЯШЕЛ, (60, 120), (120, 120), 4)
pygame.draw.circle(DISPLAYSURF, ЗӘҢГӘР, (300, 50), 20, 0)
pygame.draw.ellipse(DISPLAYSURF, КЫЗЫЛ , (300, 200, 40, 80), 1)
pygame.draw.rect(DISPLAYSURF, КЫЗЫЛ , (200, 150, 100, 50))

while True: # основной цикл обработки событий
for event inpygame.event.get():
ifevent.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()

Программа изобразит

Работа с событиями

Рассмотрим фрагмент программы отражающей элемент управления в играх.

import pygame

from pygame.locals import *

pygame.init()

width = 800

height = 600

screen = pygame.screen.set_mode((width, height))

pygame.screen.update()

while True: # while 1:

for event in pygame.event.get():

print(event)

pygame.quit()

quit()

Для выхода из игры на pygame используются событие pygame.QUIT.

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

Дальше предполагается, что мы уже проходимся по событиям в цикле for event in pygame.event.get:

Нажатие на кнопки

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_UP:

v_y -= 10

if event.key == pyga*me.K_DOWN:

v_y += 10

Это проверка события нажатия клавиши и смены значения v_y только 1 раз. Реакция на постоянно нажатую кнопку реализуется иначе.

pygame.KEYDOWN – это тип события (нажатие на кнопку)

pygame.K_DOWN, pygame.K_UP – "ключи" события (event.key)

Коды кнопок:

K_UP, K_DOWN, K_RIGHT, K_LEFT – стрелки,

K_SPACE – пробел,

K_w, K_a, K_s, K_d – кнопки w a s d.

Клик мышкой

if event.type == pygame.MOUSEBUTTONDOWN:

if event.button == 1: # левая кнопка мыши

bird_pos = event.pos

if event.button == 3: # правая кнопка мыши

bird_image = new_image

#event.button – код нажатой кнопки мышки

# 1 – левая кнопка

# 2 – центральная кнопка

# 3 – правая кнопка

# 4 – прокрутка вверх

# 5 – прокрутка вниз

# event.pos - координаты нажатия кнопки мыши



Дата добавления: 2022-04-12; просмотров: 141;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.012 сек.