Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.test.level16.lesson13.home07;
- import java.util.ArrayList;
- import java.util.List;
- /* Поиграем?
- ТРИ человека играют в игру.
- Каждый игрок(Gamer) характеризуется двумя параметрами: 1) фамилией(name)
- 2) количеством действий в секунду (rating).
- Нужно
- 1) вывести в консоль ход игры
- 2) определить победителя и проигравших.
- Итак...
- 1. Разберись, что делает программа.
- 1.1. List<String> steps хранит последовательность действий, которое каждый игрок выполняет от 0 до последнего.
- 1.2. isWinnerFound показывает, найден победитель или нет.
- 1.3. метод sleep выбрасывает InterruptedException и !!!!принимает параметр типа long!!!!.
- 1.4. Игроки играют НЕЗАВИСИМО друг от друга.
- 2. Реализуйте логику метода run так, чтобы для каждого игрока:
- 2.1. За 1 секунду через равные интервалы времени выводились в консоль действия, описанные в steps.
- Количество выведенных действий должно равняться rating.
- 2.2. Любой текст должен начинаться с фамилии игрока (метод getName()),
- потом следовать двоеточие, а затем сам текст. Пример: [Ivanov:Начало игры].
- 2.3. Когда игрок выполнит все действия из steps, то он считается победителем.
- Выведите [getName() + ":победитель!"].
- 2.4. Когда найден победитель, то игра останавливается, и остальные игроки считаются побежденными.
- Выведите для них [getName() + ":проиграл"].
- */
- public class Solution {
- public static void main(String[] args) throws InterruptedException {
- OnlineGame onlineGame = new OnlineGame();
- onlineGame.start();
- }
- public static class OnlineGame extends Thread {
- public static volatile boolean isWinnerFound = false;
- /*показывает, найден победитель или нет*/
- public static List<String> steps = new ArrayList<String>();
- /*хранит последовательность действий, которое каждый игрок выполняет от 0 до последнего*/
- static {
- steps.add("Начало игры");
- steps.add("Сбор ресурсов");
- steps.add("Рост экономики");
- steps.add("Убийство врагов");
- }
- protected Gamer gamer1 = new Gamer("Ivanov", 3);
- protected Gamer gamer2 = new Gamer("Petrov", 1);
- protected Gamer gamer3 = new Gamer("Sidorov", 5);
- public void run() {
- gamer1.start();
- gamer2.start();
- gamer3.start();
- while (!isWinnerFound) {
- }
- gamer1.interrupt();
- gamer2.interrupt();
- gamer3.interrupt();
- }
- }
- public static class Gamer extends Thread {
- private int rating;
- public Gamer(String name, int rating) {
- super(name);
- this.rating = rating;
- }
- @Override
- public void run() {
- //Add your code here - добавь код тут
- try {
- for (int i = 0; i<OnlineGame.steps.size();i++) {
- System.out.println(this.getName() + ":" + OnlineGame.steps.get(i));
- sleep(1000/this.rating);
- }
- OnlineGame.isWinnerFound= true;
- System.out.println(this.getName() + ":победитель!");
- } catch (InterruptedException e) {
- System.out.println(this.getName()+":проиграл");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement