Учим Python, делая крутые игры 2018. Invent your owncomputer gameswith python
Скачать 6.56 Mb.
|
Глава 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 Оглавление 9 Выбор хода из списка.................................................................................................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.shuffl e() ........................................................................................................ 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 10 Оглавление Глава 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 Нахождение переданных строк с помощью строчного метода fi nd() ............................................................................................................. 256 Шифрование/расшифровка каждой буквы .................................................... 257 Запуск программы ......................................................................................................258 Полный перебор .........................................................................................................259 Добавление режима полного перебора .................................................................260 Заключение ...................................................................................................................261 Глава 15. Игра «Реверси» ......................................................................................263 Как играть в «Реверси» ..............................................................................................263 Пример запуска игры «Реверси» .............................................................................266 Исходный код игры «Реверси» ................................................................................268 Оглавление 11 Импорт модулей и создание констант ..................................................................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 12 Оглавление ИИ случайного хода ....................................................................................313 Проверка на граничные ходы ...................................................................314 ИИ лучшего углового-граничного хода .................................................314 Сравнение искусственных интеллектов .......................................................... 315 ИИ худшего хода против ИИ лучшего углового хода ........................315 ИИ случайного хода против ИИ лучшего углового хода ..................316 ИИ лучшего углового-граничного хода против ИИ лучшего углового хода ................................................................................................317 Заключение ...................................................................................................................318 |