Змінна
|
Пояснення
|
a
|
Змінна для генератору випадкових чисел
|
a1
|
Змінна, що приймає значення «Сем»
|
b1
|
Змінна, що приймає значення «Білл»
|
c1
|
Змінна, що приймає значення «Джон»
|
srand()
|
Функція часового генератору чисел
|
label3
|
Напис, що приймає значення «Ім’я
дуелянта, що стріляє першим»
|
radioButton1
|
Елементи «RadioButton», що імітують
жеребкування
|
radioButton2
|
|
radioButton3
|
|
radioButton4
|
|
radioButton5
|
|
k
|
Допоміжна змінна для процесу
жеребкування
|
label6
|
Напис, що приймає значення «Ім’я
дуелянта, що стріляє другим»
|
label7
|
Напис, що приймає значення «Ім’я
дуелянта, що стріляє третім»
|
pictureBox2
|
Зображення Сема
|
pictureBox3
|
Зображення Білла
|
pictureBox4
|
Зображення Джона
|
pictureBox5
|
Зображення мертвого Сема
|
pictureBox6
|
Зображення мертвого Білла
|
pictureBox7
|
Зображення мертвого Джона
|
label13
|
Елементи для відображення стратегії та
ймовірностей виживання
|
label14
|
|
label15
|
|
label16
|
|
label8
|
Елементи для відображення статусу
дуелянтів (Сем/Білл/Джон/ Сем мертвий/Білл мертвий /Джон мертвий)
|
label9
|
|
label10
|
|
label11
|
Індикатор завершення дуелі
|
Програмна реалізація алгоритму гри
«Багатостороння дуель» представлена таким лістингом програми:
. Заголовні файли:
· Form1.h (Меню)
#pragma once
#include "Form2.h"
#include "Form3.h"Багатостороннядуель16
{
namespace System;namespace
System::ComponentModel;namespace System::Collections;namespace
System::Windows::Forms;namespace System::Data;namespace System::Drawing;
/// <summary>
/// </summary>ref class Form1: public
System::Windows::Forms::Form
{:(void)
{();
}
:
/// <summary>
/// </summary>
~Form1()
{(components)
{components;
}
}: System::Windows::Forms::Button^ button1;: :
System::Windows::Forms::Button^ button2;: System::Windows::Forms::Button^
button3;: System::Windows::Forms::PictureBox^ pictureBox1;:
System::Windows::Forms::PictureBox^ pictureBox2;
:
/// <summary>
/// </summary>::ComponentModel::Container
^components;
#pragma region Windows Form Designer generated
code
/// <summary>
/// </summary>InitializeComponent(void)
{::ComponentModel::ComponentResourceManager^
resources = (gcnew
System::ComponentModel::ComponentResourceManager(Form1::typeid));>button1 =
(gcnew System::Windows::Forms::Button());>button2 = (gcnew
System::Windows::Forms::Button());>button3 = (gcnew System::Windows::Forms::Button());>pictureBox1
= (gcnew System::Windows::Forms::PictureBox());>pictureBox2 = (gcnew
System::Windows::Forms::PictureBox());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox2))->BeginInit();>SuspendLayout();
//
// button1
// >button1->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button1->Location =
System::Drawing::Point(560, 12);>button1->Name =
L"button1";>button1->Size = System::Drawing::Size(112,
30);>button1->TabIndex = 0;>button1->Text =
L"Гра!";>button1->UseVisualStyleBackColor =
true;>button1->Click += gcnew System::EventHandler(this,
&Form1::button1_Click);
//
// button2
// >button2->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button2->Location =
System::Drawing::Point(559, 48);>button2->Name =
L"button2";>button2->Size = System::Drawing::Size(113,
44);>button2->TabIndex = 1;>button2->Text = L"Відомості про
програму";>button2->UseVisualStyleBackColor =
true;>button2->Click += gcnew System::EventHandler(this,
&Form1::button2_Click);
//
// button3
// >button3->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button3->Location =
System::Drawing::Point(560, 98);>button3->Name =
L"button3";>button3->Size = System::Drawing::Size(113,
30);>button3->TabIndex = 2;>button3->Text =
L"Вихід";>button3->UseVisualStyleBackColor =
true;>button3->Click += gcnew System::EventHandler(this,
&Form1::button3_Click);
//
// pictureBox1
// >pictureBox1->BackgroundImage =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox1.BackgroundImage")));>pictureBox1->Location
= System::Drawing::Point(1, 0);>pictureBox1->Name =
L"pictureBox1";>pictureBox1->Size = System::Drawing::Size(552,
316);>pictureBox1->TabIndex = 3;>pictureBox1->TabStop = false;
//
// pictureBox2
// >pictureBox2->BackgroundImage =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox2.BackgroundImage")));>pictureBox2->Location
= System::Drawing::Point(560, 170);>pictureBox2->Name = L"pictureBox2";>pictureBox2->Size
= System::Drawing::Size(125, 145);>pictureBox2->TabIndex =
4;>pictureBox2->TabStop = false;
//
// Form1
// >AutoScaleDimensions =
System::Drawing::SizeF(6, 13);>AutoScaleMode =
System::Windows::Forms::AutoScaleMode::Font;>BackColor =
System::Drawing::SystemColors::ButtonHighlight;>ClientSize =
System::Drawing::Size(684,
311);>Controls->Add(this->pictureBox2);>Controls->Add(this->pictureBox1);>Controls->Add(this->button3);>Controls->Add(this->button2);>Controls->Add(this->button1);>Icon
= (cli::safe_cast<System::Drawing::Icon^
>(resources->GetObject(L"$this.Icon")));>MaximumSize =
System::Drawing::Size(700, 350);>MinimumSize = System::Drawing::Size(700,
350);>Name = L"Form1";>Text = L"Меню";>Load +=
gcnew System::EventHandler(this, &Form1::Form1_Load);
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox1))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox2))->EndInit();>ResumeLayout(false);
}
#pragma endregion: System::Void
button3_Click(System::Object^ sender, System::EventArgs^ e) {^form2 = gcnew
Form2();->Show();
}: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e) {>Hide();^form3 = gcnew Form3();->Show();
}: System::Void button2_Click(System::Object^
sender, System::EventArgs^ e) {::Show("МОДЕЛЬ, ЩО РЕАЛІЗУЄ
ПРОГРАМА\n\nСем, Білл і Джон (нижче позначені буквами С, Б, Д) домовились
битися на дуелі втрьох за такими правилами:\nЖеребкування визначає, хто стріляє
першим, другим, третім. Далі вони розташовуються на однаковій відстані один від
одного. Обмінюються вистрілами по черзі, визначеній жеребом, поки двоє не
будуть убиті. Черговий стріляючий може стріляти в будь якого із інших,
враховуючи йоміврність виживання та оптимальну для себе стратегію.\nВідомо, що
С - снайпер і ніколи не промахується з даної дистанції, Б - влучає лише в 80%,
а Д - приблизно в 50% випадків.\n\nОПИС ПРОГРАМИ 'Багатостороння
дуель'\n\nКористувачу програми надається можливість:\n 1) Жеребкуванням обрати
порядок, у якому розташуються учасники дуелі (С, Б, Д);\n 2) Відповідно до
оптимальної стратегії, здійснювати постріли кожного дуелянта в порядку,
визначеному жеребкуванням поки двоє дуелянтів не будуть вбиті.\nОбислення
ймовірності виживання (далі - ЙВ) на кожен хід здійснюється наступним
чином:\nЙВ того, у кого стріляють (Жертви [Ж]) дорівнює 100%-'ймовірність
попадання (ЙП)' того, хто стріляє (Стрільця [Cт]).\nЙВ Ст дорівнює 'ЙП' Ст +
(100% - 'ЙП' Ж). На основі даних про ЙВ дуелянта на кожен крок обирається
опимальна стратегія (ОС) ведення дуелі (у вікні програми ОС позначається
'+').\n\nІНСТРУКЦІЯ З УПРАВЛІННЯ\n\nЩоб розпочати гру, необхідно:\n 1) В пункті
меню натиснути кнопку 'Гра!';\n 2) З'явиться вікно, де необхідно жеребкуванням
обрати:\n 1. Дуелянта, який буде стріляти першим, відмітивши 1 з 3-ох пунктів
(тобто витягнути жереб) і натиснувши кнопку 'Обрати 1-ого';\n 2. Дуелянта, який
буде стріляти другим, відмітивши 1 з 2-ох пунктів і натистувши кнопку 'Обрати
другого'.\nДуелянт, якого не вибрали при жеребкуванні, стає третім
автоматично.\n 3) Натиснути кнопку 'На позиції!';\nУ вікні з'явиться графічна
інтерпритація 3-сторонньої дуелі у вигляді 3-ох зображеннь дуелянтів з
підписами, які відповідають індивідуальному стрільцеві, що розташовані по колу,
в центрі якого знаходиться правильний трикутник (модель одинакової відстані між
дуелянтами). Порядок стрільби визачений за годинниковою стрілкою. В верхній
правій частині вікна будуть знаходитись можливі стратегії дуелянта, що стріляє
першим, та ймовірності виживання усіх дуелянтів.\n 4) По черзі натискати кнопки
'1-ша перестрілка', '2-га перестрілка' (та '3-тя перестрілка' якщо після другої
перестілки загине тільки 1 дуелянт) поки не з'явиться напис:'Дуель
закінчено!'\nДля виходу з програми натиснути кнопку 'Вийти' або 'Вийти з гри:('
і підтвердити своє бажання.");
}: System::Void Form1_Load(System::Object^
sender, System::EventArgs^ e) {>Location = System::Drawing::Point(300,150);
}
};
}
· Form2.h (Вихід)
#pragma once
#include "stdlib.h"namespace
System;namespace System::ComponentModel;namespace System::Collections;namespace
System::Windows::Forms;namespace System::Data;namespace System::Drawing;
Багатостороннядуель16 {
/// <summary>
/// </summary>ref class Form2: public
System::Windows::Forms::Form
{:(void)
{();
//
//
}
:
/// <summary>
/// </summary>
~Form2()
{(components)
{components;
}
}: System::Windows::Forms::Label^ label1;: :
System::Windows::Forms::Button^ button1;: System::Windows::Forms::Button^
button2;
:
/// <summary>
/// </summary>::ComponentModel::Container
^components;
#pragma region Windows Form Designer generated
code
/// <summary>
/// </summary>InitializeComponent(void)
{>label1 = (gcnew
System::Windows::Forms::Label());>button1 = (gcnew
System::Windows::Forms::Button());>button2 = (gcnew
System::Windows::Forms::Button());>SuspendLayout();
//
// label1
// >label1->AutoSize =
true;>label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label1->Location = System::Drawing::Point(28,
24);>label1->Name = L"label1";>label1->Size =
System::Drawing::Size(167, 16);>label1->TabIndex = 0;>label1->Text
= L"Ви дійсно хочете вийти\?";
//
// button1
// >button1->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button1->Location =
System::Drawing::Point(31, 65);>button1->Name =
L"button1";>button1->Size = System::Drawing::Size(75, 23);>button1->TabIndex
= 1;>button1->Text =
L"Ні";>button1->UseVisualStyleBackColor =
true;>button1->Click += gcnew System::EventHandler(this,
&Form2::button1_Click);
//
// button2
// >button2->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button2->Location =
System::Drawing::Point(142, 66);>button2->Name =
L"button2";>button2->Size = System::Drawing::Size(75,
23);>button2->TabIndex = 2;>button2->Text =
L"Так";>button2->UseVisualStyleBackColor =
true;>button2->Click += gcnew System::EventHandler(this,
&Form2::button2_Click);
//
// Form2
// >AutoScaleDimensions =
System::Drawing::SizeF(6, 13);>AutoScaleMode =
System::Windows::Forms::AutoScaleMode::Font;>BackColor =
System::Drawing::SystemColors::ButtonHighlight;>ClientSize =
System::Drawing::Size(250,
112);>Controls->Add(this->button2);>Controls->Add(this->button1);>Controls->Add(this->label1);>FormBorderStyle
= System::Windows::Forms::FormBorderStyle::SizableToolWindow;>MaximumSize =
System::Drawing::Size(266, 151);>MinimumSize = System::Drawing::Size(266,
151);>Name = L"Form2";>Text = L"Вихід";>Load +=
gcnew System::EventHandler(this, &Form2::Form2_Load);>ResumeLayout(false);>PerformLayout();
}
#pragma endregion: System::Void
button1_Click(System::Object^ sender, System::EventArgs^ e) {>Close();
}: System::Void button2_Click(System::Object^
sender, System::EventArgs^ e) {(0);
}: System::Void Form2_Load(System::Object^
sender, System::EventArgs^ e) {>Location = System::Drawing::Point(533,283);
}
};
}
· Form3.h (Дуель)
#pragma once
#include "stdlib.h"
#include "time.h"
#include "Form2.h"
namespace System;namespace
System::ComponentModel;namespace System::Collections;namespace
System::Windows::Forms;namespace System::Data;namespace System::Drawing;
Багатостороннядуель16 {
/// <summary>
/// </summary>ref class Form3: public
System::Windows::Forms::Form
{:(void)
{();
}
:
/// <summary>
/// </summary>
~Form3()
{(components)
{components;
}
}: System::Windows::Forms::Label^ label1;:
System::Windows::Forms::RadioButton^ radioButton1;:
System::Windows::Forms::RadioButton^ radioButton2;:
System::Windows::Forms::RadioButton^ radioButton3;:
System::Windows::Forms::Button^ button1;: System::Windows::Forms::Label^
label2;: System::Windows::Forms::Label^ label3;:
System::Windows::Forms::RadioButton^ radioButton4;:
System::Windows::Forms::RadioButton^ radioButton5;:
System::Windows::Forms::Button^ button2;: System::Windows::Forms::Label^
label4;: System::Windows::Forms::Label^ label5;: System::Windows::Forms::Label^
label6;: System::Windows::Forms::Label^ label7;:
System::Windows::Forms::Button^ button3;
: System::Windows::Forms::Label^ label8;:
System::Windows::Forms::Label^ label9;: System::Windows::Forms::Label^
label10;: System::Windows::Forms::Button^ button4;:
System::Windows::Forms::Button^ button5;: System::Windows::Forms::Button^
button6;
: System::Windows::Forms::Label^ label11;:
System::Windows::Forms::Label^ label12;: System::Windows::Forms::Label^
label13;: System::Windows::Forms::Label^ label14;:
System::Windows::Forms::Label^ label15;: System::Windows::Forms::Label^
label16;: System::Windows::Forms::Button^ button7;:
System::Windows::Forms::PictureBox^ pictureBox1;: System::Windows::Forms::PictureBox^
pictureBox2;: System::Windows::Forms::PictureBox^ pictureBox3;:
System::Windows::Forms::PictureBox^ pictureBox4;:
System::Windows::Forms::Button^ button8;: System::Windows::Forms::PictureBox^
pictureBox5;: System::Windows::Forms::PictureBox^ pictureBox6;:
System::Windows::Forms::PictureBox^ pictureBox7;:
System::Windows::Forms::PictureBox^ pictureBox8;:
System::Windows::Forms::PictureBox^ pictureBox9;:
System::Windows::Forms::PictureBox^ pictureBox10;:
System::Windows::Forms::Button^ button9;
:
:
/// <summary>
/// </summary>::ComponentModel::Container
^components;
#pragma region Windows Form Designer generated
code
/// <summary>
/// </summary>InitializeComponent(void)
{::ComponentModel::ComponentResourceManager^
resources = (gcnew System::ComponentModel::ComponentResourceManager(Form3::typeid));>label1
= (gcnew System::Windows::Forms::Label());>radioButton1 = (gcnew
System::Windows::Forms::RadioButton());>radioButton2 = (gcnew
System::Windows::Forms::RadioButton());>radioButton3 = (gcnew System::Windows::Forms::RadioButton());>button1
= (gcnew System::Windows::Forms::Button());>label2 = (gcnew
System::Windows::Forms::Label());>label3 = (gcnew
System::Windows::Forms::Label());>radioButton4 = (gcnew
System::Windows::Forms::RadioButton());>radioButton5 = (gcnew
System::Windows::Forms::RadioButton());>button2 = (gcnew
System::Windows::Forms::Button());>label4 = (gcnew
System::Windows::Forms::Label());>label5 = (gcnew
System::Windows::Forms::Label());>label6 = (gcnew System::Windows::Forms::Label());>label7
= (gcnew System::Windows::Forms::Label());>button3 = (gcnew
System::Windows::Forms::Button());>label8 = (gcnew
System::Windows::Forms::Label());>label9 = (gcnew
System::Windows::Forms::Label());>label10 = (gcnew System::Windows::Forms::Label());>button4
= (gcnew System::Windows::Forms::Button());>button5 = (gcnew
System::Windows::Forms::Button());>button6 = (gcnew
System::Windows::Forms::Button());>label11 = (gcnew
System::Windows::Forms::Label());>label12 = (gcnew System::Windows::Forms::Label());>label13
= (gcnew System::Windows::Forms::Label());>label14 = (gcnew
System::Windows::Forms::Label());>label15 = (gcnew
System::Windows::Forms::Label());>label16 = (gcnew
System::Windows::Forms::Label());>button7 = (gcnew System::Windows::Forms::Button());>pictureBox1
= (gcnew System::Windows::Forms::PictureBox());>pictureBox2 = (gcnew
System::Windows::Forms::PictureBox());>pictureBox3 = (gcnew
System::Windows::Forms::PictureBox());>pictureBox4 = (gcnew
System::Windows::Forms::PictureBox());>button8 = (gcnew System::Windows::Forms::Button());>pictureBox5
= (gcnew System::Windows::Forms::PictureBox());>pictureBox6 = (gcnew
System::Windows::Forms::PictureBox());>pictureBox7 = (gcnew
System::Windows::Forms::PictureBox());>pictureBox8 = (gcnew System::Windows::Forms::PictureBox());>pictureBox9
= (gcnew System::Windows::Forms::PictureBox());>pictureBox10 = (gcnew
System::Windows::Forms::PictureBox());>button9 = (gcnew
System::Windows::Forms::Button());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox2))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox3))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox4))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox5))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox6))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox7))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox8))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox9))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox10))->BeginInit();>SuspendLayout();
//
// label1
// >label1->AutoSize = true;>label1->Font
= (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label1->Location =
System::Drawing::Point(24, 10);>label1->Name =
L"label1";>label1->Size = System::Drawing::Size(102,
16);>label1->TabIndex = 0;>label1->Text = L"Тягніть
жереб!";
//
// radioButton1
// >radioButton1->AutoSize =
true;>radioButton1->Location = System::Drawing::Point(52,
34);>radioButton1->Name = L"radioButton1";>radioButton1->Size
= System::Drawing::Size(14, 13);>radioButton1->TabIndex =
1;>radioButton1->TabStop =
true;>radioButton1->UseVisualStyleBackColor = true;
//
// radioButton2
// >radioButton2->AutoSize =
true;>radioButton2->Location = System::Drawing::Point(72, 34);>radioButton2->Name
= L"radioButton2";>radioButton2->Size =
System::Drawing::Size(14, 13);>radioButton2->TabIndex =
2;>radioButton2->TabStop =
true;>radioButton2->UseVisualStyleBackColor = true;
//
// radioButton3
// >radioButton3->AutoSize = true;>radioButton3->Location
= System::Drawing::Point(92, 34);>radioButton3->Name =
L"radioButton3";>radioButton3->Size = System::Drawing::Size(14,
13);>radioButton3->TabIndex = 3;>radioButton3->TabStop =
true;>radioButton3->UseVisualStyleBackColor = true;
//
// button1
// >button1->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button1->Location =
System::Drawing::Point(27, 54);>button1->Name =
L"button1";>button1->Size = System::Drawing::Size(104,
23);>button1->TabIndex = 4;>button1->Text = L"Обрати
першого!";>button1->UseVisualStyleBackColor =
true;>button1->Click += gcnew System::EventHandler(this,
&Form3::button1_Click);
//
// label2
// >label2->AutoSize =
true;>label2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label2->Location = System::Drawing::Point(13,
95);>label2->Name = L"label2";>label2->Size =
System::Drawing::Size(18, 16);>label2->TabIndex = 5;>label2->Text =
L"1.";
//
// label3
// >label3->AutoSize =
true;>label3->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label3->Location =
System::Drawing::Point(26, 95);>label3->Name =
L"label3";>label3->Size = System::Drawing::Size(45,
16);>label3->TabIndex = 6;>label3->Text = L"label3";
//
// radioButton4
// >radioButton4->AutoSize =
true;>radioButton4->Location = System::Drawing::Point(57,
125);>radioButton4->Name =
L"radioButton4";>radioButton4->Size = System::Drawing::Size(14,
13);>radioButton4->TabIndex = 7;>radioButton4->TabStop = true;>radioButton4->UseVisualStyleBackColor
= true;
//
// radioButton5
// >radioButton5->AutoSize =
true;>radioButton5->Location = System::Drawing::Point(82,
125);>radioButton5->Name =
L"radioButton5";>radioButton5->Size = System::Drawing::Size(14,
13);>radioButton5->TabIndex = 8;>radioButton5->TabStop =
true;>radioButton5->UseVisualStyleBackColor = true;
//
// button2
// >button2->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button2->Location =
System::Drawing::Point(27, 144);>button2->Name =
L"button2";>button2->Size = System::Drawing::Size(104,
23);>button2->TabIndex = 9;>button2->Text = L"Обрати
другого!";>button2->UseVisualStyleBackColor =
true;>button2->Click += gcnew System::EventHandler(this,
&Form3::button2_Click);
//
// label4
// >label4->AutoSize = true;>label4->Font
= (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label4->Location =
System::Drawing::Point(11, 183);>label4->Name = L"label4";>label4->Size
= System::Drawing::Size(18, 16);>label4->TabIndex =
10;>label4->Text = L"2.";
//
// label5
// >label5->AutoSize =
true;>label5->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label5->Location =
System::Drawing::Point(11, 205);>label5->Name =
L"label5";>label5->Size = System::Drawing::Size(18,
16);>label5->TabIndex = 11;>label5->Text = L"3.";
//
// label6
// >label6->AutoSize =
true;>label6->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label6->Location = System::Drawing::Point(24,
183);>label6->Name = L"label6";>label6->Size =
System::Drawing::Size(45, 16);>label6->TabIndex = 12;>label6->Text
= L"label6";
//
// label7
// >label7->AutoSize =
true;>label7->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label7->Location =
System::Drawing::Point(24, 205);>label7->Name =
L"label7";>label7->Size = System::Drawing::Size(45,
16);>label7->TabIndex = 13;>label7->Text = L"label7";
//
// button3
// >button3->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button3->Location =
System::Drawing::Point(27, 280);>button3->Name =
L"button3";>button3->Size = System::Drawing::Size(104,
23);>button3->TabIndex = 14;>button3->Text =
L"Вихід";>button3->UseVisualStyleBackColor =
true;>button3->Click += gcnew System::EventHandler(this,
&Form3::button3_Click);
//
// label8
// >label8->AutoSize =
true;>label8->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label8->Location = System::Drawing::Point(223,
34);>label8->Name = L"label8";>label8->Size =
System::Drawing::Size(45, 16);>label8->TabIndex = 16;>label8->Text
= L"label8";
//
// label9
// >label9->AutoSize =
true;>label9->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label9->Location =
System::Drawing::Point(345, 245);>label9->Name =
L"label9";>label9->Size = System::Drawing::Size(45,
16);>label9->TabIndex = 17;>label9->Text = L"label9";
//
// label10
// >label10->AutoSize =
true;>label10->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label10->Location = System::Drawing::Point(89,
245);>label10->Name = L"label10";>label10->Size =
System::Drawing::Size(52, 16);>label10->TabIndex =
18;>label10->Text = L"label10";
//
// button4
// >button4->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button4->Location =
System::Drawing::Point(27, 251);>button4->Name =
L"button4";>button4->Size = System::Drawing::Size(104, 23);>button4->TabIndex
= 19;>button4->Text = L"На
позиції!";>button4->UseVisualStyleBackColor =
true;>button4->Click += gcnew System::EventHandler(this,
&Form3::button4_Click);
//
// button5
// >button5->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button5->Location =
System::Drawing::Point(466, 125);>button5->Name =
L"button5";>button5->Size = System::Drawing::Size(137,
23);>button5->TabIndex = 20;>button5->Text = L"1-ша
перестрілка";>button5->UseVisualStyleBackColor =
true;>button5->Click += gcnew System::EventHandler(this,
&Form3::button5_Click);
//
// button6
// >button6->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button6->Location =
System::Drawing::Point(466, 154);>button6->Name =
L"button6";>button6->Size = System::Drawing::Size(137,
23);>button6->TabIndex = 21;>button6->Text = L"2-га
перестрілка";>button6->UseVisualStyleBackColor =
true;>button6->Click += gcnew System::EventHandler(this,
&Form3::button6_Click);
//
// label11
// >label11->AutoSize =
true;>label11->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 12, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label11->Location =
System::Drawing::Point(463, 231);>label11->Name =
L"label11";>label11->Size = System::Drawing::Size(60,
20);>label11->TabIndex = 23;>label11->Text = L"label11";
//
// label12
// >label12->AutoSize =
true;>label12->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point, _cast<System::Byte>(204)));>label12->Location
= System::Drawing::Point(380, 10);>label12->Name =
L"label12";>label12->Size = System::Drawing::Size(263,
16);>label12->TabIndex = 24;>label12->Text = L"Стратегії та
ймовірності виживання(%):";
//
// label13
// >label13->AutoSize =
true;>label13->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label13->Location = System::Drawing::Point(380,
32);>label13->Name = L"label13";>label13->Size =
System::Drawing::Size(52, 16);>label13->TabIndex =
25;>label13->Text = L"label13";
//
// label14
// >label14->AutoSize =
true;>label14->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label14->Location =
System::Drawing::Point(380, 51);>label14->Name =
L"label14";>label14->Size = System::Drawing::Size(52,
16);>label14->TabIndex = 26;>label14->Text = L"label14";
//
// label15
// >label15->AutoSize =
true;>label15->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label15->Location = System::Drawing::Point(380,
68);>label15->Name = L"label15";>label15->Size =
System::Drawing::Size(52, 16);>label15->TabIndex =
27;>label15->Text = L"label15";
//
// label16
// >label16->AutoSize =
true;>label16->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>label16->Location =
System::Drawing::Point(380, 86);>label16->Name =
L"label16";>label16->Size = System::Drawing::Size(52, 16);>label16->TabIndex
= 28;>label16->Text = L"label16";
//
// button7
// >button7->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button7->Location =
System::Drawing::Point(466, 183);>button7->Name =
L"button7";>button7->Size = System::Drawing::Size(137,
22);>button7->TabIndex = 29;>button7->Text = L"3-тя
перестрілка";>button7->UseVisualStyleBackColor =
true;>button7->Click += gcnew System::EventHandler(this,
&Form3::button7_Click);
//
// pictureBox1
// >pictureBox1->BackgroundImage =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox1.BackgroundImage")));>pictureBox1->Location
= System::Drawing::Point(201, 144);>pictureBox1->Name =
L"pictureBox1";>pictureBox1->Size = System::Drawing::Size(125,
125);>pictureBox1->TabIndex = 30;>pictureBox1->TabStop = false;
//
// >pictureBox2->Image =
(cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox2.Image")));>pictureBox2->Location
= System::Drawing::Point(201, 53);>pictureBox2->Name =
L"pictureBox2";>pictureBox2->Size = System::Drawing::Size(125,
95);>pictureBox2->TabIndex = 31;>pictureBox2->TabStop = false;
//
// pictureBox3
// >pictureBox3->Image =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox3.Image")));>pictureBox3->Location
= System::Drawing::Point(321, 264);>pictureBox3->Name =
L"pictureBox3";>pictureBox3->Size = System::Drawing::Size(125,
95);>pictureBox3->TabIndex = 32;>pictureBox3->TabStop = false;
//
// pictureBox4
// >pictureBox4->Image =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox4.Image")));>pictureBox4->Location
= System::Drawing::Point(82, 264);>pictureBox4->Name =
L"pictureBox4";>pictureBox4->Size = System::Drawing::Size(125,
95);>pictureBox4->TabIndex = 33;>pictureBox4->TabStop = false;
//
// button8
// >button8->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F,
System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button8->Location =
System::Drawing::Point(466, 339);>button8->Name =
L"button8";>button8->Size = System::Drawing::Size(137,
30);>button8->TabIndex = 34;>button8->Text = L"Вийти з гри:(";>button8->UseVisualStyleBackColor
= true;>button8->Click += gcnew System::EventHandler(this,
&Form3::button8_Click);
//
// pictureBox5
// >pictureBox5->Image =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox5.Image")));>pictureBox5->Location
= System::Drawing::Point(609, 34);>pictureBox5->Name =
L"pictureBox5";>pictureBox5->Size = System::Drawing::Size(125,
95);>pictureBox5->TabIndex = 35;>pictureBox5->TabStop = false;
//
// pictureBox6
// >pictureBox6->Image = (cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox6.Image")));>pictureBox6->Location
= System::Drawing::Point(332, 115);>pictureBox6->Name =
L"pictureBox6";>pictureBox6->Size = System::Drawing::Size(125,
95);>pictureBox6->TabIndex = 36;>pictureBox6->TabStop = false;
//
// pictureBox7
// >pictureBox7->Image =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox7.Image")));>pictureBox7->Location
= System::Drawing::Point(438, 29);>pictureBox7->Name =
L"pictureBox7";>pictureBox7->Size = System::Drawing::Size(125,
95);>pictureBox7->TabIndex = 37;>pictureBox7->TabStop = false;
//
// pictureBox8
// >pictureBox8->Image =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox8.Image")));>pictureBox8->Location
= System::Drawing::Point(645, 183);>pictureBox8->Name =
L"pictureBox8";>pictureBox8->Size = System::Drawing::Size(109,
153);>pictureBox8->TabIndex = 38;>pictureBox8->TabStop = false;
//
// pictureBox9
// >pictureBox9->Image =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox9.Image")));>pictureBox9->Location
= System::Drawing::Point(-1, -4);>pictureBox9->Name =
L"pictureBox9";>pictureBox9->Size = System::Drawing::Size(157,
209);>pictureBox9->TabIndex = 39;>pictureBox9->TabStop = false;
//
// pictureBox10
// >pictureBox10->BackgroundImage =
(cli::safe_cast<System::Drawing::Image^
>(resources->GetObject(L"pictureBox10.BackgroundImage")));>pictureBox10->Location
= System::Drawing::Point(101, 174);>pictureBox10->Name =
L"pictureBox10";>pictureBox10->Size = System::Drawing::Size(90,
57);>pictureBox10->TabIndex = 40;>pictureBox10->TabStop = false;
//
// button9
// >button9->Font = (gcnew
System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular,
System::Drawing::GraphicsUnit::Point,
_cast<System::Byte>(204)));>button9->Location =
System::Drawing::Point(609, 339);>button9->Name =
L"button9";>button9->Size = System::Drawing::Size(137, 30);>button9->TabIndex
= 41;>button9->Text =
L"Інструкція";>button9->UseVisualStyleBackColor =
true;>button9->Click += gcnew System::EventHandler(this,
&Form3::button9_Click);
//
// Form3
// >AutoScaleDimensions =
System::Drawing::SizeF(6, 13);>AutoScaleMode =
System::Windows::Forms::AutoScaleMode::Font;>BackColor =
System::Drawing::SystemColors::ButtonHighlight;>ClientSize =
System::Drawing::Size(754,
381);>Controls->Add(this->button9);>Controls->Add(this->pictureBox10);>Controls->Add(this->pictureBox9);>Controls->Add(this->pictureBox8);>Controls->Add(this->pictureBox7);>Controls->Add(this->pictureBox6);>Controls->Add(this->pictureBox5);>Controls->Add(this->button8);>Controls->Add(this->pictureBox4);>Controls->Add(this->pictureBox3);>Controls->Add(this->pictureBox2);>Controls->Add(this->pictureBox1);>Controls->Add(this->button7);>Controls->Add(this->label16);>Controls->Add(this->label15);>Controls->Add(this->label14);>Controls->Add(this->label13);>Controls->Add(this->label12);>Controls->Add(this->label11);>Controls->Add(this->button6);>Controls->Add(this->button5);>Controls->Add(this->button4);>Controls->Add(this->label10);>Controls->Add(this->label9);>Controls->Add(this->label8);>Controls->Add(this->button3);>Controls->Add(this->label7);>Controls->Add(this->label6);>Controls->Add(this->label5);>Controls->Add(this->label4);>Controls->Add(this->button2);>Controls->Add(this->radioButton5);>Controls->Add(this->radioButton4);>Controls->Add(this->label3);>Controls->Add(this->label2);>Controls->Add(this->button1);>Controls->Add(this->radioButton3);>Controls->Add(this->radioButton2);>Controls->Add(this->radioButton1);>Controls->Add(this->label1);>FormBorderStyle
= System::Windows::Forms::FormBorderStyle::SizableToolWindow;>Icon =
(cli::safe_cast<System::Drawing::Icon^ >(resources->GetObject(L"$this.Icon")));>MaximumSize
= System::Drawing::Size(770, 420);>MinimumSize = System::Drawing::Size(175,
354);>Name = L"Form3";>Text = L"Дуель";>Load +=
gcnew System::EventHandler(this, &Form3::Form3_Load);
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox1))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox2))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox3))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox4))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox5))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox6))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox7))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox8))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox9))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->pictureBox10))->EndInit();>ResumeLayout(false);>PerformLayout();
}
#pragma endregion: System::Void
Form3_Load(System::Object^ sender, System::EventArgs^ e) {->Hide(); pictureBox8->Hide();
>Width = 175; pictureBox9->Hide();>Height = 354;
pictureBox1->Show();->Hide(); label10->Hide();->Hide();
label8->Hide();->Hide(); label9->Hide();->Hide();
label13->Hide();->Hide(); label14->Hide();->Hide();
label15->Hide();->Hide(); label16->Hide();->Hide();
button5->Hide(); button6->Hide(); button7->Hide();->Hide();
pictureBox2->Hide(); pictureBox3->Hide();->Hide();
pictureBox5->Hide(); pictureBox6->Hide();->Hide();
button4->Hide();->Enabled = false; this->Location =
System::Drawing::Point(550,150);->Enabled = false;->Enabled = false;
}: System::Void button3_Click(System::Object^
sender, System::EventArgs^ e) {^form2 = gcnew Form2();->Show();
}: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e) {->Enabled = true;->Enabled =
true;->Enabled = true;->Show();->Show();::String^ a1 =
"Сем";::String^ b1 = "Білл";::String^ c1 =
"Джон";a,b,c;(time(NULL));=rand()%3+1;(a==1)
{(radioButton1->Checked ||
radioButton2->Checked || radioButton3->Checked)->Text = a1;
}(a==2)
{(radioButton1->Checked ||
radioButton2->Checked || radioButton3->Checked)->Text = b1;
}(a==3)
{(radioButton1->Checked ||
radioButton2->Checked || radioButton3->Checked)->Text = c1;
}
}: System::Void button2_Click(System::Object^
sender, System::EventArgs^ e) {->Show();->Show();->Show();->Show();->Show();::String^
g;k;=label3->Text;(g=="Сем")
{::String^ b1 = "Білл";::String^ c1 =
"Джон";=rand()%2+1;(k==1)
{(radioButton4->Checked ||
radioButton5->Checked)
{->Text = b1;->Text = c1;
}
}(k==2)
{(radioButton4->Checked ||
radioButton5->Checked)
{->Text = c1;->Text = b1;
}
}
}(g=="Білл")
{::String^ b1 = "Сем";::String^ c1 =
"Джон";=rand()%2+1;(k==1)
{(radioButton4->Checked ||
radioButton5->Checked)
{->Text = b1;->Text = c1;
}
}(k==2)
{(radioButton4->Checked || radioButton5->Checked)
{->Text = c1;->Text = b1;
}
}
}(g=="Джон")
{::String^ b1 = "Cем";::String^ c1 =
"Білл";=rand()%2+1;(k==1)
{(radioButton4->Checked ||
radioButton5->Checked)
{->Text = b1;->Text = c1;
}
}(k==2)
{(radioButton4->Checked ||
radioButton5->Checked)
{->Text = c1;->Text = b1;
}
}
}
}: System::Void button4_Click(System::Object^
sender, System::EventArgs^ e) {>Width = 770;->Show();->Show();
->Show();->Show();->Show();->Show();->Show();->Show();->Show();->Show();->Hide();->Show();>Location
= System::Drawing::Point(280,150);->Show();->Show();>Height =
440;->Hide(); button2->Hide(); button4->Hide();->Hide();
radioButton2->Hide(); radioButton3->Hide();->Hide();
radioButton5->Hide(); label1->Hide();->Text = label7->Text;
label2->Hide(); label3->Hide();->Text = label6->Text;
label4->Hide(); label5->Hide();->Text = label3->Text;
label6->Hide(); label7->Hide();->Enabled = false;
button3->Hide();->Enabled = false; button8->Show();::String^
a=label8->Text;::String^ b=label9->Text;::String^
c=label10->Text;->Show();(a=="Сем")
{->Show();->Location =
System::Drawing::Point(201, 53);(b=="Білл")
{->Show();
pictureBox4->Show();->Location = System::Drawing::Point(321,
264);->Location = System::Drawing::Point(82, 264);
}
{->Show();
pictureBox4->Show();->Location = System::Drawing::Point(321,
264);->Location = System::Drawing::Point(82, 264);
}->Text="1. Стріляти в Білла. С-50, Б-0,
Д-50 +";->Text="2. Стріляти в Джона. С-30, Б-70,
Д-0";->Hide(); label16->Hide();
}(a=="Білл")
{->Show();->Location =
System::Drawing::Point(201, 53);(b=="Сем")
{->Show();
pictureBox4->Show();->Location = System::Drawing::Point(321,
264);->Location = System::Drawing::Point(82, 264);
}
{->Show();
pictureBox4->Show();->Location = System::Drawing::Point(321,
264);->Location = System::Drawing::Point(82, 264);
}->Text="1. Стріляти в Сема. С-20, Б-80,
Д-100 +";->Text="2. Стріляти в Джона. С-100, Б-90, Д-20
";->Text="Бо якщо вибрати 2, то Сем буде стріляти в Білла і
тоді:";->Text="С-100, Б-0";
}(a=="Джон")
{->Show();->Location =
System::Drawing::Point(201, 53);(b=="Білл")
{->Show();
pictureBox2->Show();->Location = System::Drawing::Point(321,
264);->Location = System::Drawing::Point(82, 264);
}
{->Show();
pictureBox2->Show();->Location = System::Drawing::Point(321,
264);->Location = System::Drawing::Point(82, 264);
}->Text="1. Стріляти в Білла. С-100,
Б-50, Д-60";->Text="2. Стріляти в Сема. С-50, Б-100, Д-50
+";->Text="Бо якщо вибрати 1, то Сем буде стріляти в Джона і
тоді:";->Text="C-100, Д-0";
}
}: System::Void button5_Click(System::Object^
sender, System::EventArgs^ e) {->Enabled = false;->Enabled =
true;::String^ a=label8->Text;::String^ b=label9->Text;::String^
c=label10->Text;(a=="Сем")
{(b=="Білл")
{->Text="Білл
мертвий";->Show();->Location = System::Drawing::Point(321, 264);
}(c=="Білл")
{->Text="Білл мертвий";->Show();->Location
= System::Drawing::Point(82, 264);
}
}(a=="Білл")
{(b=="Джон")
{v=rand()%100+1;(v<=80)
{->Text="Сем
мертвий";->Show();->Location = System::Drawing::Point(82, 264);
}(v>=80)
{->Text="Білл
мертвий";->Show();->Location = System::Drawing::Point(201, 53);
}
}(c=="Джон")
{v=rand()%100+1;(v<=80)
{->Text="Сем
мертвий";->Show();->Location = System::Drawing::Point(321, 264);
}
{->Text="Білл
мертвий";->Show();->Location = System::Drawing::Point(201, 53);
}
}
}(a=="Джон")
{(b=="Білл")
{v=rand()%100+1;(v<=50)
{->Text="Сем
мертвий";->Show();->Location = System::Drawing::Point(82, 264);
}(v>=50)
{->Text="Джон
мертвий";->Show();->Location = System::Drawing::Point(201, 53);
}
}(c=="Білл")
{v=rand()%100+1;(v<=50)
{->Text="Сем мертвий";->Show();->Location
= System::Drawing::Point(321, 264);
}(v>=50)
{->Text="Джон
мертвий";->Show();->Location = System::Drawing::Point(201, 53);
}
}
}
}: System::Void button6_Click(System::Object^
sender, System::EventArgs^ e) {->Enabled = false;::String^
a=label8->Text;::String^ b=label9->Text;::String^
c=label10->Text;(a=="Сем")
{(b=="Білл мертвий")
{v=rand()%100+1;(v<=50)
{->Text="Сем
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(201, 53);
}(v>=50)
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(82, 264);
}
}(c=="Білл мертвий")
{v=rand()%100+1;(v<=50)
{->Text="Сем
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(201, 53);
}(v>=50)
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(321, 264);
}
}
}(a=="Білл")
{(b=="Джон")
{v=rand()%100+1;(v<=50)
{->Text="Білл
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(201, 53);
}
{v1=rand()%100+1;(v<=80)
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(321, 264);
}(v>=80)
{->Enabled = true;
}
}
}(c=="Джон")
{v=rand()%100+1;(v<=50)
{->Text="Білл
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(201, 53);
}
{v1=rand()%100+1;(v<=80)
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(82, 264);
}(v>=0)
{->Enabled = true;
}
}
}
}(a=="Білл мертвий")
{(b=="Джон")
{v=rand()%100+1;(v<=50)
{->Text="Сем
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(82, 264);
}(v>=50)
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(321, 264);
}
}(c=="Джон")
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(82, 264);
}
}(a=="Джон")
{(b=="Білл")
{v=rand()%100+1;(v<=80)
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(201, 53);
}(v>=80)
{v1=rand()%100+1;(v1<=50)
{->Text="Білл
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(321, 264);
}button7->Enabled = true;
}
}(c=="Білл")
{v=rand()%100+1;(v<=80)
{->Text="Джон
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(201, 53);
}(v>=80)
{v1=rand()%100+1;(v1<=50)
{->Text="Білл мертвий";->Text="Дуель
закінчено!";->Show();->Enabled = false;->Show();->Location =
System::Drawing::Point(82, 264);
}button7->Enabled = true;
}
}
}(a=="Джон мертвий")
{(b=="Білл")
{v=rand()%100+1;(v<=80)
{->Text="Сем мертвий";->Enabled =
false;->Text="Дуель закінчено!";->Show();->Show();->Location
= System::Drawing::Point(82, 264);
}(v>=80)
{->Text="Білл мертвий";->Enabled
= false;->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(321, 264);
}
}(c=="Білл")
{->Text="Білл
мертвий";->Text="Дуель закінчено!";->Show();->Enabled =
false;->Show();->Location = System::Drawing::Point(82, 264);
}
}
}
: System::Void button7_Click(System::Object^
sender, System::EventArgs^ e) {->Enabled = false;::String^
a=label8->Text;::String^ b=label9->Text;::String^
c=label10->Text;(a=="Білл")
{(b=="Джон")
{v=rand()%100+1;(v<=80)
{->Text="Джон
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(321, 264);
}
{v1=rand()%100+1;(v<=50)
{->Text="Білл
мертвий";->Text="Дуель закінчено!";->Show();->Show();->Location
= System::Drawing::Point(82, 264);
}
{->Text="Джон
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(321, 264);
}
}
}(c=="Джон")
{v=rand()%100+1;(v<=80)
{->Text="Джон
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(82, 264);
}
{v1=rand()%100+1;(v<=50)
{->Text="Білл
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(201, 53);
}
{->Text="Джон
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(82, 264);
}
}
}
}(a=="Джон")
{(b=="Білл")
{v=rand()%100+1;(v<=50)
{->Text="Білл
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(321, 264);
}(v>=50)
{v1=rand()%100+1;(v1<=80)
{->Text="Джон
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(201, 53);
}
{->Text="Білл
мертвий";->Text="Дуель закінчено!";->Show();->Show();->Location
= System::Drawing::Point(321, 264);
}
}
}(c=="Білл")
{v=rand()%100+1;(v<=50)
{->Text="Білл
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(82, 264);
}(v>=50)
{v1=rand()%100+1;(v1<=80)
{->Text="Джон мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(201, 53);
}
{->Text="Білл
мертвий";->Text="Дуель
закінчено!";->Show();->Show();->Location =
System::Drawing::Point(82, 264);
}
}
}
}
}
: System::Void button8_Click(System::Object^
sender, System::EventArgs^ e) {^form2 = gcnew Form2();->Show();
}: System::Void button9_Click(System::Object^
sender, System::EventArgs^ e) {
::Show("МОДЕЛЬ, ЩО РЕАЛІЗУЄ ПРОГРАМА\n\nСем,
Білл і Джон (нижче позначені буквами С, Б, Д) домовились битися на дуелі втрьох
за такими правилами:\nЖеребкування визначає, хто стріляє першим, другим,
третім. Далі вони розташовуються на однаковій відстані один від одного.
Обмінюються вистрілами по черзі, визначеній жеребом, поки двоє не будуть убиті.
Черговий стріляючий може стріляти в будь якого із інших, враховуючи йоміврність
виживання та оптимальну для себе стратегію.\nВідомо, що С - снайпер і ніколи не
промахується з даної дистанції, Б - влучає лише в 80%, а Д - приблизно в 50%
випадків.\n\nОПИС ПРОГРАМИ 'Багатостороння дуель'\n\nКористувачу програми
надається можливість:\n 1) Жеребкуванням обрати порядок, у якому розташуються
учасники дуелі (С, Б, Д);\n 2) Відповідно до оптимальної стратегії, здійснювати
постріли кожного дуелянта в порядку, визначеному жеребкуванням поки двоє
дуелянтів не будуть вбиті.\nОбислення ймовірності виживання (далі - ЙВ) на
кожен хід здійснюється наступним чином:\nЙВ того, у кого стріляють (Жертви [Ж])
дорівнює 100%-'ймовірність попадання (ЙП)' того, хто стріляє (Стрільця
[Cт]).\nЙВ Ст дорівнює 'ЙП' Ст + (100% - 'ЙП' Ж). На основі даних про ЙВ
дуелянта на кожен крок обирається опимальна стратегія (ОС) ведення дуелі (у
вікні програми ОС позначається '+').\n\nІНСТРУКЦІЯ З УПРАВЛІННЯ\n\nЩоб
розпочати гру, необхідно:\n 1) В пункті меню натиснути кнопку 'Гра!';\n 2)
З'явиться вікно, де необхідно жеребкуванням обрати:\n 1. Дуелянта, який буде
стріляти першим, відмітивши 1 з 3-ох пунктів (тобто витягнути жереб) і
натиснувши кнопку 'Обрати 1-ого';\n 2. Дуелянта, який буде стріляти другим,
відмітивши 1 з 2-ох пунктів і натистувши кнопку 'Обрати другого'.\nДуелянт,
якого не вибрали при жеребкуванні, стає третім автоматично.\n 3) Натиснути
кнопку 'На позиції!';\nУ вікні з'явиться графічна інтерпритація 3-сторонньої
дуелі у вигляді 3-ох зображеннь дуелянтів з підписами, які відповідають
індивідуальному стрільцеві, що розташовані по колу, в центрі якого знаходиться
правильний трикутник (модель одинакової відстані між дуелянтами). Порядок
стрільби визачений за годинниковою стрілкою. В верхній правій частині вікна
будуть знаходитись можливі стратегії дуелянта, що стріляє першим, та
ймовірності виживання усіх дуелянтів.\n 4) По черзі натискати кнопки '1-ша
перестрілка', '2-га перестрілка' (та '3-тя перестрілка' якщо після другої
перестілки загине тільки 1 дуелянт) поки не з'явиться напис:'Дуель
закінчено!'\nДля виходу з програми натиснути кнопку 'Вийти' або 'Вийти з гри:('
і підтвердити своє бажання.");
}
};
}
2. Файли вихідного коду
· AssemblyInfo.cpp
#include "stdafx.h"
namespace System;namespace
System::Reflection;namespace System::Runtime::CompilerServices;namespace
System::Runtime::InteropServices;namespace System::Security::Permissions;
[assembly:AssemblyTitleAttribute("Багатостороннядуель16")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("")];
[assembly:AssemblyProductAttribute("Багатостороннядуель16")];
[assembly:AssemblyCopyrightAttribute("Copyright
(c) 2015")];
[assembly:AssemblyTrademarkAttribute("")];
[assembly:AssemblyCultureAttribute("")];
[assembly:AssemblyVersionAttribute("1.0.*")];
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];
[assembly:SecurityPermission(SecurityAction::RequestMinimum,
UnmanagedCode = true)];
· Багатостороння дуель 1.6.cpp
// Багатостороння дуель 1.6.cpp: главный файл
проекта.
#include "stdafx.h"
#include "Form1.h"
namespace Багатостороннядуель16;
[STAThreadAttribute]main(array<System::String
^> ^args)
{::EnableVisualStyles();::SetCompatibleTextRenderingDefault(false);
// Создание главного окна и его запуск::Run(gcnew
Form1());0;
}
6. Опис роботи програми
Користувачу ігрової програми «Багатостороння
дуель» надається можливість користуватись програмою відповідно до інструкції,
поданої нижче.
При відкритті файлу під назвою «Багатостороння
дуель 1.6» відкриється меню програми, де поряд з авторською заставкою будуть
знаходитись 3 кнопки (рис. 2):
. «Гра!»
. «Відомості про програму»
. «Вихід»
Меню програми
Рекомендується роботу з програмою починати,
натиснувши клавішу «Відомості про програму», де знаходиться інструкція з
управління (Рис. 3):
Опис роботи програми
Далі, натиснувши кнопку «Гра!» користувачу програми
надається можливість:
) Жеребкуванням обрати порядок, у якому
розташуються учасники дуелі (С, Б, Д) (рис.):
Жеребкування
) Натиснувши кнопку «На позиції!» відповідно до
оптимальної стратегії, здійснювати постріли кожного дуелянта в порядку,
визначеному жеребкуванням поки двоє дуелянтів не будуть вбиті (рис.):
а)
б)
в)
Дуель
Обчислення ймовірності виживання (далі - ЙВ) на кожен хід
здійснюється наступним чином:
де ЙВ(Ж) - ймовірність виживання жертви, ЙП(Ст) - ймовірність
попадання стрільця.
де ЙВ(Ст) - ймовірність виживання стрільця, ЙП(Ж) -
ймовірність попадання жертви.
На основі даних про ЙВ дуелянта на кожен крок обирається
опимальна стратегія (ОС) ведення дуелі (у вікні програми ОС позначається '+').
Для виходу з програми необхідно натиснути кнопку «Вийти» або
«Вийти з гриL» і підтвердити своє бажання (рис.):
Вихід
Аналіз результатів
Результатом проектування
розробленого алгоритму на мові програмування С++ стала програма - модель
«Багатостороння дуель».
Для оптимізації програми
та виявлення вразливих місць було використано принцип модульного тестування.
Також активно використовувалися принципи безпосередньої переперевірки.
Через суперечності
первинних тестувань виявлялися помилки, і було знайдено такі недоліки у системі
безпеки програми:
§ Вразливість
проведення жеребкування;
§ Вразливість
перевірки умов ситуації «на полі дуелі» після другої перестрілки;
ü Дописаний метод
для перевірки умови відмічення елементів RadioButton при жеребкуванні;
ü Оптимізований код
в блоці умов початку 3-тьої перевірки.
Усі протестовані функції
працюють коректно за наявності вище зазначених змін - у структурі відповідного
блоку коду.
Отже, в результаті
аналізу можна зробити висновок що програма працює чітко і правильно. Результати
тестування програми підтвердили її працездатність.
Висновок
У ході виконання даної роботи були описані
основні переваги програмування та розробки ігрових програм на мові С++ в
середовищі Visual Studio C++ 2008 Express Edition і аспекти роботи
з графічним інтерфейсом користувача у даному середовищі на мові С++. Для
закріплення викладеного матеріалу і демонстрації можливостей засобів підтримки
С++ було розроблено гру «Багатостороння дуель»». У роботі представлено основний
алгоритм системи, його блок-схема, зображення основних вікон програми, лістинг
програми.
Розроблена програма розрахована на запуск на
локальному ПК. Головним недоліком розробки програми є її простота, адже система
не вважається важкою у проектуванні.
У ході виконання проекту було отримано наступні
навички: робота із візуальним середовищем програмування Microsoft Visual Studio
С++ 2008 Express Edition, змінними різних типів, класами та об’єктами,
файлами, WIN API, діалоговими вікнами, меню, формами.
Курсова робота присвячена розробці програми для
роботи з основними принципами ООП. Початком виконання курсової роботи стало
дослідження різного роду інформаційних джерел та ознайомлення з теоретичними
засадами; спроектовано зовнішній вигляд інтерфейсу та розподілено функції між
його елементами.
Програмний продукт може бути використаний як
самостійний додаток, чи як додаток до іншої програми, після деякої модифікації.
Присутня можливість вдосконалення та зміни функціоналу програми.
У ході тестування була
перевірена коректність роботи додатку. У цілому, можна стверджувати, що
індивідуальне завдання на курсову роботу на тему «Розробка ігрової програми
‘Багатостороння дуель’» виконане.
Список використаної
літератури
1. Стенлі Ліппман «Основи програмування на
С++»
. Джеф Елджер - «Бібліотека програміста»
. Форум “Учебники, исходники для
программистов (Уроки Windows Forms C++)” //olocoder.ru/VS25.html
. Інтернет-Університет Інформаційних
Технологій // http://www.intuit.ru/
. Інформаційні технології. Аналітичні
матеріали // www.it.ridne.net/
. Електронний онлайн журнал “Ігроманія” //
www.igromania.ru/
. Електронний журнал «Лучшие компьютерные
игры» // www.lki.ru/
. Вільна енциклопедія Вікіпедія //
http://uk.wikipedia.org/
. Microsoft Developer Network
//msdn.microsoft.com/
Додаток А
Інструкція користувача
1. Вставити DVD-RW диск з грою в DVD-ROM дисковод
комп’ютера;
2. Відкрити ярлик гри під назвою «Багатостороння
дуель»;
. У відкритому вікні натиснути кнопку «Відомості
про програму» та уважно ознайомитись з інструкцією;
. Відповідно до інструкції насолоджуватись грою!
. Для бездискового використання програми:
.1. Скопіювати вміст DVD-RW диску на жорсткий диск
комп’ютера;
.2. Вийняти диск з дисководу;
.3. Відкрити скопійований ярлик гри
«Багатостороння дуель»;
.4. Виконати п.3 та п.4.
Додаток Б
Системні вимоги
- Процесор: 200U (рекомендовано
Pentium 333U і вище), розрядність х32/х64;
Оперативна пам’ять: 50 МБ
(рекомендовано 120 МБ);
Розширення екрану: 640х480х16
(рекомендовано 800х600x32);
Вільне місце на HDD (для
бездискового використання): 20 МБ;
Операційна система: Windows XP/7/8/8.1/10;
DVD-ROM дисковод;
- Встановлений продукт “Microsoft
Visual C++ 2008/2010 Redistributable x32/x64”