Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Інтелектуальні агенти

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Житомирський державний технологічний університет Кафедра ПЗОТ Група ЗПІК-09 Курс VI № залікової 4309022 Лабораторна робота з дисципліни «Інтелектуальні агенти» GameLife Лістинг файлу Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace GameLife { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Лістинг файлу Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace GameLife { public partial class Form1 : Form { Thread tLife; public Form1() { InitializeComponent(); tLife = new Thread(new ThreadStart(MethodLife)); bPause.Enabled = false; bStop.Enabled = false; } private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < 30; i++) { for (int j = 0; j < 30; j++) { CheckBox newCB = new CheckBox(); newCB.Name = "cb" + i.ToString() + "x" + j.ToString(); newCB.Location = new Point(80 + j * 12, 13 + i * 12); newCB.Width = 13; newCB.Height = 14; this.Controls.Add(newCB); } } } private void bStart_Click(object sender, EventArgs e) { if (tLife.ThreadState == ThreadState.Suspended) tLife.Resume(); else tLife.Start(); bStart.Enabled = false; tbKoefNarod.Enabled = false; tbKoefSmerti.Enabled = false; bPause.Enabled = true; bStop.Enabled = true; } private void bStop_Click(object sender, EventArgs e) { tLife.Suspend(); for (int i = 0; i < 30; i++) { for (int j = 0; j < 30; j++) { CheckBox cur = this.Controls["cb" + i.ToString() + "x" + j.ToString()] as CheckBox; if (cur.CheckState != CheckState.Unchecked) cur.CheckState = CheckState.Unchecked; } } bStart.Enabled = true; bPause.Enabled = false; bStop.Enabled = false; tbKoefNarod.Enabled = true; tbKoefSmerti.Enabled = true; } private void bPause_Click(object sender, EventArgs e) { tLife.Suspend(); bStart.Enabled = true; bPause.Enabled = false; bStop.Enabled = false; tbKoefNarod.Enabled = true; tbKoefSmerti.Enabled = true; } public void MethodLife() { for (int i = 0; i < 30; i++) { for (int j = 0; j < 30; j++) { CheckBox cur = this.Controls["cb" + i.ToString() + "x" + j.ToString()] as CheckBox; if (cur.CheckState == CheckState.Checked) cur.Invoke(new Action(delegate() { cur.CheckState = CheckState.Indeterminate; })); } } List<string> deadList = new List<string>(); string addr; int koefNar; int koefSmer; Random rnd = new Random(); while (true) { if (!Int32.TryParse(tbKoefNarod.Text, out koefNar)) koefNar = 100; if (!Int32.TryParse(tbKoefSmerti.Text, out koefSmer)) koefSmer = 100; for (int i = 0; i < 30; i++) { for (int j = 0; j < 30; j++) { int count = 0; CheckBox cur0 = this.Controls["cb" + (i - 1).ToString() + "x" + (j).ToString()] as CheckBox; if (cur0 != null && cur0.CheckState == CheckState.Indeterminate) count++; CheckBox cur1 = this.Controls["cb" + (i + 1).ToString() + "x" + (j).ToString()] as CheckBox; if (cur1 != null && cur1.CheckState == CheckState.Indeterminate) count++; CheckBox cur2 = this.Controls["cb" + (i).ToString() + "x" + (j - 1).ToString()] as CheckBox; if (cur2 != null && cur2.CheckState == CheckState.Indeterminate) count++; CheckBox cur3 = this.Controls["cb" + (i).ToString() + "x" + (j + 1).ToString()] as CheckBox; if (cur3 != null && cur3.CheckState == CheckState.Indeterminate) count++; CheckBox cur4 = this.Controls["cb" + (i - 1).ToString() + "x" + (j - 1).ToString()] as CheckBox; if (cur4 != null && cur4.CheckState == CheckState.Indeterminate) count++; CheckBox cur5 = this.Controls["cb" + (i + 1).ToString() + "x" + (j + 1).ToString()] as CheckBox; if (cur5 != null && cur5.CheckState == CheckState.Indeterminate) count++; CheckBox cur6 = this.Controls["cb" + (i - 1).ToString() + "x" + (j + 1).ToString()] as CheckBox; if (cur6 != null && cur6.CheckState == CheckState.Indeterminate) count++; CheckBox cur7 = this.Controls["cb" + (i + 1).ToString() + "x" + (j - 1).ToString()] as CheckBox; if (cur7 != null && cur7.CheckState == CheckState.Indeterminate) count++; addr = "cb" + (i).ToString() + "x" + (j).ToString(); CheckBox cur = this.Controls[addr] as CheckBox; double nexDb=rnd.NextDouble(); if (cur.CheckState == CheckState.Unchecked) { if (count == 3 && nexDb < koefNar/100) cur.Invoke(new Action(delegate() { cur.CheckState = CheckState.Checked; })); } else { if ((count < 2 || count > 3) && nexDb < koefSmer/100) deadList.Add(addr); } } } for (int i = 0; i < 30; i++) { for (int j = 0; j < 30; j++) { addr = "cb" + i.ToString() + "x" + j.ToString(); CheckBox cur = this.Controls[addr] as CheckBox; if (cur.CheckState == CheckState.Checked) cur.Invoke(new Action(delegate() { cur.CheckState = CheckState.Indeterminate; })); else if (cur.CheckState == CheckState.Indeterminate && deadList.Contains(addr)) cur.Invoke(new Action(delegate() { cur.CheckState = CheckState.Unchecked; })); } } deadList.Clear(); } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (tLife.ThreadState == ThreadState.Suspended) tLife.Resume(); tLife.Abort(); } } } Зовнішній вигляд вікна програми /
Антиботан аватар за замовчуванням

13.01.2013 15:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!