Advertisement
lashrone1

shipsbet

May 13th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.20 KB | None | 0 0
  1.  
  2. public class Ship {
  3.  
  4.     private int size=0;
  5.     private int vertical;
  6.     private int gorizontal;
  7.     private int direction;
  8.     private int hp=0;
  9.     private char[][] arr=new char[10][10];
  10.  
  11.     Ship(){}
  12.  
  13.     Ship(int size,int vertical,int gorizontal,int direction){
  14.         this.size=size;
  15.         this.vertical=vertical;
  16.         this.gorizontal=gorizontal;
  17.         this.direction=direction;
  18.         this.hp=size;
  19.     }
  20.  
  21.     boolean setShip(){   // arr[vertical][gorizontal]
  22.  
  23.         if(size>4){
  24.             System.out.println("Длинна не может быть больше четырёх!");
  25.             return false;}
  26.         else if (size<0){
  27.             System.out.println("Длинна не может быть меньше нуля!");
  28.             return false;
  29.         }
  30.         else if(gorizontal>10||gorizontal<0){
  31.             System.out.println("Выход за пределы строки!");
  32.             return false;
  33.         }
  34.         else if(vertical>10||vertical<0){
  35.             System.out.println("Выход за пределы столбца!");
  36.             return false;
  37.         }
  38.         else{
  39.             gorizontal--;
  40.             vertical--;
  41.             switch (direction) {
  42.                 case 1: //up
  43.                     if (vertical - size < -1) {
  44.                         System.out.println("Выход за пределы карты!");
  45.                         return false;
  46.                     }
  47.                     for (int i = vertical; i > vertical - size; i--) {
  48.                         arr[i][gorizontal] = 'B';
  49.                     }
  50.                     break;
  51.                 case 2: //down
  52.                     if (vertical + size > 10) {
  53.                         System.out.println("Выход за пределы карты!");
  54.                         return false;
  55.                     }
  56.                     for (int i = vertical; i < vertical + size; i++) {
  57.                         arr[i][gorizontal] = 'B';
  58.                     }
  59.                     break;
  60.                 case 3: //left
  61.                     if (gorizontal - size <-1) {
  62.                         System.out.println("Выход за пределы карты!");
  63.                         return false;
  64.                     }
  65.                     for (int i = gorizontal; i > gorizontal - size; i--) {
  66.                         arr[vertical][i] = 'B';
  67.                     }
  68.                     break;
  69.                 case 4: //right
  70.                     if (gorizontal + size > 10) {
  71.                         System.out.println("Выход за пределы карты!");
  72.                         return false;
  73.                     } else {
  74.                         for (int i = gorizontal; i < gorizontal + size; i++) {
  75.                             arr[vertical][i] = 'B';
  76.                         }
  77.                         break;
  78.                     }
  79.             }
  80.         }
  81.         return true;
  82.     }
  83.  
  84.     void printTable(){
  85.         System.out.println("\t 1  2  3  4  5  6  7  8  9  10 ");
  86.         System.out.println("\t------------------------------");
  87.         for(int i=0;i<10;i++){
  88.             if(i<9){
  89.                 System.out.print(" ");
  90.                 System.out.print(i+1+"| ");}
  91.             else
  92.                 System.out.print(i+1+"| ");
  93.             for(int j=0;j<10;j++){
  94.                 System.out.print(" "+arr[i][j]+" ");
  95.             }
  96.             System.out.println();
  97.         }
  98.     }
  99.  
  100.     boolean fire(int vertical,int gorizontal){
  101.         if(gorizontal>10||gorizontal<0){
  102.             System.out.println("Выход за пределы строки!");
  103.  
  104.         }
  105.         else if(vertical>10||vertical<0){
  106.             System.out.println("Выход за пределы столбца!");
  107.  
  108.         }
  109.         gorizontal--;
  110.         vertical--;
  111.         if(arr[vertical][gorizontal]=='B'){
  112.                 System.out.println("Есть попадание!");
  113.                 arr[vertical][gorizontal]='X';
  114.                 hp--;
  115.                 printTable();
  116.                 if(hp==0){
  117.                     System.out.println("Корабль потоплен!");
  118.                     return false;
  119.                 }
  120.         }
  121.         else{
  122.             System.out.println("Мазила!");
  123.             arr[vertical][gorizontal]='O';
  124.             printTable();
  125.         }
  126.         return true;
  127.     }
  128.  
  129.  
  130.     void clean() {
  131.         for (int i = 0; i < 10; i++) {
  132.             for (int j = 0; j < 10; j++) {
  133.                 arr[i][j] = 0;
  134.             }
  135.         }
  136.     }
  137.  
  138. }
  139. //'卐'
  140.  
  141.  
  142. import java.util.Scanner;
  143.  
  144. public class Main {
  145.     static Scanner scan;
  146.  
  147.     public static void main(String[] args) {
  148.  
  149.         Ship s;
  150.         int size,ver,gor,dir,verf,gorf;
  151.  
  152.         System.out.println("\t 1  2  3  4  5  6  7  8  9  10 ");
  153.         System.out.println("\t------------------------------");
  154.         for(int i=0;i<10;i++){
  155.             if(i<9){
  156.                 System.out.print(" ");
  157.                 System.out.print(i+1+"| ");}
  158.             else
  159.                 System.out.print(i+1+"| ");
  160.             for(int j=0;j<10;j++){
  161.                 System.out.print(" "+"0"+" ");
  162.             }
  163.             System.out.println();
  164.         }
  165.  
  166.         do {
  167.  
  168.             System.out.println("Введите размер");
  169.             size = scan.nextInt();
  170.             System.out.println("Введите номер строки");
  171.             ver = scan.nextInt();
  172.             System.out.println("Введите номер столбца");
  173.             gor = scan.nextInt();
  174.             System.out.println("Введите направление корабля(Помните, корабль не должен выходить за пределы поля!)\n1: Вверх\n2: Вниз \n3: Влево \n4: Вправо");
  175.             dir = scan.nextInt();
  176.             s=new Ship(size,ver,gor,dir);
  177.         }
  178.         while (s.setShip()== false);
  179.         s.printTable();
  180.  
  181.         System.out.println("Введите значение по вертикали и по горизонтали");
  182.         verf=scan.nextInt();
  183.         gorf=scan.nextInt();
  184.         s.fire(verf,gorf);
  185.         System.out.println("Введите значение по вертикали и по горизонтали");
  186.         verf=scan.nextInt();
  187.         gorf=scan.nextInt();
  188.         s.fire(verf,gorf);
  189.         System.out.println("Введите значение по вертикали и по горизонтали");
  190.         verf=scan.nextInt();
  191.         gorf=scan.nextInt();
  192.         s.fire(verf,gorf);
  193.         System.out.println("Введите значение по вертикали и по горизонтали");
  194.         verf=scan.nextInt();
  195.         gorf=scan.nextInt();
  196.         s.fire(verf,gorf);
  197.         System.out.println("Введите значение по вертикали и по горизонтали");
  198.         verf=scan.nextInt();
  199.         gorf=scan.nextInt();
  200.         s.fire(verf,gorf);
  201.         System.out.println("Введите значение по вертикали и по горизонтали");
  202.         verf=scan.nextInt();
  203.         gorf=scan.nextInt();
  204.         s.fire(verf,gorf);
  205.  
  206.         s.clean();
  207.  
  208.     }
  209.  
  210.     static {
  211.         scan = new Scanner(System.in);
  212.     }
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement