Игра "Крестикинолики" на Пайтон
Скачать 73.02 Kb.
|
Муниципадбное общеобразовательное учреждение Средняя общеобразовательная школа №32 Индивидуальный учебный проект: по теме «Игра “Крестики-нолики” на Пайтон» Ученика 10 «Б» класса Макаров Илья Викторович. Руководитель проекта: учитель по индивидуальному проекту Ивашина Мария Михайловна. г. Энгельс 2022 г. Содержание. Введени Введение. 3 Что такое язык программирования Python? 4 Операторы и команды. 5 1.Display. 5 Список литературы. 12 Введение.Цель: научиться создавать сложные программы на языке программирования Пайтон. Задачи: 1)Понять какие программы могут нам пригодиться. 2)Изучить неизвестные команды. 3)Создать программу. Актуальность: В современном мире без навыков программирования человеку трудно, поэтому нам нужно изучить новые команды и научиться создавать программы посложнее. Гипотеза: Я считаю, что если ученики научатся самостоятельно совершенствоваться в создании программ, то это даст толчок к развитию его навыков в других предметах, а также поможет во взрослой жизни. Что такое язык программирования Python?Язык начал разрабатывать программист, Гвидо ван Россумом, в конце 1980- х. На тот момент он работал в центре математики и информатике в Нидерландах. Гвидо ван Россум увлекался работой с «железками» ещё со школьных лет, и хотя он не находил поддержки и одобрения у своих сверстников, это не помешало ему самостоятельно разработать язык программирования.Россум работал над Python в свободное время, в качестве основы он взял язык программирования ABC, в разработке которого когда-то участвовал. Старшеклассники уже давно знакомы с этим языком программирования и знают основные команды. Но для моей игры нужны будут некоторые из них, которые мы с вами еще не изучали. История создания игры. Крестики-нолики – знакомая каждому с детства игра, имеет древнюю историю. Никто точно не знает, где зародилось такое увлечение. Например, в римских поселениях II-III века н.э. были найдены доски, которые, возможно, предназначались для игры в крестики-нолики. Аналоги крестиков-ноликов есть в культурных традициях разных народов – известно, что подобной забавой развлекались древние викинги и даже отважные флибустьеры. В каждой стране игра имеет своё непереводное название, к примеру, в США её называют Tic-tac-toe. Кстати, в дореволюционной России, до орфографической реформы 1918 года эта игра называлась херики-оники, по названию букв алфавита: х – «херъ», о – «оно». Операторы и команды.1.Display.Модуль, используемый для управления окном и отображением экрана в Pygame. Этот модуль предоставляет различные функции для управления интерфейсом отображения Pygame (display). Pygame's Surface Объект может отображаться в виде окна или в полноэкранном режиме. Когда вы создаете и отображаете обычный Surface После объекта изменения на объекте не будут немедленно отражены на видимом экране.Вы должны выбрать функцию переворота, чтобы отобразить измененный экран.Отображаемое начало координат - это положение (x = 0, y = 0) и верхнего левого угла экрана. Ось координат увеличивается в правом нижнем углу. 2.Check_win и pygame.draw. check_win – функция проверки игрового поля, проверяет, выиграл ли игрок. Данная функция проверяет игровое поле. Мы создаем кортеж с выигрышными координатами и проходимся циклом for по нему. Если символы во всех трех заданных клетках равны – возвращаем выигрышный символ, иначе – возвращаем значение False. Непустая строка(выигрышный символ) при приведении ее к логическому типу вернет True.Функции модуля pygame.draw рисуют геометрические примитивы на поверхности – экземпляре класса Surface. В качестве первого аргумента они принимают поверхность. Поэтому при создании той или иной поверхности ее надо связать с переменной, чтобы потом было что передать в функции модуля draw. 3.Операторы if , else, elif Команда if в Python работает по той же схеме, что и в других языках программирования. Она содержит в себе логическое условие, и если это условие истинно (равно True) - выполнится блок кода, записанный внутри команды if. Если же логическое условие ложно (равно False), то блок кода записанный внутри команды if пропускается, а выполнение кода переходит на следующую после блока if строчку кодаВ конструкцию if может быть добавлена команда else. Она содержит блок кода, который выполняется, если условие в команде if ложно. Команда else является опциональной, в каждой if - конструкции может быть только одна команда else. Например: Рисунок 1. Пример цикла if ,else. Команда elif позволяет проверить истинность нескольких выражений и в зависимости от результата проверки выполнить нужный блок кода. Как и команда else, команда elif является опциональной, однако, в отличие от команды else, у одной if-конструкции может существовать произвольное количество команд elif. Например: Рисунок 2. Пример цикла elif. 4.Операторы def , for и while В Python цикл начинается с ключевого слова for, за которым следует произвольное имя переменной, которое будет хранить значения следующего объекта последовательности. Общий синтаксис for...in в python выглядит следующим образом: Рисунок 3. Пример цикла for. Элементы «последовательности» перебираются один за другим «переменной» цикла; если быть точным, переменная указывает на элементы. Для каждого элемента выполняется «действие». Оператор def создает объект и присваивает ему имя. Цикл while (“пока”) позволяет выполнять одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно заранее определить точно количество шагов. Синтаксис цикла while в простейшем случае выглядит так: Рисунок 4. конструкция цикла while. При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается и управление передается на следующую инструкцию после тела цикла while. Рисунок 5. Условие с циклом while. Создание игры. import pygame | необходимые модули для создания игры import random pygame.init() def draw_grid(scr): pygame.draw.line(scr, (0, 0, 0), (100, 0), (100, 300), 3) |разрисовка полей pygame.draw.line(scr, (0, 0, 0), (200, 0), (200, 300), 3) pygame.draw.line(scr, (0, 0, 0), (0, 100), (300, 100), 3) pygame.draw.line(scr, (0, 0, 0), (0, 200), (300, 200), 3) def draw_tic_tac_toe(scr, items): | for i in range(3): | как и куда двинется крестик или нолик for j in range(3): | if items[i][j] == "0": | pygame.draw.circle(scr, (255, 0, 0), (j * 100 + 50, i * 100 + 50), 45) elif items[i][j] == "x": pygame.draw.line(scr, (0, 0, 255), (j * 100 + 5, i * 100 + 5), (j * 100 + 95, i * 100 + 95), 3) pygame.draw.line(scr, (0, 0, 255), (j * 100 + 95, i * 100 + 5), (j * 100 + 5, i * 100 + 95), 3) def get_win_check(fd, symbol): flag_win = False for line in fd: if line.count(symbol) == 3: flag_win = True for i in range(3): if fd[0][i] == fd[1][i] == fd[2][i] == symbol: flag_win = True if fd[0][0] == fd[1][1] == fd[2][2] == symbol: flag_win = True if fd[0][2] == fd[1][1] == fd[2][0] == symbol: flag_win = True return flag_win SCREEN_SIZE = (300, 300) window = pygame.display.set_mode(SCREEN_SIZE) screen = pygame.Surface(SCREEN_SIZE) pygame.display.set_caption("Крестики-нолики") screen.fill((255, 255, 255)) field = [["", "", ""], ["", "", ""], ["", "", ""]] mainloop = True game_over = False while mainloop: for event in pygame.event.get(): if event.type == pygame.QUIT: mainloop = False if event.type == pygame.MOUSEBUTTONDOWN and not game_over: pos = pygame.mouse.get_pos() if field[pos[1] // 100][pos[0] // 100] == "": field[pos[1] // 100][pos[0] // 100] = "x" |выбор куда ставить боту x, y = random.randint(0, 2), random.randint(0, 2) while field[x][y] != "": x, y = random.randint(0, 2), random.randint(0, 2) field[x][y] = "0" player_win = get_win_check(field, "x") ai_win = get_win_check(field, "0") if player_win or ai_win: |оределение победителя game_over = True if player_win: pygame.display.set_caption("Вы победили") else: pygame.display.set_caption("Компьютер победил") elif field[0].count("x") + field[0].count("0") + field[1].count("x") + \ field[1].count("0") + field[2].count("x") + field[2].count("0") == 8: game_over = True pygame.display.set_caption("Ничья") draw_tic_tac_toe(screen, field) draw_grid(screen) window.blit(screen, (0, 0)) |вывод и запуск программы pygame.display.update() Заключение. Не секрет, что умение программировать считается наиважнейшим качеством во многих сферах человеческой жизни.Поэтому актуальной является необходимость изучения источников, улучшения своих навыков и использования их для создания программ. Таким образом, мы создали игру и выполнили все задачи проекта. Нужно понимать, что на этом нельзя останавливаться. Совершенствуйтесь, изучайте новые команды и пробуйте программировать на других языках, например C++ или Pascal. . Список литературы.Игры на Пайтон. pythonic way .- Электронный ресурс: режим доступа: http://pythonicway.com/python-games Дата обращения: 9.01.22 Функции в Пайтон: Фоксфорд .- Электронный ресурс : режим доступа : https://foxford.ru/wiki/informatika/funktsii-v-python Дата обращения: 21.12.21 Операторы в Пайтон: smartiqa .- Электронный ресурс : режим доступа : https://smartiqa.ru/courses/python/lesson-3 Дата обращения: 7.03.22 Операторы в Пайтон: MDN .- Электронный ресурс : режим доступа : https://developer.mozilla.org/ru/docs/Learn/JavaScript/Building_blocks/conditionals Дата обращения: 8.03.22 |