Задержку смены изображений обеспечивает функция
pygame.time.delay(5).
либо
import time # подключается модуль time
…
time.sleep(5) # задержка на 5 секунд
Движение мышки
Не только нажатие, но и движение мышки тоже является событием. Действительно, что если нам нужно чтобы какой-то объект постоянно следил за курсором? Нужно запускать его движение тогда, когда мышка движется.
Координаты хранятся также, как и в предыдущем случае – в переменной event.pos.
if event.type == pygame.MOUSEMOTION:
cursor_pos = event.pos
Как проверить, зажата ли клавиша?
Часто бывает, что хочется реагировать не на одиночное событие нажатия клавиши, а проверять, зажата ли она. Для этого можно в каждом кадре проверять такое условие
if pygame.key.get_pressed() [pygame.K_RIGHT] :
x += 1
функция pygame.key.get_pressed() возвращает словарь вида
{
pygame.K_UP: True,
pygame.K_DOWN: False,
pygame.K_RIGHT: True,
pygame.K_LEFT: False,
...
}
Рассмотрим фрагмент программы, обеспечивающий выход из игры.
import pygame
from pygame.locals import *
pygame.init()
width = 800
height = 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('УЕН БЕТТЕ')
def event_handler():
for event in pygame.event.get():
if event.type==QUIT or event.type==KEYDOWN and event.key==K_ESCAPE:
pygame.quit()
quit()
while True: # while 1:
event_handler()
pygame.display.update()
Программа изображения движения графического объекта, содержащегося в файле «tup.png», в окне размера 640х350 с начальной скоростью по оси Х и У (3,3) и отбоем от стенок.
import sys, pygame
pygame.init()
size= width, height= 640,350 # параметры экрана
speed = [3, 3] # скорость движения
black = 0, 0, 0
screen=pygame.display.set_mode(size) # определение экрана
tup = pygame.image.load("tup.png") # загрузка рисунка
tuprect=tup.get_rect() # определение параметров рисунка
while 1: # зацикливание
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() # завершение игры
tuprect = tuprect.move(speed)
if tuprect.left < 0 or tuprect.right > width:
speed[0]=-speed[0] #смена направления по горизонтали
if tuprect.top < 0 or tuprect.bottom > height:
speed[1]=-speed[1] # смена направления по вертикали
screen.fill(black)
screen.blit(tup, tuprect)
pygame.display.flip()
Программа изображения упраляемого движения белого квадрата в окне размера 500х500 с изменением скорости движения.
import pygame
pygame.init()
win = pygame.set.diplay.set_mode((500,500))
pygame.display.set_caption('Uen')
x=y=50
width_height = 40 # рамер квадрата
tizlek = 5 # скорость движения
uen= True
while uen:
pygame.time.delay(100)
for eveny in pygame.event.get():
if event.type == pygame.QUIT: uen = False
keys = pygame.key.get_pressed()
if keys(pygame.K_LEFT) and x> tizlek :
x-= tizlek # движение влево
if keys(pygame.K_RIGHT) and x< width_height - tizlek :
x+= tizlek # движение вправо
if keys(pygame.K_UP) and y> tizlek :
y-= tizlek # движение вверх
if keys(pygame.K_DOWN) and x< width_height - tizlek :
y+= tizlek # движение вниз
if keys(pygame.K_HOME) and (width_height <50):
width_height +=1 # увеличение квадрата
if keys(pygame.K_END) and (width_height >10):
width_height -=1 # уменьшение квадрата
if keys(pygame.K_s) and tizlek> 3: tizlek -=1 # торможение
if keys(pygame.K_w) and tizlek< 10: tizlek += 1 # ускорение
win.fill((0,0,0))
pygame.draw.rect(win, (255,255,0), (x,y,width_height) )
pygame.display.update()
pygame.quit
Упражнения
1. Нанести оси и проставить метки на осях.
2. Написать процедуры указания координат, нанесения меток и вывода значений по горизонтальной и вертикальной осям.
3. Написать процедуру моделирования полета тела, брошенного под углом у горизонту.
4. Модифицировать «моделирование полёта» с изменением начальной скорости.
PyOpenGL
Дата добавления: 2022-04-12; просмотров: 123;