Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Random;
- import java.util.Scanner;
- public class Game {
- private Board ShipsBoard;
- private Board ShootingBoard;
- public Game(Board ShipsBoard, Board ShootingBoard){
- this.ShipsBoard = ShipsBoard;
- this.ShootingBoard = ShootingBoard;
- }
- public void sb5(Board ShipBoard) {
- Random random = new Random();
- int x = random.nextInt(ShipBoard.getSize());
- int y = random.nextInt(ShipBoard.getSize());
- int orient = random.nextInt(2);
- int shipLenght = 5;
- //if(ShipBoard.getField(x,y)==0
- if (orient == 0) {
- while (y > shipLenght) {
- y--;
- }
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x, y + i, '5');
- }
- } else {
- while (x > shipLenght) {
- x--;
- }
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x + i, y, '5');
- }
- }
- //ShipBoard.printBoardpom();
- }
- public void sb4(Board ShipBoard) {
- Random random = new Random();
- int x = random.nextInt(ShipBoard.getSize());
- int y = random.nextInt(ShipBoard.getSize());
- int orient = random.nextInt(2);
- int shipLenght = 4;
- if (orient == 0) {
- while (y > shipLenght) {
- y--;
- }
- if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+4)>ShipBoard.getSize()){
- sb4(ShipBoard);
- }
- else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x-1, y) == 0&&ShipBoard.getField(x+1, y) == '0'&&
- ShipBoard.getField(x, y + 1) == '0' && ShipBoard.getField(x, y + 2) == 0 && ShipBoard.getField(x, y + 3) == '0'&&
- ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x-1, y + 1) == '0'&&
- ShipBoard.getField(x+1, y + 2) == '0'&&ShipBoard.getField(x-1, y + 2) == '0'&&
- ShipBoard.getField(x+1, y + 3) == '0'&&ShipBoard.getField(x-1, y + 3) == '0'&&
- ShipBoard.getField(x, y + 4) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x, y + i, '4');
- }
- } else {
- sb4(ShipBoard);
- }
- } else {
- while (x > shipLenght) {
- x--;
- }
- if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x-1)<0||(x+4)>ShipBoard.getSize()){
- sb4(ShipBoard);
- }
- else if (ShipBoard.getField(x+1, y ) == '0' && ShipBoard.getField(x+2, y) == '0' && ShipBoard.getField(x+3, y) == '0'&&
- ShipBoard.getField(x, y+1 ) == '0'&&ShipBoard.getField(x, y-1 ) == '0'&&
- ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x+1, y - 1) == '0'&&
- ShipBoard.getField(x+2, y + 1) == '0'&&ShipBoard.getField(x+2, y -1) == '0'&&
- ShipBoard.getField(x+3, y + 1) == '0'&&ShipBoard.getField(x+3, y -1) == '0'&&
- ShipBoard.getField(x+4, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x + i, y, '4');
- }
- } else {
- sb4(ShipBoard);
- }
- }
- //ShipsBoard.printBoardpom();
- }
- public void sb3(Board ShipBoard) {
- Random random = new Random();
- int x = random.nextInt(ShipBoard.getSize());
- int y = random.nextInt(ShipBoard.getSize());
- int orient = random.nextInt(2);
- int shipLenght = 3;
- if (orient == 0) {
- while (y > shipLenght) {
- y--;
- }
- if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+3)>ShipBoard.getSize()-1){
- sb3(ShipBoard);
- }
- else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x+1, y) == '0'&&ShipBoard.getField(x-1, y) == '0'&&
- ShipBoard.getField(x, y + 1) == '0' && ShipBoard.getField(x, y + 2) == '0'&&
- ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x-1, y + 1) == '0'&&
- ShipBoard.getField(x+1, y + 2) == '0'&&ShipBoard.getField(x-1, y + 2) == '0'&&
- ShipBoard.getField(x, y + 3) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x, y + i, '3');
- }
- } else {
- sb3(ShipBoard);
- }
- } else {
- while (x > shipLenght) {
- x--;
- }
- if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x+3)>ShipBoard.getSize()-1||(x-1)<0){
- sb3(ShipBoard);
- }
- else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x, y+1) == '0'&&ShipBoard.getField(x, y-1) == '0'&&
- ShipBoard.getField(x+1, y ) == '0' && ShipBoard.getField(x+2, y ) == '0'&&
- ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x+1, y - 1) == '0'&&
- ShipBoard.getField(x+2, y + 1) == '0'&&ShipBoard.getField(x+2, y -1) == '0'&&
- ShipBoard.getField(x+3, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x + i, y, '3');
- }
- } else {
- sb3(ShipBoard);
- }
- }
- }
- public void sb2(Board ShipBoard) {
- Random random = new Random();
- int x = random.nextInt(ShipBoard.getSize());
- int y = random.nextInt(ShipBoard.getSize());
- int orient = random.nextInt(2);
- int shipLenght = 2;
- if (orient == 0) {
- while (y > shipLenght) {
- y--;
- }
- if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+2)>ShipBoard.getSize()-1){
- sb2(ShipBoard);
- }
- else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x+1, y) == '0'&&ShipBoard.getField(x-1, y) == '0'&&
- ShipBoard.getField(x, y + 1) == '0' &&
- ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x-1, y + 1) == '0'&&
- ShipBoard.getField(x, y + 2) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x, y + i, '2');
- }
- } else {
- sb2(ShipBoard);
- }
- } else {
- while (x > shipLenght) {
- x--;
- }
- if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x+2)>ShipBoard.getSize()-1||(x-1)<0){
- sb2(ShipBoard);
- }
- else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x, y+1) == '0'&&ShipBoard.getField(x, y-1) == '0'&&
- ShipBoard.getField(x+1, y ) == '0' &&
- ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x+1, y - 1) == '0'&&
- ShipBoard.getField(x+2, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x + i, y, '2');
- }
- } else {
- sb2(ShipBoard);
- }
- }
- }
- public void sb1(Board ShipBoard) {
- Random random = new Random();
- int x = random.nextInt(ShipBoard.getSize());
- int y = random.nextInt(ShipBoard.getSize());
- int orient = random.nextInt(2);
- int shipLenght = 1;
- if (orient == 0) {
- while (y > shipLenght) {
- y--;
- }
- if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+1)>ShipBoard.getSize()-1){
- sb2(ShipBoard);
- }
- else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x+1, y) == '0'&&ShipBoard.getField(x-1, y) == '0'&&
- ShipBoard.getField(x, y + 1) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x, y + i, '1');
- }
- } else {
- sb1(ShipBoard);
- }
- } else {
- while (x > shipLenght) {
- x--;
- }
- if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x+1)>ShipBoard.getSize()-1||(x-1)<0){
- sb2(ShipBoard);
- }
- else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x, y+1) == '0'&&ShipBoard.getField(x, y-1) == '0'&&
- ShipBoard.getField(x+1, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
- for (int i = 0; i < shipLenght; i++) {
- ShipsBoard.setField(x + i, y, '1');
- }
- } else {
- sb1(ShipBoard);
- }
- }
- }
- public void SetShipsOnBoard(Board board){
- sb5(board);
- sb4(board);
- sb3(board);
- sb2(board);
- sb1(board);
- }
- public void ShootField(int x, int y) {
- if(isFieldClear(x,y)) {
- if (ShipsBoard.getField(x,y) != '0' && ShipsBoard.getField(x,y) != '8') {
- int shiplength = ShipsBoard.getField(x,y);
- //Ship ship = ships_on_board.get(shiplength);
- int pom =ShipsBoard.getField(x,y);
- int count=0;
- int count1=0;
- ShootingBoard.setField(x,y,'x');
- ShipsBoard.setField(x,y,'x');
- System.out.println("Trafiony");
- for(int i=0;i<ShipsBoard.getSize();i++){
- if(ShipsBoard.getField(i,y)==pom){
- count++;
- }
- if((ShipsBoard.getField(x,i)==pom)){
- count++;
- }
- }
- if(count==0){
- System.out.println("Statek zatopiony!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- for(int j =0;j<ShootingBoard.getSize();j++){
- for(int i=0;i<ShootingBoard.getSize();i++){
- if(ShootingBoard.getField(i,j)=='x'){
- ShootingBoard.setField(i,j,'Z');
- }
- }
- }
- }
- for(int i=0;i<ShipsBoard.getSize();i++){
- if(ShipsBoard.getField(i,y)==pom){
- count1++;
- }
- if((ShipsBoard.getField(x,i)==pom)){
- count1++;
- }
- }
- }
- else {
- System.out.println("Eluwa nie trafiłeś " + x + y);
- ShootingBoard.setField(x,y,'*');
- }
- } else {
- System.out.println("W to pole już strzelałeś");
- }
- }
- private boolean XYbelongsAB(int a, int b, int x, int y, int orient,int length){
- if(orient == 1){ //pionowa
- for(int i = a; i < length; i++){
- if(i == x && y == b) return true;
- }
- } else { //pozioma
- for(int i = b; i < length; i++){
- if(x == a && i == y) return true;
- }
- }
- return false;
- }
- private boolean isFieldClear(int x, int y) {
- if ((x > 10 || x < 0) || (y > 10 || y < 0)) System.out.println("Błędne współrzędne");
- else {
- if ((char) ShootingBoard.getField(x, y) == 'x' || (char) ShootingBoard.getField(x,y) == '*') return false;
- else return true;
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement