Библиотека knigago >> Компьютеры и Интернет >> Учебники и самоучители по компьютеру >> Создание видеоигр с помощью PyGame


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2507, книга: Волонтер девяносто второго года
автор: Александр Дюма

Исторические приключения Действие романа разворачивается во время Французской революции. Главный герой, Рауль де Бриссак, — молодой аристократ, который присоединяется к роялистским войскам под командованием своего дяди. В эпицентре кровавых и хаотичных событий он находит любовь и призвание, сражаясь за свои убеждения. Роман «Волонтер девяносто второго года» — это захватывающее погружение в один из самых бурных периодов истории Франции. Дюма мастерски изображает ужасы и триумфы революции...

СЛУЧАЙНАЯ КНИГА

Сделка кобры. Тимоти Зан
- Сделка кобры

Жанр: Научная Фантастика

Год издания: 2003

Серия: Военная фантастика

Майк Голд - Создание видеоигр с помощью PyGame

Создание видеоигр с помощью PyGame
Книга - Создание видеоигр с  помощью  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

Проверить на победу
Следующий код проверяет выигрыш на доске. Он смотрит, есть
ли на доске три одинаковых символа подряд (по --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.