Skip to content

Commit da88966

Browse files
authored
Again he says Rejoice,u Gentiles, with his people.
Again he says, "Rejoice, you Gentiles, with his people." (Romans 15:10)
1 parent 7ea50cf commit da88966

1 file changed

Lines changed: 156 additions & 0 deletions

File tree

task16/task1627/Solution.java

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
2+
// Again he says, "Rejoice, you Gentiles, with his people." (Romans 15:10)
3+
4+
package com.javarush.task.task16.task1627;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
public class Solution {
10+
public static void main(String[] args) throws InterruptedException {
11+
OnlineGame onlineGame = new OnlineGame();
12+
onlineGame.start();
13+
}
14+
15+
public static class OnlineGame extends Thread {
16+
public static volatile boolean isWinnerFound = false;
17+
18+
public static List<String> steps = new ArrayList<String>();
19+
20+
static {
21+
steps.add("Начало игры");
22+
steps.add("Сбор ресурсов");
23+
steps.add("Рост экономики");
24+
steps.add("Убийство врагов");
25+
}
26+
27+
protected Gamer gamer1 = new Gamer("Ivanov", 3);
28+
protected Gamer gamer2 = new Gamer("Petrov", 1);
29+
protected Gamer gamer3 = new Gamer("Sidorov", 5);
30+
31+
public void run() {
32+
gamer1.start();
33+
gamer2.start();
34+
gamer3.start();
35+
36+
while (!isWinnerFound) {
37+
}
38+
gamer1.interrupt();
39+
gamer2.interrupt();
40+
gamer3.interrupt();
41+
}
42+
}
43+
44+
public static class Gamer extends Thread {
45+
private int rating;
46+
47+
public Gamer(String name, int rating) {
48+
super(name);
49+
this.rating = rating;
50+
}
51+
52+
@Override
53+
public void run() {
54+
for (String step : OnlineGame.steps) {
55+
try{//Add your code here - добавь код тут
56+
System.out.println(getName() + ":" + step);
57+
Thread.sleep(1000/rating);
58+
}catch(InterruptedException e) {System.out.println(getName() + ":проиграл");return;}
59+
}
60+
if (!OnlineGame.isWinnerFound) {
61+
System.out.println(getName() + ":победитель!");
62+
OnlineGame.isWinnerFound = true;
63+
}
64+
}
65+
}
66+
}
67+
68+
69+
70+
71+
72+
/*
73+
Поиграем?
74+
Три человека играют в игру. Каждый игрок(Gamer) характеризуется двумя параметрами: фамилией(name) и количеством действий в секунду (rating).
75+
Нужно вывести в консоль ход игры и определить победителя и проигравших.
76+
Итак…
77+
1. Разберись, что делает программа.
78+
1.1. List<String> steps хранит последовательность действий, которое каждый игрок выполняет от 0 до последнего.
79+
1.2. isWinnerFound показывает, найден победитель или нет.
80+
1.3. Метод sleep выбрасывает InterruptedException и принимает параметр типа long.
81+
1.4. Игроки играют независимо друг от друга.
82+
2. Реализуй логику метода run так, чтобы для каждого игрока:
83+
2.1. Через равные интервалы времени (1000ms / rating) выводились в консоль действия, описанные в steps.
84+
2.2. Любой текст должен начинаться с фамилии игрока (метод getName()), потом следовать двоеточие, а затем сам текст.
85+
86+
Пример: [Ivanov:Начало игры].
87+
88+
2.3. Когда игрок выполнит все действия из steps, то он считается победителем. Выведите [getName() + «:победитель!»].
89+
2.4. Когда найден победитель, то игра останавливается, и остальные игроки считаются побежденными. Выведите для них [getName() + «:проиграл»].
90+
91+
92+
Требования:
93+
1. Метод run класса Gamer через равные интервалы времени (1000ms / rating) должен выводить в консоль фамилию игрока (метод getName()), потом двоеточие, а затем текст из OnlineGame.steps. Пример: [Ivanov:Начало игры].
94+
2. Когда все игровые шаги будут выполнены, а победитель еще не найден, метод run должен установить флаг OnlineGame.isWinnerFound в true (сообщить остальным, что он победитель).
95+
3. Если игрок стал победителем, его метод run должен вывести надпись [getName() + :победитель!]. Например: [Sidorov:победитель!].
96+
4. Методы run всех игроков которые не стали победителями (были прерваны), должны вывести надписи [getName() + :проиграл]. Например: [Petrov:проиграл]
97+
5. Метод run не должен кидать исключение при прерывании.
98+
99+
package com.javarush.task.task16.task1627;
100+
101+
import java.util.ArrayList;
102+
import java.util.List;
103+
104+
public class Solution {
105+
public static void main(String[] args) throws InterruptedException {
106+
OnlineGame onlineGame = new OnlineGame();
107+
onlineGame.start();
108+
}
109+
110+
public static class OnlineGame extends Thread {
111+
public static volatile boolean isWinnerFound = false;
112+
113+
public static List<String> steps = new ArrayList<String>();
114+
115+
static {
116+
steps.add("Начало игры");
117+
steps.add("Сбор ресурсов");
118+
steps.add("Рост экономики");
119+
steps.add("Убийство врагов");
120+
}
121+
122+
protected Gamer gamer1 = new Gamer("Ivanov", 3);
123+
protected Gamer gamer2 = new Gamer("Petrov", 1);
124+
protected Gamer gamer3 = new Gamer("Sidorov", 5);
125+
126+
public void run() {
127+
gamer1.start();
128+
gamer2.start();
129+
gamer3.start();
130+
131+
while (!isWinnerFound) {
132+
}
133+
gamer1.interrupt();
134+
gamer2.interrupt();
135+
gamer3.interrupt();
136+
}
137+
}
138+
139+
public static class Gamer extends Thread {
140+
private int rating;
141+
142+
public Gamer(String name, int rating) {
143+
super(name);
144+
this.rating = rating;
145+
}
146+
147+
@Override
148+
public void run() {
149+
//Add your code here - добавь код тут
150+
}
151+
}
152+
}
153+
154+
155+
156+
*/

0 commit comments

Comments
 (0)