Розробка програми для моделювання поведінки двовимірного клітинного автомату

Особливості використання функцій бібліотеки "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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.