В сегодняшнем примере мы рассмотрим принципы работы pygame с устройствами ввода, то есть мышкой и клавиатурой.
Чтоб считать состояние клавиатуры мы пробегаемся по событиям и смотрим не появилось ли событие KEYDOWN или KEYUP. Если они появились, то мы смотрим из этого события какие кнопки были нажаты и обновляем положения прямоугольничка на экране.
Чтобы узнать координаты мышки нужно вызвать метод pygame.mouse.get_pos(), который возвращает координаты курсора.
pygame_input.py:
Чтоб считать состояние клавиатуры мы пробегаемся по событиям и смотрим не появилось ли событие KEYDOWN или KEYUP. Если они появились, то мы смотрим из этого события какие кнопки были нажаты и обновляем положения прямоугольничка на экране.
Чтобы узнать координаты мышки нужно вызвать метод pygame.mouse.get_pos(), который возвращает координаты курсора.
pygame_input.py:
import pygame
# Определяем несколько цветов
black = ( 0, 0, 0)
white = ( 255, 255, 255)
green = ( 0, 255, 0)
red = ( 255, 0, 0)
# Функция для очистки экрана
def draw_background(screen):
screen.fill(white)
# Функция для отрисовки нашего персонажа
def draw_item(screen, color, x, y):
pygame.draw.rect(screen, color, [0+x, 0+y, 30, 10], 0)
pygame.draw.circle(screen, black, [15+x, 5+y], 7, 0)
# Инициализируем pygame
pygame.init()
screen = pygame.display.set_mode([640, 480])
# Скорость в пикселях за кадр
x_speed = 0
y_speed = 0
# Текущие координаты
x_coord = 10
y_coord = 10
clock = pygame.time.Clock()
done=False
while done == False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True # Если игрок закрыл окно -- прерываем цикл.
# Обрабатываем клавиатуру
# Если игрок нажал каку-нибудь кнопку -- начинаем движение
if event.type == pygame.KEYDOWN:
# Выясняем какая именно кнопка была нажата
if event.key == pygame.K_LEFT:
x_speed =-3
if event.key == pygame.K_RIGHT:
x_speed = 3
if event.key == pygame.K_UP:
y_speed = -3
if event.key == pygame.K_DOWN:
y_speed = 3
# Если кнопка была отпущена, то и движение надо прекратить
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
x_speed = 0
if event.key == pygame.K_RIGHT:
x_speed = 0
if event.key == pygame.K_UP:
y_speed = 0
if event.key == pygame.K_DOWN:
y_speed = 0
# Обрабатываем движение мышки
pos = pygame.mouse.get_pos()
mouse_x, mouse_y = pos[0], pos[1]
# Двигаем нашего игрока в соответствии
# нажатым кнопкам.
x_coord += x_speed;
y_coord += y_speed;
draw_background(screen)
# Рисуем двух игроков -- зеленый управляется клавиатурой,
# а красный -- мышкой
draw_item(screen, green, x_coord, y_coord)
draw_item(screen, red, mouse_x, mouse_y)
#Теперь выводим все что мы нарисовали из буффера на экран
pygame.display.flip()
clock.tick(60)
pygame.quit()
# Определяем несколько цветов
black = ( 0, 0, 0)
white = ( 255, 255, 255)
green = ( 0, 255, 0)
red = ( 255, 0, 0)
# Функция для очистки экрана
def draw_background(screen):
screen.fill(white)
# Функция для отрисовки нашего персонажа
def draw_item(screen, color, x, y):
pygame.draw.rect(screen, color, [0+x, 0+y, 30, 10], 0)
pygame.draw.circle(screen, black, [15+x, 5+y], 7, 0)
# Инициализируем pygame
pygame.init()
screen = pygame.display.set_mode([640, 480])
# Скорость в пикселях за кадр
x_speed = 0
y_speed = 0
# Текущие координаты
x_coord = 10
y_coord = 10
clock = pygame.time.Clock()
done=False
while done == False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True # Если игрок закрыл окно -- прерываем цикл.
# Обрабатываем клавиатуру
# Если игрок нажал каку-нибудь кнопку -- начинаем движение
if event.type == pygame.KEYDOWN:
# Выясняем какая именно кнопка была нажата
if event.key == pygame.K_LEFT:
x_speed =-3
if event.key == pygame.K_RIGHT:
x_speed = 3
if event.key == pygame.K_UP:
y_speed = -3
if event.key == pygame.K_DOWN:
y_speed = 3
# Если кнопка была отпущена, то и движение надо прекратить
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
x_speed = 0
if event.key == pygame.K_RIGHT:
x_speed = 0
if event.key == pygame.K_UP:
y_speed = 0
if event.key == pygame.K_DOWN:
y_speed = 0
# Обрабатываем движение мышки
pos = pygame.mouse.get_pos()
mouse_x, mouse_y = pos[0], pos[1]
# Двигаем нашего игрока в соответствии
# нажатым кнопкам.
x_coord += x_speed;
y_coord += y_speed;
draw_background(screen)
# Рисуем двух игроков -- зеленый управляется клавиатурой,
# а красный -- мышкой
draw_item(screen, green, x_coord, y_coord)
draw_item(screen, red, mouse_x, mouse_y)
#Теперь выводим все что мы нарисовали из буффера на экран
pygame.display.flip()
clock.tick(60)
pygame.quit()
Комментариев нет:
Отправить комментарий