ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΈ создании прилоТСния использовался ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½Π΅ΠΉ Π±Ρ‹Π» создан класс LifeModel. Поля класса прСдставлСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3.6, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3.7. КаТдая нСпустая ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΊΠ°Ρ€Ρ‚Ρ‹ (lifeMap 0) провСряСтся Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ исчСзновСния ΠΆΠΈΠ·Π½ΠΈ. Если Π½Π°ΠΉΠ΄Π΅Π½Π° нация, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΡ‡Π΅Π·Π½ΡƒΡ‚ΡŒ, Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ (lifeMap = 0); Массив, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Одной ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ дСмонстрации ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° «Π˜ΡΠΊΡƒΡΡΡ‚вСнная Тизнь» — это визуализация развития ΠΆΠΈΠ·Π½Π΅ΠΉ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ отобраТСния ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ Ρ€Π°Π·Ρ€Π΅Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ Π² Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€, Π° Π·Π°Ρ‚Π΅ΠΌ Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. Π­Ρ‚ΠΎΡ‚ процСсс ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ рисунок 3.11. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ прСдставляСт собой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ 64×64, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ 1 — ΠΎΠΉ ΡΡ‚Ρ€ΠΎΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ сосСдними ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ для 64 — ΠΎΠΉ ΡΡ‚Ρ€ΠΎΠΊΠΈ, Π° ΠΊΠ»Π΅Ρ‚ΠΊΠΈ 1 — ΠΎΠ³ΠΎ столбца ΡΠ²Π»ΡΡŽΡ‚ΡΡ сосСдями 64 — ΠΎΠ³ΠΎ столбца.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ получСния поля Π²Ρ‹Π²ΠΎΠ΄Π°.

Рисунок 3.11 — ΠŸΡ€ΠΎΡ†Π΅ΡΡ получСния поля Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠŸΡ€ΠΈ создании прилоТСния использовался ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½Π΅ΠΉ Π±Ρ‹Π» создан класс LifeModel. Поля класса прСдставлСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3.6, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3.7.

Π’Π°Π±Π»ΠΈΡ†Π° 3.6 — Поля класса LifeModel.

ПолС.

Π’ΠΈΠΏ.

ОписаниС.

nations.

массив Ρ‚ΠΈΠΏΠ° Color.

массив, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ каТдая нация характСризуСтся Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π½Π° ΠΏΠΎΠ»Π΅ Π²Ρ‹Π²ΠΎΠ΄Π΅.

lifeMap.

Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив int.

ΠΊΠ°Ρ€Ρ‚Π° размСщСния Π½Π°Ρ†ΠΈΠΉ Π½Π° ΠΏΠΎΠ»Π΅ Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’Π°Π±Π»ΠΈΡ†Π° 3.7 — Бписок ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса LifeModel.

ΠœΠ΅Ρ‚ΠΎΠ΄.

ОписаниС.

void OneStep (List[,] birth, List[,] death).

ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ ΠΎΠ΄ΠΈΠ½ шаг ΡΠΊΠΎΠ»ΡŽΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½ΠΈ.

void Draw ().

ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° прорисовки Π½Π°Ρ†ΠΈΠΉ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅.

void DrawNet ().

ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° отрисовки сСтки ΠΊΠ°Ρ€Ρ‚Ρ‹.

void SetNation (int nationID, int x, int y).

ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° установки Π½ΠΎΠ²ΠΎΠΉ Π½Π°Ρ†ΠΈΠΈ Π² ΠΊΠ»Π΅Ρ‚ΠΊΡƒ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ [x, y].

int[] GetNeighborsCount (int xNum, int yNum).

функция получСния сосСдий ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π°Ρ†ΠΈΠΈ для Ρ‚ΠΎΡ‡ΠΊΠΈ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ [x, y].

ИдСя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

  • 1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π΄Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (x;y) Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ (ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ), ΠΏΡ€ΠΈ этом Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ размСщСния Π½Π°Ρ†ΠΈΠΉ (lifeMap) дСлаСтся ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ° ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ находится Ρ‡Π»Π΅Π½ Π΄Π°Π½Π½ΠΎΠΉ Π½Π°Ρ†ΠΈΠΈ (lifeMap[x][y] = Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π½Π°Ρ†ΠΈΠΈ);
  • 2. Π”Π°Π»Π΅Π΅ осущСствляСтся Π²Π²ΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈΠ» зароТдСния ΠΆΠΈΠ·Π½ΠΈ (ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΎΠΌ количСствС свободных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, ΠΈ ΠΊΠ°ΠΊΠΎΠΌ количСствС сосСдСй, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠΌ нациям, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‡Π»Π΅Π½ Π΄Π°Π½Π½ΠΎΠΉ Π½Π°Ρ†ΠΈΠΈ) ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° исчСзновСния ΠΆΠΈΠ·Π½ΠΈ (ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΎΠΌ количСствС сосСдСй, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠΌ нациям, исчСзаСт Ρ‡Π»Π΅Π½ Π΄Π°Π½Π½ΠΎΠΉ Π½Π°Ρ†ΠΈΠΈ);
  • 3. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ пустой ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ (lifeMap[x][y] = 0) провСряСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ зароТдСния Ρ‡Π»Π΅Π½Π° Π½Π°Ρ†ΠΈΠΈ, ΠΏΡƒΡ‚Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° зароТдСния ΠΆΠΈΠ·Π½ΠΈ. Если Π½Π°ΠΉΠ΄Π΅Π½Π° нация, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ€ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ (lifeMap[x][y] = Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π½Π°Ρ†ΠΈΠΈ);
  • 4. КаТдая нСпустая ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΊΠ°Ρ€Ρ‚Ρ‹ (lifeMap[x][y] 0) провСряСтся Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ исчСзновСния ΠΆΠΈΠ·Π½ΠΈ. Если Π½Π°ΠΉΠ΄Π΅Π½Π° нация, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΡ‡Π΅Π·Π½ΡƒΡ‚ΡŒ, Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ (lifeMap[x][y] = 0);
  • 5. ВыполняСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состояния Π½Π°Ρ†ΠΈΠΉ.

Для обСспСчСния ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дСмонстрационного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Π²Π²ΠΎΠ΄ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ располоТСния Ρ‡Π»Π΅Π½ΠΎΠ² Π½Π°Ρ†ΠΈΠΉ, ΠΏΡ€Π°Π²ΠΈΠ» зароТдСния ΠΆΠΈΠ·Π½ΠΈ, ΠΏΡ€Π°Π²ΠΈΠ» исчСзновСний ΠΆΠΈΠ·Π½ΠΈ) ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½ΠΈ, использовались стандартныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Windows Forms (Ρ‚Π°Π±Π»ΠΈΡ†Π° 3.7).

Π’Π°Π±Π»ΠΈΡ†Π° 3.7 — ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Windows Forms.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ события.

ОписаниС.

ToolStrip MainToolbar.

Click.

ПанСль Π²Ρ‹Π±ΠΎΡ€Π° Π½Π°Ρ†ΠΈΠΈ ΠΈ Π΄Π»Ρ задания Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

DataGridView DeathDataGridView.

Π’Π°Π±Π»ΠΈΡ†Π° задания ΠΏΡ€Π°Π²ΠΈΠ» исчСзновСния ΠΆΠΈΠ·Π½ΠΈ.

DataGridView BirthDataGridView.

Π’Π°Π±Π»ΠΈΡ†Π° задания ΠΏΡ€Π°Π²ΠΈΠ» возникновСния ΠΆΠΈΠ·Π½ΠΈ.

PictureBox LifeField.

MouseClick.

ПолС Π²Π²ΠΎΠ΄Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ размСщСния Π½Π°Ρ†ΠΈΠΉ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½ΠΈ.

Button: AutoButton, OneStepButton, nStepsButton.

Click.

Кнопки запуска ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² модСлирования ΠΈΠ³Ρ€Ρ‹.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ