"Морской бой": разработка программы
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Y)+1);color;(Pustaya_kletka == 2) {(Vistrel) color = RED;color = GREEN;
}if (Vistrel) color = BLUE;color = BLUE;(color);();(color == CYAN) {(2, 2);
}(Vistrel) {<<"*";(WHITE);
}
}
};Base_Korabl {:Color;:_Korabl() {Color = 0;}Prorisovka(short x, short y) {(3*x, 2*y, 3*x+2, 2*y+1);(Color);();
}
};Kor_potomok: Base_Korabl { short Razmer, X, Y, Polojenie, KOL_RANENIY;:_potomok(short razmer, short x, short y, short polojenie) {= razmer; X = x; Y = y; Polojenie = polojenie; KOL_RANENIY = 0;
}Prorisovka(int sdvX, int sdvY) {(Polojenie) for (int a = X; a < X + Razmer; a++) Base_Korabl::Prorisovka(sdvX+a, sdvY+Y);for (int a = Y; a < Y + Razmer; a++) Base_Korabl::Prorisovka(sdvX+X, sdvY+a);
}Vistrel(int x, int y) {(Polojenie) for (int a = X; a < X + Razmer; a++) {((x == a) && (Y == y)) return 1;
}for (int a = Y; a < Y + Razmer; a++) {((x == X) && (y == a)) return 1;
}0;
}Ranenie() {KOL_RANENIY++; if (KOL_RANENIY == Razmer) return 1; else return 0;}Vistrel_v_kletkus(Kletka *kletka[10][10]) {xm, ym;(Polojenie) {xm = X + Razmer; ym = Y + 1;}{xm = X + 1; ym = Y + Razmer;}(int i = X - 1; i Vistrel_v_kletku(1);
}Rasstanovka(Kletka *kletka[10][10]) {xm, ym;(Polojenie) {xm = X + Razmer; ym = Y + 1;}{xm = X + 1; ym = Y + Razmer;}(int i = X - 1; i Korabl_v_kletku(1);
}
}
}
};New_Korabl(Kor_potomok *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 Prorisovka(msdvX, msdvY);(msdvX+3, 2, msdvY + 33, 3);(BLACK);
clrscr();<<"Кол-во кораблей игрока: "<<mkol;
do {sh;{ // Выстрел игрока(3*csdvX + 1, 2, 3*csdvX + 32, 3);(BLACK);();Prorisovka(csdvX, csdvY);(!sh) ckol--;(sh == 2) break;
} while (1);(!ckol) break;{ // Выстрел компьютера(msdvX + 3, 2, msdvY + 33, 3);(BLACK);();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 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 Vistrel_ili_net())) {a = 3; y--;};:= x; yn = y;
switch (a) { //коробль был ранен более одного раза
case 0: if ((x Vistrel_ili_net())) y--;{y = y + kol_raneniy; a = 2;} break;
}
}[x][y]->Vistrel_v_kletku(1);(int i = 0; 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 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 Korabl_v_kletku(0);
return;
}
Приложение 2 (результат выполнения программы)
Рисунок 1. Начальная расстановка кораблей
Рисунок 2. Первое ранение
Рисунок 3. Первый убитый корабль компьютера
Рисунок 4. Первый убитый корабль игрока
Рисунок 5. Игрок проиграл
Рисунок 6. Игрок выиграл