Файл: Игра 3 в ряд на языке Python по дисциплине Языки и системы программирования. Данная программа осуществляет вывод на экран случайным образом расположенных объектов разного цвета и дальнейшие варианты их взаимодействия.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 940
Скачиваний: 20
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рисунок 2.4. Эффект победы.Проигрывание эффекта поражения если количество очков меньше GOAL_SCORE:
Рисунок 2.5. Эффект проигрыша.2.4. Графическая часть программыВ данном разделе осуществлён разбор программного кода модуля draw.py с последующим описанием основных функций.После запуска программы происходит загрузка основных файлов игры из папки images.Всего в папке находится 7 файлов, 6 файлов являются изображениями плиток, firetransparent является изображением логотипа приложения.
Далее идёт открытие игрового окна, для которого устанавливается размер, иконка приложения и название.
Устанавливается размер в пикселях.
Прорисовывается игровое поле, для которого устанавливается белый цвет, а также устанавливается правая часть поля с игровым интерфейсом.
Текстовая честь интерфейса, содержащая надписи количества очков, которые нужно набрать, количества ходов, количества набранных очков, формулы подсчёта очков.
Прорисовка игровых плиток:
Прорисовка выделения плитки:
Прорисовка эффектов выигрыша и проигрыша:
Прорисовка эффекта комбинаций от 2 до 5:
Рисунок 2.6.Эффект при двух подряд собраных цепочках.2.5. Отладка программыОтладка, или debugging - это поиск (локализация), анализ и устранение ошибок в программном обеспечении, которые были найдены во время тестирования.Виды ошибок:1. Ошибки компиляцииЭто простые ошибки, которые в компилируемых языках программирования выявляет компилятор (программа, которая преобразует текст на языке программирования в набор машинных кодов). Если компилятор показывает несколько ошибок, отладку кода начинают с исправления самой первой, так как она может быть причиной других.В интерпретируемых языках (например Python) текст программы команда за командой переводится в машинный код и сразу исполняется. К моменту обнаружения ошибки часть программы уже может исполниться.2. Ошибки компоновкиОшибки связаны с разрешением внешних ссылок. Выявляет компоновщик (редактор связей) при объединении модулей программы. Простой пример - ситуация, когда требуется обращение к подпрограмме другого модуля, но при компоновке она не найдена. Ошибки также просто найти и устранить.3. Ошибки выполнения (RUNTIME Error)Ошибки, которые обнаруживают операционная система, аппаратные средства или пользователи при выполнении программы. Они считаются непредсказуемыми и проявляются после успешной компиляции и компоновки. Можно выделить четыре вида проявления таких ошибок:
Методы отладки программного обеспечения1. Метод ручного тестированияОтладка программы заключается в тестировании вручную с помощью тестового набора, при работе с которым была допущена ошибка. Несмотря на эффективность, метод не получится использовать для больших программ или программ со сложными вычислениями. Ручное тестирование применяется как составная часть других методов отладки.2. Метод индукцииВ основе отладки системы - тщательный анализ проявлений ошибки. Это могут быть сообщения об ошибке или неверные результаты вычислений. Например, если во время выполнения программы завис компьютер, то, чтобы найти фрагмент проявления ошибки, нужно проанализировать последние действия пользователя. На этапе отладки программы строятся гипотезы, каждая из них проверяется. Если гипотеза подтвердилась, информация об ошибке детализируется, если нет - выдвигаются новые.3. Метод дедукцииСначала специалисты предлагают множество причин, по которым могла возникнуть ошибка. Затем анализируют их, исключают противоречащие имеющимся данным. Если все причины были исключены, проводят дополнительное тестирование. В обратном случае наиболее вероятную причину пытаются доказать.4. Метод обратного прослеживанияЭффективен для небольших программ. Начинается с точки вывода неправильного результата. Для точки выдвигается гипотеза о значениях основных переменных, которые могли привести к ошибке. Далее на основании этой гипотезы строятся предположения о значениях переменных в предыдущей точке. Процесс продолжается до момента, пока не найдут ошибку. [12]2.6. Тестирование программыТестирование программы - это этап, на котором проверяется, как ведет себя программа на как можно большем количестве входных наборов данных, в том числе и на заведомо неверных.В разное время и в различных источниках тестированию давались различные определения, в том числе:
Существует несколько признаков, по которым принято производить классификацию видов тестирования. Обычно выделяют следующие:
| else: draw.lose() sound.play_effect(«lose») gameover_displayed = True pygame.display.flip() |
| def load_images(): image_names = [«fire», «air», «water», «earth», «light», «dark», «fire_transparent»] for i in range(len(image_names)): file_path = «images/» + image_names[i] + «.png» image_dict[image_names[i]] = pygame.image.load(file_path) |
| def create_screen(grid_width, grid_height, box_length): global BOX_LENGTH, screen BOX_LENGTH = box_length load_images() window_icon = image_dict[«fire_transparent»] pygame.display.set_icon(window_icon) pygame.display.set_caption(«Element Crush») screen = pygame.display.set_mode((BOX_LENGTH*(grid_width+2), BOX_LENGTH*grid_height)) return screen |
| def to_pixels(x): return x*BOX_LENGTH |
| def window (board, turns_left, score, goal_score): screen.fill((255, 255, 255)) #Clears the screen to all white draw_sidebar(turns_left, score, goal_score) draw_board(board) |
| def draw_sidebar(turns_left, score, goal_score): font = pygame.font.SysFont(«Times New Roman», 40) text = font.render(«Goal:», True, (205,133,63)) screen.blit(text, (to_pixels(7.25), to_pixels(0))) pygame.draw.line(screen, (205,133,63), (to_pixels(7), to_pixels(0.6)), (to_pixels(8.75),to_pixels(0.6)), 1) text = font.render(str(goal_score), True, (205,133,63)) screen.blit(text, (to_pixels(7.4), to_pixels(0.6))) text = font.render(«Turns», True, (0,0,0)) screen.blit(text, (to_pixels(7.2), to_pixels(1.5))) text = font.render(«Left:», True, (0,0,0)) screen.blit(text, (to_pixels(7.3), to_pixels(2))) pygame.draw.line(screen, (0,0,0), (to_pixels(7), to_pixels(2.6)), (to_pixels(8.75),to_pixels(2.6)), 1) text = font.render(str(turns_left), True, (0,191,255)) screen.blit(text, (to_pixels(7.5), to_pixels(2.6))) text = font.render(«SCORE:», True, (0,0,255)) screen.blit(text, (to_pixels(7), to_pixels(3.5))) pygame.draw.line(screen, (0,0,255), (to_pixels(7), to_pixels(4.1)), (to_pixels(8.9),to_pixels(4.1)), 1) offset = 0 if score >= 100: offset = -0.3 elif score >= 10: offset = -0.15 text = font.render(str(score), True, (255,0,0)) screen.blit(text, (to_pixels(7.75 + offset), to_pixels(4.1))) text = font.render(«Scoring:», True, (0,0,0)) screen.blit(text, (to_pixels(7), to_pixels(5))) pygame.draw.line(screen, (0,0,0), (to_pixels(7), to_pixels(5.6)), (to_pixels(8.9),to_pixels(5.6)), 1) font = pygame.font.SysFont(«Times New Roman», 12) text = font.render(«Elements Matched in a Turn», True, (0,0,0)) screen.blit(text, (to_pixels(7), to_pixels(5.7))) text = font.render(«X», True, (0,0,0)) screen.blit(text, (to_pixels(7.8), to_pixels(5.9))) text = font.render(«Turn Combo Count», True, (0,0,0)) screen.blit(text, (to_pixels(7.25), to_pixels(6.1))) |
| def draw_icon(num, x, y): icon = None x = to_pixels(x)+3 #box = 70x70, images are 64x64, pixel offset to center y = to_pixels(y)+3 if num == 1: icon = image_dict[«water»] elif num == 2: icon = image_dict[«fire»] elif num == 3: icon = image_dict[«air»] elif num == 4: icon = image_dict[«earth»] elif num == 5: icon = image_dict[«light»] elif num == 6: icon = image_dict[«dark»] if num != 0: screen.blit(icon, (x,y)) |
| def selected(x, y): x = to_pixels(x) y = to_pixels(y) rect = pygame.Rect(x, y, BOX_LENGTH, BOX_LENGTH) pygame.draw.rect(screen, (255,0,0), rect, 3) |
| def win(): center_msg(«WIN!») def lose(): center_msg(«LOSE») def center_msg(msg): color = (0,0,0) if msg == «WIN!»: color = (0,255,0) elif msg == «LOSE»: color = (255,0,0) rect = pygame.Rect(to_pixels(2), to_pixels(3), to_pixels(3), to_pixels(2)) pygame.draw.rect(screen, (255,255,255), rect, 0) pygame.draw.rect(screen, color, rect, 4) font = pygame.font.SysFont(«Times New Roman», 70) text = font.render(«YOU», True, color) screen.blit(text, (to_pixels(2.4), to_pixels(3))) text = font.render(msg, True, color) screen.blit(text, (to_pixels(2.4), to_pixels(4))) |
Прорисовка эффекта комбинаций от 2 до 5:
| def combo_msg(combo_count): msg = «« color = (0,0,0) x = 0.1 if combo_count >= 5: color = (255,0,0) msg = «LEGENDARY» elif combo_count == 4: color = (255,0,255) msg = «EPIC» x = 2.25 elif combo_count == 3: color = (0,255,255) msg = «TRIPLE» x = 1.65 elif combo_count == 2: color = (0,255,0) msg = «DOUBLE» x = 1.2 |
-
Сообщение об ошибке, которую зафиксировали схемы контроля машинных команд. Это может быть переполнение разрядной сетки (когда старшие разряды результата операции не помещаются в выделенной области памяти), «деление на ноль», нарушение адресации и другие; -
Сообщение об ошибке, которую зафиксировала операционная система. Она же, как правило, и документирует ошибку. Это нарушение защиты памяти, отсутствие файла с заданным именем, попытка записи на устройство, защищенное от записи; -
Прекращение работы компьютера или зависание. Это и простые ошибки, которые не требуют перезагрузки компьютера, и более сложные, когда нужно выключать ПК; -
Получение результатов, которые отличаются от ожидаемых. Программа работает стабильно, но выдает некорректный результат, который пользователь воспринимает за истину.
Методы отладки программного обеспечения1. Метод ручного тестированияОтладка программы заключается в тестировании вручную с помощью тестового набора, при работе с которым была допущена ошибка. Несмотря на эффективность, метод не получится использовать для больших программ или программ со сложными вычислениями. Ручное тестирование применяется как составная часть других методов отладки.2. Метод индукцииВ основе отладки системы - тщательный анализ проявлений ошибки. Это могут быть сообщения об ошибке или неверные результаты вычислений. Например, если во время выполнения программы завис компьютер, то, чтобы найти фрагмент проявления ошибки, нужно проанализировать последние действия пользователя. На этапе отладки программы строятся гипотезы, каждая из них проверяется. Если гипотеза подтвердилась, информация об ошибке детализируется, если нет - выдвигаются новые.3. Метод дедукцииСначала специалисты предлагают множество причин, по которым могла возникнуть ошибка. Затем анализируют их, исключают противоречащие имеющимся данным. Если все причины были исключены, проводят дополнительное тестирование. В обратном случае наиболее вероятную причину пытаются доказать.4. Метод обратного прослеживанияЭффективен для небольших программ. Начинается с точки вывода неправильного результата. Для точки выдвигается гипотеза о значениях основных переменных, которые могли привести к ошибке. Далее на основании этой гипотезы строятся предположения о значениях переменных в предыдущей точке. Процесс продолжается до момента, пока не найдут ошибку. [12]2.6. Тестирование программыТестирование программы - это этап, на котором проверяется, как ведет себя программа на как можно большем количестве входных наборов данных, в том числе и на заведомо неверных.В разное время и в различных источниках тестированию давались различные определения, в том числе:
-
Процесс выполнения программы с целью нахождения ошибок; -
Интеллектуальная дисциплина, имеющая целью получение надежного программного обеспечения без излишних усилий на его проверку; -
Техническое исследование программы для получения информации о её качестве с точки зрения определённого круга заинтересованных лиц; -
Проверка соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выполненных определённым образом; -
Процесс наблюдения за выполнением программы в специальных условиях и вынесения на этой основе оценки каких-либо аспектов её работы; -
Процесс, имеющий целью выявление ситуаций, в которых поведение программы является неправильным, нежелательным или не соответствующим спецификации; -
Процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и для определения дефектов.
Существует несколько признаков, по которым принято производить классификацию видов тестирования. Обычно выделяют следующие:
-
По объекту тестирования