Разработка компьютерной игры "Танчики" - Программирование, компьютеры и кибернетика курсовая работа

Разработка компьютерной игры "Танчики" - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Разработка компьютерной игры "Танчики"

Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Государственное образовательное учреждение высшего профессионального образования
«Сибирская государственная автомобильно-дорожная академия
Факультет Информационные системы в управлении
Направление Информационная безопасность
Кафедра Информационная безопасность
Пояснительная записка к курсовой работе
по дисциплине «Языки программирования»
Название работы «Разработка компьютерной игры "Танчики"»
Выполнил: студента гр. БИб-13И1 Батова М.А.
Будние дни в большом городе. Шум на улицах, работа, вечные проблемы и заботы... И все это изо дня в день. Всем это рано или поздно надоедает, и у каждого возникает желание почувствовать себя свободным от все забот и проблем, хотя бы на несколько минут. Но не всегда получается выделить для отдыха большое количество времени. И тогда, на помощь "уставшим" приходят современные компьютеры. Они дают возможность "уйти" от "серых" будней и погрузиться в игровую реальность, которая дает возможность почувствовать себя свободным и не обремененным заботами, при этом не заставляя тратить время или деньги на дорогу, и всегда оставляя возможность максимально быстро вернуться к работе.
Каждому интересны определенные жанры игр, но никого не оставит равнодушным старая добрая игра "Battle city", так полюбившаяся как детям, так и взрослым еще в 90x годах. Но кому то мог надоесть старый режим игры. Или просто захотелось чего то нового. Тогда стоит попробовать создать свою игру, со старой графикой, но с новым смыслом. Такой игрой может стать игра "Танчики".
Можно с уверенностью утверждать, что разработка компьютерной игры "Танчики" на языке программирования Python актуальна по двум причинам:
1) "Python является развивающимся высокоуровневым объектно-ориентированным языком программирования, который, к тому же является кросс-платформенным"[1]. Изучение этого языка программирования поможет в дальнейшем саморазвитии.
2) "Battle City" - культовая игра своего времени. Её "наследнику" с трудом получится повторит успех "Battle city", но в тоже время, может вызвать волну ностальгии у людей старше 18, но с новой гаммой положительных чувств, что и необходимо, чтобы игра нашла свою целевую аудиторию.
Целью данной курсовой работы является создание компьютерной игры "Танчики".
1) Изучения языка программирования Python
Согласно официальной версии название языка произошло вовсе не от змеи. Создатель языка Гвидо ван Россум(Guido van Rossum) назвал свое творение в честь британского комедийного телешоу BBC "Monty Python's Flying Circus"("Летающий цирк Монти Пайтона"). Поэтому более правильно будет "Пайтон". Тем не менее, в России более привычно название "Питон".
Python - это интерпретируемый объектно-ориентированный язык программирования высокого уровня, предназначенный для самого широкого круга задач. С его помощью можно обрабатывать различные данные, создавать изображения, работать с базами данных, разрабатывать Web-сайты и приложения с графическим интерфейсом.
Python является кросс-платформенным языком, позволяющим создавать программы, которые будут работать во всех операционных системах.
Python является объектно-ориентированным языком. Это означает, что практически все данные являются объектами, даже сами типы данных. В переменной всегда сохраняется только ссылка на объект, а не сам объект. Например, можно создать функцию, сохранить ссылку на нее в переменной, а затем вызвать функцию через эту переменную. Данное обстоятельство делает язык Python идеальным инструментом для создания программ, использующих функции обратного вызова, например, при разработке графического интерфейса. Тот факт, что язык является объектно-ориентированным, отнюдь не означает, что ООП-стиль программирования является обязательным. На языке Python можно писать программы как в ООП-стиле, так и в процедурном.
Этот язык чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня, нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных (списки, словари, кортежи).
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) Условный оператор 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 обозначаются двумя способами:
# - все что в строке после этого символа является комментарием
"""все что между тройных кавычек является комментарием"""
Правила игры просты и заключаются в следующем:
1) Ваша главная задача: уничтожить всех противников.
2) Если все противники уничтожены, вы выиграли.
3) Если в вас попали, вы проиграли.
4) Для уничтожения танка достаточно одного попадания.
5) После окончания игры, по нажатию клавиши "Enter" игра начинается заново.
Далее будут показаны ключевые строки кода, и пояснения к ним. Большинство пояснений, для экономии места, написаны в коде в виде комментариев.
Любая программа написанная на 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): # Загружает уровень из файла уровня
if (not os.path.isfile(filename)): # Выходим из программы, если файла нет
data = f.read().split("\n") # data - массив строчек файла
self.tiles = [] """ Массив всех тайлов уровня(тайл - в данном случае, кирпич из которого строятся стенки уровня)"""
if ch == "#": """" Считываем символы из строчек; если символ - #, то добавляем тайл с нужными координатами""""
self.tiles.append(pygame.Rect(x, y, self.TILE_SIZE, self.TILE_SIZE))
def draw(self, tiles = None): # Рисует уровень
for tile in self.tiles: # Рисуем все тайлы
screen.blit(self.tile_image, tile.topleft)
Bullet - Класс пули. Каждая выстрелянная пуля - его экземпляр. Самая трудная задача при создании пули - это описать её движение и поведение при встрече с другими объектами. И эта задача решается в этом классе, с помощью функции update.
def update(self): # Перемещает пулю куда надо и обрабатывает столкновения
if self.state!= self.STATE_ACTIVE: # Проверяем, не уничтожена ли пуля
""" Перемещаем пулю; если пуля, выпущенная игроком, врезалась в края кадра, уничтожаем пулю"""
self.rect.topleft = [self.rect.left, self.rect.top - self.speed]
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):
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):
elif self.direction == self.DIR_LEFT:
self.rect.topleft = [self.rect.left - self.speed, self.rect.top]
""" Если пуля, выпущенная игроком, врезалась в часть уровня, уничтожаем пулю"""
collisions = self.rect.collidelistall(rects)
# Если пуля врезалась в пулю чужой стороны, уничтожаем её
if self.state == self.STATE_ACTIVE and bullet.owner_side!= self.owner_side and bullet!= self and self.rect.colliderect(bullet.rect):
""" Если в нашего игрока врезается пуля, сообщаем об этом объекту игрока с помощью функции bulletImpact и уничтожаем пулю"""
if player.state == player.STATE_ALIVE and self.rect.colliderect(player.rect):
player.bulletImpact(self.owner_side) """Переменная, передающаяся функции, показывает, какая сторона выпустила пулю"""
# Аналогично поступаем для каждого врага
if enemy.state== enemy.STATE_ALIVE and self.rect.colliderect(enemy.rect):
enemy.bulletImpact(self.owner_side)
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
opposite_direction = self.direction - 2
directions = all_directions # Массив, определяющий порядок перебора направлений
random.shuffle(directions) # Случайно перемешиваем его
directions.remove(opposite_direction) # Убираем противоположное текущему направление
directions.append(opposite_direction) # И вставляем его в конец массива (в последнюю очередь хочется разворачиваться)
if keep_direction: # Если надо сохранить направление
directions.insert(0, self.direction) # Вставляем его в начало массива направлений (теперь оно будет перебираться первым)
"""Вычисляем номер по горизонтали и по вертикали тайла, в котором находится левый верхний угол танка (при этом, если танк находится в восьмом и больше пикселе тайла, то безжалостное округление покажет на следующий тайл)"""
x = int(round(self.rect.left / 16))
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 # Если нет, принимаем направление за основное
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:
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:
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:
if new_direction == None: # Если направление так и не сгенерировалось
new_direction = opposite_direction # Сделаем разворот
self.rotate(new_direction) # Поворачиваем танк в выбранном направлении
positions = [] # Создаём массив пути, который будем наполнять позициями
# Теперь x и y - координаты левого верхнего угла нашего танка в пикселях
pixels = random.randint(1, 12) * 32 + 3 # Выбираем, насколько длинным будет наш путь в пикселях
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):
elif new_direction == self.DIR_DOWN:
for px in range(0, pixels, self.speed):
elif new_direction == self.DIR_LEFT:
for px in range(0, pixels, self.speed):
return positions # Возвращаем, что вышло
Player - класс танка игрока. Сам танк игрока, - его экземпляр. Класс наследует методы и переменные от общего класса Tank. Класс отвечает за создание танка игрока и его движение.
Game - главный класс программы. В нем инициализируется библиотека PyGame, создается окно программы, загружаются спрайты(сами картинки), загружается уровень, и из этого класса происходит управление игрой. Непосредственно загрузка уровня и управление игрой находятся в функции loadLevel.
def loadLevel(self): # Загружает уровень и управляет игрой
self.level = Level() # Создаём переменную уровня
self.level.enemies_left = 10 # Количество оставшихся врагов
self.reloadPlayer() # Загружаем игрока
gtimer.add(2000, lambda:self.spawnEnemy()) # Каждые 2 секунды создаем врагов
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: # Если просят выйти
elif event.type == pygame.KEYDOWN and not self.game_over: # Если нажали какую-то кнопку (и игра продолжается), обрабатываем нажатие
if player.state == player.STATE_ALIVE: # Если мы ещё живы
index = player.controls.index(event.key) # Пытаемся найти нажатую клавишу в массиве controls у игрока (там хранятся клавиши, отвечающие за управление танком)
except: # Если ничего не нашлось, забиваем
# Отмечаем нажатие клавиш-стрелок в массиве pressed у игрока
elif event.type == pygame.KEYUP and not self.game_over: # Если отпустили какую-то кнопку (и игра продолжается), обрабатываем это
if player.state == player.STATE_ALIVE: # Если мы ещё живы
index = player.controls.index(event.key) # Ищем клавишу в controls
except: # Если ничего не нашлось, пропускаем
else: # Если нашлось, отмечаем конец нажатия клавиш-стрелок в массиве pressed у игрока
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 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) # То игрок выиграл
enemy.move() # Двигаем всех живых противников
if not self.game_over: # Если игра не закончена
if player.state == player.STATE_DEAD: # А игрок мёртв
self.gameOver(False) # То игрок проиграл
if bullet.state == bullet.STATE_REMOVED:
bullets.remove(bullet) # Убираем неактивные пули из массива пуль
bullet.update() # Двигаем активные пули
gtimer.update(time_passed) # Обновляем все таймеры
self.draw() # Отрисовываем всё игровое поле
Для начала работы с программой нужно запустить файл tanks.pyw. Для запуска программы, на компьютере должен быть установлен интерпретатор языка Python, версии 3.x. Появится окно программы.(Рисунок 2.1)
Рисунок 2.1 - окно программы "Танчики"
Во время работы программы, максимальное количество танков на поле - 6 штук, включая сам танк игрока.(Рисунок 2.2)
В зависимости от исхода игры, на экран будет выведено сообщение.(Рисунки 2.3, 2.4)
В ходе выполнения курсовой работы были более подробно изучены и изложены в пояснительной записке следующие вопросы:
- Основная информация по языку Python.
- Ключевые алгоритмы и фрагменты программы, отвечающие за корректную работу программы.
- Разработка игры "Танчики" на языке Python.
Результатом работы является приложение-игра "Танчики", работающие на компьютере с любой ОС.(С установленным интерпретатором языка Python, версии 3.x)
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)
История развития языка программирования 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
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Разработка компьютерной игры "Танчики" курсовая работа. Программирование, компьютеры и кибернетика.
Курсовая работа по теме Анализ исполнения краевого бюджета на примере Алтайского края
Практическое задание по теме Вказівки, масиви і символьні рядки в мові C
Курсовая Работа На Тему Психологические Особенности Людей Пожилого Возраста
Реферат по теме Снайперы Второй мировой войны
Курсовая Работа На Тему Роль Коммерческих Банков В Экономике
Производственный Потенциал Реферат
Прохождение Практики В Мвд Дневник
Реферат: Экзистенциально-инициальная терапия Калфрида Дюркхайма
Реферат На Тему Классификация Семей В Современном Узбекистане В Зависимости От Своеобразия Их Педагогических Условий
Критерии Оценивания Курсовых Работ В Вузе
Реферат: Технология производства и товароведная оценка светлых сортов пива
Контрольные Работы По Информатике 18
Реферат по теме Классификация субъектов РФ по степени благоприятности природных условий
Сочинение Про Любимого Героя Из Сказок Пушкина
Сочинение: Алексей Константинович Толстой
Пример Сочинения 9.3 Русский Язык
Сочинение Рассуждение По Истории
Дипломная работа по теме Кадровый аудит в ОАО 'Социнвестбанк'
Анализ Книги На Тему Человек. Цивилизация. Общество
Реферат: Состояние машиностроения Украины
Организация процесса приготовления и приготовление сложной горячей кулинарной продукции на примере закусочной "Шашлычная" на 30 посадочных мест - Кулинария и продукты питания дипломная работа
Флеворобразующие вещества - Кулинария и продукты питания реферат
Бухгалтерский баланс и изменение его структуры - Бухгалтерский учет и аудит курсовая работа


Report Page