Форум программистов, компьютерный форум 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++ Работа с интернетом Здраствуйте! Мне нужно написать программу на С/С++ для плотной работы с сайтами. Меня интересуют такие вопросы: как войти на сайт,работать с куками,кликать по кнопкам,заполнять формы и т.п. Подскажите пожалуйста в какую сторону копать, полезные ссылки подробнее

Показать сообщение отдельно
gres8
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 8
31.10.2016, 20:56     Игра "Жизнь"
Вот и мой вариант
добавлена мышка

при нажатии 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();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru