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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С Java на C++ можно ли конвертировать? http://www.cyberforum.ru/cpp-beginners/thread347435.html
Есть маленькая программка на Java: фрактальный вихрь. Можно ли её конвертировать на C++ ? Сам не силен в программировании. вот код на Java public Image createImage() { BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB); Graphics graphics = image.getGraphics(); graphics.setColor(Color.WHITE); graphics.fillRect(0, 0, size.width, size.height);...
C++ Таблица факториалов На сайте http://www.habit.ru/33/348.html приводится таблица факториалов, но не все значения (как мне кажется) в ней правильны, например, 50! Или моя программа не так считает. Кто-нибудь может проверить правильность 50! http://www.cyberforum.ru/cpp-beginners/thread347413.html
C++ Глобальная константа
Глобальные константы В С глобальная константа, т. е. инициализированная глобальная переменная с модификатором const, имеет своей областью действия всю программу (доступна для внешней компоновки), как и любая переменная без const. Другими словами, ее имя заносится в список глобальных символов объектного модуля и поэтому к ней можно обращаться из любого другого исходного файла программы. В...
C++ Командная строка.
Сумма чисел. числа передаются в виде аргументов командной строки. #include <iostream> #include <locale> using namespace std; int StringToInt(const char * str, bool & err) { char * pLastChar = NULL; int param = strtol(str, &pLastChar, 10);
C++ Конструктор преобразования. http://www.cyberforum.ru/cpp-beginners/thread347367.html
Есть класс Complex с двумя элемент данными: real и image Надо написать конструктор преобразования базового типа к типу, определяемому разрабатываемым классом, т.е. Complex. Я так понимаю конструктор должен принимать один параметр. Вот только какой? Если просто значение типа int, то после преобразования получится объект класса, в котором real имеет то значение, что преобразовывалось, а image...
C++ Работа с интернетом Здраствуйте! Мне нужно написать программу на С/С++ для плотной работы с сайтами. Меня интересуют такие вопросы: как войти на сайт,работать с куками,кликать по кнопкам,заполнять формы и т.п. Подскажите пожалуйста в какую сторону копать, полезные ссылки подробнее

Показать сообщение отдельно
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
03.09.2011, 08:54
Решил вот тоже выложить свой быдлокод, может поржёте хоть. 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;
}
Писал давно уже, сейчас даже не вчитывался особо, может и ошибки какие есть... Самый главный недостаток, что поле фиксированного размера, просто для удобства чтения из файла делал (чтобы потестить некоторые фигуры). Ну, переделать не проблема, лень просто Да, в файле фигура задаётся с помощью единичек в матрице из нолей. Пример приложил.
Вложения
Тип файла: rar maps.rar (215 байт, 55 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru