КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Технические требования
Для проведения испытаний программы необходимы следующие ресурсы: - процессор: Intel(R) Celeron(R) SPU и выше; - объем оперативной памяти: 2038 Мбайт и выше. - 32 разрядная операционная система; - монитор жидкокристаллический для качественного и безопасного для зрения зрительного восприятия отображаемой информации; - видео карта на 64 Мб и выше. Для нормальной работы программы должны быть предоставлены следующие условия: - 5 МБ памяти на жёстком или локальном диске; - 29336 КБ оперативной памяти; - разрешение экрана 1280х800; - качество цветопередачи 32бита и выше. Программа может использоваться в OC Windows XP и Windows 7. В ОС Windows Vista программа будет работать только в аудио режиме, поэтому для использования на данной операционной системе она не подходит, так как теряется её основная функция – воспроизведение видео.
Полное тестирование ПРИМЕНЕНИЕ Назначение программы Как было выше сказано назначение данной программы разнообразить досуг и скоротать время, по сути, у неё нет полезных функций. Однако, то что на первый взгляд может казаться бесполезными на самом деле играет большую роль для общества. Ведь когда человек играет, он отвлекается от мира и конечно же от повседневных рутинных проблем, тем самым сберегает свои нервы и успокаивается. Таким образом, человек способен уберечь своё здоровье. Условия применения Справочная система Справочная система содержит три раздела, которые подразделяются на подразделы. Раздел 1 содержит: А) общую информацию о программе, такую как: - номер версии, - категория пользователей для которой он передназначен, - поддерживаемые форматы, - режимы; Б) Требования к аппаратным и операционным ресурсам: - занимаемое место на диске, - количество оперативной памяти, - места для установки, - для каких ос предназначен. Раздел 2 содержит: А) Интерфейсную часть, которая включает в себя краткое описание пользовательского интерфейса Б) Меню Раздел 3 содержит руководство по использованию, в котором говорится о том, чего не следует делать. Для того чтобы воспользоваться справочной системой достаточно вызвать меню и выбрать вкладку справка. В этом случае перед пользователем появится окно с первым абзацем справки. Однако если у пользователя стоит ОС Windows Vista то справка работать не будет, т.к. справка для этой программы была создана в формате справки Windows, который использовался в предыдущих версиях Windows и не поддерживается в Windows Vista.
ЗАКЛЮЧЕНИЕ Листинг программы #define INITGUID #include <windows.h> #include "mDirectX.h" #include "camera.h" #include "gui.h" int score=0; void NextToFild(); void Shadow() { int v=0,nn=20; // сброс тени for (int x=0;x<FV;x++) { for (int yy=0;yy<FS;yy++) { if (fild[x][yy]==3) fild[x][yy]=0; } } // visota figuri for (int x=20;x>=0;x--) { for (int yy=0;yy<10;yy++) { if (fild[x][yy]==2 && v==0) { v=x; break; } } } //niz teni for (int ii=0;ii<=2;ii++) { for (int xx=v+1;xx<nn;xx++) { for (int yy=0;yy<FS;yy++) { { if (fild[v-ii][yy]==2 && fild[xx][yy]==1) { nn=xx-1+ii; } } } } } if (nn==20) nn=19; //otrisovka teni for (int st=3;v>=0||st>=0;v--,nn--,st--) { for (int yy=0;yy<FS;yy++) { if (fild[v][yy]==2 && fild[nn][yy]==0) fild[nn][yy]=3; } } } void ResetFild() { for (int aa=0;aa<FV-1;aa++) { for (int b=0;b<FS;b++) { fild[aa][b]=0; } } }
void Destroy() { int line=0; for (int x=0;x<20;x++) { int sum=0; for (int y=0;y<10;y++) { sum+=fild[x][y]; } if (sum==10) { line++; for (int v=x;v>=0;v--) { for (int s=0;s<10;s++) { if (v==0) { fild[v][s]=0; } else { fild[v][s]=fild[v-1][s]; } } } }
} if (line) { score+=(line*line)*100; int speed_old=speed_; speed_=speed=score/1000;
if (speed<1) speed_=speed=1; strcpy(scorel,"Очки "); char str[10]; strcat(scorel,_itoa(score,str,10)); //konvert int to str D3DXCreateText(pDirect3DDevice, hdc,scorel,0,0.1f,&pText[0],0,0); strcpy(speedl,"Скорость "); strcat(speedl,_itoa(speed,str,10)); //konvert int to str D3DXCreateText(pDirect3DDevice, hdc,speedl,0,0.1f,&pText[1],0,0); if (speed_>speed_old) { PlayMusic(4); } else { PlayMusic(3); } }
} void Next() { if (gameOver) return; rnd=rand()%9; switch(rnd) { case 0: { for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { next_fild[v][s]=f[v][s]; } } break;} case 1: case 6: { for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { next_fild[v][s]=f1[v][s]; } } break;} case 2: case 7: { for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { next_fild[v][s]=f2[v][s]; } } break;}
case 3: case 8: { for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { next_fild[v][s]=f3[v][s]; } } break;}
case 4: case 9: { for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { next_fild[v][s]=f4[v][s]; } } break;}
case 5: { for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { next_fild[v][s]=f5[v][s]; } } break;} } if (rnd>9 || rnd<0) Next();
} void Start() { gameOver=0; srand(time(0)); // Next; ResetFild(); NextToFild(); PlayMusic(1); gomus=1; }
void NextToFild() { if (gameOver) return; for (int x=0;x<4;x++) { for (int y=0;y<4;y++) { if (fild[x][y+3] && next_fild[x][y]) //Start(); { for (int aa=0;aa<FV;aa++) { for (int b=0;b<FS;b++) { if (fild[aa][b]==2) fild[aa][b]=1; } } gameOver=1; speed=speed_=1; score=0; } } } for (int x=0;x<4;x++) { for (int y=0;y<4;y++) { if (next_fild[x][y]) fild[x][y+3]=next_fild[x][y]; } } fpos.v=0; fpos.s=3; rnd_=rnd; // if (!UI) Shadow(); } void Colision() { for (int aa=0;aa<FV;aa++) { for (int b=0;b<FS;b++) { if (fild[aa][b]==2) fild[aa][b]=1; } } Destroy(); NextToFild(); Next(); d=0; speed=speed_; PlayMusic(5); }
void Rotate() { if (gameOver) return; if (fpos.s<0) { if (rnd_==5) return; fpos.s=0; } if (fpos.s>6) { if (rnd_==5) return; fpos.s=6; } int old_figure[4][4]; for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { old_figure[v][s]=fild[v+fpos.v][s+fpos.s]; cur_figure[v][s]=fild[v+fpos.v][s+fpos.s]; } } for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { if (old_figure[v][s]==2 && old_figure[s][-(v-3)]==1) { return; } } } for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { cur_figure[s][-(v-3)]=old_figure[v][s]; } } for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { if (old_figure[v][s]==2) old_figure[v][s]=0; } } for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { if (cur_figure[v][s]==2) old_figure[v][s]=cur_figure[v][s]; } } for (int v=0;v<4;v++) { for (int s=0;s<4;s++) { fild[v+fpos.v][s+fpos.s]=old_figure[v][s]; } } // if (!UI) Shadow(); PlayMusic(2); }
void FildDown() { if(!pause) if (!UI) { { plav=0; for (int x=19;x>=0;x--) { for (int y=0;y<10;y++) { if (fild[x][y]==2) { if(x==19 || fild[x+1][y]==1) { Colision(); return; } }
} } for (int x=19;x>=0;x--) { for (int y=0;y<10;y++) { if (fild[x][y]==2) { fild[x+1][y]=fild[x][y]; fild[x][y]=0; } } } fpos.v++; //PlayMusic(2); } } } void FildLeft() { if (gameOver) return;
for (int x=19;x>=0;x--) { for (int y=0;y<10;y++) { if (fild[x][y]==2) { if(y==0 || fild[x][y-1]==1) return; } } } if(plav>1) { for (int x=19;x>=0;x--) { for (int y=9;y>=0;y--) { if (fild[x][y]==2) { if(fild[x+1][y-1]==1) return; } } } } for (int x=19;x>=0;x--) { for (int y=0;y<10;y++) { if (fild[x][y]==2) { fild[x][y-1]=fild[x][y]; fild[x][y]=0; } } } fpos.s--; // if (!UI) Shadow(); // PlayMusic(3); } void FildRight() { if (gameOver) return;
for (int x=19;x>=0;x--) { for (int y=9;y>=0;y--) { if (fild[x][y]==2) { if(y==9 || fild[x][y+1]==1) return; } } } if(plav>1) { for (int x=19;x>=0;x--) { for (int y=9;y>=0;y--) { if (fild[x][y]==2) { if(fild[x+1][y+1]==1) return; } } } } for (int x=19;x>=0;x--) { for (int y=9;y>=0;y--) { if (fild[x][y]==2) { fild[x][y+1]=fild[x][y]; fild[x][y]=0; } } } fpos.s++; // if (!UI) Shadow(); // PlayMusic(3); }
void Game() { if(!pause) if (!UI) { { temp=clock()-start; if (clock()-start>CLOCKS_PER_SEC/speed) { FildDown(); start =clock();
} if (clock()-start<=CLOCKS_PER_SEC/speed && clock()-start!=0) { plav=(clock()-start)/(CLOCKS_PER_SEC/speed/11); for (int x=19;x>=0;x--) { for (int y=0;y<10;y++) { if (fild[x][y]==2) { if(x==19 || fild[x+1][y]==1) { plav=0; return; } } } } } } } } void RenderingDirect3D() { pDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,255),1.0f,0); pDirect3DDevice->BeginScene(); if(!gameOver) Game(); Matrix(); DrawMyMesh(); DrawMyText(); DrawUI(); pDirect3DDevice->EndScene(); pDirect3DDevice->Present(NULL,NULL,NULL,NULL);
}
LRESULT CALLBACK MainWinProc(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam)//функция обработки сообщений { switch(msg) { case WM_PAINT: //перерисовка окна { RenderingDirect3D(); ValidateRect(hWnd,NULL); break; } case WM_DESTROY: // закрытие окна { DeleteDirect3D(); PostQuitMessage(0); return 0; } } return (DefWindowProc(hWnd,msg,wparam,lparam)); }
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { WNDCLASSEX windowsclass;
// инициализация класа окна windowsclass.cbClsExtra = 0; windowsclass.cbSize = sizeof(windowsclass); windowsclass.cbWndExtra = 0; windowsclass.hbrBackground = (HBRUSH)GetStockObject(HOLLOW_BRUSH); windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW); windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); windowsclass.hInstance = hInstance; windowsclass.lpfnWndProc = MainWinProc; windowsclass.lpszClassName = "windowsclass"; windowsclass.lpszMenuName = NULL; windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW; //Регистрация класа окна RegisterClassEx(&windowsclass); //задание стиля окна hWnd = CreateWindow("windowsclass","iceTetris",WS_OVERLAPPEDWINDOW|WS_VISIBLE, 100,100,608,634,NULL,NULL,hInstance,NULL); hWndMain=hWnd; hInstanceMain=hInstance; GetClientRect(hWnd,&Client); int nx=608+(600-Client.right); int ny=634+(600-Client.bottom); SetWindowPos(hWnd, 0,100,100,nx,ny,NULL); // показ окна if (SUCCEEDED(InitialDirect3D(hWnd))) { srand(time(0)); // ResetFild(); Next(); // Colision(); // InitialDirectDraw(hWnd, 600, 600); InitialText(); InitialInput(); InitMusic(); InitialMesh(); IniGUI(); ShowWindow(hWnd, nShowCmd); UpdateWindow(hWnd); ZeroMemory(&msg,sizeof(msg)); while(msg.message!=WM_QUIT) {
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else
RenderingDirect3D(); } }
}
|