Помощь в написании студенческих работ
Антистрессовый сервис

Морской бой

Курсовая Купить готовую Узнать стоимостьмоей работы

Icon")));this→Name = L" MyForm" ;this→SizeGripStyle = System: Windows: Forms:SizeGripStyle:Show;this→Text = L" Морской бой" ;this→SizeChanged += gcnew System: EventHandler (this, &MyForm:MyForm_SizeChanged);this→ResumeLayout (false);this→PerformLayout ();}#pragma endregionprivate: System: Void rast_korabl (int ch) {//ch=1 — поле игрока ch=2 — поле компаint kol, prob, pol, x, y, ix, iy, vst… Читать ещё >

Морской бой (реферат, курсовая, диплом, контрольная)

Содержание

  • Введение
  • Аналитическая часть
  • Изучение предметной области
  • Выбор среды разработки и языка программирования
  • Разработка алгоритма программы
  • Практическая часть
  • Разработка программы
  • Тестирование программы
  • Установка программы
  • Руководство пользователя
  • Заключение
  • Список литературы
  • Приложение А. Текст модуля MyForm. h
  • Приложение Б. Текст модуля MyGame. h
  • Приложение В. Текст модуля MyGame. cpp

Icon")));this->Name = L" MyForm" ;this->SizeGripStyle = System: Windows:Forms:SizeGripStyle:Show;this->Text = L" Морской бой" ;this->SizeChanged += gcnew System: EventHandler (this, &MyForm:MyForm_SizeChanged);this->ResumeLayout (false);this->PerformLayout ();}#pragma endregionprivate: System: Void rast_korabl (int ch) {//ch=1 — поле игрока ch=2 — поле компаint kol, prob, pol, x, y, ix, iy, vst, px, py, zn, znmas;srand (time (NULL));for (int ix=0;ix<=11;ix++){for (int iy=0;iy<=11;iy++){if (ch==1) {mas[ix][iy]=0;} else {mas2[ix][iy]=0;}}}bb:for (int i=0;i<4;i++){kol = kor_kol[i]; for (int j=1;j<=kol;j++){prob = 0;aa:pol = rand () % 2+1;x = rand () % 10; y = rand () % 10; ix = 6 * (pol — 1); iy = 6 * i;vst = 0;for (int xx=x;xx<=x+5;xx++){for (int yy=y;yy<=y+5;yy++){px = xx — x + ix; py = yy — y + iy;zn = kor_konf[py][px]; if (xx > 10 — yy > 10) {if (zn == 1) {vst = 1;break;}}if (ch==1) {znmas = mas[xx][yy]; } else {znmas = mas2[xx][yy]; }if ((zn == 2 — zn == 1) && znmas == 1) {vst = 1;break;}}if (vst == 1) {break;}}if (vst == 1) {if (prob < 100) {prob++;goto aa;} else {goto bb;}}else {for (int xx=x;xx<=x+5;xx++){for (int yy=y;yy<=y+5;yy++){px = xx — x + ix; py = yy — y + iy;zn = kor_konf[py][px]; if (zn == 1) {if (ch==1) {mas[xx][yy]=1;} else {mas2[xx][yy]=1;}}}}}}}ris ();}private: System: Void ris () {SolidBrush^ mySolidBrush = gcnew SolidBrush (Color:Red);Graphics ^ formGraph4 = this->panel1->CreateGraphics ();Graphics ^ formGraph5 = this->panel2->CreateGraphics ();Brush ^ Заливка = gcnew SolidBrush (Color:Orange);//formGraph4->FillRectangle (gcnew SolidBrush (Color:Blue), 0,0,200,200);for (int ix=1;ix<=10;ix++){for (int iy=1;iy<=10;iy++){switch (mas[ix][iy]) {case 1: formGraph4->FillRectangle (gcnew SolidBrush (Color:Black),(ix-1)*20,(iy-1)*20,20,20);break;case 2: formGraph4->FillRectangle (gcnew SolidBrush (Color:Red),(ix-1)*20,(iy-1)*20,20,20);formGraph4->DrawLine (Pens:Black,(ix-1)*20,(iy-1)*20,(ix-1)*20+20,(iy-1)*20+20);formGraph4->DrawLine (Pens:Black,(ix-1)*20,(iy-1)*20+20,(ix-1)*20+20,(iy-1)*20);break;case 3: formGraph4->FillRectangle (gcnew SolidBrush (Color:Black),(ix-1)*20+8,(iy-1)*20+8,4,4);break;}switch (mas2[ix][iy]) {/*case 1: formGraph5->FillRectangle (gcnew SolidBrush (Color:Black),(ix-1)*20,(iy-1)*20,20,20);break;*/case 2: formGraph5->FillRectangle (gcnew SolidBrush (Color:Red),(ix-1)*20,(iy-1)*20,20,20);formGraph5->DrawLine (Pens:Black,(ix-1)*20,(iy-1)*20,(ix-1)*20+20,(iy-1)*20+20);formGraph5->DrawLine (Pens:Black,(ix-1)*20,(iy-1)*20+20,(ix-1)*20+20,(iy-1)*20);break;case 3: formGraph5->FillRectangle (gcnew SolidBrush (Color:Black),(ix-1)*20+8,(iy-1)*20+8,4,4);break;}}}}private: System: Void MyForm_SizeChanged (System:Object^ sender, System: EventArgs^ e) {String^ hhh;int rr=this->Height;hhh="c" +rr;label1->Text=this->Height+ «» + this->Width ;this->Text="jjj" ;if (this->Height<=200){this->Height=200;}}private: System: Void panel1_MouseClick (System:Object^ sender, System: Windows:Forms:MouseEventArgs^ e) {//Left = 1 048 576 //Right = 2 097 152 //Middle = 4 194 304 int ix, iy, vst, px, py, zn, znmas;int p2_x=20+panel1->PointToClient (this->MousePosition).X; int p2_y=20+panel1->PointToClient (this->MousePosition).Y;int x=p2_x / 20;int y=p2_y / 20;x—;y—;if (tek_sos==1){if (e->Button == (System:Windows:Forms:MouseButtons:Right)) {if (pol==1) {pol=2;} else {pol=1;};panel1_MouseMove (sender, e);};if (e->Button == (System:Windows:Forms:MouseButtons:Left)) {ix = 6 * (pol — 1); iy = 6 * (tip_kor-1);vst = 0;for (int xx=x;xx<=x+5;xx++){for (int yy=y;yy<=y+5;yy++){px = xx — x + ix; py = yy — y + iy;zn = kor_konf[py][px]; if (xx > 10 — yy > 10) {if (zn == 1) {vst = 1;break;}}znmas = mas[xx][yy]; if ((zn == 2 — zn == 1) && znmas == 1) {vst = 1;break;}}if (vst == 1) {break;}}if (vst==0) {for (int xx=x;xx<=x+5;xx++){for (int yy=y;yy<=y+5;yy++){px = xx — x + ix; py = yy — y + iy;zn = kor_konf[py][px]; if (zn == 1) {mas[xx][yy] = 1;}}}tip_kol++; if (tip_kol>kor_kol[tip_kor-1]) {tip_kor++;tip_kol=1; if (tip_kor>4) {tek_sos++;panel3->Visible=false;button3->Enabled=false;}};}}}ris ();}private: System: Void panel2_MouseClick (System:Object^ sender, System: Windows:Forms:MouseEventArgs^ e) {int x;int y;int pop;if (tek_sos==2) {if (e->Button == (System:Windows:Forms:MouseButtons:Left)) {if (hod==1) {pop=0;//label1->Text="Вашход" ;int p2_x=20+panel2->PointToClient (this->MousePosition).X; int p2_y=20+panel2->PointToClient (this->MousePosition).Y;int x=p2_x / 20;int y=p2_y / 20;switch (mas2[x][y]) {case 0: mas2[x][y]=3;hod=2;break;case 1: mas2[x][y]=2;hod=1;pop=1;break;case 2: hod=1;break;case 3: hod=1;break;}prov (x, y,1,pop);//fist_pos++;ist[ist_pos][1]=x;ist[ist_pos][2]=y;ist[ist_pos][3]=1;ris ();}if (hod==2) {srand (time (NULL));label1->Text="Ходкомпьютера" ;label1->Refresh ();ab:pop=0;int sdfg=k_xy;x = rand () % 10+1; y = rand () % 10+1;/*if (k_xy==0) {x = rand () % 10+1; y = rand () % 10+1;} else{if (mas[px+1][py]<2 && px<10) {x=px+1;y=py;};if (mas[px-1][py]<2 && px>1) {x=px-1;y=py;};if (mas[px][py+1]<2 && py<10) {x=px;y=py+1;};if (mas[px][py-1]<2 && py>1) {x=px;y=py-1;};if (mas[px+1][py]==2 && px>1) {x=px-1;y=py;};if (mas[px-1][py]==2 && px<10) {x=px+1;y=py;};if (mas[px][py+1]==2 && py>1) {x=px;y=py-1;};if (mas[px][py-1]==2 && py<10) {x=px;y=py+1;};}*/switch (mas[x][y]) {case 0: mas[x][y]=3;hod=1;if (k_xy>0){px=p_xy[0][0]; py=p_xy[1][0];};_sleep (500);label1->Text="Вашход" ;break;case 1: mas[x][y]=2;hod=2;pop=1;px=x;py=y;k_xy++;p_xy[0][k_xy-1]=px;p_xy[1][k_xy-1]=py;_sleep (500);break;case 2: if (k_xy>0){px=p_xy[0][0]; py=p_xy[1][0];};goto ab;break;//k_xy—;px=p_xy[0][k_xy]; py=p_xy[1][k_xy];case 3: if (k_xy>0){px=p_xy[0][0]; py=p_xy[1][0];};goto ab;break;}prov (x, y,2,pop);if (hod==2) {ist_pos++;ist[ist_pos][1]=x;ist[ist_pos][2]=y;ist[ist_pos][3]=0; goto ab;}ris ();ist_pos++;ist[ist_pos][1]=x;ist[ist_pos][2]=y;ist[ist_pos][3]=0;}}}}private: System: Void panel1_MouseMove (System:Object^ sender, System: Windows:Forms:MouseEventArgs^ e) {int dx, dy;if (tek_sos==0){panel3->Visible=false;}if (tek_sos==1){panel3->Visible=true;if (pol==1){switch (tip_kor) {case 1: dx=81;dy=21;break;case 2: dx=61;dy=21;break;case 3: dx=41;dy=21;break;case 4: dx=21;dy=21;break;}}else {switch (tip_kor) {case 1: dx=21;dy=81;break;case 2: dx=21;dy=61;break;case 3: dx=21;dy=41;break;case 4: dx=21;dy=21;break;}}panel3->SetBounds (PointToClient (this->MousePosition).X+10,PointToClient (this->MousePosition).Y+20,dx, dy);panel3->Visible=true;ris ();}if (tek_sos==2){panel3->Visible=false;button3->Enabled=true;}}private: System: Void prov (int x, int y, int ig, int pop) {int m1=0,m2=0; int m1p=0,m2p=0;int kol=1; int pus=0; int kor[2][4]; if (pop==1){kor[0][0]=x;kor[1][0]=y;if (ig==1){for (int i=x-1;i>=x-3;i—){if (mas2[i][y]==0 — mas2[i][y]==3 — i<1) {break;}if (mas2[i][y]==1 — mas2[i][y]==2) {kol++;kor[0][kol-1]=i;kor[1][kol-1]=y;}}//влевоfor (int i=x+1;i<=x+3;i++){if (mas2[i][y]==0 — mas2[i][y]==3 — i>10) {break;}if (mas2[i][y]==1 — mas2[i][y]==2) {kol++;kor[0][kol-1]=i;kor[1][kol-1]=y;}}//вправоfor (int i=y-1;i>=y-3;i—){if (mas2[x][i]==0 — mas2[x][i]==3 — i<1) {break;}if (mas2[x][i]==1 — mas2[x][i]==2) {kol++;kor[0][kol-1]=x;kor[1][kol-1]=i;}}//вверхfor (int i=y+1;i<=y+3;i++){if (mas2[x][i]==0 — mas2[x][i]==3 — i>10) {break;}if (mas2[x][i]==1 — mas2[x][i]==2) {kol++;kor[0][kol-1]=x;kor[1][kol-1]=i;}}//вниз}if (ig==2){for (int i=x-1;i>=x-3;i—){if (mas[i][y]==0 — mas[i][y]==3 — i<1) {break;}if (mas[i][y]==1 — mas[i][y]==2) {kol++;kor[0][kol-1]=i;kor[1][kol-1]=y;}}//влевоfor (int i=x+1;i<=x+3;i++){if (mas[i][y]==0 — mas[i][y]==3 — i>10) {break;}if (mas[i][y]==1 — mas[i][y]==2) {kol++;kor[0][kol-1]=i;kor[1][kol-1]=y;}}//вправоfor (int i=y-1;i>=y-3;i—){if (mas[x][i]==0 — mas[x][i]==3 — i<1) {break;}if (mas[x][i]==1 — mas[x][i]==2) {kol++;kor[0][kol-1]=x;kor[1][kol-1]=i;}}//вверхfor (int i=y+1;i<=y+3;i++){if (mas[x][i]==0 — mas[x][i]==3 — i>10) {break;}if (mas[x][i]==1 — mas[x][i]==2) {kol++;kor[0][kol-1]=x;kor[1][kol-1]=i;}}//вниз}//for (int i=0;i<kol;i++){//if (ig==1){if (mas2[kor[0][i]][kor[1][i]]==2) {pus++;}}//if (ig==2){if (mas[kor[0][i]][kor[1][i]]==2) {pus++;}}//}if (pus==kol){if (ig==2){px=0;py=0;k_xy=0;}for (int i=0;i<kol;i++){for (int ix=kor[0][i]-1;ix<=kor[0][i]+1;ix++){for (int iy=kor[1][i]-1;iy<=kor[1][i]+1;iy++){if (ig==1){if (mas2[ix][iy]==0){mas2[ix][iy]=3;}}if (ig==2){if (mas[ix][iy]==0){mas[ix][iy]=3;}}}}}}ris ();}for (int ix=1;ix<=10;ix++){for (int iy=1;iy<=10;iy++){if (mas[ix][iy]==0) {m1p++;}if (mas2[ix][iy]==0) {m2p++;}if (mas[ix][iy]==1) {m1++;}if (mas2[ix][iy]==1) {m2++;}}}if (m1==0) {tek_sos=0;hod=0;label1->Text="Выпроиграли!" ;}if (m2==0) {tek_sos=0;hod=0;label1->Text="Вывыиграли!" ;}}private: System: Void button1_Click (System:Object^ sender, System: EventArgs^ e) {//Новаяиграbutton2->Enabled=true;System:Windows:Forms:MouseEventArgs^ ee;tek_sos=1;panel1_MouseMove (sender, ee);for (int ix=0;ix<=11;ix++){for (int iy=0;iy<=11;iy++){mas[ix][iy]=0;mas2[ix][iy]=0;}}this->panel1->Refresh ();this->panel2->Refresh ();ris ();pol=1;tip_kor=1;tip_kol=1;label3->Text="Человек" ;label4->Text="Компьютер" ;label1->Text="Расставьтекорабли" ;hod=0;}private: System: Void button2_Click (System:Object^ sender, System: EventArgs^ e) {//Расставить случайноbutton3->Enabled=true;System:Windows:Forms:MouseEventArgs^ ee;this->panel1->Refresh (); this->panel2->Refresh ();rast_korabl (1);tek_sos=2;panel1_MouseMove (sender, ee);this->panel1->Refresh ();this->panel2->Refresh ();ris ();}private: System: Void button3_Click (System:Object^ sender, System: EventArgs^ e) {//Стартbutton2->Enabled=false;button3->Enabled=false;tip_kor=1;tip_kol=1;tek_sos=2;k_xy=0;rast_korabl (2);label1->Text="Вашход" ;hod=1;}private: System: Void button4_Click (System:Object^ sender, System: EventArgs^ e) {//отменитьход//label1->Text="x=" +(ist[ist_pos][1]).ToString ()+" y="+(ist[ist_pos][2]).ToString ()+" zn="+ist[ist_pos][3]. ToString ();//(mas2[ist[ist_pos][2]][ist[ist_pos][3]]).ToString ();if (ist[ist_pos][3]==1) {switch (mas2[ist[ist_pos][1]][ist[ist_pos][2]]) {case 1: mas2[ist[ist_pos][1]][ist[ist_pos][2]]=0;break;case 2: mas2[ist[ist_pos][1]][ist[ist_pos][2]]=1;break;case 3: mas2[ist[ist_pos][1]][ist[ist_pos][2]]=0;break;}hod=1;} else {switch (mas[ist[ist_pos][1]][ist[ist_pos][2]]) {case 1: mas[ist[ist_pos][1]][ist[ist_pos][2]]=0;break;case 2: mas[ist[ist_pos][1]][ist[ist_pos][2]]=1;break;case 3: mas[ist[ist_pos][1]][ist[ist_pos][2]]=0;break;}hod=2;};ist[ist_pos][1]=0;ist[ist_pos][2]=0;ist[ist_pos][3]=0;this->panel1->Refresh ();this->panel2->Refresh ();ris ();if (ist_pos>0) {ist_pos—;} }private: System: Void button6_Click (System:Object^ sender, System: EventArgs^ e) {//сохранитьusing namespace std;ofstream ifs2(«save.txt»);ifs2<<ist_pos<<" n" ;for (int xx=1;xx<=12;xx++){for (int yy=1;yy<=12;yy++){ifs2<<mas[xx][yy]<<" n" ;ifs2<<mas2[xx][yy]<<" n" ;}}for (int xx=1;xx<=ist_pos;xx++){ifs2<<ist[xx][1]<<" n" ;ifs2<<ist[xx][2]<<" n" ;ifs2<<ist[xx][3]<<" n" ;}}private: System: Void button5_Click (System:Object^ sender, System: EventArgs^ e) {//загрузитьusing namespace std;ifstream ifs2(«save.txt»);ifs2>>ist_pos;label1->Text="x=" +(ist_pos).ToString ();for (int xx=1;xx<=12;xx++){for (int yy=1;yy<=12;yy++){ifs2>>mas[xx][yy]; ifs2>>mas2[xx][yy];}}//ifs2<<" n" ;for (int xx=1;xx<=ist_pos;xx++){ifs2>>ist[xx][1]; ifs2>>ist[xx][2];ifs2>>ist[xx][3];}this->panel1->Refresh ();this->panel2->Refresh ();ris ();tip_kor=1;tip_kol=1;tek_sos=2;k_xy=0; label1->Text="Вашход" ;hod=1; }};}.

Показать весь текст

Список литературы

  1. Албахари, Д. Cи 6.0: справочник: полное описание языка / Джозеф Албахари, Бен Албахари; [пер. с англ. Ю. Н. Артеменко]. — [6-е изд.]. — Москва [и др.]: Вильямс, 2017. — 1039 с.
  2. , А. Современное проектирование на С++ : обобщенное программирование и прикладные шаблоны проектирования / Андрей Александреску; [пер. с англ. Д. А. Клюшина; предисл. С. Мейерса, Дж. Влиссидеса]. — Москва [и др.]: Вильямс, 2017. — 335 с.
  3. , А. Н. Объектно-ориентированное программирование на С++ / Васильев А. Н. — Санкт-Петербург: Наука и техника, 2016. — 543 с.
  4. Голодов, Валентин Александрович. Истоки программ: компьютерная грамотность: разработка и реализация компьютерных решений / В. А. Голодов. — Москва: МАКС Пресс, 2016. — 38, [1] с.
  5. , Д. Изучаем программирование на С : [12+: пер. с англ.] / Д. Гриффитс, Д. Гриффитс. — Москва: Эксмо, 2016. — 621 с.
  6. , Н. М. Стандартная библиотека С++ : справочное руководство / Николаи М. Джосаттис; [пер. с англ. и ред. Д. А. Клюшина]. — 2-е изд. — Москва [и др.]: Вильямс, 2017. — 1129 с.
  7. , Я. О. Поиск оптимальных алгоритмов действий противников в игре «Морской бой» / Я. О. Дидыч, Г. Г. Малинецкий. — Москва: ИПМ, 2015. — 16 с.
  8. , В. Е. Языки программирования и методы трансляции : учеб. пособие для вузов по направлению 08.03.02 «Информационные системы и технологии"] / В. Е. Марлей, А. Н. Егоров, Н. В. Крупенина; Ин-т вод. трансп., каф. вычисл. систем и информатики. — Санкт-Петербург: Изд-во ГУМРФ, 2016. — 223, [1] с.
  9. , С. Эффективный и современный С++ : 42 рекомендации по использованию С++11 и С++14 / Скотт Мейерс; [пер. с англ. и ред. И. В. Красикова]. — Москва [и др.]: Вильямс, 2017. — 303 с.
  10. , С. Объектно-ориентированное проектирование : [12+: пер. с англ.] / Сэнди Метц. — Санкт-Петербург; Москва; Екатеринбург: Питер, 2017. — 301 с.
  11. , О.П. Технологии и методы программирования : учебное пособие / О. П. Пономарев; Белгор. ун-т кооп., экономики и права. — Белгород: Изд-во Белгородского ун-та кооперации, экономики и права, 2016. — 136 с.
  12. , С. Язык программирования С++ : лекции и упражнения / Стивен Прата; [пер. с англ. Ю. И. Корниенко, А. А. Моргунова]. — Москва [и др.]: Вильямс, 2017. — 1244 с.
  13. , М. Регулярные выражения : основы: [пер. с англ.] / Майкл Фицджеральд. — Москва [и др.]: Вильямс, 2017. — 143, [1] с.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ