Учим Python, делая крутые игры

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Перед вами - увлекательный самоучитель по языку Python для начинающих. Книга подходит даже читателям с нулевым уровнем. Создавайте собственными руками веселые классические и необычные, продвинутые игры, такие как "Виселица" или "Охотник за сокровищами", - в процессе вы поймете основные принципы программирования и выучите Python играючи!

Author(s): Свейгарт Эл
Edition: 4
Publisher: Эксмо
Year: 2018

Language: Russian
Pages: 416
City: Москва

Об авторе ..................................................................................................................15

Введение ...................................................................................................................16
Для кого эта книга? ......................................................................................................17
О книге ............................................................................................................................18
Как пользоваться этой книгой ..................................................................................19
Номера строк и отступов ...................................................................................... 19
Длинные строки кода ............................................................................................. 20
Загрузка и установка Python ......................................................................................21
Запуск интерактивной среды разработки ..............................................................22
Поиск справочной документации ............................................................................23

Глава 1. Интерактивная среда разработки...........................................................24
Немного арифметики ..................................................................................................24
Целые числа и числа с плавающей запятой ...................................................... 25
Выражения ................................................................................................................ 26
Вычисление выражений ..............................................................................................26
Синтаксические ошибки .............................................................................................27
Сохранение значений в переменных .......................................................................28
Заключение .....................................................................................................................33

Глава 2. Написание программ ................................................................................34
Строковые значения ....................................................................................................34
Конкатенация строк .....................................................................................................35
Написание кода в среде разработки ........................................................................36
Создание программы «Привет, мир!» ................................................................ 37
Сохранение программы ......................................................................................... 38
Запуск программы ................................................................................................... 39
Как работает программа «Привет, мир!» ................................................................40
Комментарии для программиста ........................................................................ 40
Функции: Мини-программы внутри программ .............................................. 41
Функция print() .............................................................................................41
Функция input() .............................................................................................41
Выражения в вызовах функций .................................................................42
Завершение программы ......................................................................................... 42
Имена переменных .......................................................................................................43
Заключение .....................................................................................................................44

Глава 3. Игра «Угадай число» .................................................................................45
Пример запуска игры «Угадай число» .....................................................................46
Исходный код игры «Угадай число» ........................................................................46
Импорт модуля random..................................................................................................47
Генерация случайных чисел при помощи функции random.randint() ..............49
Приветствие игрока .....................................................................................................51
Инструкции управления потоком ............................................................................51
Использование циклов для повторения кода .................................................. 51
Группировка в блоки ............................................................................................... 52
Создание циклов с инструкцией for .................................................................. 53
Игрок угадывает число................................................................................................55
Преобразование значений при помощи функций int(), float() и str() ..........55
Логический тип данных ..............................................................................................57
Операторы сравнения ............................................................................................ 58
Проверка условий и определение истинности/ложности ............................ 58
Эксперименты с логическими операторами, операторами
сравнения и условиями .......................................................................................... 59
Разница между операторами = и ==..................................................................... 61
Инструкции if...............................................................................................................61
Выход из цикла до его завершения при помощи инструкции break................62
Проверка, победил ли игрок ......................................................................................62
Проверка, проиграл ли игрок ....................................................................................63
Заключение .....................................................................................................................64

Глава 4. Программа-шутник ..................................................................................65
Пример запуска программы «Шутки» .....................................................................65
Исходный код программы «Шутки» ........................................................................66
Как работает код ...........................................................................................................66
Экранируемые символы ..............................................................................................67
Одинарные и двойные кавычки ................................................................................68
Параметр end функции print() .................................................................................70
Заключение .....................................................................................................................71

Глава 5. Игра «Царство драконов» ........................................................................72
Как играть в «Царство драконов».............................................................................72
Пример запуска игры «Царство драконов»............................................................73
Блок-схема игры «Царство драконов» ....................................................................73
Исходный код игры «Царство драконов» ...............................................................74
Импорт модулей random и time...................................................................................76
Функции в игре «Царство драконов» ......................................................................76
Инструкции def........................................................................................................ 76
Вызов функции ........................................................................................................ 77
Где указывать определение функций? ................................................................ 77
Многострочный текст .................................................................................................78
Выполнение циклов с помощью инструкций while .............................................79
Логические операторы .................................................................................................80
Оператор and ............................................................................................................. 80
Оператор or ............................................................................................................... 81
Оператор not ............................................................................................................. 82
Вычисление логических операций ...................................................................... 82
Возвращаемые значения функций ...........................................................................84
Глобальная и локальная области видимости переменных .................................84
Параметры функции ....................................................................................................86
Отображение результатов игры ................................................................................87
Определение пещеры с дружелюбным драконом .................................................88
Игровой цикл ................................................................................................................89
Вызов функций в программе................................................................................ 90
Запрос «сыграть снова» ......................................................................................... 91
Заключение .....................................................................................................................91

Глава 6. Использование отладчика .......................................................................93
Типы багов ......................................................................................................................93
Отладка ...........................................................................................................................95
Запуск отладчика ..................................................................................................... 95
Пошаговое выполнение программы с помощью отладчика ........................ 97
Область глобальных переменных ..............................................................97
Область локальных переменных ................................................................98
Обычное выполнение и завершение работы ..........................................98
Навигация по коду ........................................................................................98
Поиск багов ..................................................................................................................100
Установка точек останова .........................................................................................104
Использование точек останова ...............................................................................105
Заключение ...................................................................................................................107

Глава 7. Проектирование игры «Виселица» с помощью блок-схем ................108
Правила игры «Виселица» ........................................................................................108
Пример запуска игры «Виселица» ..........................................................................109
ASCII-графика .............................................................................................................110
Проектирование игры с помощью блок-схем .....................................................111
Создание блок-схем .............................................................................................. 112
Ветвление в блок-схемах ..................................................................................... 113
Заканчиваем или начинаем игру сначала ....................................................... 115
Следующая попытка ............................................................................................. 115
Обратная связь с игроком ................................................................................... 117
Заключение ...................................................................................................................118

Глава 8. Написание кода игры «Виселица» ........................................................119
Исходный код игры «Виселица» .............................................................................119
Импорт модуля random................................................................................................123
Константы ....................................................................................................................123
Списки ...........................................................................................................................124
Доступ к элементам по их индексам ................................................................ 125
Индекс за пределами диапазона и ошибка IndexError ........................126
Присваивание индексов элементам ........................................................126
Конкатенация списков ......................................................................................... 126
Оператор in ............................................................................................................. 127
Вызов методов .............................................................................................................127
Методы списков reverse() и append()................................................................ 128
Строковый метод split()..................................................................................... 128
Получение секретного слова из списка .................................................................129
Отображение игрового поля для игрока ..............................................................130
Функции list() и range()..................................................................................... 131
Срезы списков и строк ......................................................................................... 132
Вывод секретного слова с пробелами .............................................................. 134
Получение предположений игрока ........................................................................136
Строковые методы lower() и upper()................................................................. 136
Завершение цикла while....................................................................................... 138
Инструкции elif .........................................................................................................138
Проверка допустимости предположения игрока ...............................................139
Предложение игроку сыграть заново ....................................................................140
Обзор функций игры .................................................................................................141
Игровой цикл ..............................................................................................................141
Вызов функции displayBoard() ........................................................................... 142
Ввод игроком угадываемой буквы .................................................................... 142
Проверка наличия буквы в секретном слове ................................................. 143
Проверка — не победил ли игрок ..................................................................... 143
Обработка ошибочных предположений ......................................................... 144
Проверка — не проиграл ли игрок ................................................................... 144
Завершение или перезагрузка игры ................................................................. 145
Заключение ...................................................................................................................146

Глава 9. Доработка игры «Виселица» ..................................................................147
Увеличение числа угадываний ................................................................................147
Словари .........................................................................................................................148
Определение размера словаря с помощью функции len()......................... 149
Различия между списком и словарем .............................................................. 150
Методы словаря keys() и values()...................................................................... 151
Использование словаря слов в игре «Виселица» ........................................... 152
Случайный выбор из списка ....................................................................................152
Удаление элементов списка ......................................................................................154
Множественное присваивание ...............................................................................156
Выбор игроком категории слов ...............................................................................157
Заключение ...................................................................................................................158

Глава 10. Игра «Крестики-нолики» .....................................................................159
Пример запуска игры «Крестики-нолики» ..........................................................160
Исходный код игры «Крестики-нолики» ..............................................................161
Проектирование программы ...................................................................................166
Данные для прорисовки игрового поля .......................................................... 166
Стратегия игры ИИ ............................................................................................... 167
Импорт модуля random................................................................................................168
Вывод игрового поля на экран ................................................................................169
Предоставление игроку выбора между «Х» или «О» .........................................170
Выбор — кто будет ходить первым ........................................................................171
Размещение меток на игровом поле .......................................................................171
Ссылки на список .................................................................................................. 172
Использование ссылок на списки в функции makeMove() ............................ 175
Проверка — не победил ли игрок ...........................................................................175
Дублирование данных игрового поля ...................................................................178
Проверка — свободна ли клетка игрового поля .................................................178
Разрешение игроку сделать ход ...............................................................................179
Вычисление по короткой схеме ..............................................................................180
Выбор хода из списка.................................................................................................182
Значение None ...............................................................................................................183
Создание искусственного интеллекта ...................................................................184
Проверка — сможет ли компьютер победить, сделав ход .......................... 185
Проверка — сможет ли игрок победить, сделав ход .................................... 185
Проверка угловых, центральной и боковых клеток
(в порядке очереди) .............................................................................................. 186
Проверка — заполнено ли поле ......................................................................... 187
Игровой цикл ..............................................................................................................187
Выбор буквы игрока и того, кто будет ходить первым ............................... 188
Переменная turn в значении 'Человек' ............................................................. 188
Переменная turn в значении 'Компьютер'.......................................................... 190
Предложение игроку сыграть заново............................................................... 190
Заключение ...................................................................................................................191

Глава 11. Дедуктивная игра «Холодно-горячо» .................................................192
Пример запуска игры «Холодно-горячо» .............................................................193
Исходный код игры «Холодно-горячо».................................................................193
Блок-схема игры «Холодно-горячо» ......................................................................195
Импорт модуля random и определение функции getSecretNum().......................196
Перетасовка уникального набора цифр ...............................................................197
Изменение порядка элементов списка с помощью функции
random.shuffle() ........................................................................................................ 197
Получение секретного числа из перетасованных цифр.............................. 198
Расширенные операторы присваивания...............................................................198
Подсчет выдаваемых подсказок ..............................................................................200
Метод списка sort() ...................................................................................................201
Строковый метод join()............................................................................................202
Проверка на содержание в строке только чисел .................................................203
Начало игры .................................................................................................................203
Интерполяция строк ..................................................................................................204
Игровой цикл ..............................................................................................................205
Получение предположения игрока ................................................................... 206
Получение подсказок в зависимости от предположения игрока ............. 206
Проверка победы или поражения игрока ....................................................... 207
Предложение сыграть снова ............................................................................... 207
Заключение ...................................................................................................................208

Глава 12. Декартова система координат .............................................................209
Сетки и декартовы координаты ..............................................................................209
Отрицательные числа ................................................................................................211
Система координат компьютерного экрана .........................................................213
Математические хитрости ........................................................................................213
Хитрость 1: минус «съедает» плюс слева от себя .......................................... 214
Хитрость 2: два минуса в сумме дают плюс ................................................... 214
Хитрость 3: два слагаемых числа можно переставлять местами ............. 214
Абсолютные величины и функция abs() ..............................................................215
Заключение ...................................................................................................................216

Глава 13. Игра «Охотник за сокровищами» .......................................................217
Пример запуска игры «Охотник за сокровищами» ...........................................218
Исходный код игры «Охотник за сокровищами» ...............................................222
Проектирование программы ...................................................................................227
Импорт модулей random, sys и math ..........................................................................227
Создание поля для новой игры ...............................................................................228
Генерация игрового поля ..........................................................................................229
Изображение координат x вдоль верхней части поля ................................. 230
Рисование океана ................................................................................................... 231
Вывод ряда в океане .............................................................................................. 232
Изображение координат x вдоль нижней части игрового поля ............... 233
Создание случайных сундуков с сокровищами ..................................................233
Определение допустимости хода ............................................................................234
Отражение хода на игровом поле ...........................................................................234
Поиск ближайшего сундука с сокровищами ................................................. 235
Удаление значений с помощью метода списка remove() .............................. 238
Получение хода игрока ..............................................................................................239
Вывод игроку инструкций по игре ........................................................................241
Игровой цикл ..............................................................................................................242
Демонстрация игроку статуса игры ................................................................. 243
Обработка хода игрока ........................................................................................ 243
Нахождение затонувшего сундука с сокровищами ..................................... 244
Проверка победы игрока ..................................................................................... 245
Проверка проигрыша игрока ............................................................................. 245
Завершение работы программы с помощью функции sys.exit()............ 246
Заключение ...................................................................................................................246

Глава 14. Шифр Цезаря .........................................................................................248
Криптография и шифрование .................................................................................248
Как работает шифр Цезаря ......................................................................................249
Пример запуска программы «Шифр Цезаря» .....................................................251
Исходный код программы «Шифр Цезаря» .........................................................252
Установление максимальной длины ключа .........................................................253
Выбор между шифрованием и расшифровыванием сообщения ...................254
Получение сообщения от игрока ............................................................................254
Получение ключа от игрока .....................................................................................255
Шифрование/расшифровывание сообщения .....................................................255
Нахождение переданных строк с помощью строчного
метода find()............................................................................................................. 256
Шифрование/расшифровка каждой буквы .................................................... 257
Запуск программы ......................................................................................................258
Полный перебор .........................................................................................................259
Добавление режима полного перебора .................................................................260
Заключение ...................................................................................................................261

Глава 15. Игра «Реверси» ......................................................................................263
Как играть в «Реверси» ..............................................................................................263
Пример запуска игры «Реверси» .............................................................................266
Исходный код игры «Реверси» ................................................................................268
Импорт модулей и создание констант ..................................................................275
Структура данных игрового поля ..........................................................................275
Отображение на экране структуры данных игрового поля....................... 276
Создание структуры данных нового игрового поля.................................... 277
Проверка допустимости хода ..................................................................................278
Проверка каждого из восьми направлений ................................................... 279
Определение наличия фишек, которые можно перевернуть .................... 280
Проверка допустимости координат .......................................................................282
Получение списка со всеми допустимыми ходами ...................................... 282
Вызов функции bool().......................................................................................... 283
Получение игрового счета ........................................................................................284
Получение сделанного игроком выбора фишки .................................................285
Определение первого игрока ...................................................................................285
Помещение фишки на поле ......................................................................................286
Создание копии структуры данных игрового поля ...........................................286
Определение того, находится ли клетка в углу ...................................................287
Получение хода игрока ..............................................................................................287
Получение хода компьютера ....................................................................................290
Разработка стратегии с угловыми ходами ...................................................... 290
Получения списка самых результативных ходов ......................................... 291
Вывод игрового счета на экран ...............................................................................292
Начало игры .................................................................................................................292
Проверка на попадание в тупик ........................................................................ 293
Выполнение хода игроком .................................................................................. 294
Выполнение хода компьютером ........................................................................ 295
Игровой цикл ..............................................................................................................296
Предложение сыграть снова ....................................................................................297
Заключение ...................................................................................................................298

Глава 16. Искусственный интеллект игры «Реверси» .......................................299
Компьютер против компьютера .............................................................................300
Пример запуска модели 1 .................................................................................... 300
Исходный код модели 1 ....................................................................................... 301
Удаление приглашений для игрока и добавление
игрока-компьютера ............................................................................................... 303
Компьютер против компьютера — несколько партий ......................................304
Пример запуска модели 2 .................................................................................... 304
Исходный код модели 2 ....................................................................................... 305
Отслеживание результатов партий .................................................................. 306
Отключение вызовов функции print()............................................................ 307
Оценка искусственных интеллектов в процентном соотношении ............307
Деление приводит к получению числа с плавающей запятой ........... 308
Функция round() ...........................................................................................309
Сравнение различных алгоритмов ИИ .................................................................309
Исходный код модели 3 ....................................................................................... 310
Принципы работы искусственных интеллектов в модели 3 ..................... 312
ИИ лучшего углового хода ........................................................................312
ИИ худшего хода ..........................................................................................312
ИИ случайного хода ....................................................................................313
Проверка на граничные ходы ...................................................................314
ИИ лучшего углового-граничного хода .................................................314
Сравнение искусственных интеллектов .......................................................... 315
ИИ худшего хода против ИИ лучшего углового хода ........................315
ИИ случайного хода против ИИ лучшего углового хода ..................316
ИИ лучшего углового-граничного хода против ИИ лучшего
углового хода ................................................................................................317
Заключение ...................................................................................................................318

Глава 17. Создание графики .................................................................................319
Установка pygame .......................................................................................................320
Привет, pygame! ..........................................................................................................320
Пример запуска pygame-программы «Привет, мир!» ..........................................321
Исходный код pygame-программы «Привет, мир!» ..............................................322
Импорт модуля pygame .............................................................................................323
Инициализация pygame...............................................................................................324
Настройка окна pygame ...............................................................................................324
Кортежи ................................................................................................................... 325
Объекты поверхности .......................................................................................... 326
Работа с цветом ...........................................................................................................326
Вывод текста в окне pygame .......................................................................................327
Использование шрифтов для оформления текста ....................................... 327
Рендеринг объекта Font........................................................................................ 328
Настройка местоположения текста с помощью атрибутов Rect............... 329
Заливка цветом объекта Surface..............................................................................331
Функции рисования pygame ....................................................................................332
Рисование многоугольника ................................................................................ 332
Рисование линии ................................................................................................... 333
Рисование круга ..................................................................................................... 333
Рисование эллипса ................................................................................................ 334
Рисование прямоугольника ................................................................................ 334
Окрашивание пикселей ....................................................................................... 335
Метод blit() для объектов Surface .........................................................................336
Вывод объекта Surface на экран ..............................................................................336
События и игровой цикл ..........................................................................................336
Получение объектов Event................................................................................... 337
Выход из программы ............................................................................................ 338
Заключение ...................................................................................................................338

Глава 18. Анимированная графика .....................................................................339
Пример запуска игры программы ..........................................................................339
Исходный код программы ........................................................................................339
Перемещение и контроль отскока блоков ............................................................342
Создание констант .....................................................................................................343
Константы для направлений .............................................................................. 344
Константы для цвета ............................................................................................ 345
Создание структуры данных блока ........................................................................345
Игровой цикл ..............................................................................................................346
Обработка решения игрока завершить игру ................................................. 346
Перемещение каждого блока .............................................................................. 347
Управление отскакиванием блока ..................................................................... 349
Отображение в окне блоков в новых положениях ....................................... 350
Отображение окна на экране ............................................................................. 350
Заключение ...................................................................................................................351

Глава 19. Обнаружение столкновений ................................................................352
Пример работы программы .....................................................................................353
Исходный код программы ........................................................................................353
Импорт модулей .........................................................................................................356
Использование объекта Clock для управления скоростью работы
программы ....................................................................................................................357
Настройка окна и структур данных .......................................................................357
Создание переменных для отслеживания перемещения ..................................359
Обработка событий ....................................................................................................359
Обработка события KEYDOWN ................................................................................ 361
Обработка события KEYUP .................................................................................... 363
Телепортация игрока .................................................................................................364
Добавление новых блоков «еды» ............................................................................364
Перемещение игрока по окну ..................................................................................365
Отображение блока игрока в окне .................................................................... 366
Проверка на столкновения ................................................................................. 366
Отображение блоков «еды» ......................................................................................367
Заключение ...................................................................................................................368

Глава 20. Использование звуков и изображений ..............................................369
Добавление изображений с помощью спрайтов ................................................369
Графические и звуковые файлы ..............................................................................370
Пример запуска игры .................................................................................................371
Исходный код программы ........................................................................................371
Настройка окна и создание структуры данных ..................................................375
Добавление спрайта .............................................................................................. 375
Изменение размера спрайта ............................................................................... 376
Установка музыки и звуков ......................................................................................376
Добавление аудиофайлов .................................................................................... 376
Включение/отключение звука ............................................................................ 377
Отображение спрайта игрока в окне .....................................................................378
Проверка на столкновения.......................................................................................378
Отображение спрайтов вишен в окне ...................................................................379
Заключение ...................................................................................................................380

Глава 21. Игра «Ловкач» с графикой и звуком ...................................................381
Обзор основных типов данных pygame...................................................................381
Пример запуска игры «Ловкач» ..............................................................................383
Исходный код игры «Ловкач» ..................................................................................383
Импорт модулей .........................................................................................................388
Создание констант .....................................................................................................389
Определение функций ...............................................................................................390
Завершение игры и добавление паузы ............................................................. 390
Отслеживание столкновений со злодеями ..................................................... 391
Отображение текста в окне................................................................................. 392
Инициализация pygame и настройка окна ..........................................................393
Установка шрифтов, изображений и звуков ........................................................394
Отображение начального экрана ............................................................................395
Начало игры .................................................................................................................396
Игровой цикл ..............................................................................................................398
Обработка событий клавиатуры ....................................................................... 398
Обработка событий мыши .................................................................................. 400
Добавление новых злодеев .......................................................................................401
Перемещение спрайтов игрока и злодеев .............................................................402
Реализация чит-кодов ...............................................................................................404
Удаление спрайтов злодеев.......................................................................................404
Отображение окна ......................................................................................................405
Отображение очков игрока ................................................................................ 405
Отображение спрайтов игрока и злодеев ....................................................... 406
Проверка на столкновения.......................................................................................406
Экран окончания игры ..............................................................................................407
Изменение игры «Ловкач» ........................................................................................408
Заключение ...................................................................................................................409

Предметный указатель .........................................................................................410