Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
#1

Игра "Жизнь" - C++

02.09.2011, 15:30. Просмотров 2550. Ответов 11
Метки нет (Все метки)

Всем привет. Взялся за написание "Жизни", столкнулся с непонятными багами.

Вот мой код (сначала хочу проверить алгоритм на небольших массивах):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
using namespace std;
 
void printArray ( char [][ 5 ] );
short around ( char [][ 5 ], short, short );
void deadOrAlive ( char [][ 5 ], char [][ 5 ], short, short );
void copyArrays ( char [][ 5 ], char [][ 5 ] );
void clearArray2 ( char [][ 5 ] );
 
int main ()
{
    char array [ 3 ][ 5 ] = { { 0, 0, 0, 0, 0 },
                              { 0, 1, 1, 1, 0 },
                              { 0, 0, 0, 0, 0 } };
                              
    char array2 [ 3 ][ 5 ] = { 0 };
 
    deadOrAlive ( array, array2, 1, 1 );
    deadOrAlive ( array, array2, 2, 1 );
    deadOrAlive ( array, array2, 3, 1 );
    copyArrays ( array, array2 );
    clearArray2 ( array2 );
    printArray ( array );
    
    system ( "pause" );
    return 0;
}
 
void printArray ( char array [][ 5 ] )
{
    for ( int i = 0; i < 3; i++ )
    {
        for ( int j = 0; j < 5; j++ )
            cout << array [ i ][ j ];
            
        cout << endl;
    }
}
 
short around ( char array [][ 5 ], short x, short y )
{
    short around = 0;
    
    if ( array [ y - 1 ][ x ] == 1 )
       around++;
       
    if ( array [ y - 1 ][ x - 1 ] == 1 )
       around++;
       
    if ( array [ y ][ x - 1 ] == 1 )
       around++;
       
    if ( array [ y + 1 ][ x - 1 ] == 1 )
       around++;
       
    if ( array [ y + 1 ][ x ] == 1 )
       around++;
       
    if ( array [ y + 1 ][ x + 1 ] == 1 )
       around++;
       
    if ( array [ y ][ x + 1 ] == 1 )
       around++;
       
    if ( array [ y - 1 ][ x + 1 ] == 1 )
       around++;
       
    return around;
}
 
void deadOrAlive ( char array [][ 5 ], char array2 [][ 5 ], short x, short y )
{
    if ( array [ y ][ x ] == 1 )
    {
       if ( around ( array, x, y ) != 2 )
          if ( around ( array, x, y ) != 3 )
             array2 [ y ][ x ] = 0;
    }
    else
       array2 [ x ][ y ] = array [ x ][ y ];
             
    if ( array [ y ][ x ] == 0 )
    {
       if ( around ( array, x, y ) == 3 )
          array2 [ y ][ x ] = 1;
    }       
    else
       array2 [ x ][ y ] = array [ x ][ y ]; 
}
 
void copyArrays ( char array [][ 5 ], char array2 [][ 5 ] )
{
    for ( int i = 0; i < 3; i++ )
        for ( int j = 0; j < 5; j++ )
            array [ i ][ j ] = array2 [ i ][ j ];          
}
 
void clearArray2 ( char array2 [][ 5 ] )
{
     for ( int i = 0; i < 3; i++ )
        for ( int j = 0; j < 5; j++ )
            array2 [ i ][ j ] = 0;
}
Где здесь могла затаиться ошибка?

Ну и, кто писал "Жизнь" на С++, пожалуйста, покажите код. Также буду рад услышать любые советы и рекомендации.

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2011, 15:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра "Жизнь" (C++):

Игра "Жизнь"; Нужно, чтобы первое поколение задавалось оператором (с клавиатуры) - C++
Нужна помощь с решением задачи &quot;Жизнь&quot; на с++ Есть код программы, которая задает первое поколение колонии случайным образом. Но мне...

Игра "Жизнь" с самым простым кодом - C++
Здравствуйте, нужна помощь по написанию кода для игры &quot;Жизнь&quot; только на простом уровне, так как еще очень мало разбираюсь в...

Игра "Борьба за жизнь". Цель игры – убрать с доски все шашки противника - C++
Здравствуйте! Помогите пожалуйста написать программу на с++. Два игрока имеют по n шашек и играют в поле m m клеток, делая ходы по...

Игра "жизнь" - разобраться в коде - C++
помогите разобраться в коде #define SIZE 20 int a,b; int chk(int x, int y) { int i=0; if (a==1) i++; if...

Игра "Жизнь" и торообразный массив - C++
Подскажите, как можно реализовать торообразный (круговой) массив для игры &quot;Жизнь&quot;. есть только примитивный алгоритм, без учета...

Игра "Жизнь" - C++
Пожалуйста скиньте кто нибуть код проги написаной на С++ console application, буду очень благодарен!!! мне нужен код игры &quot;Жызнь&quot;...

11
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
02.09.2011, 15:34 #2
vortexx1, Паскаль знаете?
0
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
02.09.2011, 16:11  [ТС] #3
Знаю Delphi
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
02.09.2011, 16:17 #4
Посомтрите в примерах Pascal ABC, там есть готовая игра с графикой.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 08:08 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//headers/world.h
#include <iostream> 
#include <stdio.h>
                                                                                ////////////////////////////////////
#define LEFT_DOWN   table[line + 1][column - 1]                                 //[-1 L_U -1] [-1 U 0] [-1 R_U +1]//
#define DOWN        table[line + 1][column]                                     //[0   L  -1] [0^__^0] [0   R  +1]//
#define RIGHT_DOWN  table[line + 1][column + 1]                                 //[+1 L_D -1] [+1 D 0] [+1 R_D +1]//
#define RIGHT       table[line][column + 1]                                     ////////////////////////////////////
#define RIGHT_UP    table[line - 1][column + 1]
#define UP          table[line - 1][column]
#define LEFT_UP     table[line - 1][column - 1]
#define LEFT        table[line][column - 1]
 
const int LINES = 24, COLUMNS = 80;
const char amoeba = '*';
 
class World
{
    private:
        bool table[LINES][COLUMNS];
        bool auxiliaryTable[LINES][COLUMNS];                                    //why? hz...
    public:
        void randomizeTable();
        void step();
        void showTable();
};
 
void World::randomizeTable()
{
    srand(time(NULL));
    for(int line = 0; line < LINES; ++line)
        for(int column = 0; column < COLUMNS; ++column)
            /*auxiliaryTable[line][column] = (*/table[line][column] = rand() % 2/*)*/;
}
 
void World::step()                                                              //Caution!
{                                                                               //Probably bad code ='(
    for(int line = 0; line < LINES; ++line)
        for(int column = 0; column < COLUMNS; ++column)
        {
            int neighbors = 0;
            if((line == 0) && (column == 0))                                    //left up
                neighbors += DOWN + RIGHT_DOWN + RIGHT;
            else if((line == 0) && (column == (COLUMNS - 1)))                   //right up
                neighbors += LEFT + LEFT_DOWN + DOWN;
            else if((line == (LINES - 1)) && (column == (COLUMNS - 1)))         //right down
                neighbors += UP + LEFT_UP + LEFT;
            else if((line == (LINES - 1)) && (column == 0))                     //left down
                neighbors += RIGHT + RIGHT_UP + UP;
            else if(column == 0)                                                //left
                neighbors += DOWN + RIGHT_DOWN + RIGHT + RIGHT_UP + UP;
            else if(line == 0)                                                  //up
                neighbors += LEFT + LEFT_DOWN + DOWN + RIGHT_DOWN + RIGHT;
            else if(column == (COLUMNS - 1))                                    //right
                neighbors += UP + LEFT_UP + LEFT + LEFT_DOWN + DOWN;
            else if(line == (LINES - 1))                                        //down
                neighbors += RIGHT + RIGHT_UP + UP + LEFT_UP + LEFT;
            else
                neighbors += LEFT_DOWN + DOWN + RIGHT_DOWN + RIGHT + RIGHT_UP + UP + LEFT_UP + LEFT;
            if(table[line][column])
                ((neighbors > 3) || (neighbors < 2)) ? auxiliaryTable[line][column] = 0 : auxiliaryTable[line][column] = 1;
            else
                (neighbors == 3) ? auxiliaryTable[line][column] = 1 : auxiliaryTable[line][column] = 0;
        }
    for(int line = 0; line < LINES; ++line)
        for(int column = 0; column < COLUMNS; ++column)
            table[line][column] = auxiliaryTable[line][column];
}
 
void World::showTable()
{
    for(int line = 0; line < LINES; ++line)
        for(int column = 0; column < COLUMNS; ++column)
            (table[line][column]) ? std::cout << amoeba : std::cout << ' ';
            //printf((table[line][column]) ? ("%X", amoeba) : (" "));
            //(table[line][column]) ? printf("•") : printf(" ");
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//main.cpp
#include <iostream>
#include <windows.h>
#include "headers/world.h"
 
int main()
{
    /*char c_game; //y/n
    std::cout << "Start game? (y/n):\n";
    std::cin >> c_game;
    if(c_game != 'y')
        return 0;*/
    World w1;
    w1.randomizeTable();
    while(TRUE)
    {
        w1.step();
        system("cls");
        w1.showTable();
        //Sleep(300);
    }
    return 0;
}
Вот мой. консолька, окно на 24*80.
На супер гениальный и оптимизированный код не претендует (даже на википедии есть способ побыстрее), просто написал рабочий алгоритм, чтобы затем реализовать это на GUI.
В алгоритме есть одна фича (ну ладно, ладно, косяк).
Поскольку поле как-бы бесконечно, то планер должен выходить за пределы карты 24*80, а у меня просто отсеиваются все клетки, которые больше заданного промежутка, и оставшаяся половина планера продолжает жить в свое удовольствие, перемещаясь в другую сторону.

Добавлено через 4 минуты
А касательно кода ТС
Там возможен выход за границы массива? Вот тут
Цитата Сообщение от vortexx1 Посмотреть сообщение
short around ( char array [][ 5 ], short x, short y )
?

Не по теме:

В код не вчитывался, ибо голова еще не проснулась... =(

0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
03.09.2011, 08:54 #6
Решил вот тоже выложить свой быдлокод, может поржёте хоть. XD
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <cstdlib>
#include <fstream>
///////////////////////////////////////////////
class Life
{
public:
    void printField() const; // печать поля
    void loadFromFile(const char * filename); // загрузка поля из файла
    void step(); // очередной шаг игры
private:
    static const int rows = 20, cols = 20; // размеры поля
    int field[rows][cols]; // основной массив (игровое поле)
    int temp[rows][cols]; // массив-буфер
};
///////////////////////////////////////////////
void Life::printField() const
{
    int i, j;
 
    system( "cls" );
 
    // верхняя граница
    std::cout.put(201);
    for (i = 0; i < rows; ++i)
        std::cout.put(205);
    std::cout.put(187);
    std::cout << '\n';
 
    for (i = 0; i < rows; ++i)
    {
        // левая граница
        std::cout.put(186);
 
        // внутреннее поле
        for (j = 0; j < cols; ++j)
        {
            if (field[i][j] == 0)
                std::cout.put(' ');
            else
                std::cout.put('*');
        }
 
        // правая граница
        std::cout.put(186);
        std::cout << '\n';
    }
 
    // нижняя граница
    std::cout.put(200);
    for ( i = 0; i < rows; ++i )
        std::cout.put(205);
    std::cout.put(188);
    std::cout << '\n';
}
///////////////////////////////////////////////
void Life::loadFromFile(const char * filename)
{
    int i, j;
    std::ifstream infile;
    infile.open(filename);
 
    if(!infile)
    {
        std::cerr << "Cannot open file!\n";
        system ("pause");
        exit(0);
    }
 
    // читаем из файла
    for (i = 0; i < rows; ++i)
    {
        for (j = 0; j < cols; ++j)
        {
            infile >> field[i][j];
        }
    }
 
    infile.close();
}
///////////////////////////////////////////////
void Life::step()
{
    int temp[rows][cols];
    int left, right, up, down;
    int i, j, counter;
 
    for (i = 0; i < rows; ++i)
    {
        for (j = 0; j < cols; ++j)
        {
            counter = 0;
 
            // поиск соседей с проверкой выхода за пределы
            left  = ( j == 0 ? cols - 1 : j - 1 );
            right = ( j == cols - 1 ? 0 : j + 1 );
            up    = ( i == 0 ? rows - 1 : i - 1 );
            down  = ( i == rows - 1 ? 0 : i + 1 );
 
            // подсчёт живых соседей
            if ( field[up][left]    ) ++counter;
            if ( field[i][left]     ) ++counter;
            if ( field[down][left]  ) ++counter;
            if ( field[up][j]       ) ++counter;
            if ( field[down][j]     ) ++counter;
            if ( field[up][right]   ) ++counter;
            if ( field[i][right]    ) ++counter;
            if ( field[down][right] ) ++counter;
 
            // решение для мёртвой клетки
            if(field[i][j] == 0)
            {
                if ( counter == 3)
                    temp[i][j] = 1;
                else
                    temp[i][j] = 0;
            }
            // решение для живой клетки
            else
            {
                if (counter != 2 && counter != 3)
                    temp[i][j] = 0;
                else
                    temp[i][j] = 1;
            }
        }
    }
 
    // копирование из буфера в основной массив
    for ( i = 0; i < rows; ++i )
    {
        for ( j = 0; j < cols; ++j )
        {
            field[i][j] = temp[i][j];
        }
    }
}
///////////////////////////////////////////////
int main()
{
 
    Life myLife;
    char signal;
 
    myLife.loadFromFile("map2.txt");
 
    // просто нажимаем enter для нового шага
    // завершаем игру вводом 'n'
    do
    {
        myLife.printField();
        myLife.step();
        
        signal = std::cin.get();
    }
    while ( signal != 'n' );
    
    return 0;
}
Писал давно уже, сейчас даже не вчитывался особо, может и ошибки какие есть... Самый главный недостаток, что поле фиксированного размера, просто для удобства чтения из файла делал (чтобы потестить некоторые фигуры). Ну, переделать не проблема, лень просто Да, в файле фигура задаётся с помощью единичек в матрице из нолей. Пример приложил.
0
Вложения
Тип файла: rar maps.rar (215 байт, 57 просмотров)
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 09:22 #7
2dihlofos
А что будет, если задать клетки по углам поля?
0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
03.09.2011, 10:29 #8
soon, дык, если по всем углам по одной клетке, то получится статичный квадратик. Или я что-то проглядел, раз вы спрашиваете?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 10:39 #9
Ага, получится. А разве они не должны умереть от одиночества?
0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
03.09.2011, 10:43 #10
Цитата Сообщение от soon Посмотреть сообщение
А разве они не должны умереть от одиночества?
А что так? Вроде же у каждой клетки по три соседа? Или тут как-то не так считаться будет? хм...
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.09.2011, 10:50 #11
Извиняюсь. Невнимательно читал статью на wiki. В первых же строчках указано про использование тора. Блин...
1
gres8
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 25
31.10.2016, 20:56 #12
Вот и мой вариант
добавлена мышка

при нажатии 1 жизнь при нажатии 2 стоп )) рисуем нажмаем 1 и смотрим

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#include <windows.h>
#include <ctime>
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
 
#include <GL/glut.h>
#include <vector>
#include <cstdlib>
#include <cmath>
using namespace std;
 
//int iWidth = 0.99*GetSystemMetrics(SM_CXSCREEN);
//int iHeight =0.90*GetSystemMetrics(SM_CYSCREEN);
 
 
 
 
      int   x;                // для мышки координат
      int   y;                // для мышки координат
     bool   down = false;
 
      int   stop = 1;         //жизнь продолжается
      int   counter;          //счетчик клеток
      int   kletka;           //содержит номер ячеки проверяемой клетки
      int   diam=15;          //диаметр клетки
 
const int   X=50;            // сколько клеток в ряду
const int   Y=40;            // сколько рядов
 
int w =  X*diam;              //ширина окна
int h =  Y*diam;              //высота окна
 
struct P
{
    int life;
    int next;
    int r;
    int g;
    int b;
} p [X*Y];
 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    for (int i = 0; i<X; ++i)
    {
        for (int j = 0; j<Y; ++j)
        {
            kletka = i+j*X;
            if (p[kletka].life == 1)
            {
 
                  glColor3ub(p[kletka].r,p[kletka].g,p[kletka].b);  // рисуется шарих
                  glBegin(GL_LINE_LOOP);
 
                  for (int a = 0; a < 36; ++a)
                  {
                     float x = diam/2 * cos(a * M_PI / 18);
                     float y = diam/2 * sin(a * M_PI / 18);
                     glVertex2f(diam/2+i*diam+x, diam/2+j*diam + y);
                  }
                  glEnd();
            }
         }
    }
    glutSwapBuffers();
}
 
 
 
// поиск соседей
 
void poisks()
{
      for (int i = 0; i < X; ++i)
      {
            for (int j = 0; j < Y; ++j)
            {
 
             counter = 0;
             kletka = i+j*X;
             if   (kletka > X && kletka < (X*Y)-X)
             {
                  if (p[kletka+1].life==1) ++counter;
                  if (p[kletka-1].life==1) ++counter;
 
                  if (p[kletka+X].life==1) ++counter;
                  if (p[kletka-X].life==1) ++counter;
 
                  if (p[kletka+X-1].life==1) ++counter;
                  if (p[kletka-X-1].life==1) ++counter;
 
                  if (p[kletka+X+1].life==1) ++counter;
                  if (p[kletka-X+1].life==1) ++counter;
            }
 
                  // решение для мёртвой клетки
                  if (p[kletka].life==0)
                  {
                     if ( counter == 3)
                              p[kletka].next = 1;
                        else
                              p[kletka].next = 0;
                  }
                   // решение для живой клетки
 
                    if (p[kletka].life==1)
                        {
                            if (counter != 2 && counter != 3)
                                p[kletka].next = 0;
                            else
                                p[kletka].next = 1;
                        }
 
            }
      }
 
}
 
void next ()
{
     for (int i = 0; i < X*Y; i++)
       {
           p[i].life  = p[i].next;
     }
}
 
void timer(int = 0)
{
 
    if(GetAsyncKeyState('1'))  stop =1;
    if(GetAsyncKeyState('2'))  stop =2;
 
    if (down)
    {
      kletka = x/diam+y/diam*X;
      p[kletka].life = 1;
    }
 
    if (stop ==1){
    poisks ();
    next ();
    }
 
    display();
    glutTimerFunc(1, timer, 0);
}
 
void mouse (int button, int state, int ax, int ay)
{
    x=ax;
    y=ay;
    down = state == GLUT_DOWN;
 
}
 
void motion (int ax, int ay)
{
    x=ax;
    y=ay;
}
 
 
int main(int argc, char **argv)
{
    for (int i = 0; i < X*Y; i++)
       {
 
            p[i].life  = rand() % 2;
            p[i].next  = 0;
            p[i].r  = rand() % 255;
            p[i].g  = rand() % 255;
            p[i].b  = rand() % 255;
 
      }
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
      glutInitWindowSize(w, h);
      glutInitWindowPosition(-10, -10);
      glutCreateWindow("Brownian motion");
      glClearColor(0, 0, 0, 1.0);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glOrtho (0, w, h, 0, -1, 1);
      glutDisplayFunc(display);
      timer();
      glutMouseFunc(mouse);
      glutMotionFunc(motion);
 
      glutMainLoop();
}
0
31.10.2016, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 20:56
Привет! Вот еще темы с ответами:

Игра "Жизнь" - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; #include &lt;WinCon.h&gt; #include &lt;conio.h&gt; #include...

игра "жизнь" - C++
Помогите,пожалуйста,разобраться как работает программа, особенно в функции proverka. очень надо #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

игра "жизнь." - C++
Здравствуйте, форумчане, я новенький по этому возможно буду ошибаться и говорить глупости. Но надеюсь вы таки мне поможете в понимании...

Игра "Жизнь" - C++
Написал недавно программку, но возникли проблемы с её оптимизацией( распараллеливанием), а так же графикой. Знаю я только openMP и Pthreads...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru