Разработка компьютерной игры "Танчики"
Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.12.2014 |
Размер файла | 160,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Государственное образовательное учреждение высшего профессионального образования
«Сибирская государственная автомобильно-дорожная академия
(СибАДИ)»
Факультет Информационные системы в управлении
Направление Информационная безопасность
Кафедра Информационная безопасность
Пояснительная записка к курсовой работе
по дисциплине «Языки программирования»
Название работы «Разработка компьютерной игры "Танчики"»
Выполнил: студента гр. БИб-13И1 Батова М.А.
Проверил преподаватель Любич С.А.
Омск 2014
Содержание
Введение
1. Язык программирования Python
1.1 Краткая информация о Python
1.2 Особенности Python
1.3 Синтаксис Python
2. Описание программы
2.1 Правила игры
2.1 Пояснение ключевых строк кода
2.2 Демонстрация работы программы
Заключение
Список используемых источников
Введение
Будние дни в большом городе. Шум на улицах, работа, вечные проблемы и заботы... И все это изо дня в день. Всем это рано или поздно надоедает, и у каждого возникает желание почувствовать себя свободным от все забот и проблем, хотя бы на несколько минут. Но не всегда получается выделить для отдыха большое количество времени. И тогда, на помощь "уставшим" приходят современные компьютеры. Они дают возможность "уйти" от "серых" будней и погрузиться в игровую реальность, которая дает возможность почувствовать себя свободным и не обремененным заботами, при этом не заставляя тратить время или деньги на дорогу, и всегда оставляя возможность максимально быстро вернуться к работе.
Каждому интересны определенные жанры игр, но никого не оставит равнодушным старая добрая игра "Battle city", так полюбившаяся как детям, так и взрослым еще в 90x годах. Но кому то мог надоесть старый режим игры. Или просто захотелось чего то нового. Тогда стоит попробовать создать свою игру, со старой графикой, но с новым смыслом. Такой игрой может стать игра "Танчики".
Можно с уверенностью утверждать, что разработка компьютерной игры "Танчики" на языке программирования Python актуальна по двум причинам:
1) "Python является развивающимся высокоуровневым объектно-ориентированным языком программирования, который, к тому же является кросс-платформенным"[1]. Изучение этого языка программирования поможет в дальнейшем саморазвитии.
2) "Battle City" - культовая игра своего времени. Её "наследнику" с трудом получится повторит успех "Battle city", но в тоже время, может вызвать волну ностальгии у людей старше 18, но с новой гаммой положительных чувств, что и необходимо, чтобы игра нашла свою целевую аудиторию.
Целью данной курсовой работы является создание компьютерной игры "Танчики".
Задачами курсовой работы являются:
1) Изучения языка программирования Python
2) Реализация игры "Танчики"
1. Язык программирования Python
1.1 Краткая информация о Python
Согласно официальной версии название языка произошло вовсе не от змеи. Создатель языка Гвидо ван Россум(Guido van Rossum) назвал свое творение в честь британского комедийного телешоу BBC "Monty Python's Flying Circus"("Летающий цирк Монти Пайтона"). Поэтому более правильно будет "Пайтон". Тем не менее, в России более привычно название "Питон".
Python - это интерпретируемый объектно-ориентированный язык программирования высокого уровня, предназначенный для самого широкого круга задач. С его помощью можно обрабатывать различные данные, создавать изображения, работать с базами данных, разрабатывать Web-сайты и приложения с графическим интерфейсом.
Python является кросс-платформенным языком, позволяющим создавать программы, которые будут работать во всех операционных системах.
Python является объектно-ориентированным языком. Это означает, что практически все данные являются объектами, даже сами типы данных. В переменной всегда сохраняется только ссылка на объект, а не сам объект. Например, можно создать функцию, сохранить ссылку на нее в переменной, а затем вызвать функцию через эту переменную. Данное обстоятельство делает язык Python идеальным инструментом для создания программ, использующих функции обратного вызова, например, при разработке графического интерфейса. Тот факт, что язык является объектно-ориентированным, отнюдь не означает, что ООП-стиль программирования является обязательным. На языке Python можно писать программы как в ООП-стиле, так и в процедурном.
Этот язык чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня, нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных (списки, словари, кортежи).
1.2 Особенности
1. Программы на языке Python представляет собой обычный текстовый файл. Из этого следует, что программу можно редактировать с помощью любого текстового редактора, например с помощью Notepad++.
2. Python - можно назвать самым стильным языком программирования в мире, не допускающим двоякого написания кода. Например, в языке Perl существует зависимость от контекста и синтаксиса. Часто два программиста, пишущих на Perl, не понимают код друг друга. В Python код можно написать только одним способом, так как в нем отсутствуют лишние конструкции. Более читаемого кода нет ни в одном другом языке программирования.
3. Python, в отличие от многих языков (Pascal, C++, Java, и т.д.), не требует описания переменных. Они создаются в месте их инициализации, т.е. при первом присваивании переменной какого-либо значения. Значит, тип переменной определяется типом присваиваемого значения. В этом отношении Python напоминает Basic.
Тип переменной не является неизменным. Любое присваивание для нее корректно и это приводит лишь к тому, что типом переменной становится тип нового присваиваемого значения.
4. В таких языках как Pascal, C, C++ организация списков представляла некоторые трудности. Для их реализации приходится хорошо изучать принципы работы с указателями и динамической памятью. И даже имея хорошую квалификацию, программист каждый раз заново реализуя механизмы создания, работы и уничтожения списков, мог легко допустить трудноуловимые ошибки. Ввиду этого были созданы некоторые средства для работы со списками. Например, в Delphi Pascal имеется класс TList, реализующий списки; для С++ разработана библиотека STL (Standard Template Library), содержащая такие структуры как векторы, списки, множества, словари, стеки и очереди. Однако такие средства имеются не во всех языках и их реализациях.
Одной из отличительных черт Python является наличие таких встроенных в сам язык структур как кортежи (tuple), списки (list) и словари (dictionary), которые иногда называют картами (map). Рассмотрим их по подробней:
Кортеж. Он чем-то напоминает массив: состоит из элементов и имеет строго определенную длину. Элементами могут быть любые значения - простые константы или объекты. В отличие от массива, элементы кортежа не обязательно однородны. А тем, что отличает кортеж от списка (list) является то, что кортеж не может быть изменен, т.е. мы не можем i-тому элементу кортежа присвоить что-то новое, и не можем добавлять новые элементы. Таким образом, кортеж можно назвать списком-константой. Синтаксически кортеж задается путем перечисления через запятую всех элементов, и все это заключено в круглые скобки, например: (1, 2,3)
Все элементы индексируются с нуля. Для получения i-го элемента необходимо указать имя кортежа затем индекс i в квадратных скобках.
Список. Хорошим, частным примером списка может служить строка (string) языка Turbo Pascal. Элементами строки являются одиночные символы, ее длина не фиксирована, имеется возможность удалять элементы или, напротив, вставлять их в любом месте строки. Элементами же списка могут быть произвольные объекты не обязательно одного и того же типа. Чтобы создать список, достаточно перечислить его элементы через запятую, заключив все это в квадратные скобки, например: [ 1, 2, 3 ]
В отличие от кортежа, списки можно модифицировать по своему желанию. Доступ к элементам осуществляется также как и в кортеже.
Словарь. Напоминает структуры (structure) в С. Однако, вместо схемы «поле записи»-«значение» здесь применяется «ключ»-«значение». Словарь представляет собой набор пар «ключ»-«значение». Здесь «ключ» - константа любого типа (но преимущественно применяются строки), он служит для именования (индексирования) некоторого соответствующего ему значения (которое можно менять). Словарь создается путем перечисления его элементов (пар "ключ"-"значение", разделенных двоеточием), через запятую и заключения всего этого в фигурные скобки. Для получения доступа к некоторому значению необходимо, после имени словаря, записать соответствующий ключ, например: { "x": 5, "у": 20 }
Для добавления новой пары "ключ"-"значение" достаточно присвоить элементу с новым ключом соответствующее значение:
5. Python в отличие от Pascal, C, C++ не поддерживает работу с указателями, динамической памятью и адресную арифметику. В этом он похож на Java. Как известно, указатели служат источником трудноуловимых ошибок, и работа с ними относится больше к программированию на низком уровне. Для обеспечения большей надежности и простоты они небыли включены в Python.
6. Если в таких языках как Basic, Pascal, C/C++ мы имели дело с переменными-«емкостями», и хранимыми в них константами (числовыми, символьными, строковыми - не суть важно), а операция присваивания означала «занесение» константы в присваиваемую переменную, то в Python мы уже должны работать с переменными-«именами» и именуемыми ими объектами. Что же такое объект в Python? Это все то, чему можно дать имя: числа, строки, списки, словари, экземпляры классов, сами классы, функции, модули и т.д. Так вот, при присваивании переменной некоторого объекта, переменная становится его "именем".
7. Весьма оригинальным является то, как в Python группируются операторы. В Pascal для этого служат операторные скобки begin-end, в C, C++, Java - фигурные скобки {}, в Basic применяются закрывающие окончания конструкций языка (NEXT, WEND, END IF, END SUB).
В языке Python все гораздо проще: выделение блока операторов осуществляется путем сдвига выделяемой группы на один или более пробелов (принято использовать 4 пробела) или символов табуляции вправо относительно заголовка конструкции, к которой и будет относиться данный блок.
Тем самым, хороший стиль записи программ, к которому призывают преподаватели языков Pascal, C++, Java и т.д., здесь приобретается с самого начала, поскольку по-другому просто не получится.
1.3 Синтаксис
Язык обладает чётким и последовательным синтаксисом, продуманной модульностью и масштабируемостью, благодаря чему исходный код написанных на Питоне программ легко читаем.
Набор операторов достаточно традиционен. Вот некоторые из них:
1) Условный оператор if (если). Альтернативный блок после else (иначе). Если условий и альтернатив несколько, можно использовать elif (сокр. от else if).
2) Операторы цикла while (пока) и for (для). Внутри цикла возможно применение break и continue для прерывания цикла и перехода сразу к следующей итерации соответственно.
3) Оператор определения класса class.
4) Оператор определения функции, метода или генератора def. Внутри возможно применение return (возврат) для возврата из функции или метода, а в случае генератора -- yield (давать).
5) Оператор обработки исключений try -- except -- else или try -- finally
6) Оператор pass ничего не делает. Используется для пустых блоков кода.
Комментарии в Python обозначаются двумя способами:
# - все что в строке после этого символа является комментарием
"""все что между тройных кавычек является комментарием"""
2. Описание программы
2.1 Правила игры
Правила игры просты и заключаются в следующем:
1) Ваша главная задача: уничтожить всех противников.
2) Если все противники уничтожены, вы выиграли.
3) Если в вас попали, вы проиграли.
4) Для уничтожения танка достаточно одного попадания.
5) После окончания игры, по нажатию клавиши "Enter" игра начинается заново.
2.2 Пояснение ключевых строк кода
Далее будут показаны ключевые строки кода, и пояснения к ним. Большинство пояснений, для экономии места, написаны в коде в виде комментариев.
Любая программа написанная на Python начинается с такой строки:
import os, pygame, time, random, uuid
Этой строкой мы загружаем необходимые модули и библиотеки. В нашем случае, это:
OS - Модуль предоставляет функции переносимого интерфейса к основным сервисам операционной системы, определяет некоторые переменные.
PyGame - набор библиотек языка Python, предназначенный для написания компьютерных игр и мультимедиа-приложений.
Time - модуль для работы со временем в Python.
Uuid - модуль обеспечивающий создание неизменяемого UUID (Universally Unique Identifier) объекта.
При создании игры был использован объектно-ориентированный стиль программирования. Поэтому вся программа делится на 5 основных классов, а также 2 класса наследника, и непосредственно главную функцию. В коде представлены такие классы как: Timer, Bullet, Level, Game, Tank и 2 наследника класса Tank: Enemy и Player.
Timer - класс, необходимый для запуска события через какое-то время или повторения через промежутки времени. В нем нет ничего примечательного, поэтому сам код этого класса можно будет увидеть в листинге.
Level - класс уровня. Переменная "level", передающаяся при инициализации почти всех остальных классов, - это экземпляр данного класса. Класс содержит функции загрузки уровня из файла и непосредственно рисования уровня в окно программы:
def loadLevel(self): # Загружает уровень из файла уровня
filename = "level"
if (not os.path.isfile(filename)): # Выходим из программы, если файла нет
quit()
f = open(filename, "r")
data = f.read().split("\n") # data - массив строчек файла
self.tiles = [] """ Массив всех тайлов уровня(тайл - в данном случае, кирпич из которого строятся стенки уровня)"""
x, y = 0, 0
for row in data:
for ch in row:
if ch == "#": """" Считываем символы из строчек; если символ - #, то добавляем тайл с нужными координатами""""
self.tiles.append(pygame.Rect(x, y, self.TILE_SIZE, self.TILE_SIZE))
x += self.TILE_SIZE
x = 0
y += self.TILE_SIZE
def draw(self, tiles = None): # Рисует уровень
global screen
for tile in self.tiles: # Рисуем все тайлы
screen.blit(self.tile_image, tile.topleft)
Bullet - Класс пули. Каждая выстрелянная пуля - его экземпляр. Самая трудная задача при создании пули - это описать её движение и поведение при встрече с другими объектами. И эта задача решается в этом классе, с помощью функции update.
def update(self): # Перемещает пулю куда надо и обрабатывает столкновения
global player, enemies, bullets
if self.state!= self.STATE_ACTIVE: # Проверяем, не уничтожена ли пуля
return
""" Перемещаем пулю; если пуля, выпущенная игроком, врезалась в края кадра, уничтожаем пулю"""
if self.direction == self.DIR_UP:
self.rect.topleft = [self.rect.left, self.rect.top - self.speed]
if self.rect.top < 0:
self.destroy()
return
elif self.direction == self.DIR_RIGHT:
self.rect.topleft = [self.rect.left + self.speed, self.rect.top]
if self.rect.left > (416 - self.rect.width):
self.destroy()
return
elif self.direction == self.DIR_DOWN:
self.rect.topleft = [self.rect.left, self.rect.top + self.speed]
if self.rect.top > (416 - self.rect.height):
self.destroy()
return
elif self.direction == self.DIR_LEFT:
self.rect.topleft = [self.rect.left - self.speed, self.rect.top]
if self.rect.left < 0:
self.destroy()
return
""" Если пуля, выпущенная игроком, врезалась в часть уровня, уничтожаем пулю"""
rects = self.level.tiles
collisions = self.rect.collidelistall(rects)
if collisions!= []:
self.destroy()
return
# Если пуля врезалась в пулю чужой стороны, уничтожаем её
for bullet in bullets:
if self.state == self.STATE_ACTIVE and bullet.owner_side!= self.owner_side and bullet!= self and self.rect.colliderect(bullet.rect):
self.destroy()
return
""" Если в нашего игрока врезается пуля, сообщаем об этом объекту игрока с помощью функции bulletImpact и уничтожаем пулю"""
if player.state == player.STATE_ALIVE and self.rect.colliderect(player.rect):
player.bulletImpact(self.owner_side) """Переменная, передающаяся функции, показывает, какая сторона выпустила пулю"""
self.destroy()
return
# Аналогично поступаем для каждого врага
for enemy in enemies:
if enemy.state== enemy.STATE_ALIVE and self.rect.colliderect(enemy.rect):
enemy.bulletImpact(self.owner_side)
self.destroy()
return
Tank - общий класс для танков игрока и противника. От него наследуются классы Player и Enemy. Все танки на поле, экземпляры этого класса. Этот класс задает "настройки по умолчанию" для остальных классов. В нем происходит рисовка танков, и контроль произведенных выстрелов.
Enemy - класс танков врага. Все танки кроме танка игрока, - его экземпляры. Класс наследует методы и переменные от общего класса Tank. Пожалуй, одна из основных функций игры находится именно в этом классе.
Эта функции отвечает за прокладку маршрута у противников, и называется generatePath.
def generatePath(self, keep_direction = False): """ Генерирует и возращает путь танка (в виде массива позиций). Если keep_direction == True, предпочтитает сохранять направление"""
all_directions = [self.DIR_UP, self.DIR_RIGHT, self.DIR_DOWN, self.DIR_LEFT] # Список направлений
# Вычисляем противоположное к текущему направление
if self.direction in [self.DIR_UP, self.DIR_RIGHT]:
opposite_direction = self.direction + 2
else:
opposite_direction = self.direction - 2
directions = all_directions # Массив, определяющий порядок перебора направлений
random.shuffle(directions) # Случайно перемешиваем его
directions.remove(opposite_direction) # Убираем противоположное текущему направление
directions.append(opposite_direction) # И вставляем его в конец массива (в последнюю очередь хочется разворачиваться)
if keep_direction: # Если надо сохранить направление
directions.remove(self.direction)
directions.insert(0, self.direction) # Вставляем его в начало массива направлений (теперь оно будет перебираться первым)
"""Вычисляем номер по горизонтали и по вертикали тайла, в котором находится левый верхний угол танка (при этом, если танк находится в восьмом и больше пикселе тайла, то безжалостное округление покажет на следующий тайл)"""
x = int(round(self.rect.left / 16))
y = int(round(self.rect.top / 16))
new_direction = None
for direction in directions: # Для каждого нашего направления
if direction == self.DIR_UP and y > 1: # (если граница кадра в этом направлении не очень близко)
new_pos_rect = self.rect.move(0, -8) # Мысленно сдвигаем в этом направлении наш танк на полтайла
if new_pos_rect.collidelist(self.level.tiles) == -1: # Проверяем, не врежемся ли мы в стенку при таком сдвиге
new_direction = direction # Если нет, принимаем направление за основное
break
elif direction == self.DIR_RIGHT and x < 24: # Дальше всё то же
new_pos_rect = self.rect.move(8, 0)
if new_pos_rect.collidelist(self.level.tiles) == -1:
new_direction = direction
break
elif direction == self.DIR_DOWN and y < 24:
new_pos_rect = self.rect.move(0, 8)
if new_pos_rect.collidelist(self.level.tiles) == -1:
new_direction = direction
break
elif direction == self.DIR_LEFT and x > 1:
new_pos_rect = self.rect.move(-8, 0)
if new_pos_rect.collidelist(self.level.tiles) == -1:
new_direction = direction
break
if new_direction == None: # Если направление так и не сгенерировалось
new_direction = opposite_direction # Сделаем разворот
self.rotate(new_direction) # Поворачиваем танк в выбранном направлении
positions = [] # Создаём массив пути, который будем наполнять позициями
# Теперь x и y - координаты левого верхнего угла нашего танка в пикселях
x = self.rect.left
y = self.rect.top
pixels = random.randint(1, 12) * 32 + 3 # Выбираем, насколько длинным будет наш путь в пикселях
if new_direction == self.DIR_UP:
for px in range(0, pixels, self.speed):
positions.append([x, y-px]) # Заполняем наш путь позициями с шагом, равным скорости танка
elif new_direction == self.DIR_RIGHT:
for px in range(0, pixels, self.speed):
positions.append([x+px, y])
elif new_direction == self.DIR_DOWN:
for px in range(0, pixels, self.speed):
positions.append([x, y+px])
elif new_direction == self.DIR_LEFT:
for px in range(0, pixels, self.speed):
positions.append([x-px, y])
return positions # Возвращаем, что вышло
Player - класс танка игрока. Сам танк игрока, - его экземпляр. Класс наследует методы и переменные от общего класса Tank. Класс отвечает за создание танка игрока и его движение.
Game - главный класс программы. В нем инициализируется библиотека PyGame, создается окно программы, загружаются спрайты(сами картинки), загружается уровень, и из этого класса происходит управление игрой. Непосредственно загрузка уровня и управление игрой находятся в функции loadLevel.
def loadLevel(self): # Загружает уровень и управляет игрой
global player, bullets
# Чистим переменные
del bullets[:]
del enemies[:]
del gtimer.timers[:]
self.level = Level() # Создаём переменную уровня
self.level.enemies_left = 10 # Количество оставшихся врагов
self.reloadPlayer() # Загружаем игрока
gtimer.add(2000, lambda:self.spawnEnemy()) # Каждые 2 секунды создаем врагов
self.game_over = False
self.running = True
self.draw() # Отрисовываем всё в первый раз
while self.running: # Главный игровой цикл выполняется, пока self.running == True
time_passed = self.clock.tick(50) # Ждём некоторое время (pygame автоматически определит, сколько надо ждать, чтобы FPS равнялся 50) и записываем в time_passed, сколько миллисекунд прошло с последнего тика часов
for event in pygame.event.get(): # Обрабатываем события pygame
if event.type == pygame.QUIT: # Если просят выйти
quit() # Выходим
elif event.type == pygame.KEYDOWN and not self.game_over: # Если нажали какую-то кнопку (и игра продолжается), обрабатываем нажатие
if player.state == player.STATE_ALIVE: # Если мы ещё живы
try:
index = player.controls.index(event.key) # Пытаемся найти нажатую клавишу в массиве controls у игрока (там хранятся клавиши, отвечающие за управление танком)
except: # Если ничего не нашлось, забиваем
pass
else: # Если нашлось, обрабатываем
if index == 0: # Пробел
player.fire()
# Отмечаем нажатие клавиш-стрелок в массиве pressed у игрока
elif index == 1:
player.pressed[0] = True
elif index == 2:
player.pressed[1] = True
elif index == 3:
player.pressed[2] = True
elif index == 4:
player.pressed[3] = True
elif event.type == pygame.KEYUP and not self.game_over: # Если отпустили какую-то кнопку (и игра продолжается), обрабатываем это
if player.state == player.STATE_ALIVE: # Если мы ещё живы
try:
index = player.controls.index(event.key) # Ищем клавишу в controls
except: # Если ничего не нашлось, пропускаем
pass
else: # Если нашлось, отмечаем конец нажатия клавиш-стрелок в массиве pressed у игрока
if index == 1:
player.pressed[0] = False
elif index == 2:
player.pressed[1] = False
elif index == 3:
player.pressed[2] = False
elif index == 4:
player.pressed[3] = False
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN and self.game_over: # А если у нас конец игры, и нажимается Enter
return # Завершаем цикл (после этого запустится новая игра)
if player.state == player.STATE_ALIVE and not self.game_over: # Если мы живы, и игра продолжается, обрабатываем нажатые стрелки
if player.pressed[0] == True:
player.move(self.DIR_UP);
elif player.pressed[1] == True:
player.move(self.DIR_RIGHT);
elif player.pressed[2] == True:
player.move(self.DIR_DOWN);
elif player.pressed[3] == True:
player.move(self.DIR_LEFT);
for enemy in enemies:
if enemy.state == enemy.STATE_DEAD and not self.game_over:
enemies.remove(enemy) # Убираем всех мёртвых врагов из массива врагов
if self.level.enemies_left == 0 and len(enemies) == 0: # Если на поле никого нет и создавать тоже больше не надо
self.gameOver(True) # То игрок выиграл
else:
enemy.move() # Двигаем всех живых противников
if not self.game_over: # Если игра не закончена
if player.state == player.STATE_DEAD: # А игрок мёртв
self.gameOver(False) # То игрок проиграл
for bullet in bullets:
if bullet.state == bullet.STATE_REMOVED:
bullets.remove(bullet) # Убираем неактивные пули из массива пуль
else:
bullet.update() # Двигаем активные пули
gtimer.update(time_passed) # Обновляем все таймеры
self.draw() # Отрисовываем всё игровое поле
2.3 Демонстрация работы программы
Для начала работы с программой нужно запустить файл tanks.pyw. Для запуска программы, на компьютере должен быть установлен интерпретатор языка Python, версии 3.x. Появится окно программы.(Рисунок 2.1)
Рисунок 2.1 - окно программы "Танчики"
Во время работы программы, максимальное количество танков на поле - 6 штук, включая сам танк игрока.(Рисунок 2.2)
Рисунок 2.2 - ход игры
В зависимости от исхода игры, на экран будет выведено сообщение.(Рисунки 2.3, 2.4)
Рисунок 2.3 - Победа
Рисунок 2.4 - Поражение
Заключение
В ходе выполнения курсовой работы были более подробно изучены и изложены в пояснительной записке следующие вопросы:
- Основная информация по языку Python.
- Ключевые алгоритмы и фрагменты программы, отвечающие за корректную работу программы.
- Разработка игры "Танчики" на языке Python.
Результатом работы является приложение-игра "Танчики", работающие на компьютере с любой ОС.(С установленным интерпретатором языка Python, версии 3.x)
Список использованных источников
компьютерная игра танчики python
1. Прохоренок Н.А. Python 3 и PyQt. Разработка приложений. - СПб.: БХВ-Петербург, 2014. - 704 с.
2. Владимир Слав. Программирование аркадных игры и обучение информатике [Электронный ресурс] - Электрон. дан. - Режим доступа: http://programarcadegames.com.(дата обращения: 03.05.14)
3. Development for fun [Электронный ресурс] - Электрон. дан. - Режим доступа: http://devel.ownport.net.(дата обращения: 07.05.14)
4. Python [Электронный ресурс] - Электрон. дан. - Режим доступа: https://www.python.org. (дата обращения: 05.05.14)
5. PyGame [Электронный ресурс] - Электрон. дан. - Режим доступа: http://www.pygame.org. (дата обращения: 03.05.14)
Размещено на Allbest.ru
Подобные документы
История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.
курсовая работа [168,1 K], добавлен 27.09.2013Разработка и реализация компьютерной игры "Змейка" с помощью языка программирования Pascal и модуля CRT. Составление общего алгоритма программы, выделение ее функциональных частей. Разработка тестовых примеров. Использование типизированных файлов.
курсовая работа [2,1 M], добавлен 23.02.2011Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.
реферат [51,9 K], добавлен 18.01.2015Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.
курсовая работа [3,1 M], добавлен 27.02.2015Приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта. Разработка кроссплатформенной компьютерной игры "Морской бой". Принципы "хорошего стиля программирования C++/Qt". Описание классов игры.
курсовая работа [2,7 M], добавлен 12.08.2014Методика и основные этапы разработки стратегической игры, ее элементы и принцип работы программы. Порядок построения информационной модели. Диаграмма потоков данных и действий. Выбор языка программирования и его обоснование. Критерии качества среды.
курсовая работа [3,5 M], добавлен 11.12.2012Ознакомление с понятием компьютерных игр и их основными жанрами. Выбор сюжета игры и среды программирования. Отрисовка графики; проведение функционального и интерфейсного тестирования программы. Анализ условий труда в данной компьютерной лаборатории.
дипломная работа [3,2 M], добавлен 13.07.2014Общая характеристика языков программирования. Краткий обзор C, C++, Java, PHP, Python, Delphi и Visual Basic. Процесс разработки программы игра "Крестики и нолики" с помощью AppWizard. Компиляция и компоновка модулей, определение интерфейса приложения.
курсовая работа [2,5 M], добавлен 27.05.2014Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.
дипломная работа [2,9 M], добавлен 07.04.2019