Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.52 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package battleship;
  7.  
  8. public class BattleShip implements IBattleShip {
  9.  
  10.     // размер поля
  11.     static final int F_SIZE = 10;
  12.     // поле игрока     (данные игрока)
  13.     int[][] p = new int[F_SIZE][F_SIZE];
  14.     // поле компьютера (данные компьютера)
  15.     int[][] c = new int[F_SIZE][F_SIZE];
  16.     // -1 - нет игры
  17.     //  0 - игра запущена
  18.     //  1 - игрок выиграл
  19.     //  2 - выиграл компьютер
  20.     int gameStatus = -1;
  21.     // логическая переменная - кто ходит в данный момент
  22.     boolean computerStep;
  23.  
  24.     public static void main(String[] args) {
  25.         // TODO code application logic here
  26.         new Okno();
  27.     }
  28.  
  29.     @Override
  30.     public void start() {
  31.         //
  32.         System.out.println("BattleShip.START!!!");
  33.         gameStatus = 0;
  34.         computerStep = false;
  35.         // очистить массивы c, p  - заполнить их значением 0
  36.         ArrayUtil.fillArr(p, 0);
  37.         ArrayUtil.fillArr(c, 0);
  38.         //
  39.         System.out.println("PRINT PLAYER:");
  40.         ArrayUtil.printArr(p);
  41.         //установка кораблей игрока и компьютера  
  42.         //1.1)
  43.         makePlayerShips();
  44.         //1.2)
  45.         makeComputerShips();
  46.         // вывод состояния игровых полей
  47.         System.out.println("Состояние игрового поля игрока:");
  48.         ArrayUtil.printArr(p);
  49.         System.out.println("Состояние игрового поля компьютера:");
  50.         ArrayUtil.printArr(c);
  51.     }
  52.  
  53.     // создание и расстановка кораблей игрока
  54.     public void makePlayerShips() {
  55.         makeShips(p);
  56.     }
  57.  
  58.     // создание и расстановка кораблей компьютера
  59.     public void makeComputerShips() {
  60.         makeShips(c);
  61.     }
  62.  
  63.     // устанавливаем корабли для массива
  64.     static void makeShips(int[][] arr) {
  65.         // создаем 1 4-х палубный корабль  
  66.         makeShip(arr, 4);
  67.         // создаем 2 3-х палубных корабль
  68.         for (int i = 0; i < 2; i++) {
  69.             makeShip(arr, 3);
  70.         }
  71.         // создаем 3 2-х палубных корабль
  72.         for (int i = 0; i < 3; i++) {
  73.             makeShip(arr, 2);
  74.         }
  75.         // создаем 4 1-х палубных корабль    
  76.         for (int i = 0; i < 4; i++) {
  77.             makeShip(arr, 1);
  78.         }
  79.     }
  80.  
  81.     // устанавливаем корабли для массива
  82.     // numPalub - количество палуб у корабля
  83.     static void makeShip(int[][] arr, int numPalub) {
  84.         //
  85.         System.out.println("makeShip:" + numPalub);
  86.         if (numPalub == 1) {
  87.             // получаем два случайных числа - координаты ячейки игрового поля
  88.             int i, j;
  89.             // получить 2 случ числа(i,j) и вывести на экран (0<=i<=9,0<=j<=9)
  90.             do {
  91.                 i = getRandomCell();
  92.                 j = getRandomCell();
  93.                 System.out.println("makeShip.i=" + i);
  94.                 System.out.println("makeShip.j=" + j);
  95.             }while(arr[i][j] != 0);    
  96.             // заполняем массив соотв значением (numPalub)
  97.             arr[i][j] = numPalub;            
  98.         } else {
  99.  
  100.         }
  101.     }
  102.     // метод позволяет случайным образом получить индекс ячейки в интервале от 0 9  
  103.     public static int getRandomCell() {
  104.         double val = Math.random() * 10.0;
  105.         return (int) val;
  106.     }
  107.     // util methods
  108.     static void setOkr(int[][] mas, int i, int j, int val) {
  109.         if (testMasPoz(i, j) && (mas[i][j] == 0)) {
  110.             setMasValue(mas, i, j, val);
  111.         }
  112.     }
  113.     //
  114.     static boolean testMasPoz(int i, int j) {
  115.         return (i >= 0) && (i <= 9) && (j >= 0) && (j <= 9);
  116.     }
  117.     //
  118.     static void setMasValue(int[][] mas, int i, int j, int val) {
  119.         if (testMasPoz(i, j)) {
  120.             mas[i][j] = val;
  121.         }
  122.     }
  123.     //окружаем ячейку значением val
  124.     static void okrBegin(int[][] mas, int i, int j, int val) {
  125.         setOkr(mas, i - 1, j - 1, val);
  126.         setOkr(mas, i - 1, j, val);
  127.         setOkr(mas, i - 1, j + 1, val);
  128.         setOkr(mas, i, j + 1, val);
  129.         setOkr(mas, i + 1, j + 1, val);
  130.         setOkr(mas, i + 1, j, val);
  131.         setOkr(mas, i + 1, j - 1, val);
  132.         setOkr(mas, i, j - 1, val);
  133.     }
  134.    
  135.  
  136.    
  137.    
  138.  
  139.     @Override
  140.     public void shot(int i, int j) {
  141.     }
  142.  
  143.     @Override
  144.     public boolean gameStarted() {
  145.         return gameStatus == 0;
  146.     }
  147.  
  148.     @Override
  149.     public boolean computerStep() {
  150.         return computerStep;
  151.     }
  152.  
  153.     @Override
  154.     public boolean playerWin() {
  155.         return gameStatus == 1;
  156.     }
  157.  
  158.     @Override
  159.     public boolean computerWin() {
  160.         return gameStatus == 2;
  161.     }
  162.  
  163.     @Override
  164.     public int[][] player() {
  165.         return p;
  166.     }
  167.  
  168.     @Override
  169.     public int[][] computer() {
  170.         return c;
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement