Задержку смены изображений обеспечивает функция


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; просмотров: 120;


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

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

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

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