Розробка ігрової програми "Багатостороння дуель"
Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 03.05.2015 |
Размер файла | 762,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
this->label16->Location = System::Drawing::Point(380, 86);
this->label16->Name = L"label16";
this->label16->Size = System::Drawing::Size(52, 16);
this->label16->TabIndex = 28;
this->label16->Text = L"label16";
//
// button7
//
this->button7->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->button7->Location = System::Drawing::Point(466, 183);
this->button7->Name = L"button7";
this->button7->Size = System::Drawing::Size(137, 22);
this->button7->TabIndex = 29;
this->button7->Text = L"3-тя перестрілка";
this->button7->UseVisualStyleBackColor = true;
this->button7->Click += gcnew System::EventHandler(this, &Form3::button7_Click);
//
// pictureBox1
//
this->pictureBox1->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox1.BackgroundImage")));
this->pictureBox1->Location = System::Drawing::Point(201, 144);
this->pictureBox1->Name = L"pictureBox1";
this->pictureBox1->Size = System::Drawing::Size(125, 125);
this->pictureBox1->TabIndex = 30;
this->pictureBox1->TabStop = false;
//
// pictureBox2
//
this->pictureBox2->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox2.Image")));
this->pictureBox2->Location = System::Drawing::Point(201, 53);
this->pictureBox2->Name = L"pictureBox2";
this->pictureBox2->Size = System::Drawing::Size(125, 95);
this->pictureBox2->TabIndex = 31;
this->pictureBox2->TabStop = false;
//
// pictureBox3
//
this->pictureBox3->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox3.Image")));
this->pictureBox3->Location = System::Drawing::Point(321, 264);
this->pictureBox3->Name = L"pictureBox3";
this->pictureBox3->Size = System::Drawing::Size(125, 95);
this->pictureBox3->TabIndex = 32;
this->pictureBox3->TabStop = false;
//
// pictureBox4
//
this->pictureBox4->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox4.Image")));
this->pictureBox4->Location = System::Drawing::Point(82, 264);
this->pictureBox4->Name = L"pictureBox4";
this->pictureBox4->Size = System::Drawing::Size(125, 95);
this->pictureBox4->TabIndex = 33;
this->pictureBox4->TabStop = false;
//
// button8
//
this->button8->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->button8->Location = System::Drawing::Point(466, 339);
this->button8->Name = L"button8";
this->button8->Size = System::Drawing::Size(137, 30);
this->button8->TabIndex = 34;
this->button8->Text = L"Вийти з гри:(";
this->button8->UseVisualStyleBackColor = true;
this->button8->Click += gcnew System::EventHandler(this, &Form3::button8_Click);
//
// pictureBox5
//
this->pictureBox5->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox5.Image")));
this->pictureBox5->Location = System::Drawing::Point(609, 34);
this->pictureBox5->Name = L"pictureBox5";
this->pictureBox5->Size = System::Drawing::Size(125, 95);
this->pictureBox5->TabIndex = 35;
this->pictureBox5->TabStop = false;
//
// pictureBox6
//
this->pictureBox6->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox6.Image")));
this->pictureBox6->Location = System::Drawing::Point(332, 115);
this->pictureBox6->Name = L"pictureBox6";
this->pictureBox6->Size = System::Drawing::Size(125, 95);
this->pictureBox6->TabIndex = 36;
this->pictureBox6->TabStop = false;
//
// pictureBox7
//
this->pictureBox7->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox7.Image")));
this->pictureBox7->Location = System::Drawing::Point(438, 29);
this->pictureBox7->Name = L"pictureBox7";
this->pictureBox7->Size = System::Drawing::Size(125, 95);
this->pictureBox7->TabIndex = 37;
this->pictureBox7->TabStop = false;
//
// pictureBox8
//
this->pictureBox8->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox8.Image")));
this->pictureBox8->Location = System::Drawing::Point(645, 183);
this->pictureBox8->Name = L"pictureBox8";
this->pictureBox8->Size = System::Drawing::Size(109, 153);
this->pictureBox8->TabIndex = 38;
this->pictureBox8->TabStop = false;
//
// pictureBox9
//
this->pictureBox9->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox9.Image")));
this->pictureBox9->Location = System::Drawing::Point(-1, -4);
this->pictureBox9->Name = L"pictureBox9";
this->pictureBox9->Size = System::Drawing::Size(157, 209);
this->pictureBox9->TabIndex = 39;
this->pictureBox9->TabStop = false;
//
// pictureBox10
//
this->pictureBox10->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox10.BackgroundImage")));
this->pictureBox10->Location = System::Drawing::Point(101, 174);
this->pictureBox10->Name = L"pictureBox10";
this->pictureBox10->Size = System::Drawing::Size(90, 57);
this->pictureBox10->TabIndex = 40;
this->pictureBox10->TabStop = false;
//
// button9
//
this->button9->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->button9->Location = System::Drawing::Point(609, 339);
this->button9->Name = L"button9";
this->button9->Size = System::Drawing::Size(137, 30);
this->button9->TabIndex = 41;
this->button9->Text = L"Інструкція";
this->button9->UseVisualStyleBackColor = true;
this->button9->Click += gcnew System::EventHandler(this, &Form3::button9_Click);
//
// Form3
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->BackColor = System::Drawing::SystemColors::ButtonHighlight;
this->ClientSize = System::Drawing::Size(754, 381);
this->Controls->Add(this->button9);
this->Controls->Add(this->pictureBox10);
this->Controls->Add(this->pictureBox9);
this->Controls->Add(this->pictureBox8);
this->Controls->Add(this->pictureBox7);
this->Controls->Add(this->pictureBox6);
this->Controls->Add(this->pictureBox5);
this->Controls->Add(this->button8);
this->Controls->Add(this->pictureBox4);
this->Controls->Add(this->pictureBox3);
this->Controls->Add(this->pictureBox2);
this->Controls->Add(this->pictureBox1);
this->Controls->Add(this->button7);
this->Controls->Add(this->label16);
this->Controls->Add(this->label15);
this->Controls->Add(this->label14);
this->Controls->Add(this->label13);
this->Controls->Add(this->label12);
this->Controls->Add(this->label11);
this->Controls->Add(this->button6);
this->Controls->Add(this->button5);
this->Controls->Add(this->button4);
this->Controls->Add(this->label10);
this->Controls->Add(this->label9);
this->Controls->Add(this->label8);
this->Controls->Add(this->button3);
this->Controls->Add(this->label7);
this->Controls->Add(this->label6);
this->Controls->Add(this->label5);
this->Controls->Add(this->label4);
this->Controls->Add(this->button2);
this->Controls->Add(this->radioButton5);
this->Controls->Add(this->radioButton4);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->button1);
this->Controls->Add(this->radioButton3);
this->Controls->Add(this->radioButton2);
this->Controls->Add(this->radioButton1);
this->Controls->Add(this->label1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::SizableToolWindow;
this->Icon = (cli::safe_cast<System::Drawing::Icon^ >(resources->GetObject(L"$this.Icon")));
this->MaximumSize = System::Drawing::Size(770, 420);
this->MinimumSize = System::Drawing::Size(175, 354);
this->Name = L"Form3";
this->Text = L"Дуель";
this->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();
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void Form3_Load(System::Object^ sender, System::EventArgs^ e) {
button8->Hide(); pictureBox8->Hide();
this->Width = 175; pictureBox9->Hide();
this->Height = 354; pictureBox1->Show();
label11->Hide(); label10->Hide();
label12->Hide(); label8->Hide();
label4->Hide(); label9->Hide();
label5->Hide(); label13->Hide();
label6->Hide(); label14->Hide();
label7->Hide(); label15->Hide();
label2->Hide(); label16->Hide();
label3->Hide(); button5->Hide(); button6->Hide(); button7->Hide();
pictureBox1->Hide(); pictureBox2->Hide(); pictureBox3->Hide();
pictureBox4->Hide(); pictureBox5->Hide(); pictureBox6->Hide();
pictureBox7->Hide(); button4->Hide();
button2->Enabled = false; this->Location = System::Drawing::Point(550,150);
radioButton4->Enabled = false;
radioButton5->Enabled = false;
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Form2 ^form2 = gcnew Form2();
form2->Show();
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
radioButton4->Enabled = true;
radioButton5->Enabled = true;
button2->Enabled = true;
label2->Show();
label3->Show();
System::String^ a1 = "Сем";
System::String^ b1 = "Білл";
System::String^ c1 = "Джон";
int a,b,c;
srand(time(NULL));
a=rand()%3+1;
if(a==1)
{
if(radioButton1->Checked || radioButton2->Checked || radioButton3->Checked)
label3->Text = a1;
}
if(a==2)
{
if(radioButton1->Checked || radioButton2->Checked || radioButton3->Checked)
label3->Text = b1;
}
if(a==3)
{
if(radioButton1->Checked || radioButton2->Checked || radioButton3->Checked)
label3->Text = c1;
}
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
button4->Show();
label4->Show();
label5->Show();
label6->Show();
label7->Show();
System::String^ g;
int k;
g=label3->Text;
if(g=="Сем")
{
System::String^ b1 = "Білл";
System::String^ c1 = "Джон";
k=rand()%2+1;
if(k==1)
{
if(radioButton4->Checked || radioButton5->Checked)
{
label6->Text = b1;
label7->Text = c1;
}
}
if(k==2)
{
if(radioButton4->Checked || radioButton5->Checked)
{
label6->Text = c1;
label7->Text = b1;
}
}
}
if(g=="Білл")
{
System::String^ b1 = "Сем";
System::String^ c1 = "Джон";
k=rand()%2+1;
if(k==1)
{
if(radioButton4->Checked || radioButton5->Checked)
{
label6->Text = b1;
label7->Text = c1;
}
}
if(k==2)
{
if(radioButton4->Checked || radioButton5->Checked)
{
label6->Text = c1;
label7->Text = b1;
}
}
}
if(g=="Джон")
{
System::String^ b1 = "Cем";
System::String^ c1 = "Білл";
k=rand()%2+1;
if(k==1)
{
if(radioButton4->Checked || radioButton5->Checked)
{
label6->Text = b1;
label7->Text = c1;
}
}
if(k==2)
{
if(radioButton4->Checked || radioButton5->Checked)
{
label6->Text = c1;
label7->Text = b1;
}
}
}
}
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
this->Width = 770;
label10->Show();
label8->Show();
button5->Show();
button6->Show();
button7->Show();
label9->Show();
pictureBox8->Show();
pictureBox9->Show();
label13->Show();
pictureBox1->Show();
pictureBox10->Hide();
label14->Show();
this->Location = System::Drawing::Point(280,150);
label15->Show();
label16->Show();
this->Height = 440;
button1->Hide(); button2->Hide(); button4->Hide();
radioButton1->Hide(); radioButton2->Hide(); radioButton3->Hide();
radioButton4->Hide(); radioButton5->Hide(); label1->Hide();
label10->Text = label7->Text; label2->Hide(); label3->Hide();
label9->Text = label6->Text; label4->Hide(); label5->Hide();
label8->Text = label3->Text; label6->Hide(); label7->Hide();
button6->Enabled = false; button3->Hide();
button7->Enabled = false; button8->Show();
System::String^ a=label8->Text;
System::String^ b=label9->Text;
System::String^ c=label10->Text;
label12->Show();
if(a=="Сем")
{
pictureBox2->Show();
pictureBox2->Location = System::Drawing::Point(201, 53);
if(b=="Білл")
{
pictureBox3->Show(); pictureBox4->Show();
pictureBox3->Location = System::Drawing::Point(321, 264);
pictureBox4->Location = System::Drawing::Point(82, 264);
}
else
{
pictureBox3->Show(); pictureBox4->Show();
pictureBox4->Location = System::Drawing::Point(321, 264);
pictureBox3->Location = System::Drawing::Point(82, 264);
}
label13->Text="1. Стріляти в Білла. С-50, Б-0, Д-50 +";
label14->Text="2. Стріляти в Джона. С-30, Б-70, Д-0";
label15->Hide(); label16->Hide();
}
if(a=="Білл")
{
pictureBox3->Show();
pictureBox3->Location = System::Drawing::Point(201, 53);
if(b=="Сем")
{
pictureBox2->Show(); pictureBox4->Show();
pictureBox2->Location = System::Drawing::Point(321, 264);
pictureBox4->Location = System::Drawing::Point(82, 264);
}
else
{
pictureBox2->Show(); pictureBox4->Show();
pictureBox4->Location = System::Drawing::Point(321, 264);
pictureBox2->Location = System::Drawing::Point(82, 264);
}
label13->Text="1. Стріляти в Сема. С-20, Б-80, Д-100 +";
label14->Text="2. Стріляти в Джона. С-100, Б-90, Д-20 ";
label15->Text="Бо якщо вибрати 2, то Сем буде стріляти в Білла і тоді:";
label16->Text="С-100, Б-0";
}
if(a=="Джон")
{
pictureBox4->Show();
pictureBox4->Location = System::Drawing::Point(201, 53);
if(b=="Білл")
{
pictureBox3->Show(); pictureBox2->Show();
pictureBox3->Location = System::Drawing::Point(321, 264);
pictureBox2->Location = System::Drawing::Point(82, 264);
}
else
{
pictureBox3->Show(); pictureBox2->Show();
pictureBox2->Location = System::Drawing::Point(321, 264);
pictureBox3->Location = System::Drawing::Point(82, 264);
}
label13->Text="1. Стріляти в Білла. С-100, Б-50, Д-60";
label14->Text="2. Стріляти в Сема. С-50, Б-100, Д-50 +";
label15->Text="Бо якщо вибрати 1, то Сем буде стріляти в Джона і тоді:";
label16->Text="C-100, Д-0";
}
}
private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {
button5->Enabled = false;
button6->Enabled = true;
System::String^ a=label8->Text;
System::String^ b=label9->Text;
System::String^ c=label10->Text;
if(a=="Сем")
{
if(b=="Білл")
{
label9->Text="Білл мертвий";
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(321, 264);
}
if(c=="Білл")
{
label10->Text="Білл мертвий";
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(82, 264);
}
}
if(a=="Білл")
{
if(b=="Джон")
{
int v=rand()%100+1;
if(v<=80)
{
label10->Text="Сем мертвий";
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(82, 264);
}
if(v>=80)
{
label8->Text="Білл мертвий";
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(201, 53);
}
}
if(c=="Джон")
{
int v=rand()%100+1;
if(v<=80)
{
label9->Text="Сем мертвий";
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(321, 264);
}
else
{
label8->Text="Білл мертвий";
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(201, 53);
}
}
}
if(a=="Джон")
{
if(b=="Білл")
{
int v=rand()%100+1;
if(v<=50)
{
label10->Text="Сем мертвий";
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(82, 264);
}
if(v>=50)
{
label8->Text="Джон мертвий";
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(201, 53);
}
}
if(c=="Білл")
{
int v=rand()%100+1;
if(v<=50)
{
label9->Text="Сем мертвий";
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(321, 264);
}
if(v>=50)
{
label8->Text="Джон мертвий";
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(201, 53);
}
}
}
}
private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {
button6->Enabled = false;
System::String^ a=label8->Text;
System::String^ b=label9->Text;
System::String^ c=label10->Text;
if(a=="Сем")
{
if(b=="Білл мертвий")
{
int v=rand()%100+1;
if(v<=50)
{
label8->Text="Сем мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(201, 53);
}
if(v>=50)
{
label10->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(82, 264);
}
}
if(c=="Білл мертвий")
{
int v=rand()%100+1;
if(v<=50)
{
label8->Text="Сем мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(201, 53);
}
if(v>=50)
{
label9->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(321, 264);
}
}
}
if(a=="Білл")
{
if(b=="Джон")
{
int v=rand()%100+1;
if(v<=50)
{
label8->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(201, 53);
}
else
{
int v1=rand()%100+1;
if(v<=80)
{
label9->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(321, 264);
}
if(v>=80)
{
button7->Enabled = true;
}
}
}
if(c=="Джон")
{
int v=rand()%100+1;
if(v<=50)
{
label8->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(201, 53);
}
else
{
int v1=rand()%100+1;
if(v<=80)
{
label10->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(82, 264);
}
if(v>=0)
{
button7->Enabled = true;
}
}
}
}
if(a=="Білл мертвий")
{
if(b=="Джон")
{
int v=rand()%100+1;
if(v<=50)
{
label10->Text="Сем мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(82, 264);
}
if(v>=50)
{
label9->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(321, 264);
}
}
if(c=="Джон")
{
label10->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(82, 264);
}
}
if(a=="Джон")
{
if(b=="Білл")
{
int v=rand()%100+1;
if(v<=80)
{
label8->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(201, 53);
}
if(v>=80)
{
int v1=rand()%100+1;
if(v1<=50)
{
label9->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(321, 264);
}
else button7->Enabled = true;
}
}
if(c=="Білл")
{
int v=rand()%100+1;
if(v<=80)
{
label8->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(201, 53);
}
if(v>=80)
{
int v1=rand()%100+1;
if(v1<=50)
{
label10->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(82, 264);
}
else button7->Enabled = true;
}
}
}
if(a=="Джон мертвий")
{
if(b=="Білл")
{
int v=rand()%100+1;
if(v<=80)
{
label10->Text="Сем мертвий";
button7->Enabled = false;
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox5->Show();
pictureBox5->Location = System::Drawing::Point(82, 264);
}
if(v>=80)
{
label10->Text="Білл мертвий";
button7->Enabled = false;
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(321, 264);
}
}
if(c=="Білл")
{
label10->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
button7->Enabled = false;
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(82, 264);
}
}
}
private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e) {
button7->Enabled = false;
System::String^ a=label8->Text;
System::String^ b=label9->Text;
System::String^ c=label10->Text;
if(a=="Білл")
{
if(b=="Джон")
{
int v=rand()%100+1;
if(v<=80)
{
label9->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(321, 264);
}
else
{
int v1=rand()%100+1;
if(v<=50)
{
label8->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(82, 264);
}
else
{
label9->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(321, 264);
}
}
}
if(c=="Джон")
{
int v=rand()%100+1;
if(v<=80)
{
label10->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(82, 264);
}
else
{
int v1=rand()%100+1;
if(v<=50)
{
label8->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(201, 53);
}
else
{
label10->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(82, 264);
}
}
}
}
if(a=="Джон")
{
if(b=="Білл")
{
int v=rand()%100+1;
if(v<=50)
{
label9->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(321, 264);
}
if(v>=50)
{
int v1=rand()%100+1;
if(v1<=80)
{
label8->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(201, 53);
}
else
{
label9->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(321, 264);
}
}
}
if(c=="Білл")
{
int v=rand()%100+1;
if(v<=50)
{
label10->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(82, 264);
}
if(v>=50)
{
int v1=rand()%100+1;
if(v1<=80)
{
label8->Text="Джон мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox7->Show();
pictureBox7->Location = System::Drawing::Point(201, 53);
}
else
{
label10->Text="Білл мертвий";
label11->Text="Дуель закінчено!";
label11->Show();
pictureBox6->Show();
pictureBox6->Location = System::Drawing::Point(82, 264);
}
}
}
}
}
private: System::Void button8_Click(System::Object^ sender, System::EventArgs^ e) {
Form2 ^form2 = gcnew Form2();
form2->Show();
}
private: System::Void button9_Click(System::Object^ sender, System::EventArgs^ e) {
MessageBox::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"
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using 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"
using namespace Багатостороннядуель16;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Создание главного окна и его запуск
Application::Run(gcnew Form1());
return 0;
}
6. Опис роботи програми
Користувачу ігрової програми «Багатостороння дуель» надається можливість користуватись програмою відповідно до інструкції, поданої нижче.
При відкритті файлу під назвою «Багатостороння дуель 1.6» відкриється меню програми, де поряд з авторською заставкою будуть знаходитись 3 кнопки (рис. 2):
1. «Гра!»
2. «Відомості про програму»
3. «Вихід»
Меню програми
Рекомендується роботу з програмою починати, натиснувши клавішу «Відомості про програму», де знаходиться інструкція з управління (Рис. 3):
Опис роботи програми
Далі, натиснувши кнопку «Гра!» користувачу програми надається можливість:
1) Жеребкуванням обрати порядок, у якому розташуються учасники дуелі (С, Б, Д) (рис.):
Жеребкування
2) Натиснувши кнопку «На позиції!» відповідно до оптимальної стратегії, здійснювати постріли кожного дуелянта в порядку, визначеному жеребкуванням поки двоє дуелянтів не будуть вбиті (рис.):
а)
б)
в)
Дуель
Обчислення ймовірності виживання (далі - ЙВ) на кожен хід здійснюється наступним чином:
де ЙВ(Ж) - ймовірність виживання жертви, ЙП(Ст) - ймовірність попадання стрільця.
де ЙВ(Ст) - ймовірність виживання стрільця, ЙП(Ж) - ймовірність попадання жертви.
На основі даних про ЙВ дуелянта на кожен крок обирається опимальна стратегія (ОС) ведення дуелі (у вікні програми ОС позначається '+').
Для виходу з програми необхідно натиснути кнопку «Вийти» або «Вийти з гри» і підтвердити своє бажання (рис.):
Вихід
Аналіз результатів
Результатом проектування розробленого алгоритму на мові програмування С++ стала програма - модель «Багатостороння дуель».
Для оптимізації програми та виявлення вразливих місць було використано принцип модульного тестування. Також активно використовувалися принципи безпосередньої переперевірки.
Через суперечності первинних тестувань виявлялися помилки, і було знайдено такі недоліки у системі безпеки програми:
§ Вразливість проведення жеребкування;
§ Вразливість перевірки умов ситуації «на полі дуелі» після другої перестрілки;
ь Дописаний метод для перевірки умови відмічення елементів RadioButton при жеребкуванні;
ь Оптимізований код в блоці умов початку 3-тьої перевірки.
Усі протестовані функції працюють коректно за наявності вище зазначених змін - у структурі відповідного блоку коду.
Отже, в результаті аналізу можна зробити висновок що програма працює чітко і правильно. Результати тестування програми підтвердили її працездатність.
Висновок
У ході виконання даної роботи були описані основні переваги програмування та розробки ігрових програм на мові С++ в середовищі Visual Studio C++ 2008 Express Edition і аспекти роботи з графічним інтерфейсом користувача у даному середовищі на мові С++. Для закріплення викладеного матеріалу і демонстрації можливостей засобів підтримки С++ було розроблено гру «Багатостороння дуель»». У роботі представлено основний алгоритм системи, його блок-схема, зображення основних вікон програми, лістинг програми.
Розроблена програма розрахована на запуск на локальному ПК. Головним недоліком розробки програми є її простота, адже система не вважається важкою у проектуванні.
У ході виконання проекту було отримано наступні навички: робота із візуальним середовищем програмування Microsoft Visual Studio С++ 2008 Express Edition, змінними різних типів, класами та об'єктами, файлами, WIN API, діалоговими вікнами, меню, формами.
Курсова робота присвячена розробці програми для роботи з основними принципами ООП. Початком виконання курсової роботи стало дослідження різного роду інформаційних джерел та ознайомлення з теоретичними засадами; спроектовано зовнішній вигляд інтерфейсу та розподілено функції між його елементами.
Програмний продукт може бути використаний як самостійний додаток, чи як додаток до іншої програми, після деякої модифікації. Присутня можливість вдосконалення та зміни функціоналу програми.
У ході тестування була перевірена коректність роботи додатку. У цілому, можна стверджувати, що індивідуальне завдання на курсову роботу на тему «Розробка ігрової програми `Багатостороння дуель'» виконане.
Список використаної літератури
1. Стенлі Ліппман «Основи програмування на С++»
2. Джеф Елджер - «Бібліотека програміста»
3. Форум “Учебники, исходники для программистов (Уроки Windows Forms C++)” //olocoder.ru/VS25.html
4. Інтернет-Університет Інформаційних Технологій // http://www.intuit.ru/
5. Інформаційні технології. Аналітичні матеріали // www.it.ridne.net/
6. Електронний онлайн журнал “Ігроманія” // www.igromania.ru/
7. Електронний журнал «Лучшие компьютерные игры» // www.lki.ru/
8. Вільна енциклопедія Вікіпедія // http://uk.wikipedia.org/
9. Форум программистов и сисадминов CyberForum // www.cyberforum.ru/
10. Microsoft Developer Network //msdn.microsoft.com/
Додаток А
Інструкція користувача
1. Вставити DVD-RW диск з грою в DVD-ROM дисковод комп'ютера;
2. Відкрити ярлик гри під назвою «Багатостороння дуель»;
3. У відкритому вікні натиснути кнопку «Відомості про програму» та уважно ознайомитись з інструкцією;
4. Відповідно до інструкції насолоджуватись грою!
5. Для бездискового використання програми:
5.1. Скопіювати вміст DVD-RW диску на жорсткий диск комп'ютера;
5.2. Вийняти диск з дисководу;
5.3. Відкрити скопійований ярлик гри «Багатостороння дуель»;
5.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”
Размещено на Allbest.ru
Подобные документы
Загальна характеристика алгоритму та опис програми. Керівництво системного програміста. Особливості запуску програми в Linux, FreeBSD, Windows. Аналіз результатів тестування програми, що проектується, вивчення та оцінка її практичної ефективності.
курсовая работа [91,4 K], добавлен 13.06.2014Створення програми для роботи з веб-камерою з автоматичним визначенням встановленої камери на комп'ютері. Характеристика апаратної конфігурації програми. Опис мови і середовища програмування. Розробка алгоритму, інструкції для програміста та користувача.
курсовая работа [1,2 M], добавлен 26.07.2013Розробка ігрового додатку за технологією IDE Visual Studio та WPF. Опис вхідної та вихідної інформації. Назва та призначення модулів програми. Основні поля класу, необхідні для ігрової логіки. Блок-схема алгоритму гри. Інструкція з експлуатації системи.
курсовая работа [1,3 M], добавлен 02.06.2015Класифікація існуючих інформаційних систем. Особливості створення інформаційної системи роботи меблевого магазину. Розробка програми, що забезпечує роботу торгівельної организації, в середовищі Microsoft Visual Studio 2008 на мові програмування Vb.NEt.
курсовая работа [829,5 K], добавлен 12.12.2013Розробка таблиці для збереження даних у текстовому файлі про фільми в середовищі програмування Visual Studio C++ та їх сортування за країною виробництва. Реалізація таблиці за допомогою компонента dataGridView. Опис і контрольний приклад роботи програми.
курсовая работа [1,4 M], добавлен 02.11.2016Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.
курсовая работа [1,3 M], добавлен 23.06.2010Базові конструкції мови програмування С++ з позиції об’єктного програмування. Розробка програми для автоматизації обліку товарів на складі магазину парфумів. Реалізація програми в середовищі Visual Studio C++. Розробка інтерфейсу і тестування програми.
дипломная работа [907,9 K], добавлен 01.04.2016Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.
курсовая работа [460,9 K], добавлен 04.03.2014Розробка кросплатформового інструменту електронного тестування учнів молодших та середніх класів по іноземній мові. Вибір середовища розробки та системи контролю версій. Опис мови програмування Java та лістинг програми. Апаратні та програмні вимоги.
дипломная работа [608,3 K], добавлен 26.10.2010Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.
курсовая работа [335,3 K], добавлен 11.01.2015