Институт информационных технологий 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Институт информационных технологий



Институт информационных технологий

 

Специальность ПОИТ

 

КУРСОВОЙ ПРОЕКТ

 

По курсу: «ОСиСП»

Тема: Игровая программа «ТetrisМу_0.1»

 

Выполнил(а):

студент(ка) гр.281021

Курнакина В.А.

 

 

Проверил(а):

Лашкевич Е.М.

 

 

 
Минск, 2014

СОДЕРЖАНИЕ

 

Введение………………………………………………………………..………………………  
1.Объектно-ориентированный анализ ……………………………………………………….  
1.1 Сущность задачи…………………………………………………..……………………  
1.2 Сущность и элементы………………………………………………..…………………  
2.Системное проектирование...……………………………………………………………….  
2.1 Требования к аппаратным и операционным ресурсам………………………………  
2.2 Инструменты разработки………………………………………………………………  
3. Функциональное проектирование……………………………………………………...….  
3.1. Требования к приложению………………………………………………………....…  
3.2 Организация данных……………………………………………………………………  
3.3 Функции и элементы управления…………………………………………………..…  
3.4 Проектирование справочной системы приложения……………………………..…..  
4.Разработка программных модулей….…………………………….………………….……  
4.1 Общие сведения…………………………………………………………………..…….  
4.2 Экранные формы……………………………………………………………….…..…..  
4.3 Справочная система……….…………………………………………………...……….  
5.Программа и методика испытаний……………………………………………..………..…  
5.1 Технические требования…………………………………………………...…………..  
5.2 Общие сведения о методике испытаний…………………………………………...…  
5.3 Функциональное тестирование…………………………………………………..……  
5.4 Полное тестирование……………………………………………………………...……  
6. Руководство пользователя……………………….…………………………………..…..…  
6.1 Условия применения…………………….….…………………………………...……..  
6.2 Элементы управления…………………….………………………………...………….  
Заключение……………………………………………………………………………………..  
Список использованных источников………………………………………..……………….  
Приложение А (Обязательное)Модель данных………………………………..…………….  
Приложение Б (Обязательное)Диаграмма классов………………………………..………...  
Приложение В (Обязательное)Структурная схема………………………..………………...  
Приложение Г (Обязательное)Схема работы программы…………………..........................  
Приложение Д (Обязательное)Диаграмма последовательности………………………...…  
Приложение Е (Обязательное)Листинг программы………………………………….…..…  
   
   
   
   
   

 

ВВЕДЕНИЕ

Многие наверняка помнят игрушку, называемую тетрис, ранее используемую на игровых приставках.

В сегодняшнем мире, с учётом развития компьютерных технологий, этой игрушке даётся новая жизнь, таким образом, целью данной курсовой работы будет разработка игровой программы «ТetrisМу_0.1». Новой программы, сохраняющей старые традиции.

Разработка, данной программы, будет проходить с учётом следующих задач:

-Проведение объектно-ориентированного анализа, который предусматривает рассмотрениесущности задачи и сущности и элементов.

-Системное проектирование, раздел в котором будут рассмотрены требования к аппаратным и операционным ресурсам, а так же инструменты разработки.

- Функциональное проектирование, будет включать в себя:

а) требования к приложению,

б) организацию логических данных, представленной в виде модели данных, и физических данных,

в) функции и элементы управления,

г) а так же проектирование справочной системы приложения.

- Описание программного средства будет состоять из:

а) общих сведений о программе,

б) экранных форм, которые должны будут соответствовать требованиям к интерфейсу,

в) справочной системы.

- Методика испытаний, включающая, технические требования,функциональное тестирование, общие сведения о методике испытаний и полное тестирование.

- Руководство пользователя: которое будет включать условия применения и элементы управления.

- Так же будут построена схема работы программы, показывающая, ход её выполнения и возможности её функций.

- Помимо этого, будут построены диаграмма классов, и диаграмма последовательности, разъясняющие диалог программы с пользователем.

 

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ АНАЛИЗ

 

Сущность задачи

«Игровая программа “TetrisMy_0.1”» может рассматриваться как самостоятельная программа.

Она должна располагать следующими функциями:

- Запуском новой игры.

- Справкой.

- Вызовом окна сведений о программе.

- Таблицей рекордов.

- Обеспечивать выход из приложения.

- Обеспечивать перемещение игровых объектов при помощи клавиатуры.

- Обеспечивать лёгкий доступ к вышеперечисленным функциям через меню.

Результатом разработки должна стать программа, обладающая следующими характеристиками:

- удобный, понятный интерфейс;

- совместимость с различными операционными системами;

- компактность;

- удобная справочная система;

- не требует большого количества системных ресурсов.

 

Сущность и элементы

Цель игры — заполнить как можно больше линий блоками тетрамино, не достигнув верхней части экрана. Все заполняемые линии будут удаляться. Игра, теоретически, является бесконечной, а практически — рано или поздно конец игры неминуемо настанет[1].

Различают несколько типов юнитов:

Куб — самый простой юнит.

Прописная буква «г» — 2 юнита, зеркально различающихся друг с другом.

Буквы Г и L - они же сапог левый и сапог правый соответственно

Палка — единственный юнит, который может уничтожить 4 ряда.

Данные игровые объекты перемещаются, таким образом, чтобы образовать линии. После того как, последний юнит закончит линию, она уничтожается, а выше стоящие объекты смещаются вниз.

Если юниты заполнят всю игровую область, то игра закончится.

 

СИСТЕМНОЕ ПРОЕКТИРОВАНИЕ

 

Требования к аппаратным и операционным ресурсам

 

Для корректной работы программы необходимы следующие ресурсы:

- процессор: Pentium II и выше;

- объем оперативной памяти: 64 Мбайт и выше.

Оптимальные требования, которым должен соответствовать компьютер для того, чтобы на нем работала данная программа, а пользователь чувствовал себя комфортно, следующие:

- процессор AMD Duron(tm);

- 256МБ оперативной памяти, из которых должно быть свободно около 150М;

- монитор жидкокристаллический для качественного и безопасного для зрения зрительного восприятия отображаемой информации;

- винчестер 20ГБ;

- 5 МБ пространства на жестком или гибком диске для самой исполняемой программы;

- ОС Windows XP/7.

Функционирование программы на ПЭВМ, характеристики которой удовлетворяют этим требованиям, приведет к ускорению обработки данных приложением и повышению удобства и эффективности его использования.

 

Инструменты разработки

Для реализации курсового проекта выбрана среда программирования Microsoft Visual C++ 2013.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя:

- редактор форм для упрощения создания графического интерфейса приложения,

- дизайнер классов и дизайнер схемы базы данных.

Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и Visual SourceSafe), добавление новых наборов инструментов.

Например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

Распространяемые пакеты Visual C++ устанавливают компоненты среды выполнения библиотек Visual C++, необходимые для выполнения приложений, разработанных с помощью Visual Studio 2013, на компьютере, где не установлена среда Visual Studio 2013. Эти пакеты устанавливают компоненты среды выполнения библиотек C Runtime (CRT), Standard C++, ATL, MFC, C++ AMP и OpenMP [2].

 

 


 

Требования к приложению

 

Разрабатываемое приложение, не будет требовать, каких либо средств защиты, так как это пробная версия, которая, к тому же, должна быть общедоступной.

При проектировании приложения должны быть приняты во внимание следующие требования:

- система должна нормально функционировать на стандартных персональных компьютерах клона IBM с процессором Intel486SX (минимальные требования);

- архитектура системы должна быть выбрана таким образом, чтобы минимизировать вероятность нарушения штатного режима работы системы (выход системы из строя, потери или искажение информации) при случайных или сознательных некорректных действиях пользователей[3];

- основная программная оболочка должна иметь интуитивно ясный интерфейс и не должна требовать от пользователей специальной подготовки, не связанной с их профессиональными обязанностями[4].

Основная задача рассматриваемой системы - это максимально упростить и ускорить работу пользователя. Главное требование - это простота и надежность.

Интерфейс управления должен включать:

- пользовательское меню, обеспечивающее простой доступ ко всем компонентам приложения;

- экранные формы, посредством которых выполняется основная работа программы;

Общие интерфейс программы должен быть понятным, ориентированным на стандартного пользователя со средним уровнем функциональной компьютерной грамотности, помимо этого он должен быть удобен и не раздражать глаза.

При создании приложений особую роль играют формы, так как они являются основным диалоговым средством работы пользователя. Формы в приложении должны быть выполнены:

- в едином стиле и цветовой гамме;

- формы не должны быть перегружены информацией;

- формы не должны иметь изменяемых границ.

 

Организация данных

Физическая структура данных в контексте среды разработки организована при помощи файлов со следующими расширениями:

 

Таблица 1-Физическая структура данных

Расширение файла type Содержимое
EXE, DLL Project Исполняемые файлы или файлы библиотек.
H Исходный код Файл заголовка.
BMP, DIB, GIF, JPG, JPE, PNG Ресурс Файлы изображений общего характера.
ICO Ресурс Растровый графический файл значка.
SLN Решение Файл решения.
SUO Решение Файл параметров решения.
TXT Ресурс Текстовый файл, обычно README-файл.
VCXPROJ Project Файл проекта Visual C++. Дополнительные сведения см. в разделе Файлы проекта и файлы makefile.
VDPROJ Project Файл развертывания проекта Visual Studio.[5]

 

Логическая структура данных, представлена в виде модели данных (см. приложение А)

 

Общие сведения

- Игра написана при помощи метода WinAPI;

- В игре реализованы простейшие функции управления.

- Игра оснащена меню пользователя.

- Игра оснащена справочной системой.

- Проста в использование.

- Имеет удобный красочный интерфейс.

- Структурная схема программы (см. приложение В).

Экранные формы

В качестве иконки приложения выбран элемент типа */ ico, с изображёнными языками пламени.

Главное окно имеет не изменяемые границы, тем самым фиксирует размер игровой площади.

Основным элементом на чёрном фоне, является полупрозрачное изображение, которое служит своего рода экраном, за которым происходит действие (рисунок 2.).

Рисунок 2 – Главное окно

 

Как уже упоминалось ранее в игре используются несколько юнитов (фигур). Для удобства они используют случайный цветовой спектр.

Справка будет иметь стандартный вид.

Формы «History» (рисунок 3) и «Version» (рисунок 4) выполнены в том же стиле что и основное окно программы.

 

Рисунок 3 – Форма «History»

 

Рисунок 4 – Форма «Version»

 

Особенность формы «History», в том, что если игрок преодолевает один из рекордов, то в таблице меняется количество очков и в поле стоящее рядом он может занести свой ник.

Справочная система

 

Справочная система разработана в соответствии с пунктом 3.4. Для того чтобы воспользоваться справочной системой достаточно вызвать меню и выбрать вкладку «About». В этом случае перед пользователем появится окно (см. рисунок 1) с первым абзацем справки. Однако если у пользователя стоит ОС Windows Vista то справка работать не будет, т.к. справка для этой программы была создана в формате справки Windows, который использовался в предыдущих версиях Windows и не поддерживается в Windows Vista.

Функциональное тестирование

Таблица 2-Функциональное тестирование

Выбор пункта меню Результат теста
New Запуск новой игры
History Открытие таблицы рекордов
About Запуск справочной системы
Version Открывается окно с информацией о разработчике
Exit Выход из программы

Полное тестирование

Для проведения полного тестирования, просмотрим все функции данной программы (см. приложение Г).

Запускаем файл приложения, и сразу же перед пользователем возникает пустое окно, в верхней части которого расположено меню.

Нажимаем на кнопку с надписью «Game» и из выпадающего списка выбираем «New». Запускается новая игра, как ранее упоминалось, для управления используется клавиатура. Нажимаем на соответствующие клавиши. Всё функционирует нормально. При проигрыше или по окончании игры, через меню можно просмотреть таблицу рекордов, с количеством набранных балов.

Так же через меню были вызваны справка, с полным руководством пользователя и форма, содержащая сведения о программе.

Для завершения работы программы, достаточно закрыть форму или выбрать команду меню «Exit».

Таким образом, программа работает нормально, и качественно выполняет заложенные функции. Работает бес сбоев.

Для более подробного просмотра диалога программы с пользователем воспользуемся диаграммой последовательности (см. приложение Д).

 

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Условия применения

Поддерживаемые операционные системы:

-Windows 7 SP1 (x86 и x64);

-Windows Server 2012 R2 (x64);

-Windows Server 2012 (x64);

-Windows Server 2008 R2 SP1 (x64);

-Windows ХР.

Объём памяти на жёстком или локальном диске: 5 Мб.

Объём оперативной памяти: 29336 КБ.

Разрешение экрана: 1280х800.

Качество цветопередачи: 32бита и выше.

 

Элементы управления

Таблица 3-Элементы управления

  Передвижение игрового объекта в право
  Передвижение игрового объекта влево
  Поворот объекта против часовой стрелки
  Поворот объекта по часовой стрелке
«Пробел» Останавливает ход игры
«Меню» Осуществляет доступ ко всем функциям программы

 

ЗАКЛЮЧЕНИЕ

Таким образом, исходя из всего выше сказанного, можно сделать вывод о том что, данная игровая программа, проста в использовании и удобна в эксплуатации.

Данная программа выполнена в соответствии со всеми установленными выше требованиями.

Таким образом:

-Для разработки данной программы использовалась среда программирования Microsoft Visual C++ 2013.

- Игра написана при помощи метода WinAPI.

- Программа может использоваться в OC Windows XP и Windows 7.

- Так же программа будет нормально функционировать и в Windows Vista однако справку в этой системе вызвать нельзя, т.к. help – компилятор в ней не работает.

Для нормальной работы программы требуются следующие системные ресурсы:

- 5 МБ памяти на жёстком или локальном диске;

- 29336 КБ оперативной памяти;

- разрешение экрана 1280х800;

- качество цветопередачи 32бита и выше.

- Все основные функции данной программы доступны через меню включающее в себя пять компонентов:

«New» - Новая игра;

«History» - Таблица рекордов и история игры по совместительству;

«About» - Справка;

«Version» - О программе;

«Exit» - Выход из приложения.

- Программа имеет удобный, яркий интерфейс.

- Программа оснащена подробной справочной системой созданной при помощи специального help-компилятора, предназначенного для разработки приложений.

- Данной программе присущи простейшие функции управления – стрелки на клавиатуре.

- В ходе тестирования ошибок в работе программы не выявлено.

А так же, данная программа не имеет возрастных ограничений и может эксплуатироваться любым пользователем.

Данная программа готова к использованию, и любой пользователь, в не зависимости от возраста и опыта может ею воспользоваться.

 

ПРИЛОЖЕНИЕ Е

(Обязательное)

Листинг программы

#include <windows.h>

#include <windowsx.h>

#include <commctrl.h>

#include <string.h>

#include <shellapi.h>

#include <stdio.h>

#include"C:\Users\jenet\Documents\VisualStudio2013\Projects

\Win32Project1\Win32Project1\tetrisres.h"

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);

void initscreen();void newfigure();void gameover();

void bind(int x,int y,int keys);

void delfull();void unrotate();void rotate();void show();

static char szAppName[] = "Tetris";

HWND hwnd,hwndDlg=NULL;

MSG msg;

WNDCLASSEX wndclass;

HINSTANCE hinst;

static int screen[16][18];static int oldscreen[16][18];

static int cup[16][18];static int figure[4][4];

static int oldfigure[4][4];static int deltax=3, deltay=0;

static int speed,oldspeed;static int idTimer = -1;

static int scores;static char title[25];

static int cxClient, cyClient;BOOL endgame=FALSE;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow){

wndclass.cbSize = sizeof (wndclass);

wndclass.style = CS_HREDRAW | CS_VREDRAW;

wndclass.lpfnWndProc = WndProc;

wndclass.cbClsExtra = 0;

wndclass.cbWndExtra = DLGWINDOWEXTRA;

wndclass.hInstance = hInstance;

wndclass.hIcon = LoadIcon (hInstance, "Tetris");

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);

wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);

wndclass.lpszMenuName = NULL;

wndclass.lpszClassName = szAppName;

wndclass.hIconSm = LoadIcon (hInstance, "Tetris");

RegisterClassEx (&wndclass);

hwnd = CreateDialog (hInstance, "Tetris", 0, NULL);

ShowWindow (hwnd, iCmdShow);

while (GetMessage (&msg, NULL, 0, 0)) {

TranslateMessage (&msg);DispatchMessage (&msg); }

return msg.wParam;}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam){

int countx,county;

HDC hdc;

PAINTSTRUCT ps;

COLORREF colorbrick;

HBRUSH hBrush;

RECT rect;

switch (iMsg) {

case WM_COMMAND:

switch (LOWORD(wParam)){

case ID_EXIT:

SendMessage(hwnd,WM_CLOSE,0,0L);

break;

case ID_NEW:

scores=0;

speed=300;

endgame=FALSE;

oldspeed=speed;

SetTimer(hwnd, idTimer = 1, speed, NULL);

SetWindowText(hwnd,"Tetris");

initscreen();

newfigure();

bind(deltax,deltay,0);

break;

case ID_HI:

KillTimer(hwnd, 1);

DialogBox(hinst, MAKEINTRESOURCE(IDD_SCOREDIALOG), hwnd, (DLGPROC) DialogFunc);

SetTimer(hwnd, idTimer = 1, speed, NULL);

break;

case ID_ABOUT:

KillTimer(hwnd, 1);

ShellAbout(hwnd,"Tetris(ver,NULL);

SetTimer(hwnd, idTimer = 1, speed, NULL);

break;}

return 0;

case WM_SIZE:

cxClient=LOWORD (lParam)/10;

cyClient=HIWORD (lParam)/16;

return 0;

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps);

for (countx=0;countx<10;countx++){

for (county=0;county<16;county++)

{if(screen[countx][county]!=0){

switch(screen[countx][county])

{case 0:

colorbrick=RGB(0,0,0);break;case 1:

colorbrick=RGB(255,0,0);break;case 2:

colorbrick=RGB(0,255,0);break;case 3:

colorbrick=RGB(0,0,255);break;case 4:

colorbrick=RGB(0,255,255); break;case 5:

colorbrick=RGB(255,0,255);break;case 6:

colorbrick=RGB(255,255,0);break;break;

}SetRect (&rect, countx*cxClient,county*cyClient,

countx*cxClient+cxClient,county*cyClient+cyClient);

hBrush = CreateSolidBrush (colorbrick);

hBrush = CreateSolidBrush (colorbrick);

FillRect (hdc, &rect, hBrush);

DeleteObject (hBrush);}}}

EndPaint (hwnd, &ps);

return 0;

case WM_KEYDOWN:

switch (LOWORD(wParam)){

case VK_ESCAPE:SendMessage(hwnd,WM_CLOSE,0,0L);break;

case VK_LEFT:deltax=deltax-1;bind(deltax,deltay,4);break;

case VK_RIGHT:deltax=deltax+1;bind(deltax,deltay,6);break;

case VK_UP:rotate();bind(deltax,deltay,5);break;

case VK_DOWN:

oldspeed=speed;

speed=100;

SetTimer(hwnd, idTimer = 1, speed, NULL);

break;}

return 0;

case WM_TIMER:

deltay=deltay+1;

bind(deltax,deltay,2);

return 0;

case WM_DESTROY:

KillTimer(hwnd, 1);

PostQuitMessage (0);

return 0;

}return DefWindowProc (hwnd, iMsg, wParam, lParam);}

void initscreen()

{int countx,county; for (countx=0;countx<10;countx++)

{for (county=0;county<16;county++)

{cup[countx][county]=0;}}}

void newfigure(){

int i,numfigure;

if(endgame)return;

speed=oldspeed;

SetTimer(hwnd, idTimer = 1, speed, NULL);

for(i = 2;i<9;i++){if(cup[i][3]>0) gameover();

}deltax = 3;deltay = 0;

srand(rand()%100);

numfigure = rand ()%6+1;

switch (numfigure){

case 1:figure[0][0] = 0;figure[1][0] = 0;

figure[2][0] = 0;figure[3][0] = 0;figure[0][1] = 0;

figure[1][1] = numfigure;figure[2][1] = numfigure;

figure[3][1] = 0;figure[0][2] = 0;figure[1][2] = 0;

figure[2][2] = numfigure;figure[3][2] = 0;figure[0][3] = 0;

figure[1][3] = 0;figure[2][3] = numfigure;figure[3][3] = 0;

break;case 2:figure[0][0] = 0;figure[1][0] = 0;

figure[2][0] = 0;figure[3][0] = 0;figure[0][1] = 0;

figure[1][1] = numfigure;figure[2][1] = numfigure;

figure[3][1] = 0;figure[0][2] = 0;figure[1][2] = numfigure;

figure[2][2] = 0;figure[3][2] = 0;figure[0][3] = 0;

figure[1][3] = numfigure;figure[2][3] = 0;figure[3][3] = 0;

break;case 3:figure[0][0] = 0;figure[1][0] = numfigure;

figure[2][0] = 0;figure[3][0] = 0;figure[0][1] = 0;

figure[1][1] = numfigure;figure[2][1] = numfigure;

figure[3][1] = 0;figure[0][2] = 0;

figure[1][2] = 0;figure[2][2] = numfigure;

figure[3][2] = 0;figure[0][3] = 0;

figure[1][3] = 0;figure[2][3] = 0;figure[3][3] = 0;

break;case 4:figure[0][0] = 0;figure[1][0] = 0;

figure[2][0] = numfigure;figure[3][0] = 0;

figure[0][1] = 0;figure[1][1] = numfigure;

figure[2][1] = numfigure;figure[3][1] = 0;

figure[0][2] = 0;figure[1][2] = numfigure;

figure[2][2] = 0;figure[3][2] = 0;

figure[0][3] = 0;figure[1][3] = 0;

figure[2][3] = 0;figure[3][3] = 0;

break;case 5:figure[0][0] = 0;figure[1][0] = 0;

figure[2][0] = 0;figure[3][0] = 0;figure[0][1] = 0;

figure[1][1] = numfigure;figure[2][1] = numfigure;

figure[3][1] = 0;figure[0][2] = 0;figure[1][2] = numfigure;

figure[2][2] = numfigure;figure[3][2] = 0;

figure[0][3] = 0;figure[1][3] = 0;

figure[2][3] = 0;figure[3][3] = 0;

break;case 6:figure[0][0] = 0;figure[1][0] = numfigure;

figure[2][0] = 0;figure[3][0] = 0;

figure[0][1] = 0;figure[1][1] = numfigure;

figure[2][1] = 0;figure[3][1] = 0;figure[0][2] = 0;

figure[1][2] = numfigure;figure[2][2] = 0;

figure[3][2] = 0;figure[0][3] = 0;

figure[1][3] = numfigure;figure[2][3] = 0;figure[3][3] = 0;

break;}

scores=scores+numfigure;

wsprintf (title, "%s - %i", szAppName,scores);

SetWindowText(hwnd,title);}

void gameover()

{char result[30]="You score: ";

KillTimer(hwnd, 1);

endgame=TRUE;

DialogBox(hinst, MAKEINTRESOURCE(IDD_SCOREDIALOG), hwnd, (DLGPROC) DialogFunc); }

void bind(int x,int y,int keys)

{int i,j,i1,j1;

for(j=0;j<16;j++) {

for(i=0;i<10;i++) {

oldscreen[i][j]= screen[i][j];}

} for(j=0;j<16;j++)

{ for(i=0;i<10;i++)

{ screen[i][j]= cup[i][j]; }

} for(j=0;j<4;j++)

{for(i=0;i<4;i++){

if((figure[i][j]>0)&&((screen[i+x][j+y]>0)||(i+x+1==0)||(j+y==16)||(i+x==10))){switch(keys){case 4:

deltax = deltax + 1; break;

case 6:deltax = deltax - 1;

break;case 2:for(j1 = 0;j1<4;j1++){

for (i1 = 0;i1<4;i1++){

if(figure[i1][j1] > 0){

up[i1 + x][j1 + y - 1] = figure[i1][j1];}}}

for (j1=0;j1<16;j1++)

{

for(i1=0;i1<10;i1++){

screen[i1][j1] = cup[i1][j1];

}}

delfull();

newfigure();

break;case 5:

unrotate();}

x = deltax;y = deltay;

}}} for(j=0;j<4;j++){for(i = 0;i<4;i++){

if(figure[i][j]>0){ screen[i + x][j + y] = figure[i][j];}

else{

screen[i + x][j + y] = cup[i + x][j + y];

}}}show();}

void delfull()

{int i,j,row,col; BOOL flag;for(j=0;j<16;j++){

flag = TRUE;

for(i=0;i<10;i++)

{if(cup[i][j]==0) flag=FALSE;

}if(flag)

{scores=scores+25;

wsprintf (title, "%s - %i", szAppName,scores);

SetWindowText(hwnd,title);

speed=speed-2;

SetTimer(hwnd, idTimer = 1, speed, NULL);

for(row=j;row>1;row--)

{for(col=0;col<10;col++)

{cup[col][row] = cup[col][row - 1];

}}}flag = TRUE;}}

void unrotate(){

int i,j;for(j=0;j<4;j++) {

for(i=0;i<4;i++){figure[i][j] = oldfigure[i][j];}}}

void rotate()

{int i,j;

for(j = 0;j<4;j++)

{for(i=0;i<4;i++)

{oldfigure[i][j]=figure[i][j];

}}for(j = 0;j<4;j++)

{for(i=0;i<4;i++)

{figure[i][j]=oldfigure[3-j][i];

}}}

void show()

{HDC hdc;

int countx,county;

COLORREF colorbrick;

HBRUSH hBrush;

RECT rect;

hdc = GetDC (hwnd);

for (countx=0;countx<10;countx++)

{for (county=0;county<16;county++)

{if(screen[countx][county]!=oldscreen[countx][county])

{

switch(screen[countx][county]){

case 0:colorbrick=RGB(0,0,0);

break; case 1:

colorbrick=RGB(255,0,0);

break;case 2:colorbrick=RGB(0,255,0);

break;case 3:colorbrick=RGB(0,0,255);

break; case 4:colorbrick=RGB(0,255,255);

break;case 5:colorbrick=RGB(255,0,255);

break;case 6:colorbrick=RGB(255,255,0);

break;break;}

SetRect (&rect, countx*cxClient,county*cyClient,

countx*cxClient+cxClient,county*cyClient+cyClient);

hBrush = CreateSolidBrush (colorbrick);

FillRect (hdc, &rect, hBrush);

DeleteObject (hBrush);

}}}

ReleaseDC (hwnd, hdc);}

static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)

{FILE *f;char name[5][25];char score[5][10];int maxscore[5];

int i;switch (msg) {

case WM_INITDIALOG:

f=fopen("tetris.dat","rb");

if(f==NULL) break;

for(i=0;i<5;i++){fread(name[i],1,25,f);

fread(score[i],1,10,f);

maxscore[i]=atoi(score[i]);

}fclose(f);for(i=0;i<5;i++)

{if(scores>maxscore[i]&&endgame)

{itoa(scores,score[i],10);

SendDlgItemMessage(hwndDlg,102+i,EM_SETREADONLY,(WPARAM)FALSE,(LPARAM)0);i=5;

scores=0;

}}for(i=0;i<5;i++)

{SendDlgItemMessage(hwndDlg,102+i,WM_SETTEXT,(WPARAM)0,(LPARAM)name[i]);

SendDlgItemMessage(hwndDlg,107+i,WM_SETTEXT,(WPARAM)0,(LPARAM)score[i]);}

return TRUE;

case WM_COMMAND:

switch (LOWORD(wParam))

{case IDOK:for(i=0;i<5;i++)

{SendDlgItemMessage(hwndDlg,102+i,WM_GETTEXT,(WPARAM)25,(LPARAM)name[i]);

SendDlgItemMessage(hwndDlg,107+i,WM_GETTEXT,(WPARAM)10,(LPARAM)score[i]);}f=fopen("tetris.dat","wb");

for(i=0;i<5;i++)

{fwrite(name[i],1,25,f);fwrite(score[i],1,10,f);}

fclose(f);EndDialog(hwndDlg,1);return 1;}

break;case WM_CLOSE:EndDialog(hwndDlg,0);return TRUE;}

return FALSE;}

 

Институт информационных технологий

 

Специальность ПОИТ

 

КУРСОВОЙ ПРОЕКТ

 

По курсу: «ОСиСП»

Тема: Игровая программа «ТetrisМу_0.1»

 

Выполнил(а):

студент(ка) гр.281021

Курнакина В.А.

 

 

Проверил(а):

Лашкевич Е.М.

 

 

 
Минск, 2014

СОДЕРЖАНИЕ

 

Введение………………………………………………………………..………………………  
1.Объектно-ориентированный анализ ……………………………………………………….  
1.1 Сущность задачи…………………………………………………..……………………  
1.2 Сущность и элементы………………………………………………..…………………  
2.Системное проектирование...……………………………………………………………….  
2.1 Требования к аппаратным и операционным ресурсам………………………………  
2.2 Инструменты разработки………………………………………………………………  
3. Функциональное проектирование……………………………………………………...….  
3.1. Требования к приложению………………………………………………………....…  
3.2 Организация данных……………………………………………………………………  
3.3 Функции и элементы управления…………………………………………………..…  
3.4 Проектирование справочной системы приложения……………………………..…..  
4.Разработка программных модулей….…………………………….………………….……  
4.1 Общие сведения…………………………………………………………………..…….  
4.2 Экранные формы……………………………………………………………….…..…..  
4.3 Справочная система……….…………………………………………………...……….  
5.Программа и методика испытаний……………………………………………..………..…  
5.1 Технические требования…………………………………………………...…………..  
5.2 Общие сведения о методике испытаний…………………………………………...…  
5.3 Функциональное тестирование…………………………………………………..……  
5.4 Полное тестирование……………………………………………………………...……  
6. Руководство пользователя……………………….…………………………………..…..…  
6.1 Условия применения…………………….….…………………………………...……..  
6.2 Элементы управления…………………….………………………………...………….  
Заключение……………………………………………………………………………………..  
Список использованных источников………………………………………..……………….  
Приложение А (Обязательное)Модель данных………………………………..…………….  
Приложение Б (Обязательное)Диаграмма классов………………………………..………...  
Приложение В (Обязательное)Структурная схема………………………..………………...  
Приложение Г (Обязательное)Схема работы программы…………………..........................  
Приложение Д (Обязательное)Диаграмма последовательности………………………...…  
Приложение Е (Обязательное)Листинг программы………………………………….…..…  
   
   
   
   
   

 

ВВЕДЕНИЕ

Многие наверняка помнят игрушку, называемую тетрис, ранее используемую на игровых приставках.

В сегодняшнем мире, с учётом развития компьютерных технологий, этой игрушке даётся новая жизнь, таким образом, целью данной курсовой работы будет разработка игровой программы «ТetrisМу_0.1». Новой программы, сохраняющей старые традиции.

Разработка, данной программы, будет проходить с учётом следующих задач:

-Проведение объектно-ориентированного анализа, который предусматривает рассмотрениесущности задачи и сущности и элементов.

-Системное проектирование, раздел в котором будут рассмотрены требования к аппаратным и операционным ресурсам, а так же инструменты разработки.

- Функциональное проектирование, будет включать в себя:

а) требования к приложению,

б) организацию логических данных, представленной в виде модели данных, и физических данных,

в) функции и элементы управления,

г) а так же проектирование справочной системы приложения.

- Описание программного средства будет состоять из:

а) общих сведений о программе,

б) экранных форм, которые должны будут соответствовать требованиям к интерфейсу,

в) справочной системы.

- Методика испытаний, включающая, технические требования,функциональное тестирование, общие сведения о методике испытаний и полное тестирование.

- Руководство пользователя: которое будет включать условия применения и элементы управления.

- Так же будут построена схема работы программы, показывающая, ход её выполнения и возможности её функций.

- Помимо этого, будут построены диаграмма классов, и диаграмма последовательности, разъясняющие диалог программы с пользователем.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-26; просмотров: 130; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.60.166 (0.383 с.)