Розробка програми для моделювання поведінки двовимірного клітинного автомату
Особливості використання функцій бібліотеки "Windows.h". Довільне заповнення поля клітинами з певною ймовірністю і його відображення на екрані. Зображення основних конфігурацій класичної гри "Життя". Тестування програми та інструкція користувача.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 28.09.2018 |
Размер файла | 634,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
case ID_MAINPROTOTYPES_BEACON:
InvalidateRect(hWnd, RECT, TRUE);
Beacon(life_Generation);
break;
case ID_MAINPROTOTYPES_GLIDERGUN:
InvalidateRect(hWnd, RECT, TRUE);
Glider_gun(life_Generation);
break;
case ID_MAINPROTOTYPES_LARGESHIP:
InvalidateRect(hWnd, RECT, TRUE);
largeShip(life_Generation);
break;
case ID_MAINPROTOTYPES_SMALLSHIP:
InvalidateRect(hWnd, RECT, TRUE);
smallShip(life_Generation);
break;
case ID_MAINPROTOTYPES_PENTADECATHLON:
InvalidateRect(hWnd, RECT, TRUE);
Pentadecathlon(life_Generation);
break;
case ID_MAINPROTOTYPES_GLIDER:
InvalidateRect(hWnd, RECT, TRUE);
Line(life_Generation);
break;
case ID_MAINPROTOTYPES_LINE:
InvalidateRect(hWnd, RECT, TRUE);
Line(life_Generation);
break;
case ID_FILL_1:
fillField(life_Generation, 1);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_5:
fillField(life_Generation, 5);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_10:
fillField(life_Generation, 10);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_15:
fillField(life_Generation, 15);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_20:
fillField(life_Generation, 20);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_25:
fillField(life_Generation, 25);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_30:
fillField(life_Generation, 30);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_40:
fillField(life_Generation, 40);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_50:
fillField(life_Generation, 50);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_60:
fillField(life_Generation, 60);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_70:
fillField(life_Generation, 70);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_FILL_80:
fillField(life_Generation, 80);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_TYPEDECHAMP_INFINIE:
isInfinite = TRUE;
break;
case ID_TYPEDECHAMP_WITHBORDERS:
isInfinite = FALSE;
break;
case ID_WOLFRAM_B018:
nextGeneration(life_Generation, next_Generation, Rules::B018_S018, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B0578:
nextGeneration(life_Generation, next_Generation, Rules::B0578_S045, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B579:
nextGeneration(life_Generation, next_Generation, Rules::B0578_S12456, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B1:
nextGeneration(life_Generation, next_Generation, Rules::B1_S012345678, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B123567:
nextGeneration(life_Generation, next_Generation, Rules::B123567_0238, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B13456:
nextGeneration(life_Generation, next_Generation, Rules::B13456_S01356, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B135:
nextGeneration(life_Generation, next_Generation, Rules::B135_S135, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B137:
nextGeneration(life_Generation, next_Generation, Rules::B137_S45678, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B236:
nextGeneration(life_Generation, next_Generation, Rules::B236_S0468, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B257:
nextGeneration(life_Generation, next_Generation, Rules::B257_S27, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B3:
nextGeneration(life_Generation, next_Generation, Rules::B3_S234, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B34:
nextGeneration(life_Generation, next_Generation, Rules::B34_S03456, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B367:
nextGeneration(life_Generation, next_Generation, Rules::B367_S2346, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_WOLFRAM_B378:
nextGeneration(life_Generation, next_Generation, Rules::B378_S012345678, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32840:
nextGeneration(life_Generation, next_Generation, Rules::B1_S1_Gnarl, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32841:
nextGeneration(life_Generation, next_Generation, Rules::B1357_S1357_Replicator, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32823:
nextGeneration(life_Generation, next_Generation, Rules::B3_S012345678_ImmortalLife, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32824:
nextGeneration(life_Generation, next_Generation, Rules::B3_S12345_Maze, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32825:
nextGeneration(life_Generation, next_Generation, Rules::B3_S23_CONWAY_LIFE, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32826:
nextGeneration(life_Generation, next_Generation, Rules::B3_S45678_Coral, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32827:
nextGeneration(life_Generation, next_Generation, Rules::B34_S34_34LIFE, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32828:
nextGeneration(life_Generation, next_Generation, Rules::B345_S4567_Assimilation, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32829:
nextGeneration(life_Generation, next_Generation, Rules::B345_S5_LongLife, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32830:
nextGeneration(life_Generation, next_Generation, Rules::B35678_S5678_Diamoeba, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32831:
nextGeneration(life_Generation, next_Generation, Rules::B357_S1358_Amoeba, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32832:
nextGeneration(life_Generation, next_Generation, Rules::B357_S238_PseudoLife, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32833:
nextGeneration(life_Generation, next_Generation, Rules::B36_S125_2x2, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32834:
nextGeneration(life_Generation, next_Generation, Rules::B36_S23_HighLife, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32835:
nextGeneration(life_Generation, next_Generation, Rules::B3678_S235678_Stains, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32836:
nextGeneration(life_Generation, next_Generation, Rules::B3678_S34678_Day_Night, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32837:
nextGeneration(life_Generation, next_Generation, Rules::B368_S245_Motion, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32838:
nextGeneration(life_Generation, next_Generation, Rules::B378_S235678_Concretion, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32839:
nextGeneration(life_Generation, next_Generation, Rules::B45678_S2345_Towns_Walls, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_R32842:
nextGeneration(life_Generation, next_Generation, Rules::B23_S01234_TASK_OF_COURSE_PROJ, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_STEP:
nextGeneration(life_Generation, next_Generation, Rules::CurrentRule, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_RAND_FILL:
fillField(life_Generation, rand() % 100);
InvalidateRect(hWnd, RECT, TRUE);
break;
case ID_CLEAR:
clearField(life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
break;
}
if (lParam == (LPARAM)bStep)
{
nextGeneration(life_Generation, next_Generation, Rules::CurrentRule, isInfinite);
copyField(next_Generation, life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
}
if (lParam == (LPARAM)bRand)
{
fillField(life_Generation, rand() % 100);
InvalidateRect(hWnd, RECT, TRUE);
}
if (lParam == (LPARAM)bReset)
{
clearField(life_Generation);
InvalidateRect(hWnd, RECT, TRUE);
}//break;
}
break;
case WM_PAINT:
hdc = GetDC(hWnd);
drawField(cells_coord, life_Generation, hdc);
ReleaseDC(hWnd, hdc);
break;
case WM_DESTROY:
DeleteObject(hb);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// Gestionnaire de messages pour la boоte de dialogue А propos de.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
Вихідний файл №4: Source.cpp
#include "stdafx.h"
#include "Course_Proj_31_Game_LIFE_PS.h"
unsigned int counter{ 0 };
enum class Rules
{
CurrentRule, B018_S018, B0578_S045, B0578_S12456, B1_S012345678, B1_S1_Gnarl, B123567_0238, B13456_S01356, B135_S135, B1357_S1357_Replicator, B137_S45678, B236_S0468, B257_S27, B3_S012345678_ImmortalLife, B3_S12345_Maze, B3_S23_CONWAY_LIFE, B3_S234, B3_S45678_Coral, B34_S03456, B34_S34_34LIFE, B345_S4567_Assimilation, B345_S5_LongLife, B35678_S5678_Diamoeba, B357_S1358_Amoeba, B357_S238_PseudoLife, B36_S125_2x2, B36_S23_HighLife, B367_S2346, B3678_S235678_Stains, B3678_S34678_Day_Night, B368_S245_Motion, B378_S012345678, B378_S235678_Concretion, B45678_S2345_Towns_Walls, B23_S01234_TASK_OF_COURSE_PROJ
};
void initCoord(t_cells & cells)
{
unsigned int _x{ 1 }, _y{ 1 };
for (unsigned int i{ 0 }; i < LIFE_SIZE; i++, _x+= CELL_RADIUS)
{
for (unsigned int j{ 0 }; j < LIFE_SIZE; j++, _y+= CELL_RADIUS)
{
cells[i][j].x = _x;
cells[i][j].y = _y;
}
_y = 1;
}
}
bool condition(int neighbors, std::initializer_list <int> neighbor_numb)
{
const int * pTemp = neighbor_numb.begin();
while (pTemp != neighbor_numb.end())
{
if (*pTemp == neighbors)
return true;
++pTemp;
}
return false;
}
bool probabilityRandTrue(int a)
{
return (rand() % 100) < a; //generation of '1' with a% of probability
}
void fillField(t_generation & generation, int a = 25)
{
clearField(generation);
srand(time(NULL));
for (size_t i{ 0 }; i < LIFE_SIZE; i++)
{
for (unsigned int j{ 0 }; j < LIFE_SIZE; j++)
generation[i][j] = probabilityRandTrue(a);
}
}
void drawCell(HDC & hdc, t_cells & cells, int i, int j)
{
Rectangle(hdc, cells[i][j].x - 1, cells[i][j].y - 1,
cells[i][j].x + CELL_RADIUS, cells[i][j].y + CELL_RADIUS);
}
void drawField(t_cells & cells, t_generation & generation, HDC & hdc)
{
for (unsigned int i{ 0 }; i < LIFE_SIZE; i++)
{
for (unsigned int j{ 0 }; j < LIFE_SIZE; j++)
{
if (generation[i][j])
drawCell(hdc, cells, i, j);
}
}
}
int adj_neighbors(t_generation & generation, int i, int j)
{
int neighbors{ 0 };
if (generation[checkBorders(i - 1)][checkBorders(j - 1)]) neighbors++;
if (generation[checkBorders(i - 1)][j]) neighbors++;
if (generation[checkBorders(i - 1)][checkBorders(j + 1)]) neighbors++;
if (generation[i][checkBorders(j - 1)]) neighbors++;
if (generation[i][checkBorders(j + 1)]) neighbors++;
if (generation[checkBorders(i + 1)][checkBorders(j - 1)]) neighbors++;
if (generation[checkBorders(i + 1)][j]) neighbors++;
if (generation[checkBorders(i + 1)][checkBorders(j + 1)]) neighbors++;
return neighbors;
}
int neighbors(t_generation & generation, int i, int j)
{
int neighbors{ 0 };
if (j - 1 >= 0)
{
if (generation[i][j - 1])
neighbors++;
if (i + 1 < LIFE_SIZE && generation[i + 1][j - 1])
neighbors++;
}
if (i + 1 < LIFE_SIZE)
{
if (generation[i + 1][j])
neighbors++;
if (j + 1 < LIFE_SIZE && generation[i + 1][j + 1])
neighbors++;
}
if (j + 1 < LIFE_SIZE)
{
if (generation[i][j + 1])
neighbors++;
if (i - 1 >= 0 && generation[i - 1][j + 1])
neighbors++;
}
if (i - 1 >= 0)
{
if (generation[i - 1][j])
neighbors++;
if (j - 1 >= 0 && generation[i - 1][j - 1])
neighbors++;
}
return neighbors;
}
void nextGeneration(t_generation & generation, t_generation & next_generation, enum class Rules rule, bool areBorders)
{
clearField(next_generation);
static Rules tmp{ Rules::B23_S01234_TASK_OF_COURSE_PROJ };
for (int i{ 0 }; i < LIFE_SIZE; i++)
{
for (int j{ 0 }; j < LIFE_SIZE; j++)
{
//Apply rules to the cell:
switch (rule)
{
case Rules::B018_S018:
applyRule(generation, next_generation, i, j, { 0,1,8 }, { 0,1,8 }, areBorders);
tmp = Rules::B018_S018;
break;
case Rules::B0578_S045:
applyRule(generation, next_generation, i, j, { 0,5,7,8 }, { 0,4,5 }, areBorders);
tmp = Rules::B0578_S045;
break;
case Rules::B0578_S12456:
applyRule(generation, next_generation, i, j, { 0,5,7,8 }, { 1,2,4,5,6 }, areBorders);
tmp = Rules::B0578_S12456;
break;
case Rules::B1_S012345678:
applyRule(generation, next_generation, i, j, { 1 }, { 0,1,2,3,4,5,6,7,8 }, areBorders);
tmp = Rules::B1_S012345678;
break;
case Rules::B1_S1_Gnarl:
applyRule(generation, next_generation, i, j, { 1 }, { 1 }, areBorders);
tmp = Rules::B1_S1_Gnarl;
break;
case Rules::B123567_S0238:
applyRule(generation, next_generation, i, j, { 1,2,3,5,6,7 }, { 0,2,3,8 }, areBorders);
tmp = Rules::B123567_S0238;
break;
case Rules::B13456_S01356:
applyRule(generation, next_generation, i, j, { 1,3,4,5,6 }, { 0,1,3,5,6 }, areBorders);
tmp = Rules::B13456_S01356;
break;
case Rules::B135_S135:
applyRule(generation, next_generation, i, j, { 1,3,5 }, { 1,3,5 }, areBorders);
tmp = Rules::B135_S135;
break;
case Rules::B1357_S1357:
applyRule(generation, next_generation, i, j, { 1,3,5,7 }, { 1,3,5,7 }, areBorders);
tmp = Rules::B1357_S1357;
break;
case Rules::B137_S45678:
applyRule(generation, next_generation, i, j, { 1,3,7 }, { 4,5,6,7,8 }, areBorders);
tmp = Rules::B137_S45678;
break;
case Rules::B236_S0468:
applyRule(generation, next_generation, i, j, { 2,3,6 }, { 0,4,6,8 }, areBorders);
tmp = Rules::B236_S0468;
break;
case Rules::B257_S27:
applyRule(generation, next_generation, i, j, { 2,5,7 }, { 2,7 }, areBorders);
tmp = Rules::B257_S27;
break;
case Rules::B3_S012345678_ImmortalLife:
applyRule(generation, next_generation, i, j, { 3 }, { 0,1,2,3,4,5,6,7,8 }, areBorders);
tmp = Rules::B3_S012345678_ImmortalLife;
break;
case Rules::B3_S12345_Maze:
applyRule(generation, next_generation, i, j, { 3 }, { 1,2,3,4,5 }, areBorders);
tmp = Rules::B3_S12345_Maze;
break;
case Rules::B3_S23_CONWAY_LIFE:
applyRule(generation, next_generation, i, j, { 3 }, { 2,3 }, areBorders);
tmp = Rules::B3_S23_CONWAY_LIFE;
break;
case Rules::B3_S234:
applyRule(generation, next_generation, i, j, { 3 }, { 2,3,4 }, areBorders);
tmp = Rules::B3_S234;
break;
case Rules::B3_S45678_Coral:
applyRule(generation, next_generation, i, j, { 3 }, { 4,5,6,7,8 }, areBorders);
tmp = Rules::B3_S45678_Coral;
break;
case Rules::B34_S03456:
applyRule(generation, next_generation, i, j, { 3,4 }, { 0,3,4,5,6 }, areBorders);
tmp = Rules::B34_S03456;
case Rules::B34_S34_34LIFE:
applyRule(generation, next_generation, i, j, { 3,4 }, { 3,4 }, areBorders);
tmp = Rules::B34_S34_34LIFE;
break;
case Rules::B345_S4567_Assimilation:
applyRule(generation, next_generation, i, j, { 3,4,5 }, { 4,5,6,7 }, areBorders);
tmp = Rules::B345_S4567_Assimilation;
break;
case Rules::B345_S5_LongLife:
applyRule(generation, next_generation, i, j, { 3,4,5 }, { 5 }, areBorders);
tmp = Rules::B345_S5_LongLife;
break;
case Rules::B35678_S5678_Diamoeba:
applyRule(generation, next_generation, i, j, { 3,5,6,7,8 }, { 5,6,7,8 }, areBorders);
tmp = Rules::B35678_S5678_Diamoeba;
break;
case Rules::B357_S1358_Amoeba:
applyRule(generation, next_generation, i, j, { 3,5,7 }, { 1,3,5,8 }, areBorders);
tmp = Rules::B357_S1358_Amoeba;
break;
case Rules::B357_S238_PseudoLife:
applyRule(generation, next_generation, i, j, { 3,5,7 }, { 2,3,8 }, areBorders);
tmp = Rules::B357_S238_PseudoLife;
break;
case Rules::B36_S125_2x2:
applyRule(generation, next_generation, i, j, { 3,6 }, { 1,2,5 }, areBorders);
tmp = Rules::B36_S125_2x2;
break;
case Rules::B36_S23_HighLife:
applyRule(generation, next_generation, i, j, { 3,6 }, { 2,3 }, areBorders);
tmp = Rules::B36_S23_HighLife;
break;
case Rules::B367_S2346:
applyRule(generation, next_generation, i, j, { 3,6,7 }, { 2,3,4,6 }, areBorders);
tmp = Rules::B367_S2346;
break;
case Rules::B3678_S235678_Stains:
applyRule(generation, next_generation, i, j, { 3,6,7,8 }, { 2,3,5,6,7,8 }, areBorders);
tmp = Rules::B3678_S235678_Stains;
break;
case Rules::B3678_S34678_Day_Night:
applyRule(generation, next_generation, i, j, { 3,6,7,8 }, { 3,4,6,7,8 }, areBorders);
tmp = Rules::B3678_S34678_Day_Night;
break;
case Rules::B368_S245_Motion:
applyRule(generation, next_generation, i, j, { 3,6,8 }, { 2,4,5 }, areBorders);
tmp = Rules::B368_S245_Motion;
break;
case Rules::B378_S012345678:
applyRule(generation, next_generation, i, j, { 3,7,8 }, { 0,1,2,3,4,5,6,7,8 }, areBorders);
tmp = Rules::B378_S012345678;
break;
case Rules::B378_S235678_Concretion:
applyRule(generation, next_generation, i, j, { 3,7,8 }, { 2,3,5,6,7,8 }, areBorders);
tmp = Rules::B378_S235678_Concretion;
break;
case Rules::B45678_S2345_Towns_Walls:
applyRule(generation, next_generation, i, j, { 4,5,6,7,8 }, { 2,3,4,5 }, areBorders);
tmp = Rules::B45678_S2345_Towns_Walls;
break;
case Rules::B23_S01234_TASK_OF_COURSE_PROJ:
applyRule(generation, next_generation, i, j, { 2,3 }, { 0,1,2,3,4 }, areBorders);
tmp = Rules::B23_S01234_TASK_OF_COURSE_PROJ;
break;
case Rules::CurrentRule:
switch (tmp)
{
case Rules::B018_S018:
applyRule(generation, next_generation, i, j, { 0,1,8 }, { 0,1,8 }, areBorders);
tmp = Rules::B018_S018;
break;
case Rules::B0578_S045:
applyRule(generation, next_generation, i, j, { 0,5,7,8 }, { 0,4,5 }, areBorders);
tmp = Rules::B0578_S045;
break;
case Rules::B0578_S12456:
applyRule(generation, next_generation, i, j, { 0,5,7,8 }, { 1,2,4,5,6 }, areBorders);
tmp = Rules::B0578_S12456;
break;
case Rules::B1_S012345678:
applyRule(generation, next_generation, i, j, { 1 }, { 0,1,2,3,4,5,6,7,8 }, areBorders);
tmp = Rules::B1_S012345678;
break;
case Rules::B1_S1_Gnarl:
applyRule(generation, next_generation, i, j, { 1 }, { 1 }, areBorders);
tmp = Rules::B1_S1_Gnarl;
break;
case Rules::B123567_S0238:
applyRule(generation, next_generation, i, j, { 1,2,3,5,6,7 }, { 0,2,3,8 }, areBorders);
tmp = Rules::B123567_S0238;
break;
case Rules::B13456_S01356:
applyRule(generation, next_generation, i, j, { 1,3,4,5,6 }, { 0,1,3,5,6 }, areBorders);
tmp = Rules::B13456_S01356;
break;
case Rules::B135_S135:
applyRule(generation, next_generation, i, j, { 1,3,5 }, { 1,3,5 }, areBorders);
tmp = Rules::B135_S135;
break;
case Rules::B1357_S1357:
applyRule(generation, next_generation, i, j, { 1,3,5,7 }, { 1,3,5,7 }, areBorders);
tmp = Rules::B1357_S1357;
break;
case Rules::B137_S45678:
applyRule(generation, next_generation, i, j, { 1,3,7 }, { 4,5,6,7,8 }, areBorders);
tmp = Rules::B137_S45678;
break;
case Rules::B236_S0468:
applyRule(generation, next_generation, i, j, { 2,3,6 }, { 0,4,6,8 }, areBorders);
tmp = Rules::B236_S0468;
break;
case Rules::B257_S27:
applyRule(generation, next_generation, i, j, { 2,5,7 }, { 2,7 }, areBorders);
tmp = Rules::B257_S27;
break;
case Rules::B3_S012345678_ImmortalLife:
applyRule(generation, next_generation, i, j, { 3 }, { 0,1,2,3,4,5,6,7,8 }, areBorders);
tmp = Rules::B3_S012345678_ImmortalLife;
break;
case Rules::B3_S12345_Maze:
applyRule(generation, next_generation, i, j, { 3 }, { 1,2,3,4,5 }, areBorders);
tmp = Rules::B3_S12345_Maze;
break;
case Rules::B3_S23_CONWAY_LIFE:
applyRule(generation, next_generation, i, j, { 3 }, { 2,3 }, areBorders);
tmp = Rules::B3_S23_CONWAY_LIFE;
break;
case Rules::B3_S234:
applyRule(generation, next_generation, i, j, { 3 }, { 2,3,4 }, areBorders);
tmp = Rules::B3_S234;
break;
case Rules::B3_S45678_Coral:
applyRule(generation, next_generation, i, j, { 3 }, { 4,5,6,7,8 }, areBorders);
tmp = Rules::B3_S45678_Coral;
break;
case Rules::B34_S03456:
applyRule(generation, next_generation, i, j, { 3,4 }, { 0,3,4,5,6 }, areBorders);
tmp = Rules::B34_S03456;
case Rules::B34_S34_34LIFE:
applyRule(generation, next_generation, i, j, { 3,4 }, { 3,4 }, areBorders);
tmp = Rules::B34_S34_34LIFE;
break;
case Rules::B345_S4567_Assimilation:
applyRule(generation, next_generation, i, j, { 3,4,5 }, { 4,5,6,7 }, areBorders);
tmp = Rules::B345_S4567_Assimilation;
break;
case Rules::B345_S5_LongLife:
applyRule(generation, next_generation, i, j, { 3,4,5 }, { 5 }, areBorders);
tmp = Rules::B345_S5_LongLife;
break;
case Rules::B35678_S5678_Diamoeba:
applyRule(generation, next_generation, i, j, { 3,5,6,7,8 }, { 5,6,7,8 }, areBorders);
tmp = Rules::B35678_S5678_Diamoeba;
break;
case Rules::B357_S1358_Amoeba:
applyRule(generation, next_generation, i, j, { 3,5,7 }, { 1,3,5,8 }, areBorders);
tmp = Rules::B357_S1358_Amoeba;
break;
case Rules::B357_S238_PseudoLife:
applyRule(generation, next_generation, i, j, { 3,5,7 }, { 2,3,8 }, areBorders);
tmp = Rules::B357_S238_PseudoLife;
break;
case Rules::B36_S125_2x2:
applyRule(generation, next_generation, i, j, { 3,6 }, { 1,2,5 }, areBorders);
tmp = Rules::B36_S125_2x2;
break;
case Rules::B36_S23_HighLife:
applyRule(generation, next_generation, i, j, { 3,6 }, { 2,3 }, areBorders);
tmp = Rules::B36_S23_HighLife;
break;
case Rules::B367_S2346:
applyRule(generation, next_generation, i, j, { 3,6,7 }, { 2,3,4,6 }, areBorders);
tmp = Rules::B367_S2346;
break;
case Rules::B3678_S235678_Stains:
applyRule(generation, next_generation, i, j, { 3,6,7,8 }, { 2,3,5,6,7,8 }, areBorders);
tmp = Rules::B3678_S235678_Stains;
break;
case Rules::B3678_S34678_Day_Night:
applyRule(generation, next_generation, i, j, { 3,6,7,8 }, { 3,4,6,7,8 }, areBorders);
tmp = Rules::B3678_S34678_Day_Night;
break;
case Rules::B368_S245_Motion:
applyRule(generation, next_generation, i, j, { 3,6,8 }, { 2,4,5 }, areBorders);
tmp = Rules::B368_S245_Motion;
break;
case Rules::B378_S012345678:
applyRule(generation, next_generation, i, j, { 3,7,8 }, { 0,1,2,3,4,5,6,7,8 }, areBorders);
tmp = Rules::B378_S012345678;
break;
case Rules::B378_S235678_Concretion:
applyRule(generation, next_generation, i, j, { 3,7,8 }, { 2,3,5,6,7,8 }, areBorders);
tmp = Rules::B378_S235678_Concretion;
break;
case Rules::B45678_S2345_Towns_Walls:
applyRule(generation, next_generation, i, j, { 4,5,6,7,8 }, { 2,3,4,5 }, areBorders);
tmp = Rules::B45678_S2345_Towns_Walls;
break;
case Rules::B23_S01234_TASK_OF_COURSE_PROJ:
applyRule(generation, next_generation, i, j, { 2,3 }, { 0,1,2,3,4 }, areBorders);
tmp = Rules::B23_S01234_TASK_OF_COURSE_PROJ;
break;
}
default:
break;
}
}
}
clearField(generation);
counter++;
}
void applyRule(t_generation & generation, t_generation & next_generation, int i, int j,
std::initializer_list <int> born_cond, std::initializer_list <int> save_cond, bool areBorders)
{
if (areBorders)
{
if (!generation[i][j] && (condition(adj_neighbors(generation, i, j), born_cond)))
next_generation[i][j] = true;
if (generation[i][j] && (condition(adj_neighbors(generation, i, j), save_cond)))
next_generation[i][j] = true;
}
else
{
if (!generation[i][j] && (condition(neighbors(generation, i, j), born_cond)))
next_generation[i][j] = true;
if (generation[i][j] && (condition(neighbors(generation, i, j), save_cond)))
next_generation[i][j] = true;
}
}
void copyField(t_generation & src, t_generation & dest)
{
for (unsigned int i{ 0 }; i < LIFE_SIZE; i++)
{
for (unsigned int j{ 0 }; j < LIFE_SIZE; j++)
dest[i][j] = src[i][j];
}
}
bool cmpField(t_generation & w1, t_generation & w2)
{
for (unsigned int i{ 0 }; i < LIFE_SIZE; i++)
{
for (unsigned int j{ 0 }; j < LIFE_SIZE; j++)
{
if (w1[i][j] != w2[i][j])
return false;
}
}
return true;
}
void clearField(t_generation & generation)
{
for (int i{ 0 }; i < LIFE_SIZE; i++)
{
for (int j{ 0 }; j < LIFE_SIZE; j++)
generation[i][j] = false;
}
}
Вихідний файл №5: forms.cpp
#include "stdafx.h"
#include "Course_Proj_31_Game_LIFE_PS.h"
///extern int LIFE_SIZE;
void P46_glider_gun(t_generation & generation)
{
clearField(generation);
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 9] = 1;generation[LIFE_SIZE/2-10 + 33][LIFE_SIZE/2-10 + 7] = 1; generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 34] = 1; generation[LIFE_SIZE/2-10 + 33][LIFE_SIZE/2-10 + 34] = 1;
generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 9] = 1;generation[LIFE_SIZE/2-10 + 33][LIFE_SIZE/2-10 + 8] = 1; generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 35] = 1; generation[LIFE_SIZE/2-10 + 33][LIFE_SIZE/2-10 + 35] = 1;
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 10] = 1;generation[LIFE_SIZE/2-10 + 34][LIFE_SIZE/2-10 + 7] = 1; generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 34] = 1; generation[LIFE_SIZE/2-10 + 34][LIFE_SIZE/2-10 + 34] = 1;
generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 10] = 1;generation[LIFE_SIZE/2-10 + 34][LIFE_SIZE/2-10 + 8] = 1; generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 35] = 1; generation[LIFE_SIZE/2-10 + 34][LIFE_SIZE/2-10 + 35] = 1;
generation[LIFE_SIZE/2-10 + 16][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 15][LIFE_SIZE/2-10 + 7] = 1;generation[LIFE_SIZE/2-10 + 28][LIFE_SIZE/2-10 + 21] = 1; generation[LIFE_SIZE/2-10 + 32][LIFE_SIZE/2-10 + 21] = 1;
generation[LIFE_SIZE/2-10 + 15][LIFE_SIZE/2-10 + 4] = 1;generation[LIFE_SIZE/2-10 + 15][LIFE_SIZE/2-10 + 8] = 1;generation[LIFE_SIZE/2-10 + 28][LIFE_SIZE/2-10 + 22] = 1; generation[LIFE_SIZE/2-10 + 32][LIFE_SIZE/2-10 + 22] = 1;
generation[LIFE_SIZE/2-10 + 15][LIFE_SIZE/2-10 + 5] = 1;generation[LIFE_SIZE/2-10 + 16][LIFE_SIZE/2-10 + 9] = 1;
generation[LIFE_SIZE/2-10 + 18][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 18][LIFE_SIZE/2-10 + 10] = 1;generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 16] = 1; generation[LIFE_SIZE/2-10 + 33][LIFE_SIZE/2-10 + 16] = 1;
generation[LIFE_SIZE/2-10 + 19][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 19][LIFE_SIZE/2-10 + 10] = 1;generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 17] = 1; generation[LIFE_SIZE/2-10 + 32][LIFE_SIZE/2-10 + 17] = 1;
generation[LIFE_SIZE/2-10 + 20][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 20][LIFE_SIZE/2-10 + 10] = 1;generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 17] = 1; generation[LIFE_SIZE/2-10 + 33][LIFE_SIZE/2-10 + 17] = 1;
generation[LIFE_SIZE/2-10 + 20][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 20][LIFE_SIZE/2-10 + 9] = 1;generation[LIFE_SIZE/2-10 + 28][LIFE_SIZE/2-10 + 17] = 1; generation[LIFE_SIZE/2-10 + 34][LIFE_SIZE/2-10 + 17] = 1;
generation[LIFE_SIZE/2-10 + 20][LIFE_SIZE/2-10 + 4] = 1;generation[LIFE_SIZE/2-10 + 20][LIFE_SIZE/2-10 + 8] = 1;generation[LIFE_SIZE/2-10 + 25][LIFE_SIZE/2-10 + 18] = 1; generation[LIFE_SIZE/2-10 + 32][LIFE_SIZE/2-10 + 18] = 1;
generation[LIFE_SIZE/2-10 + 19][LIFE_SIZE/2-10 + 5] = 1;generation[LIFE_SIZE/2-10 + 19][LIFE_SIZE/2-10 + 7] = 1;generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 18] = 1; generation[LIFE_SIZE/2-10 + 34][LIFE_SIZE/2-10 + 18] = 1;
generation[LIFE_SIZE/2-10 + 28][LIFE_SIZE/2-10 + 18] = 1;generation[LIFE_SIZE/2-10 + 35][LIFE_SIZE/2-10 + 18] = 1;
}
void Glider_gun(t_generation & generation)
{
clearField(generation);
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 7] = 1;generation[LIFE_SIZE/2-10 + 36][LIFE_SIZE/2-10 + 5] = 1;generation[LIFE_SIZE/2-10 + 32][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 8] = 1;generation[LIFE_SIZE/2-10 + 36][LIFE_SIZE/2-10 + 6] = 1;generation[LIFE_SIZE/2-10 + 32][LIFE_SIZE/2-10 + 4] = 1;
generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 7] = 1;generation[LIFE_SIZE/2-10 + 37][LIFE_SIZE/2-10 + 5] = 1;generation[LIFE_SIZE/2-10 + 23][LIFE_SIZE/2-10 + 5] = 1;
generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 8] = 1;generation[LIFE_SIZE/2-10 + 37][LIFE_SIZE/2-10 + 6] = 1;generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 5] = 1;
generation[LIFE_SIZE/2-10 + 15][LIFE_SIZE/2-10 + 4] = 1;generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 2] = 1;
generation[LIFE_SIZE/2-10 + 14][LIFE_SIZE/2-10 + 5] = 1;generation[LIFE_SIZE/2-10 + 24][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 13][LIFE_SIZE/2-10 + 6] = 1;generation[LIFE_SIZE/2-10 + 25][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 13][LIFE_SIZE/2-10 + 7] = 1;generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 13][LIFE_SIZE/2-10 + 8] = 1;generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 14][LIFE_SIZE/2-10 + 9] = 1;generation[LIFE_SIZE/2-10 + 23][LIFE_SIZE/2-10 + 4] = 1;
generation[LIFE_SIZE/2-10 + 15][LIFE_SIZE/2-10 + 10] = 1;generation[LIFE_SIZE/2-10 + 24][LIFE_SIZE/2-10 + 4] = 1;
generation[LIFE_SIZE/2-10 + 25][LIFE_SIZE/2-10 + 4] = 1;
generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 4] = 1;
generation[LIFE_SIZE/2-10 + 16][LIFE_SIZE/2-10 + 5] = 1;generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 8] = 1;
generation[LIFE_SIZE/2-10 + 17][LIFE_SIZE/2-10 + 6] = 1;generation[LIFE_SIZE/2-10 + 24][LIFE_SIZE/2-10 + 7] = 1;
generation[LIFE_SIZE/2-10 + 17][LIFE_SIZE/2-10 + 7] = 1;generation[LIFE_SIZE/2-10 + 25][LIFE_SIZE/2-10 + 7] = 1;
generation[LIFE_SIZE/2-10 + 17][LIFE_SIZE/2-10 + 8] = 1;generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 7] = 1;
generation[LIFE_SIZE/2-10 + 18][LIFE_SIZE/2-10 + 6] = 1;generation[LIFE_SIZE/2-10 + 27][LIFE_SIZE/2-10 + 7] = 1;
generation[LIFE_SIZE/2-10 + 18][LIFE_SIZE/2-10 + 7] = 1;generation[LIFE_SIZE/2-10 + 23][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 18][LIFE_SIZE/2-10 + 8] = 1;generation[LIFE_SIZE/2-10 + 24][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 25][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 26][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 16][LIFE_SIZE/2-10 + 9] = 1;
}
void Beacon(t_generation & generation)
{
clearField(generation);
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 4][LIFE_SIZE/2-10 + 4] = 1;
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 4][LIFE_SIZE/2-10 + 5] = 1;
generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 5][LIFE_SIZE/2-10 + 4] = 1;
generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 5][LIFE_SIZE/2-10 + 5] = 1;
}
void Blinker(t_generation & generation)
{
clearField(generation);
generation[LIFE_SIZE/2-10 + 15][LIFE_SIZE/2-10 + 7] = 1;
generation[LIFE_SIZE/2-10 + 16][LIFE_SIZE/2-10 + 7] = 1;
generation[LIFE_SIZE/2-10 + 17][LIFE_SIZE/2-10 + 7] = 1;
}
void largeShip(t_generation & generation)
{
clearField(generation);
generation[LIFE_SIZE/2-10 + 4][LIFE_SIZE/2-10 + 2] = 1; generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 5][LIFE_SIZE/2-10 + 2] = 1; generation[LIFE_SIZE/2-10 + 4][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 3] = 1; generation[LIFE_SIZE/2-10 + 5][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 7][LIFE_SIZE/2-10 + 3] = 1; generation[LIFE_SIZE/2-10 + 6][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 8][LIFE_SIZE/2-10 + 4] = 1; generation[LIFE_SIZE/2-10 + 7][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 5] = 1; generation[LIFE_SIZE/2-10 + 8][LIFE_SIZE/2-10 + 6] = 1;
generation[LIFE_SIZE/2-10 + 8][LIFE_SIZE/2-10 + 5] = 1;
}
void smallShip(t_generation & generation)
{
clearField(generation);
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 5] = 1;
generation[LIFE_SIZE/2-10 + 5][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 4][LIFE_SIZE/2-10 + 5] = 1;
generation[LIFE_SIZE/2-10 + 6][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 5][LIFE_SIZE/2-10 + 5] = 1;
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 4] = 1;generation[LIFE_SIZE/2-10 + 6][LIFE_SIZE/2-10 + 5] = 1;
generation[LIFE_SIZE/2-10 + 6][LIFE_SIZE/2-10 + 4] = 1;
}
void Pentadecathlon(t_generation & generation)
{
clearField(generation);
generation[LIFE_SIZE/2-10 + 2][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 5][LIFE_SIZE/2-10 + 3] = 1; generation[LIFE_SIZE/2-10 + 11][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 3][LIFE_SIZE/2-10 + 3] = 1;generation[LIFE_SIZE/2-10 + 6][LIFE_SIZE/2-10 + 3] = 1; generation[LIFE_SIZE/2-10 + 10][LIFE_SIZE/2-10 + 3] = 1;
generation[LIFE_SIZE/2-10 + 4][LIFE_SIZE/2-10 + 2] = 1;generation[LIFE_SIZE/2-10 + 7][LIFE_SIZE/2-10 + 3] = 1; generation[LIFE_SIZE/2-10 + 9][LIFE_SIZE/2-10 + 2] = 1;
generation[LIFE_SIZE/2-10 + 4][LIFE_SIZE/2-10 + 4] = 1;generation[LIFE_SIZE/2-10 + 8][LIFE_SIZE/2-10 + 3] = 1; generation[LIFE_SIZE/2-10 + 9][LIFE_SIZE/2-10 + 4] = 1;
}
void Line(t_generation & generation)
{
clearField(generation);
for (int i{ 0 }; i < LIFE_SIZE; i++)
generation[i][LIFE_SIZE / 2] = 1;
}
Размещено на Allbest.ru
...Подобные документы
Аналіз теоретичної бази методів інтерполювання функцій. Розробка алгоритмів та вибір оптимального. Приклад програми інтерполювання функції за допомогою інтерполяційного многочлена Лагранжа: інструкція користувача, опис, тестування та лістинг програми.
курсовая работа [1,0 M], добавлен 19.09.2013Інструменти середовища C++Builder, які були використані в програмі. Робота з файлами, їх відкриття, відображення та закриття. Розробка основних функцій для реалізації програми. Тестування програмного забезпечення. Блок-схема та алгоритм програми.
курсовая работа [924,3 K], добавлен 14.01.2014Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.
курсовая работа [1,8 M], добавлен 24.02.2014Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.
курсовая работа [22,2 K], добавлен 08.08.2009Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.
курсовая работа [343,9 K], добавлен 24.08.2012Створення комп'ютерної програми на мові програмування С++ для ведення обліку мобільних телефонів на складі-магазині. Вимоги до апаратного та програмного забезпечення. Схема зв'язку між складовими частинами програми. Інструкція користувача, тестування.
дипломная работа [4,2 M], добавлен 06.06.2012Характеристика предметної області: FTP-server для ОС Windows. Шляхи встановлення FTP-серверу в ОС Windows. Опис мови та середовища програмування, компонентів та функцій програми. Аналіз реалізованої програми FTP-клієнта. Тестовий запуск та опис програми.
курсовая работа [1,7 M], добавлен 22.06.2017Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.
курсовая работа [3,4 M], добавлен 17.11.2014Розробка та використання програми для пришвидшення процесу перетворення двомірного зображення у об'ємне. Методика та процес випробовування для виявлення та усунення недоліків в роботі програми. Інтерфейс програми, встановлення параметрів зображення.
курсовая работа [3,2 M], добавлен 09.06.2010Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.
курсовая работа [991,4 K], добавлен 06.08.2013Розробка алгоритму по виявленню і локалізації особи на зображенні у візуальному середовищі Delphi. Розробка програми по виділенню областей кольору шкіри особи, крапок, ліній і яскравості зображення. Опис структури програми і інтерфейсу користувача.
курсовая работа [3,9 M], добавлен 07.01.2014Призначення ігрової програми "Змійка" для розвитку уваги та логічного мислення гравців. Розробка програми в середовищі C++ Builder 6, її функціонування в ОС Windows. Опис алгоритму та основних функцій програми. Основні переваги та недоліки мови С++.
реферат [1,7 M], добавлен 17.12.2014Побудова інформаційно-математичної моделі та алгоритм задачі. Визначення структури даних. Розробка інтерфейсу програми з користувачем. Складання коду програми. Реалізація проекту у візуальному середовищі. Тестування та інструкція з експлуатації програми.
курсовая работа [1,3 M], добавлен 14.04.2009Основи розробки додатків Windows. Параметри функції WinMain. Запуск процесу, використання для цього вибраних на диску файлів. Відслідковування кожного з процесів (його статус, назву, час життя), діяльності користувача. Опис алгоритму роботи програми.
курсовая работа [202,6 K], добавлен 14.05.2015Загальна характеристика алгоритму та опис програми. Керівництво системного програміста. Особливості запуску програми в Linux, FreeBSD, Windows. Аналіз результатів тестування програми, що проектується, вивчення та оцінка її практичної ефективності.
курсовая работа [91,4 K], добавлен 13.06.2014Аналіз предметної області і постановка задачі на розробку програми для автоматизації роботи автопідприємства. Перелік та опис використаних компонентів та основних процедур програми. Опис структур та методів обробки даних. Інструкція для користувача.
курсовая работа [2,3 M], добавлен 15.02.2012Програмування під DOS мовою низького рівня Асемблер (ASM-86). Функції програми: виведення в довільне місце екрану тексту заданого стилю та кольору, змінення шрифту, розміру літер та напрямку їх виводу. Алгоритм програми, системні вимоги до комп'ютера.
курсовая работа [47,4 K], добавлен 03.06.2009Розробка структури програмного забезпечення, загальної схеми функціонування програми. Реалізація виведення графічних зображень, роботи з шлагбаумом, загальних елементів керування та музики. Інструкція з технічного обслуговування, системного програміста.
курсовая работа [3,1 M], добавлен 10.03.2009Розробка програми GameBox, яка включає в себе дві гри, судоку та пятнашки. Опис структури даних та вимоги до них, процедур і функцій користувача, стандартних процедур і функцій, які використовувались в програмі, та файлів. Результати роботи програми.
курсовая работа [5,3 M], добавлен 12.11.2011Розробка і обґрунтування технічного завдання, вимоги до програмної реалізації та користувача. Можливі варіанти зміни та вдосконалення програми. Початок загального алгоритму вирішення задачі. Структурні зв’язки між функціями програми, її тестування.
курсовая работа [1,8 M], добавлен 14.03.2013