Guest User

Doors

a guest
Sep 3rd, 2023
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.44 KB | Source Code | 0 0
  1. public class Game {
  2.     private final static Scanner scanner = new Scanner(System.in);
  3.     private final static String INTRO = "угадай дверь, в диапозоне от 0 до 9 \nпочти все двери в случайном порядке\nкак минимум 1 дверь на своем месте\nугадай ее".toUpperCase();
  4.     private int life;
  5.     private int doorsCount;
  6.  
  7.     public Game(int life, int doorsCount) {
  8.         this.life = life;
  9.         this.doorsCount = doorsCount;
  10.     }
  11.  
  12.     public static void main(String[] args) {
  13.         new Game(3, 10).start();
  14.     }
  15.  
  16.     private void start() {
  17.         System.out.println(INTRO);
  18.         List<Integer> doors = initDoors();
  19.         while (life > 0) {
  20.             System.out.printf("%d попытки угадать дверь\n", life);
  21.             System.out.print("Выберите комнату: ");
  22.             int input = scanner.nextInt();
  23.             if (doors.get(input) == input) {
  24.                 System.out.println("угадали");
  25.                 printDoors(doors);
  26.                 return;
  27.             }
  28.             System.out.println("не верно,давай еще раз");
  29.             life--;
  30.         }
  31.         System.out.println("Вы проиграли");
  32.         printDoors(doors);
  33.     }
  34.  
  35.     private void printDoors(List<Integer> doors) {
  36.         System.out.println("Вот карта дверей");
  37.         for (int i = 0; i < 10; i++) {
  38.             System.out.printf("🚪#%d -> %d\n", i, doors.get(i));
  39.         }
  40.     }
  41.  
  42.     private List<Integer> initDoors() {
  43.         Random random = new Random();
  44.         List<Integer> doors = new ArrayList<>();
  45.         for (int i = 0; i < doorsCount; i++) {
  46.             doors.add(i);
  47.         }
  48.         Collections.shuffle(doors);
  49.         normalizeElementIfNeeded(random.nextInt(doorsCount), doors);
  50.         return doors;
  51.     }
  52.  
  53.     private void normalizeElementIfNeeded(int element, List<Integer> doors) {
  54.         if (normalized(doors)) return;
  55.         for (int i = 0; i < doors.size(); i++) {
  56.             if (doors.get(i) == element) {
  57.                 doors.set(i, doors.get(element));
  58.                 doors.set(element, element);
  59.                 break;
  60.             }
  61.         }
  62.     }
  63.  
  64.     private boolean normalized(List<Integer> doors) {
  65.         for (int i = 0; i < doors.size(); i++) {
  66.             if (doors.get(i) == i) return true;
  67.         }
  68.         return false;
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment