Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
rennnorb
19 / 10 / 6
Регистрация: 28.05.2014
Сообщений: 140
Завершенные тесты: 1
1

Игра жизнь: Обычный глайдер через три хода превращается в крест

16.10.2014, 22:02. Просмотров 377. Ответов 0
Метки нет (Все метки)

Сейчас я пишу игру "жизнь". Все вычисления выполняет код:

universe.h
Кликните здесь для просмотра всего текста


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef UNIVERSE_H
#define UNIVERSE_H
 
class Universe
{
private:
    enum {DEAD, ALIVE};
    int univ[20][20];
 
public:
    Universe();
    int aliveForCell(int x, int y);
    int cell(int x, int y);
    void setCell(int x, int y,int state);
    void update();
 
};
 
#endif // UNIVERSE_H


universe.cpp
Кликните здесь для просмотра всего текста


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
#include "universe.h"
 
Universe::Universe()
{
    for(int x = 0; x < 20; x++)
        for(int y = 0; y < 20; y++)
            setCell(x, y, DEAD);
}
 
int Universe::cell(int x, int y)
{
    return univ[x][y];
}
 
void Universe::setCell(int x, int y, int state)
{
    if(state != ALIVE)
        if(state != DEAD)
        {
            return;
        }
    if(x>20 || y>20)
        return;
 
    univ[x][y] = state;
}
 
 
int Universe::aliveForCell(int x, int y)
{
    int num = 0;
 
    if(x-1<20 && y-1<20)
        num += univ[x-1][y-1];
 
    if(x+1<20 && y-1<20)
        num += univ[x+1][y-1];
 
    if(y-1<20)
        num += univ[x][y-1];
 
    if(x-1<20)
        num += univ[x-1][y];
 
    if(x-1<20 && y+1<20)
        num += univ[x-1][y+1];
 
    if(y+1<20)
        num += univ[x][y+1];
 
    if(x+1<20)
        num += univ[x+1][y+1];
 
    if(x+1<20)
        num += univ[x+1][y];
 
    return num;
}
 
 
void Universe::update()
{
        for(int x = 0; x < 20; x++)
            for(int y = 0; y < 20; y++)
            {
                //qDebug() << "Alive for sell "<<x <<"  "<<y<<aliveForCell(x, y);
                if(cell(x, y) == DEAD)
                {
                    if(aliveForCell(x, y) == 3)
                    {
                        setCell(x, y, ALIVE);
                    }
                }
                else if(cell(x, y) == ALIVE)
                {
                    if(aliveForCell(x, y) == 2 ||
                       aliveForCell(x, y) == 3)
                        continue;
                    else
                        setCell(x, y, DEAD);
                }
            }
}


Но обычный глайдер (см. скрин. 1) через три хода превращается в крест (см. скрин. 2). Помогите пожалуйста.

Игра жизнь: Обычный глайдер через три хода превращается в крест


Игра жизнь: Обычный глайдер через три хода превращается в крест
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2014, 22:02
Ответы с готовыми решениями:

Игра "жизнь" - глайдер ведет себя не так, как надо
Добрый вечер. Нужно написать игру &quot;жизнь&quot;. Реализовал,однако глайдер ведет себя...

игра жизнь
содержимое life.cpp// Life.cpp: определяет точку входа для консольного...

Игра жизнь
Нужно написать игру &quot;Жизнь&quot; простым кодом. Только начал изучать c++

Игра Жизнь
Написал вот такую реализацию: #include &quot;stdafx.h&quot; #include &quot;iostream&quot;...

Игра Жизнь
Ну, правила игры таковы: - если клетка пустая но имеет ровно 3 соседа (вообще...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2014, 22:02

Игра 2048 - исправить выбор направления хода игроком
Чувствую, что напутал что-то при выборе направления хода игроком... #include...

Игра ( Жизнь Конвея)
Написал код - но во время запуска игра вылетает! Вот исходники, подскажите, что...

Игра в жизнь Конвей
Чего то я намудрил помогите разобраться пожалуйста #include&lt;math.h&gt;...


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

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

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