Майк Голд - Создание видеоигр с помощью PyGame
Название: | Создание видеоигр с помощью PyGame | |
Автор: | Майк Голд | |
Жанр: | Учебники и самоучители по компьютеру | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Создание видеоигр с помощью PyGame"
Читаем онлайн "Создание видеоигр с помощью PyGame". [Страница - 5]
run_algorithm_to_place_O()
game_over = check_if_anyone_won()
31
# Снова нарисуйте доску, чтобы показать букву О,
32
# которую мы только что поставили.
draw_the_board()
X_placed = False
28
29
33
34
35
36
37
# обновить экран
pygame.display.flip()
38
39
40
# ограничить цикл до 60 кадров в секунду
clock.tick(60)
Обработка событий
В основе содержимого игрового цикла лежит несколько функций,
которые используют pygame для выполнения тяжелой работы.
Давайте сначала посмотрим на функцию DoEventProcessing. Этот код
представляет собой функцию в PyGame, которая запускает цикл
обработки событий для проверки пользовательского ввода и
щелчков мышью. Когда пользователь нажимает на доску, он
обрабатывает событие нажатия мыши для X и устанавливает флаг
X_placed в значение True, а также проверяет, решил ли пользователь
выйти из игры. Событие выхода запускается, когда пользователь
закрывает окно.
42
Крестики-нолики в PyGame
1
2
3
def run_event_processing():
global X_placed
global game_over
4
5
6
7
8
9
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
# выйти из игры
quit()
if event.type == pygame.MOUSEBUTTONDOWN:
10
# Разместить X на доске
11
handle_mouse_down_for_x()
X_placed = True
12
Теперь давайте посмотрим на вызываемую функцию
handle_mouse_down_for_x. Этот код используется для обработки
события нажатия мыши для размещения X на доске для игры в
крестики-нолики. Он использует функцию mouse.get_pos() библиотеки
PyGame для получения положения мыши, затем делит строку и
столбец на ширину и высоту сетки, чтобы получить строку и
столбец клика. Наконец, он устанавливает соответствующую
позицию в массиве доски в «X».
1
2
3
4
5
def handle_mouse_down_for_x():
(row, col) = pygame.mouse.get_pos()
row = int(row / grid_width)
col = int(col / grid_height)
board[row][col] = "X"
Создание доски
Функция draw_the_board используется для рисования доски Tic Tac
Toe (крестики и нолики) в ее текущем состоянии. Он перебирает
все строки и столбцы доски и вызывает функцию
draw_game_board_square() для рисования каждого квадрата. Затем
он проверяет, содержит ли доска в этой строке и столбце «X» или
«O», и вызывает функцию draw_tic_tac_toe_letter() для рисования
соответствующей буквы.
Крестики-нолики в PyGame
1
2
3
4
def draw_the_board():
for row in range(grid_size):
for col in range(grid_size):
draw_game_board_square(row, col)
5
# Сделать букву X
6
if (board[row][col] == "X"):
draw_tic_tac_toe_letter(row, col, 'X')
7
8
9
10
# Сделать букву O
if (board[row][col] == "O"):
draw_tic_tac_toe_letter(row, col, 'O')
Создание игрового поля
Этот код используется для рисования квадрата игрового поля в
указанной строке и столбце. Он использует функцию Rect()
библиотеки PyGame для создания прямоугольного объекта с
заданными строкой, столбцом, шириной и высотой. Затем он
использует функцию draw.rect() для рисования прямоугольника в
окне игры черным цветом и шириной линии 3.
1
2
3
4
5
6
def draw_game_board_square(row, col):
rect = pygame.Rect(col * grid_width, row *
grid_height,
grid_width,
grid_height)
pygame.draw.rect(game_window, BLACK, rect, 3)
Рисуем крестики-нолики
Этот код используется для рисования буквы «X» или «O» в
указанной строке и столбце. Он использует функцию font.render()
из библиотеки PyGame для рендеринга буквы как объекта Surface и
задает черный цвет. Затем он использует метод game_window.blit()
для рисования буквы в указанной строке и столбце, причем
строка и столбец умножаются на ширину и высоту сетки, плюс
четверть ширины и высоты сетки для ее центрирования.
43
Крестики-нолики в PyGame
1
2
3
4
5
44
def draw_tic_tac_toe_letter(row, col, letter):
letter_piece = font.render(letter, True, BLACK)
game_window.blit(
letter_piece, (row * grid_width + grid_width/4,
col * grid_height + grid_height/4))
«AI» для размещения O
Для упрощения алгоритм размещения буквы O заключается в том,
чтобы просто найти следующую доступную клетку. Мы улучшим это
позже в этой главе, но эта стратегия должна, по крайней мере,
позволить вам играть в игру против компьютерного оппонента.
AI - искусственный интелект (ИИ)
1
####################################################
2
# Очень простой алгоритм размещения O на доске.
3
# Пройдитесь по всей доске и найдите первую доступную
4
# клетку. Поместите О там.
5
####################################################
def run_algorithm_to_place_O():
for rowo in range(grid_size):
for colo in range(grid_size):
if (board[rowo][colo] == 0):
board[rowo][colo] = "O"
return True
6
7
8
9
10
11
12
13
return False
Крестики-нолики в PyGame
Проверить на победу
Следующий код проверяет выигрыш на доске. Он смотрит, есть
ли на доске три одинаковых символа подряд (по --">
game_over = check_if_anyone_won()
31
# Снова нарисуйте доску, чтобы показать букву О,
32
# которую мы только что поставили.
draw_the_board()
X_placed = False
28
29
33
34
35
36
37
# обновить экран
pygame.display.flip()
38
39
40
# ограничить цикл до 60 кадров в секунду
clock.tick(60)
Обработка событий
В основе содержимого игрового цикла лежит несколько функций,
которые используют pygame для выполнения тяжелой работы.
Давайте сначала посмотрим на функцию DoEventProcessing. Этот код
представляет собой функцию в PyGame, которая запускает цикл
обработки событий для проверки пользовательского ввода и
щелчков мышью. Когда пользователь нажимает на доску, он
обрабатывает событие нажатия мыши для X и устанавливает флаг
X_placed в значение True, а также проверяет, решил ли пользователь
выйти из игры. Событие выхода запускается, когда пользователь
закрывает окно.
42
Крестики-нолики в PyGame
1
2
3
def run_event_processing():
global X_placed
global game_over
4
5
6
7
8
9
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
# выйти из игры
quit()
if event.type == pygame.MOUSEBUTTONDOWN:
10
# Разместить X на доске
11
handle_mouse_down_for_x()
X_placed = True
12
Теперь давайте посмотрим на вызываемую функцию
handle_mouse_down_for_x. Этот код используется для обработки
события нажатия мыши для размещения X на доске для игры в
крестики-нолики. Он использует функцию mouse.get_pos() библиотеки
PyGame для получения положения мыши, затем делит строку и
столбец на ширину и высоту сетки, чтобы получить строку и
столбец клика. Наконец, он устанавливает соответствующую
позицию в массиве доски в «X».
1
2
3
4
5
def handle_mouse_down_for_x():
(row, col) = pygame.mouse.get_pos()
row = int(row / grid_width)
col = int(col / grid_height)
board[row][col] = "X"
Создание доски
Функция draw_the_board используется для рисования доски Tic Tac
Toe (крестики и нолики) в ее текущем состоянии. Он перебирает
все строки и столбцы доски и вызывает функцию
draw_game_board_square() для рисования каждого квадрата. Затем
он проверяет, содержит ли доска в этой строке и столбце «X» или
«O», и вызывает функцию draw_tic_tac_toe_letter() для рисования
соответствующей буквы.
Крестики-нолики в PyGame
1
2
3
4
def draw_the_board():
for row in range(grid_size):
for col in range(grid_size):
draw_game_board_square(row, col)
5
# Сделать букву X
6
if (board[row][col] == "X"):
draw_tic_tac_toe_letter(row, col, 'X')
7
8
9
10
# Сделать букву O
if (board[row][col] == "O"):
draw_tic_tac_toe_letter(row, col, 'O')
Создание игрового поля
Этот код используется для рисования квадрата игрового поля в
указанной строке и столбце. Он использует функцию Rect()
библиотеки PyGame для создания прямоугольного объекта с
заданными строкой, столбцом, шириной и высотой. Затем он
использует функцию draw.rect() для рисования прямоугольника в
окне игры черным цветом и шириной линии 3.
1
2
3
4
5
6
def draw_game_board_square(row, col):
rect = pygame.Rect(col * grid_width, row *
grid_height,
grid_width,
grid_height)
pygame.draw.rect(game_window, BLACK, rect, 3)
Рисуем крестики-нолики
Этот код используется для рисования буквы «X» или «O» в
указанной строке и столбце. Он использует функцию font.render()
из библиотеки PyGame для рендеринга буквы как объекта Surface и
задает черный цвет. Затем он использует метод game_window.blit()
для рисования буквы в указанной строке и столбце, причем
строка и столбец умножаются на ширину и высоту сетки, плюс
четверть ширины и высоты сетки для ее центрирования.
43
Крестики-нолики в PyGame
1
2
3
4
5
44
def draw_tic_tac_toe_letter(row, col, letter):
letter_piece = font.render(letter, True, BLACK)
game_window.blit(
letter_piece, (row * grid_width + grid_width/4,
col * grid_height + grid_height/4))
«AI» для размещения O
Для упрощения алгоритм размещения буквы O заключается в том,
чтобы просто найти следующую доступную клетку. Мы улучшим это
позже в этой главе, но эта стратегия должна, по крайней мере,
позволить вам играть в игру против компьютерного оппонента.
AI - искусственный интелект (ИИ)
1
####################################################
2
# Очень простой алгоритм размещения O на доске.
3
# Пройдитесь по всей доске и найдите первую доступную
4
# клетку. Поместите О там.
5
####################################################
def run_algorithm_to_place_O():
for rowo in range(grid_size):
for colo in range(grid_size):
if (board[rowo][colo] == 0):
board[rowo][colo] = "O"
return True
6
7
8
9
10
11
12
13
return False
Крестики-нолики в PyGame
Проверить на победу
Следующий код проверяет выигрыш на доске. Он смотрит, есть
ли на доске три одинаковых символа подряд (по --">
Книги схожие с «Создание видеоигр с помощью PyGame» по жанру, серии, автору или названию:
В. В. Штыков - Fortran & Win32 API. Создание программного интерфейса для Windows средствами современного Фортрана Жанр: Учебники и самоучители по компьютеру Год издания: 2000 |
Владимир Петрович Молочков - Создание сайтов на Tilda. Самоучитель Жанр: Интернет Год издания: 2021 Серия: Самоучитель |