"Морской бой": разработка программы

В данной работе была разработана игра «Морской бой». В программе использовались классы, наследование, виртуальные методы. В качестве языка программирования был

Морской бой: разработка программы

Курсовой проект

Компьютеры, программирование

Другие курсовые по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией
tomok *ship[10], Kletka *kletka[10][10], int kol_raneniy);shoting(Kletka *kletka[10][10], Kor_potomok *ship[10], int &xn, int &yn, int &kol_raneniy, int &a, int m);

main() {(BLACK);(WHITE);();csdvX = 14, csdvY = 2;(int i = 1; i <= 10; i++) {(3*csdvX + 3*i + 1, 2*csdvY + 1); cout<<i;(3*csdvX + 1, 2*csdvY + 2*i + 1); cout<<i;

}* kletka[10][10];(i = 0; i < 10; i++)(int j = 0; j < 10; j++) kletka[i][j] = new Kletka(i+1, j+1);(i = 0; i < 5; i++) random(45);msdvX = 1, msdvY = 2;(i = 1; i <= 10; i++) {(3*msdvX + 3*i + 1, 2*msdvY + 1); cout<<i;(3*msdvX + 1, 2*msdvY + 2*i + 1); cout<<i;

}* mkletka[10][10];(i = 0; i < 10; i++)(int j = 0; j < 10; j++) mkletka[i][j] = new Kletka(i+1, j+1);();_potomok *mship[10], *Base_Korabl[10];_Korabl(Base_Korabl, kletka, 0);_Korabl(mship, mkletka, 1);ch;ckol = 10, cxn, cyn, cr = 0, ma, ca;mkol = 10, px = 0, py= 0;(i = 0; i < 10; i++) for (int j = 0; j < 10; j++)[i][j]->Prorisovka(csdvX, csdvY);(i = 0; i < 10; i++) for (int j = 0; j < 10; j++)[i][j]->Prorisovka(msdvX, msdvY);(msdvX+3, 2, msdvY + 33, 3);(BLACK);

clrscr();<<"Кол-во кораблей игрока: "<<mkol;

do {sh;{ // Выстрел игрока(3*csdvX + 1, 2, 3*csdvX + 32, 3);(BLACK);();<<"Кол-во кораблей компьютера: "<<ckol;(!ckol) break;= shoting(kletka, Base_Korabl, px, py, csdvX, csdvY, 1);(i = 0; i < 10; i++) for (int j = 0; j < 10; j++) kletka[i][j]->Prorisovka(csdvX, csdvY);(!sh) ckol--;(sh == 2) break;

} while (1);(!ckol) break;{ // Выстрел компьютера(msdvX + 3, 2, msdvY + 33, 3);(BLACK);();<<"Кол-во кораблей игрока: "<<mkol;(!mkol) break;= shoting(mkletka, mship, cxn, cyn, cr, ca, 0);(i = 0; i < 10; i++) for (int j = 0; j < 10; j++) mkletka[i][j]->Prorisovka(msdvX, msdvY);(!sh) mkol--;(sh == 2) break;(500);

} while (1);

} while (ckol && mkol);(18, 12, 62, 16);(GREEN);();

(mkol)? cout<<"Поздравляем! Вы выйграли." : cout<<"Увы! Вы проиграли.";

getch();kletka;mkletka;

return;

}

/* функция обстрела кораблей(матрица обетов поле,

координаты последнего выстрела, количество ранений)

возвращает 0 - убит, 1 - ранен, 2 - мимо

*/shoting(Kletka *kletka[10][10], Kor_potomok *ship[10], int &x, int &y, int &kol_raneniy, int &a, int m) {

int xn, yn;(m) // Выстрел игрока{ // пока не введено небитое поле

char ch;{(3*(kol_raneniy+x+1), 2*(a+y+1), 3*(kol_raneniy+x+1)+2, 2*(a+y+1)+1);(WHITE);();= getch();(ch) {77: if (x < 9) {kletka[x][y]->Prorisovka(kol_raneniy, a); x++;} break;75: if (x > 0) {kletka[x][y]->Prorisovka(kol_raneniy, a); x--;} break;80: if (y < 9) {kletka[x][y]->Prorisovka(kol_raneniy, a); y++;} break;72: if (y > 0) {kletka[x][y]->Prorisovka(kol_raneniy, a); y--;} break;

}

} while (ch != 13);= x; yn = y;(!kletka[x][y]->Vistrel_ili_net()) break;

} while (1);switch (kol_raneniy) { // Выстрел компьютера

case 0:{ //корабль не был ранен

x = random(10);= random(10);(!kletka[x][y]->Vistrel_ili_net()) break;

} while (1);;1: // корабль был ранен один раз

xn = x; yn = y;((x < 9) && (!kletka[x+1][y]->Vistrel_ili_net())) {a = 0; x++;}if ((x > 0) && (!kletka[x-1][y]->Vistrel_ili_net())) {a = 1; x--;}if ((y < 9) && (!kletka[x][y+1]->Vistrel_ili_net())) {a = 2; y++;}if ((y > 0) && (!kletka[x][y-1]->Vistrel_ili_net())) {a = 3; y--;};:= x; yn = y;

switch (a) { //коробль был ранен более одного раза

case 0: if ((x < 9) && (!kletka[x+1][y]->Vistrel_ili_net())) x++;{x = x - kol_raneniy; a = 1;} break;1: if ((x > 0) && (!kletka[x-1][y]->Vistrel_ili_net())) x--;{x = x + kol_raneniy; a = 0;} break;2: if ((y < 9) && (!kletka[x][y+1]->Vistrel_ili_net())) y++;{y = y - kol_raneniy; a = 3;} break;3: if ((y > 0) && (!kletka[x][y-1]->Vistrel_ili_net())) y--;{y = y + kol_raneniy; a = 2;} break;

}

}[x][y]->Vistrel_v_kletku(1);(int i = 0; i < 10; i++) if (ship[i]->Vistrel(x+1, y+1)) {(ship[i]->Ranenie()) { // убит[i]->Rasstanovka(kletka);[i]->Vistrel_v_kletkus(kletka);_raneniy = 0;0;

}{kletka[x][y]->Korabl_v_kletku(2); kol_raneniy++; return 1;} // ранен

}(kol_raneniy) {x = xn; y = yn;}

return 2; // мимо

}

/* Создает корабли и размещает их на поле */

void New_Korabl(Kor_potomok *ship[10], Kletka *kletka[10][10], int kol_raneniy) {(int k = 0; k < 10; k++) {Razmer, x, y, Polojenie, b;(0 == k) Razmer = 4;if ((1 == k) || (2 == k)) Razmer = 3;if ((3 <= k) && (5 >= k)) Razmer = 2;Razmer = 1;{= random(10) + 1; y = random(10) + 1; Polojenie = random(2);xm, ym; b = 0;(Polojenie) {xm = x + Razmer; ym = y;}{xm = x; ym = y + Razmer;}(int i = x; i <= xm; i++) {(int j = y; j <= ym; j++) {((i > 10) || (j > 10)) {b = 1; break;}(!((i < 1) || (i > 10) || (j < 1) || (j > 10))) {(b = kletka[i-1][j-1]->Pustaya_ili_net()) break; }

}(b) break;

}

} while (b);[k] = new Kor_potomok(Razmer, x, y, Polojenie);[k]->Rasstanovka(kletka);

}(!kol_raneniy) for (int i = 0; i <= 9; i++)(int j = 0; j <= 9; j++) kletka[i][j]->Korabl_v_kletku(0);

return;

}

 

Приложение 2 (результат выполнения программы)

 

Рисунок 1. Начальная расстановка кораблей

 

Рисунок 2. Первое ранение

 

Рисунок 3. Первый убитый корабль компьютера

Рисунок 4. Первый убитый корабль игрока

 

Рисунок 5. Игрок проиграл

 

Рисунок 6. Игрок выиграл

Похожие работы

<< < 1 2 3