Приложение 'Тетрис'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    192,51 Кб
  • Опубликовано:
    2015-01-05
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Приложение 'Тетрис'

СОДЕРЖАНИЕ

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ5

.1 Введение5

.2 Назначение системы5

.3 Требования к программному проекту5

.3.1 Требования к функциональным характеристикам5

.3.2 Требования к надежности5

.3.3 Требования к эксплуатации6

.3.4 Требования к информационной и программной совместимости6

.3.5 Требования к техническому обеспечению6

. ИССЛЕДОВАЛЕЛЬСКАЯ ЧАСТЬ7

.1 Постановка задачи7

.2 Описание тематики7

.2.1 Пользовательский интерфейс7

.2.2 Оконный интерфейс8

.2.3 Интерфейс программирования приложений (API)9

.2.4 Windows API13

. КОНСТРУКТОРСКАЯ ЧАСТЬ15

.1 Общие сведения15

.2 Описание логической структуры программы15

.2.1 Структура программы15

.2.2 Структуры данных модели15

.2.3 Функции для работы с приложением17

.3 Руководство программиста20

.3.1 Назначение программы20

.3.2 Условия выполнения программы20

.3.3 Тестирование программы20

.3.4 Обращение к программе21

. ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ22

.1 Входные данные22

.2 Выходные данные22

.3 Руководство пользователя22

.3.1 Назначение программы22

.3.2 Требования к аппаратной и программной средам22

.3.3 Выполнение программы23

.3.4 Сообщения оператору.25

ЛИТЕРАТУРА26

ПРИЛОЖЕНИЕ

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ

приложение тетрис программа

1.1 Введение

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

.2 Назначение системы

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

.3 Требования к программному проекту

.3.1 Требования к функциональным характеристикам

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

.3.2 Требования к надежности

Надежное функционирование программы обеспечивается проверкой наложения при перемещении фигур и ограничением, накладываемым на набор входных данных (коды нажатых клавиш игнорируются, если эти клавиши не являются управляющими в игре).

.3.3 Требования к эксплуатации

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

.3.4 Требования к информационной и программной совместимости

Среда проектирования, используемая при разработке данного проекта - Microsoft Visual Studio 2010. Для работы с приложением требуется установленная операционная система Windows XP или более поздняя версия, приложение совместимо только с ОС семейства Windows. Работа продукта основана на стандартных библиотеках системы, и не требует установки дополнительных компонентов.

.3.5 Требования к техническому обеспечению

Для нормального функционирования данного программного продукта необходимо наличие:

оперативной памяти не менее 32 Мб

процессора, с частотой не менее 300 МГц

не менее 108 Кб (для x64 185 Кб) свободного места на жестком диске

клавиатуры

мыши

монитора

2. ИССЛЕДОВАЛЕЛЬСКАЯ ЧАСТЬ

.1 Постановка задачи

Реализовать программу, представляющую собой игру "Тетрис". Программа должна осуществлять падение фигур, наложение их друг на друга, а также подсчет и стирание заполненных линий. Также необходимо реализовать возможность сохранения и загрузки сохраненной игры и увеличения скорости падения фигур в зависимости от полученного уровня. Должен быть предоставлен пользователю понятный и удобный интерфейс для работы с программой. Среда проектирования - Microsoft Visual Studio 2010 с использованием средств Win32 API.

.2 Описание тематики

.2.1 Пользовательский интерфейс

Пользовательский интерфейс - разновидность интерфейсов <#"787172.files/image001.gif">

Рис.1. Главное окно программы

Начало игры

Для начала игры нужно открыть меню File (Рис.2.) и выбрать пункт New Game, после чего появится игровое поле (Рис.3.), затем управляя клавишами со стрелками можно будет перемещать, разворачивать и ускорять падение фигур.

Рис.2. Меню File

Рис.3. Игровое поле

Сохранение игры

Для сохранения игры в меню File нужно выбрать пункт Save.

Загрузка сохраненной игры

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

Выход из программы

Завершение программы происходит после щелчка левой кнопки мыши по кнопке с крестиком в верхнем правом углу окна программы или при выборе пункта Exit в меню File.

Сообщения оператору.

При сохранении игры пользователю выдается сообщение, что игра сохранена. (Рис. 4)

Рис. 4. Игра сохранена.

Если игровое поле полностью заполнится, то отобразится сообщение, что игра окончена. (Рис. 5)

Рис. 5. Игра окончена.

ЛИТЕРАТУРА

Щупак Ю.А., «Win32 API. Эффективная разработка приложений», Питер, 2007 г., 576с.; ил.

Финогенов К.Г., «Win32. Основы программирования», Диалог-МИФИ, 2006 г., 416с.; ил.

Безруков В.А., «Win32 API. Программирование / Учебное пособие», СПбГУ ИТМО, 2009 г., 90с.

Джеффри Рихтер, «Windows для профессионалов. Создание эффективных Win32-пpилoжeний с учетом специфики 64-разрядной версии Windows.», Питер, Русская Редакция, 2001 г., 752с.

Курс лекций «Программирование в Windows» Белов Ю.С.

Курс лекций «Системное программирование» Вершинин Е.В.

ПРИЛОЖЕНИЕ

.cpp

#define WIN32_LEAN_AND_MEAN

#include <stdlib.h>

#include <windows.h>

#include <windowsx.h>

#include <fstream>

#pragma comment(linker,"-merge:.rdata=.text")

//-----------------------------------------------------------------------------------------

#defineID_MENU_NEW_GAMEWM_USER+1

#define ID_MENU_SAVE WM_USER+2

#define ID_MENU_LOAD WM_USER+3

#defineID_MENU_EXITWM_USER+4

//-----------------------------------------------------------------------------------------

#defineHORIZONTAL_LINE15

#defineVERTICAL_LINE30

#defineFIGUR_COUNT16

#define SPEED 400

#defineSIZE_WINDOW_X525

#defineSIZE_WINDOW_Y720

//-----------------------------------------------------------------------------------------_hinstance;_hwnd,g_hStok,g_hFigure; _hMenu;_bFigure[4][4],g_bNextFigur[4][4]; _iStok[HORIZONTAL_LINE][VERTICAL_LINE]; _pPozFigure;_iColor,g_iFigure,g_iNextFigure,g_iScore, g_iSpeed, g_iInc=0; {line=0, cube, lright, lleft, tfigur, zleft, zright, cross, Tfigur, Cfigur, Zleft, Zright, corner, Corner, point, Wfigur};//Виды фигурg_flag=false;g_iLvlup[15] = {3, 8, 15, 24, 30, 40, 55, 75, 100, 150, 300, 500, 750, 1000, 1500};namespace std;

//-----------------------------------------------------------------------------------------GetFigure(int eFigure)

{(eFigure)

{line:(int c=0;c<4;c++)

{_bNextFigur[c][0]=TRUE;

};tfigur:(int c=0;c<3;c++)_bNextFigur[c][0]=TRUE;_bNextFigur[1][1]=TRUE;;cube:(int c=0;c<2;c++)(int c2=0;c2<2;c2++)_bNextFigur[c][c2]=TRUE;;lright:(int c=0; c<3; c++)_bNextFigur[0][c]=TRUE;_bNextFigur[1][0]=TRUE;;lleft:(int c=0; c<3; c++)_bNextFigur[0][c]=TRUE;_bNextFigur[1][2]=TRUE;;zleft:g_bNextFigur[0][0]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[1][1]=TRUE; _bNextFigur[2][1]=TRUE;;zright:_bNextFigur[0][1]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[1][1]=TRUE; _bNextFigur[2][0]=TRUE;;cross:

g_bNextFigur[0][1]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[1][1]=TRUE; _bNextFigur[2][1]=TRUE;_bNextFigur[1][2]=TRUE;

break;Tfigur:

g_bNextFigur[0][0]=TRUE; _bNextFigur[0][1]=TRUE;_bNextFigur[0][2]=TRUE; _bNextFigur[1][1]=TRUE;_bNextFigur[2][1]=TRUE;

break;Cfigur:

g_bNextFigur[0][0]=TRUE; _bNextFigur[0][1]=TRUE;_bNextFigur[0][2]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[1][2]=TRUE;

break;Zleft:_bNextFigur[0][0]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[1][1]=TRUE; _bNextFigur[1][2]=TRUE; _bNextFigur[2][2]=TRUE;;Zright:_bNextFigur[0][0]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[1][1]=TRUE; _bNextFigur[1][2]=TRUE; _bNextFigur[2][0]=TRUE;

break;corner:_bNextFigur[0][0]=TRUE; _bNextFigur[0][1]=TRUE;_bNextFigur[1][1]=TRUE;

break;Corner:_bNextFigur[0][0]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[2][0]=TRUE; _bNextFigur[2][1]=TRUE; _bNextFigur[2][2]=TRUE;

break;point:_bNextFigur[0][0]=TRUE;

break;Wfigur:_bNextFigur[0][0]=TRUE; _bNextFigur[1][0]=TRUE;_bNextFigur[1][1]=TRUE; _bNextFigur[2][1]=TRUE; _bNextFigur[2][2]=TRUE;

break;

}_iColor=(rand()%100)+100;

}

//-----------------------------------------------------------------------------------------DrawStok()

{dc=GetDC(g_hStok);;(g_hStok,&rectWndStok);x=(rectWndStok.right-rectWndStok.left)/HORIZONTAL_LINE;y=(rectWndStok.bottom-rectWndStok.top)/VERTICAL_LINE;br;(int c1=0;c1<HORIZONTAL_LINE;c1++)(int c2=0;c2<VERTICAL_LINE;c2++)

{=g_iStok[c1][c2];hBrash=CreateSolidBrush(RGB(br,br,br));hOldBrach=SelectBrush(dc,hBrash);(dc,c1*x,c2*y,(c1*x)+x,(c2*y)+y);(SelectBrush(dc,hOldBrach));

}(g_hFigure,dc);(g_hStok,&rectWndStok);

}

//-----------------------------------------------------------------------------------------Speed(int g_iScore)

{ (SPEED-((g_iInc+1)*15));

}

{dc=GetDC(g_hFigure);;(g_hFigure,&rectWndFigure);hOldBrach;=CreateSolidBrush(RGB(100,100,100));=GetStockBrush(BLACK_BRUSH);x=(rectWndFigure.right-rectWndFigure.left)/4;y=(rectWndFigure.bottom-rectWndFigure.top)/4;(int c1=0;c1<4;c1++)(int c2=0;c2<4;c2++)

{(g_bNextFigur[c1][c2])

{=SelectBrush(dc,hBrash);(dc,c1*x,c2*y,((c1+1)*x)+x,(c2*y)+y);=SelectBrush(dc,hOldBrach);

}

{=SelectBrush(dc,hBlackBrash);(dc,c1*x,c2*y,((c1+1)*x)+x,(c2*y)+y);(dc,hOldBrach);

}

}(SelectBrush(dc,hOldBrach));(g_hFigure,dc);(g_hFigure,&rectWndFigure);

}

//-----------------------------------------------------------------------------------------()

{();();

}

//-----------------------------------------------------------------------------------------ClearFigure(BOOL *iArray)

{(int c1=0;c1<4*4;c1++)

*(iArray+c1)=FALSE;

}

//-----------------------------------------------------------------------------------------CopyFigure(BOOL *iSrcArray,BOOL *iDstArray)

{(int c1=0;c1<4*4;c1++)

*(iDstArray+c1)=*(iSrcArray+c1);

}

//-----------------------------------------------------------------------------------------NextFigure()

{(&g_bNextFigur[0][0],&g_bFigure[0][0]);(&g_bNextFigur[0][0]);

_iFigure=g_iNextFigure;

_iNextFigure=rand()%FIGUR_COUNT;(g_iNextFigure);

_pPozFigure.x=HORIZONTAL_LINE/2;_pPozFigure.y=0;(g_hwnd,(UINT)NULL,Speed(g_iScore),NULL);

}

//-----------------------------------------------------------------------------------------NewGame()

{(GetTickCount()%100); _iScore=0;(&g_bNextFigur[0][0]);_iNextFigure=rand()%FIGUR_COUNT; (g_iNextFigure);

(int c1=0;c1<HORIZONTAL_LINE;c1++)(int c2=0;c2<VERTICAL_LINE;c2++)_iStok[c1][c2]=30;();

Repaint();

}

//-----------------------------------------------------------------------------------------IsImpact() //Проверяем столкновения с дном и линией

{imp=0;y;(int c1=0;c1<4;c1++)

{(int c2=0;c2<4;c2++)

{(g_bFigure[c1][c2])

{=c2;=2;(c2+g_pPozFigure.y+1==VERTICAL_LINE )// Дно

{TRUE;

}

}

}(imp==2)

{(g_iStok[c1+g_pPozFigure.x][y+g_pPozFigure.y+1]>30) //ЛинияTRUE;

}=0;

}FALSE;

}

//-----------------------------------------------------------------------------------------SaveGame()

{ sgt("Tetr.txt", ios :: out | ios :: trunc);

if (!sgt.is_open()) return;

sgt.clear();

sgt.setf(ios_base::fixed);

for(int c1=0;c1<HORIZONTAL_LINE;c1++)

for(int c2=0;c2<VERTICAL_LINE;c2++)

sgt << g_iStok[c1][c2] << "\n";<< g_iScore;

sgt.close();

}

//-----------------------------------------------------------------------------------------LoadGame()

{ [100];ii;=0;SQR;_iInc=0;=HORIZONTAL_LINE*VERTICAL_LINE;SAr[451];sgt("Tetr.txt", ios::in);

while(!sgt.eof()){>> SAr[ii];++;

}>> SAr[SQR];.close();_iScore = SAr[SQR];(g_iScore >= g_iLvlup[g_iInc])

{_iInc++;

}(szScore,TEXT("Tetris Score:%d / %d lvl %d"),g_iScore, g_iLvlup[g_iInc], (g_iInc+1)); (g_hwnd,szScore);

ii=0;

srand(GetTickCount()%100);

ClearFigure(&g_bNextFigur[0][0]);

g_iNextFigure=rand()%FIGUR_COUNT;

GetFigure(g_iNextFigure);

for(int c1=0;c1<HORIZONTAL_LINE;c1++)

for(int c2=0;c2<VERTICAL_LINE;c2++)

{_iStok[c1][c2]=SAr[ii];++;

}();();

}

//-----------------------------------------------------------------------------------------OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)

_hMenu=CreateMenu();=CreatePopupMenu();(hMenuPopapFile,MF_STRING,ID_MENU_NEW_GAME,TEXT("New game"));(hMenuPopapFile,MF_STRING,ID_MENU_SAVE,TEXT("Save"));(hMenuPopapFile,MF_STRING,ID_MENU_LOAD,TEXT("Load"));(hMenuPopapFile,MF_STRING,ID_MENU_EXIT,TEXT("Exit"));(g_hMenu,MF_POPUP,(UINT)hMenuPopapFile,TEXT("File"));(hwnd,g_hMenu);

TRUE;

}

//-----------------------------------------------------------------------------------------OnGetMinMaxInfo(HWND hwnd, LPMINMAXINFO lpMinMaxInfo)

{>ptMaxTrackSize.x=SIZE_WINDOW_X;>ptMaxTrackSize.y=SIZE_WINDOW_Y;>ptMinTrackSize.x=SIZE_WINDOW_X;>ptMinTrackSize.y=SIZE_WINDOW_Y;

}

//-----------------------------------------------------------------------------------------OnPaint(HWND hwnd)

{();();ps;(hwnd,&ps);(hwnd,&ps);

}

//-----------------------------------------------------------------------------------------EraseOldFigur()

{(int c1=0;c1<4;c1++)(int c2=0;c2<4;c2++)(g_bFigure[c1][c2])

{_iStok[c1+g_pPozFigure.x][c2+g_pPozFigure.y]=30;

}

}

//-----------------------------------------------------------------------------------------PaintNewFigur()

{(int c1=0;c1<4;c1++)(int c2=0;c2<4;c2++)(g_bFigure[c1][c2])

{_iStok[c1+g_pPozFigure.x][c2+g_pPozFigure.y]=g_iColor;

}

}

//-----------------------------------------------------------------------------------------LineClear()

{=FALSE;[100];c1,c2;

{(c1=0;c1<VERTICAL_LINE;c1++)

{(c2=0;c2<HORIZONTAL_LINE;c2++)

{(g_iStok[c2][c1]>30)

{=TRUE;

}

{=FALSE;;

}

}(bLineFill)break;=FALSE;

}(bLineFill)

{(;c1>0;c1--)

{(c2=0;c2<HORIZONTAL_LINE;c2++)

{_iStok[c2][c1]=g_iStok[c2][c1-1];

}

}_iScore++;(g_iScore >= g_iLvlup[g_iInc]) g_iInc++;(szScore,TEXT("Tetris Score:%d / %d lvl %d"),g_iScore, g_iLvlup[g_iInc], (g_iInc+1)); //Обновляем счёт(g_hwnd,szScore);

}

}while(bLineFill);

}

//-----------------------------------------------------------------------------------------OnTimer(HWND hwnd, UINT id)

{ (IsImpact())

{(g_flag==true)

{

SaveGame();

g_flag=false;

}(g_hwnd,(UINT)NULL);();();();(IsImpact())

{(g_hwnd,(UINT)NULL);(NULL,TEXT("Game Over."),TEXT("Exit"),MB_OK);

}Repaint();;

}();(g_pPozFigure.y<VERTICAL_LINE)g_pPozFigure.y++;();();

}

//-----------------------------------------------------------------------------------------MoveRight()

{tms=0;maxim=0;(int c1=0;c1<4;c1++)

{(int c2=0;c2<4;c2++)

{(g_bFigure[c1][c2]==TRUE)tms=c1;

}=max(maxim,tms);=0;

}++;();(g_pPozFigure.x<HORIZONTAL_LINE-maxim)g_pPozFigure.x++;();();

}

//-----------------------------------------------------------------------------------------MoveLeft()

{();(g_pPozFigure.x>0)g_pPozFigure.x--;();();

}

//-----------------------------------------------------------------------------------------MoveDown()

{(IsImpact())return;();(g_pPozFigure.y<VERTICAL_LINE)g_pPozFigure.y++;();();

}

//-----------------------------------------------------------------------------------------OverRight()

{tms=0;maxim=0;(int c1=0;c1<4;c1++)

{(int c2=0;c2<4;c2++)

{(g_bFigure[c2][c1]==TRUE)tms=c2;

}=max(maxim,tms);=0;

}((g_pPozFigure.x+maxim)>=HORIZONTAL_LINE)

{x=HORIZONTAL_LINE-g_pPozFigure.x;++;=x;_pPozFigure.x-=maxim;

}

//-----------------------------------------------------------------------------------------Rotate()

{();(g_iFigure)

{:(g_bFigure[1][0]==TRUE)

{(&g_bFigure[0][0]);(int c=0;c<4;c++)

g_bFigure[0][c]=TRUE;

}

{(&g_bFigure[0][0]);(int c=0;c<4;c++)_bFigure[c][0]=TRUE;

}();cube:return;

}[4][4];(int c1=0;c1<4;c1++)(int c2=0;c2<4;c2++)[c1][c2]=FALSE;(int j=2 , c=0; j>=0 ; j-- , c++)(int i=0; i<3; i++)[c][i]=g_bFigure[i][j];left=1;(int c1=0;c1<4;c1++)

{(tmpFigur[0][c1])

{=0;break;

}

}(&g_bFigure[0][0]);

(int f=0; f<3; f++)(int d=0; d<3; d++)

{_bFigure[f][d]=tmpFigur[f+left][d];

}

();

}

//-----------------------------------------------------------------------------------------OnKeyDown(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)

{(vk)

{VK_RIGHT:();;VK_LEFT:();;VK_DOWN:();;VK_UP:();();();;

}

}

//-----------------------------------------------------------------------------------------OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)

{szScore[100];(id)

{ID_MENU_NEW_GAME:

{();_iInc=0;_iScore=0;(szScore,TEXT("Tetris Score:%d / %d lvl %d"),g_iScore, g_iLvlup[g_iInc], (int(g_iScore / g_iLvlup[g_iInc])));

SetWindowText(g_hwnd,szScore);;

}ID_MENU_SAVE:

{_flag=true;(g_hwnd,(UINT)NULL);(NULL,TEXT("Game Saved."),TEXT("Continue"),MB_OK);(g_hwnd,(UINT)NULL,Speed(g_iScore),NULL);;

}ID_MENU_LOAD:

{();();;

}ID_MENU_EXIT:

{(TRUE);;

}

}

}

//-----------------------------------------------------------------------------------------CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)

{(msg){WM_DESTROY:(0);0;_MSG(hwnd,WM_CREATE,OnCreate);_MSG(hwnd,WM_PAINT,OnPaint);_MSG(hwnd,WM_COMMAND,OnCommand);_MSG(hwnd,WM_GETMINMAXINFO,OnGetMinMaxInfo);_MSG(hwnd,WM_TIMER,OnTimer);_MSG(hwnd,WM_KEYDOWN,OnKeyDown);: return(DefWindowProc(hwnd,msg,wParam,lParam));

}

}

//-----------------------------------------------------------------------------------------CALLBACK WndStokProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)

{

(msg){WM_DESTROY:(0);0;: return(DefWindowProc(hwnd,msg,wParam,lParam));

}

}

//-----------------------------------------------------------------------------------------WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int)

//extern "C" void WinMainCRTStartup()

{

//HINSTANCE hInst=GetModuleHandle(NULL);_hinstance=hInst;szClassName[]=TEXT("MainWindows");szTitle[]=TEXT("Tetris Score:0 / 3 lvl 0");Msg;wc;(&wc,sizeof(wc));.lpfnWndProc=WndProc;.style=CS_HREDRAW|CS_VREDRAW;.hInstance=hInst;.hIcon=LoadIcon(NULL,IDI_APPLICATION);.hCursor=LoadCursor(NULL,IDC_ARROW);.hbrBackground=(HBRUSH)CreateSolidBrush(RGB(0,0,0));.lpszClassName=szClassName;(&wc);.lpszClassName=TEXT("WndFigure");.lpfnWndProc=WndStokProc;(&wc);.lpszClassName=TEXT("WndStok");(&wc);_hwnd=CreateWindow(szClassName,szTitle,WS_OVERLAPPEDWINDOW,

,0,SIZE_WINDOW_X,SIZE_WINDOW_Y,HWND_DESKTOP,NULL,hInst,NULL);_hStok=CreateWindow(TEXT("WndStok"),szTitle,WS_VISIBLE|WS_BORDER|WS_CHILD ,

,20,300,600,g_hwnd,NULL,hInst,NULL);_hFigure=CreateWindow(TEXT("WndFigure"),szTitle,WS_VISIBLE|WS_BORDER|WS_CHILD,_WINDOW_X-120,30,100,100,g_hwnd,NULL,hInst,NULL);(g_hwnd,SW_SHOWNORMAL);(GetMessage(&Msg,NULL,0,0))

{(&Msg);

}

//ExitProcess(0);0;

}

//-----------------------------------------------------------------------------------------

Похожие работы на - Приложение 'Тетрис'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!