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

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
wase611
#1

Игра "Жизнь" добавить Edit ,чтобы можно было самому устанавливать параметры - Delphi

23.05.2013, 10:46. Просмотров 678. Ответов 2
Метки нет (Все метки)

Дорогие друзья помогите пожалуйста с добавлением edit-ов ,так чтобы я могу устанавливать в них:
edit1-установка при сколки клетках рождается жизнь;
edit2-установка при сколки клетках продолжает жить;
edit3-установка при сколки клетках она умирает(клетка).

Вот собственно код!

Delphi
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, MPlayer, ExtCtrls, ComCtrls, StdCtrls, Buttons, ImgList, jpeg;
 
const
  n=82;
 
type
  pole=array[1..n,1..n] of integer;
  TForm1 = class(TForm)
    N1:           TMenuItem;
    N3:           TMenuItem;
    N4:           TMenuItem;
    N5:           TMenuItem;
    N6:           TMenuItem;
    N8:           TMenuItem;
    N9:           TMenuItem;
    N10:          TMenuItem;
    Edit1:        TEdit;
    Shape1:       TShape;
    Shape2:       TShape;
    Label1:       TLabel;
    Label2:       TLabel;
    UpDown1:      TUpDown;
    MainMenu1:    TMainMenu;
    OpenDialog1:  TOpenDialog;
    SaveDialog1:  TSaveDialog;
    ColorDialog1: TColorDialog;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    N7: TMenuItem;
    N2: TMenuItem;
    GroupBox2: TGroupBox;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    RadioButton6: TRadioButton;
    RadioButton7: TRadioButton;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    N11: TMenuItem;
    Button4: TButton;
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
 
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormPaint(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  a:pole;
  i,j,summa,stopp,pokolenie,zikl,xo,yo,sxod,zader:integer;
  f:file of integer;
 
implementation
 
uses Unit2, Unit3, Unit4;
 
{$R *.DFM}
 
procedure povto;  {Процедура рисования точки}
  begin
    form1.canvas.pen.color:=form1.Shape1.Pen.Color;
    form1.canvas.brush.color:=form1.Shape1.Pen.Color;
    form1.canvas.rectangle(xo+j*sxod+1,yo+i*sxod+1,xo+(j+1)*sxod,yo+(i+1)*sxod);
  end;
 
procedure iszto;  {Процедура закрашивания точки}
  begin
    form1.canvas.pen.color:=form1.color;
    form1.canvas.brush.color:=form1.color;
    form1.canvas.rectangle(xo+j*sxod+1,yo+i*sxod+1,xo+(j+1)*sxod,yo+(i+1)*sxod);
  end;
 
procedure setk;     {Процедура рисования сетки}
    var xot,yot:integer;
  begin
    form1.canvas.pen.color:=form1.Shape2.Pen.Color;
    xot:=xo+sxod; yot:=yo+sxod;
      for i:=1 to n+1 do begin
        form1.canvas.moveto(xot,yo+sxod);
        form1.canvas.lineto(xot,yo+(n+1)*sxod);
        xot:=xot+sxod;
      end;
      for j:=1 to n+1 do begin
        form1.canvas.moveto(xo+sxod,yot);
        form1.canvas.lineto(xo+(n+1)*sxod,yot);
        yot:=yot+sxod;
      end;
  end;
 
procedure prisvaivanie; {Процедура присваивания}
  begin
    if ((a[i,j]=0)   and ((summa>=300) and (summa<=308))) then a[i,j]:=1;
    if ((a[i,j]=100) and (((summa>=0)  and (summa<=108))or
                         ((summa>=400) and (summa<=808)))) then a[i,j]:=101;
  end;
 
 
 
procedure xod;      {Процедура рождения или смерти для точки}
  begin
    setk;
      for i:=1 to n do begin
      for j:=1 to n do begin
 
        if ((i in[2..n-1]) and (j in[2..n-1])) then   {массив без границ}
          begin
            summa:=(a[i-1,j-1]+a[i,j-1]+a[i+1,j-1]+a[i+1,j]
                   +a[i+1,j+1]+a[i,j+1]+a[i-1,j+1]+a[i-1,j]);
            prisvaivanie;
          end;
 
        if ((i in[2..n-1]) and (j=1)) then  {верхняя граница массива}
          begin
            summa:=(a[i-1,n]+a[i,n]+a[i+1,n]+a[i+1,1]
                   +a[i+1,2]+a[i,2]+a[i-1,2]+a[i-1,1]);
            prisvaivanie;
          end;
 
        if ((i in[2..n-1]) and (j=n)) then   {нижняя граница массива}
          begin
            summa:=(a[i-1,n-1]+a[i,n-1]+a[i+1,n-1]+a[i+1,n]
                   +a[i+1,1]+a[i,1]+a[i-1,1]+a[i-1,n]);
            prisvaivanie;
          end;
 
        if ((i=1) and (j in[2..n-1])) then   {левая граница массива}
          begin
            summa:=(a[n,j-1]+a[1,j-1]+a[2,j-1]+a[2,j]
                   +a[2,j+1]+a[1,j+1]+a[n,j+1]+a[n,j]);
            prisvaivanie;
          end;
 
        if ((i=n) and (j in[2..n-1])) then   {правая граница массива}
          begin
            summa:=(a[n-1,j-1]+a[n,j-1]+a[1,j-1]+a[1,j]
                   +a[1,j+1]+a[n,j+1]+a[n-1,j+1]+a[n-1,j]);
            prisvaivanie;
          end;
 
        if ((i=1) and (j=1)) then   {левая верхняя точка}
          begin
            summa:=(a[n,n]+a[1,n]+a[2,n]+a[2,1]
                   +a[2,2]+a[1,2]+a[n,2]+a[n,1]);
            prisvaivanie;
          end;
 
        if ((i=n) and (j=1)) then   {правая верхняя точка}
          begin
            summa:=(a[n-1,n]+a[n,n]+a[1,n]+a[1,1]
                   +a[1,2]+a[n,2]+a[n-1,2]+a[n-1,1]);
            prisvaivanie;
          end;
 
        if ((i=1) and (j=n)) then   {левая нижняя точка}
          begin
            summa:=(a[n,n-1]+a[1,n-1]+a[2,n-1]+a[2,n]
                   +a[2,1]+a[1,1]+a[n,1]+a[n,n]);
            prisvaivanie;
          end;
 
        if ((i=n) and (j=n)) then   {правая нижняя точка}
          begin
            summa:=(a[n-1,n-1]+a[n,n-1]+a[1,n-1]+a[1,n]
                   +a[1,1]+a[n,1]+a[n-1,1]+a[n-1,n]);
            prisvaivanie;
          end;
      end;
      end;
  end;
 
procedure risovanie;
  begin
    for i:=1 to n do begin
    for j:=1 to n do begin
      if a[i,j]=1 then
        begin
          povto;
          a[i,j]:=100;
        end;
      if a[i,j]=101 then
        begin
          iszto;
          a[i,j]:=0;
        end;
    end;
    end;
  end;
 
procedure TForm1.FormCreate(Sender: TObject);
  begin
    xod;
    risovanie;
  end;
 
procedure TForm1.N3Click(Sender: TObject);
  begin
    form2.Visible:=true;
  end;
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
    var id,jd,sist:integer;
  begin
     if (((x>xo) and (x<=(xo+(n+1)*sxod))) and ((y>yo) and (y<=(yo+(n+1)*sxod)))) then
       begin
         jd:=((x-xo)div sxod);
         id:=((y-yo)div sxod);
           if ((id in[1..n]) and (jd in[1..n]))  then  begin
             i:=id;  j:=jd;                              end;
           if ((a[i,j]=100)   or (a[i,j]=101))   then  begin
             sist:=0;   iszto;                           end;
           if ((a[i,j]=0) or (a[i,j]=1))         then  begin
             sist:=100;  povto;                          end;
           if sist=0     then   a[i,j]:=0;
           if sist=100   then   a[i,j]:=100;
       end;
  end;
 
procedure razr;
  begin
    if form1.RadioButton1.Checked=true then
      begin  sxod:=5; xo:=165; yo:=-5; end;
    if form1.RadioButton2.Checked=true then
      begin  sxod:=7; xo:=165; yo:=-5; end;
    if form1.RadioButton3.Checked=true then
      begin  sxod:=9; xo:=165; yo:=-5; end;
  end;
 
procedure spead;
  begin
    if form1.RadioButton4.Checked=true then zader:=0;
    if form1.RadioButton5.Checked=true then zader:=5000000;
    if form1.RadioButton6.Checked=true then zader:=50000000;
    if form1.RadioButton7.Checked=true then zader:=100000000;
  end;
 
procedure TForm1.FormPaint(Sender: TObject);
  begin
    spead;
    razr;
    setk;
      for i:=1 to n do begin
      for j:=1 to n do begin
        if ((a[i,j]=100) or (a[i,j]=101)) then povto;
      end;
      end;
  end;
 
procedure TForm1.N8Click(Sender: TObject);
  begin
    if colordialog1.Execute then
      begin
        form1.Shape1.Pen.Color :=colordialog1.color;
          for i:=1 to n do begin
          for j:=1 to n do begin
            if ((a[i,j]=100) or (a[i,j]=101)) then povto;
          end;
          end;
      end;
  end;
 
procedure TForm1.N9Click(Sender: TObject);
  begin
    if colordialog1.Execute then
      begin
        form1.Shape2.Pen.Color :=colordialog1.color;
        setk;
      end;
  end;
 
 
procedure TForm1.N10Click(Sender: TObject);
  begin
    if colordialog1.Execute then
      begin
        form1.color :=colordialog1.color;
        form1.edit1.color:=colordialog1.color;
        form1.label2.color:=colordialog1.color;
      end;
  end;
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
    var hh:integer;
  begin
    stopp:=0;
      for zikl:=1 to form1.updown1.position do
        begin
          pokolenie:=pokolenie+1;
          form1.label2.caption:=inttostr(pokolenie);
          xod;
          risovanie;
          application.ProcessMessages;
            if stopp=1 then break;
            for hh:=1 to zader do
              begin
                application.ProcessMessages;
              end;
        end;
  end;
 
procedure TForm1.SpeedButton2Click(Sender: TObject);
  begin
    stopp:=1;
  end;
 
procedure TForm1.SpeedButton3Click(Sender: TObject);
  begin
    pokolenie:=0;
    form1.label2.caption:=inttostr(pokolenie);
      for i:=1 to n do begin
      for j:=1 to n do begin
        a[i,j]:=0;
        iszto;
      end;
      end;
  end;
 
procedure TForm1.SpeedButton7Click(Sender: TObject);
  begin
    stopp:=1;
    close;
  end;
 
 
procedure TForm1.N4Click(Sender: TObject);
  begin
    savedialog1.Filter:= 'Файлы игры Жизнь (*.life)|*.LIFE';
    savedialog1.Title:= 'Выбор нужного файла';
    savedialog1.FilterIndex:=2;
      if savedialog1.Execute then
        begin
          assignfile(f,savedialog1.filename);
          rewrite(f);
          write(f,pokolenie);
            for i:=1 to n do begin
            for j:=1 to n do begin
              write(f,a[i,j]);
            end;
            end;
          closefile(f);
        end;
  end;
 
procedure TForm1.N5Click(Sender: TObject);
  begin
    opendialog1.Filter:= 'Файлы игры Жизнь (*.life)|*.LIFE';
    opendialog1.Title:= 'Выбор нужного файла';
    opendialog1.FilterIndex:=2;
      if opendialog1.Execute then
        begin
          assignfile(f,opendialog1.filename);
          reset(f);
          pokolenie:=0;
          read(f,pokolenie);
          form1.Label2.Caption:=inttostr(pokolenie);
            for i:=1 to n do begin
            for j:=1 to n do begin
              read(f,a[i,j]);
                if ((a[i,j]=100) or (a[i,j]=101)) then povto;
                if ((a[i,j]=  0) or (a[i,j]=  1)) then iszto;
            end;
            end;
          closefile(f);
        end;
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
    var hh:integer;
  begin
    stopp:=0;
      for zikl:=1 to form1.updown1.position do
        begin
          pokolenie:=pokolenie+1;
          form1.label2.caption:=inttostr(pokolenie);
          xod;
          risovanie;
          application.ProcessMessages;
            if stopp=1 then break;
            for hh:=1 to zader do
              begin
                application.ProcessMessages;
              end;
        end;
  end;
 
procedure TForm1.Button2Click(Sender: TObject);
  begin
    stopp:=1;
  end;
 
procedure TForm1.Button3Click(Sender: TObject);
  begin
    pokolenie:=0;
    form1.label2.caption:=inttostr(pokolenie);
      for i:=1 to n do begin
      for j:=1 to n do begin
        a[i,j]:=0;
        iszto;
      end;
      end;
  end;
 
procedure TForm1.Button4Click(Sender: TObject);
  begin
    stopp:=1;
    close;
  end;
 
procedure TForm1.FormActivate(Sender: TObject);
  begin
    spead;
    razr;
  end;
 
procedure TForm1.N7Click(Sender: TObject);
begin
form3.Visible:=true;
end;
 
procedure TForm1.N2Click(Sender: TObject);
  begin
    Form4.visible:=true;
  end;
 
end.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 10:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра "Жизнь" добавить Edit ,чтобы можно было самому устанавливать параметры (Delphi):

Сделать так, чтобы после ввода текста в Edit вместо нажатия кнопки "Да" можно было нажимать клавишу "Enter" - Delphi
Раньше при помощи нехитрого кода (if (key = #13) then ...) у меня получалось сделать так, чтобы после ввода текста в Edit вместо нажатия...

Игра "Жизнь". Границы DrawGrid - Delphi
Добрый день! За помощью обращусь ещё сюда:( Написала код игры &quot;Жизнь&quot;, используя таблицу GrawGrid. Но почему-то если клетка или...

Игра "Жизнь". Исправить ошибки - Delphi
Здравствуйте! Мне нужно написать игру &quot;Жизнь&quot;. https://ru.wikipedia.org/wiki/%D0%96%D0%B8%D0%B7%D0%BD%D1%8C_(%D0%B8%D0%B3%D1%80%D0%B0) ...

На форме располагаются компоненты: редактор Edit; линейка ScrollBar; радионабор с опциями "Цветы", "Деревья", "Рыбы", "Звери" - Delphi
Доброго времени суток, 2 курс 2 семестр, пришли, препод раздал задачи, сказал качайте дома и вперед, что да как ни слова, вот собственно...

Как сделать, чтобы в edit можно было вводить только латинские буквы? - Delphi
Как сделать чтоб в edit можно было вводить только English буквы.

Как сделать так, чтобы когда на 3-ёх " Label " Было одинаковое значение, то на 4-ом появлялся текст ? - Delphi
На фотографии то что я хочу сделать я уже сделал крестики нолики при нажатии на кнопку в верхнем квадратике появляется соответствующий...

2
Taftis
Pascal, Delphi, C++
179 / 128 / 27
Регистрация: 01.12.2012
Сообщений: 628
23.05.2013, 15:50 #2
ну создай форму и замени константы на переменные которым присвой значения едит
0
wase611
24.05.2013, 10:18 #3
в этом и проблема=(
пытался уже так делать и ничего не вышло.
скорее всего я где то ошибся ,но честно говоря не знаю где,поэтому и прошу совета со стороны.
Если это не сложно, прошу ,помоги пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 10:18
Привет! Вот еще темы с ответами:

При нажатии на кнопку в первой половине сроки "перед двоеточием" добавить текст введенный в edit - Delphi
Помоги с кодом: В memo добавляю текст (построчно) : 1111111:1111111 0000000:0000000 Нужно чтобы при нажатии на кнопку в первой...

Как сделать, чтобы в Edit можно было записывать числа: 1.2 4.5 7.5 1.8 (дроби) и Delphi не ругался на это? - Delphi
Такой вопрос как сделать что бы в edit записывать числа 1.2 4.5 7.5 1.8 вобщем дроби и delphi не ругался на это?

написать процедуру "ввод" которая введенное слово в edit перемещает в список listbox и процедуру "очистить", которая очищает поле edit - Delphi
написать процедуру &quot;ввод&quot; которая введенное слово в edit перемещает в список listbox и процедуру &quot;очистить&quot;, которая очищает поле...

Как можно из 1-ой строки(12:02), отделить ":". Чтобы были тест в 1 переменной(12)в другой(02) - Delphi
Надеюсь по заголовку все понятно. Есть секундомер который считает время, и записывает его в label. Нужно сравнить меньше ли новое время, со...


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

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

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