Рис.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 lt; stdlib.h gt;
# include lt; windows.h gt;
# include lt; windowsx.h gt;
# include lt; fstream gt;
# 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 lt; 4; c ++)
{_ bNextFigur [c] [0]=TRUE;
}; tfigur: (int c=0; c lt; 3; c ++) _ bNextFigur [c] [0]=TRUE; _bNextFigur [1] [1]=TRUE ;; cube: (int c =0; c lt; 2; c ++) (int c2=0; c2 lt; 2; c2 ++) _ bNextFigur [c] [c2]=TRUE ;; lright: (int c=0; c lt; 3; c ++) _ bNextFigur [0] [c]=TRUE; _bNextFigur [1] [0]=TRUE ;; lleft: (int c=0; c lt; 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 ...