Advertisement
jaVer404

level16.lesson13.home07

Sep 18th, 2015
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.33 KB | None | 0 0
  1. package com.javarush.test.level16.lesson13.home07;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. /* Поиграем?
  7. ТРИ человека играют в игру.
  8. Каждый игрок(Gamer) характеризуется двумя параметрами: 1) фамилией(name)
  9.                                                        2) количеством действий в секунду (rating).
  10. Нужно
  11. 1) вывести в консоль ход игры
  12. 2) определить победителя и проигравших.
  13.  
  14. Итак...
  15. 1. Разберись, что делает программа.
  16.     1.1. List<String> steps хранит последовательность действий, которое каждый игрок выполняет от 0 до последнего.
  17.     1.2. isWinnerFound показывает, найден победитель или нет.
  18.     1.3. метод sleep выбрасывает InterruptedException и !!!!принимает параметр типа long!!!!.
  19.     1.4. Игроки играют НЕЗАВИСИМО друг от друга.
  20.  
  21. 2. Реализуйте логику метода run так, чтобы для каждого игрока:
  22.     2.1. За 1 секунду через равные интервалы времени выводились в консоль действия, описанные в steps.
  23.          Количество выведенных действий должно равняться rating.
  24.     2.2. Любой текст должен начинаться с фамилии игрока (метод getName()),
  25.          потом следовать двоеточие, а затем сам текст. Пример: [Ivanov:Начало игры].
  26.     2.3. Когда игрок выполнит все действия из steps, то он считается победителем.
  27.          Выведите [getName() + ":победитель!"].
  28.     2.4. Когда найден победитель, то игра останавливается, и остальные игроки считаются побежденными.
  29.          Выведите для них [getName() + ":проиграл"].
  30. */
  31.  
  32. public class Solution {
  33.     public static void main(String[] args) throws InterruptedException {
  34.         OnlineGame onlineGame = new OnlineGame();
  35.         onlineGame.start();
  36.     }
  37.  
  38.     public static class OnlineGame extends Thread {
  39.         public static volatile boolean isWinnerFound = false;
  40. /*показывает, найден победитель или нет*/
  41.  
  42.         public static List<String> steps = new ArrayList<String>();
  43. /*хранит последовательность действий, которое каждый игрок выполняет от 0 до последнего*/
  44.         static {
  45.             steps.add("Начало игры");
  46.             steps.add("Сбор ресурсов");
  47.             steps.add("Рост экономики");
  48.             steps.add("Убийство врагов");
  49.         }
  50.  
  51.         protected Gamer gamer1 = new Gamer("Ivanov", 3);
  52.         protected Gamer gamer2 = new Gamer("Petrov", 1);
  53.         protected Gamer gamer3 = new Gamer("Sidorov", 5);
  54.  
  55.         public void run() {
  56.             gamer1.start();
  57.             gamer2.start();
  58.             gamer3.start();
  59.  
  60.             while (!isWinnerFound) {
  61.             }
  62.             gamer1.interrupt();
  63.             gamer2.interrupt();
  64.             gamer3.interrupt();
  65.         }
  66.     }
  67.  
  68.     public static class Gamer extends Thread {
  69.         private int rating;
  70.  
  71.         public Gamer(String name, int rating) {
  72.             super(name);
  73.             this.rating = rating;
  74.         }
  75.  
  76.         @Override
  77.         public void run() {
  78.             //Add your code here - добавь код тут
  79.             try {
  80.                 for (int i = 0; i<OnlineGame.steps.size();i++) {
  81.                 System.out.println(this.getName() + ":" + OnlineGame.steps.get(i));
  82.                 sleep(1000/this.rating);
  83.                 }
  84.                 OnlineGame.isWinnerFound= true;
  85.                 System.out.println(this.getName() + ":победитель!");
  86.  
  87.             } catch (InterruptedException e) {
  88.                 System.out.println(this.getName()+":проиграл");
  89.             }
  90.  
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement