Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 10

Консольная Java-игрушка

10.03.2016, 18:47. Показов 2037. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание. Написать программу "Гладиаторские бои". Кто может бесплатно помочь, отпишитесь.Хотя бы, направляли бы меня. Заранее благодарен.
"Сделайте 4х гладиаторов. У каждого гладиатора есть супер способность которую он может использовать 3 раза в бою.
Программа работает следующим образом:
1) пользователь выбирает себе гладиатора
2) случайным образом ему выбирается соперник
3) они дерутся
4) случайно выбирается победитель из оставшихся двух
5) если пользователь проиграл, то дерется на 3е место с проигравшим другой пары. Если выиграл - то за первое место с победителем другой пары

Бой - как в браузерном Бойцовском Клубе, если кто знает. 4 зоны поражения:
голова
туловище
пах
ноги
На каждом шагу можно нанести удар в одну область и защитить одну область. При попадании отнимается здоровье. Выигрывает оставшейся в живых."
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2016, 18:47
Ответы с готовыми решениями:

Java - очень простая консольная игрушка
Всем доброго времени суток! У меня довольно интересная проблема. Очень прошу ответить наиболее подробно, так как Java пока что только...

Консольная игра на Java SE
Какие игры можно сделать на Java в консоле.

Консольная игрушка "Виселица"
Доброго времени суток участникам форума. Недавно начал изучать язык С#. И решил написать простенькую консольную игрушку...

10
 Аватар для RedPatrick
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
11.03.2016, 11:44
Lexus123, написал абстрактный класс Гладиатор и два класса наследника - Ретиарий и Секутор, еще два напишите сами. В каждом классе в конструкторе задаете здоровье и урон, а также перегружаете метод суперудара. В классе Main выбираете тип гладиатора и начинаете бой. Бой ведется только между двумя гладиаторами.
Вам осталось написать только использование суперудара и турнирную таблицу - все инструменты тут уже есть, думаю, справитесь))

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        Gladiator player = new Gladiator() {
        };
        Gladiator enemy= new Gladiator() {
        };;
 
 
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String input1 = "";
        String input2 = "";
        Boolean flag = true; // защита от неправильного ввода
 
 
        System.out.println("Выберите гладиатора: 1 - ретиарий, 2 - секутор");
        while (flag){
            input1 = bf.readLine();
            switch (input1){
                case "1":
                    player = new Retiarius("Спартак");
                    enemy = new Secutor("Крикс");
                    flag = false;
                    break;
                case "2":
                    player = new Secutor("Спартак");
                    enemy = new Retiarius("Крикс");
                    flag = false;
                    break;
                default:
                    System.out.println("Ошибка ввода");
                    System.out.println("Выберите гладиатора: 1 - ретиарий, 2 - секутор");
                    flag = true;
            }
        }
 
        // выбрали гладиатора, начали бой!
        int round = 1;
        while (true){
            // атакуем
            System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
            flag = true;
            while (flag){
                input1 = bf.readLine();
                switch (input1){
                    case "1":
                    case "2":
                    case "3":
                    case "4":
                        flag = false;
                        break;
                    default:
                        System.out.println("Ошибка ввода");
                        System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
                        flag = true;
                }
            }
            // защищаемся
            System.out.println("Выберите что защищать: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
            flag = true;
            while (flag){
                input2 = bf.readLine();
                switch (input2){
                    case "1":
                    case "2":
                    case "3":
                    case "4":
                        flag = false;
                        break;
                    default:
                        System.out.println("Ошибка ввода");
                        System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
                        flag = true;
                }
            }
            player.setTactics(Integer.parseInt(input1), Integer.parseInt(input2));
            enemy.setTactics((int)(Math.random() * 4 + 1), (int)(Math.random() * 4 + 1));
            if (!player.attack(enemy)){
                System.out.println("Вы победили");
                break;
            }
            if (!enemy.attack(player)){
                System.out.println("Вы проиграли");
                break;
            }
        }
    }
}

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
abstract class Gladiator {
    //главный класс, от которого будут наследоваться остальные классы гладиаторов
    protected String name;
    protected int hitPoints; // хыт поинты
    protected int attacks = 0; //куда бьем
    protected int blocks = 0; // шта блакируим
    protected int damage; // дамаг
    protected int ultimatesLeft = 3;
 
    //конструктор
    public Gladiator(String name, int hitPoints, int damage) {
        this.name = name;
        this.hitPoints = hitPoints;
        this.damage = damage;
    }
    public Gladiator() {
 
    }
 
    //стандартная атака
    public Boolean attack (Gladiator enemy){
        // если атакуем не то, что заблокировано
        if (attacks != enemy.getBlocks()){
            switch (attacks){
                case 1:
                    System.out.println(name + " нанес успешный удар в голову");
                    break;
                case 2:
                    System.out.println(name + " нанес успешный удар по туловищу");
                    break;
                case 3:
                    System.out.println(name + " нанес успешный удар в пах");
                    break;
                case 4:
                    System.out.println(name + " нанес успешный удар по ногам");
                    break;
            }
            enemy.takeHits(damage); //то наносим урон
            System.out.println("Здоровье " + enemy.getName() + ": " + enemy.getHitPoints());
        }
        else switch (enemy.getBlocks()){
            case 1:
                System.out.println(enemy.getName() + " заблокировал удар в голову");
                break;
            case 2:
                System.out.println(enemy.getName() + " заблокировал удар по туловищу");
                break;
            case 3:
                System.out.println(enemy.getName() + " заблокировал удар в пах");
                break;
            case 4:
                System.out.println(enemy.getName() + " заблокировал удар по ногам");
                break;
        }
 
 
 
        if (enemy.getHitPoints() <= 0) return false;
        else return true; // если убили врага, возвращаем true
    }
 
    //суперудар, его перегружаем для каждого гладиатора
    public Boolean special (Gladiator enemy){
        if (enemy.getHitPoints() < 0) return false;
        else return true; // если убили врага, возвращаем true
    }
 
 
    //снимаем хит пониты
    public void takeHits (int hits){
        this.hitPoints -= hits;
    }
 
    //getters/setters
    public void setTactics (int attacks, int blocks){
        this.attacks = attacks;
        this.blocks = blocks;
    }
 
    public int getHitPoints() {
        return hitPoints;
    }
 
    public int getAttacks() {
        return attacks;
    }
 
    public int getBlocks() {
        return blocks;
    }
 
    public String getName() {
        return name;
    }
 
    public int getUltimates() {
        return ultimatesLeft;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Retiarius extends Gladiator {
    // ретиарий, закидывает соперниа сеткой, тот один ход всегда пропускает удар
 
 
    public Retiarius(String name) {
        super (name, 20, 1);
    }
 
    @Override
    public Boolean special(Gladiator enemy) {
        System.out.println( name + " закинул сеть на соперника");
        enemy.takeHits(damage);
        if (enemy.getHitPoints() < 0) return false;
        else return true; // если убили врага, возвращаем true
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Secutor extends Gladiator {
    //секутор, наносит двойной урон
 
    public Secutor(String name) {
        super (name, 10, 2);
    }
 
    @Override
    public Boolean special(Gladiator enemy) {
        System.out.println(name + " нанес двойной урон!");
        damage = 4;
        Boolean f;
        f = attack(enemy);
        damage = 2;
        return f;
    }
}
1
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 10
11.03.2016, 16:38  [ТС]
RedPatrick, переделаешь пожалуйста под Scanner. Т.к. не ориентируюсь.
0
11.03.2016, 17:14

Не по теме:

RedPatrick, переделаешь пожалуйста под Scanner. Т.к. не ориентируюсь.
Это пять.

0
 Аватар для RedPatrick
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
11.03.2016, 17:37
Doctor_, согласен))))
Lexus123, строчку BufferedReader bf ...
заменить на
Java
1
Scanner bf = new Scanner(System.in);
Методы bf.readLine(); заменить на bf.nextLine();
1
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 10
11.03.2016, 18:04  [ТС]
Как можно зарандомить выбор противника?

Добавлено через 40 секунд
RedPatrick, Как можно зарандомить выбор противника?

Добавлено через 6 минут
если допустим, создать еще 2 класса с другими персонажами
0
 Аватар для RedPatrick
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
12.03.2016, 12:47
Ну тогда меняете в начале

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Gladiator player = new Gladiator() {
        };
        // список гладиаторов - врагов
        ArrayList<Gladiator> enemies = new ArrayList<>();
        //вам нужно три врага, поэтому делаем три раза
        for (int i = 0; i < 3; i++){
            switch ((int)(Math.random()*3)){
                case 0:
                    enemies.add(new Retiarius("Lazy"));
                    break;
                case 1:
                    enemies.add(new Secutor("Ladyboy"));
                    break;
                //в случае 2 и 3 не Ретиарий и Секутор, а два Ваших класса
                case 2:
                    enemies.add(new Retiarius("Stupid"));
                    break;
                case 3:
                    enemies.add(new Secutor("Dumb"));
                    break;
            }
        }
        // Ну дальше можете аналогично случайно выбрать по сетке с каким гладиатором биться
        // а можно не запариваться и просто сражаться со вторым.
        // Далее по тексту обращаетесь не к переменной enemy, а к элементу списка
        // enemies.get(i), где i - номер врага
1
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 10
12.03.2016, 14:10  [ТС]
а как реализовать супер удар на твой взгляд? к тому как в начале запилино
0
 Аватар для RedPatrick
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
12.03.2016, 14:59
По нажатию клавиши 5. Если getUltimates > 0, то проводим супер удар, уменьшаем ultimatesLeft на 1.
Если = 0, то на экран цифру "5 - суперудар" не выводим и не обрабатываем.

У компьютера при выборе атаки также проверям, есть ли еще суперудары, если есть то его действия определяем Math.random() * 5 + 1, суперудар проводим при значении 5, если не осталось, то враг атакует, как уже выше написано.
1
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 10
12.03.2016, 15:00  [ТС]
RedPatrick, набросаешь, пожалуйста?
0
 Аватар для RedPatrick
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
14.03.2016, 16:58
Lexus123, держите. Реализацию турнира из трех боев сделайте уж сами, там все очень и очень просто, Вам же защищать лабу придется)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        Gladiator player = new Gladiator() {
        };
        Gladiator enemy = new Gladiator() {
 
        };
        // список гладиаторов - врагов
        ArrayList<Gladiator> enemies = new ArrayList<>();
        //вам нужно три врага, поэтому делаем три раза
        for (int i = 0; i < 3; i++) {
            switch ((int) (Math.random() * 3)) {
                case 0:
                    enemies.add(new Retiarius("Lazy"));
                    break;
                case 1:
                    enemies.add(new Secutor("Pupil"));
                    break;
                //в случае 2 и 3 не Ретиарий и Секутор, а два Ваших класса
                case 2:
                    enemies.add(new Retiarius("Solve"));
                    break;
                case 3:
                    enemies.add(new Secutor("Yourself"));
                    break;
            }
        }
        // Ну дальше можете аналогично случайно выбрать по сетке с каким гладиатором биться
        // а можно не запариваться и просто сражаться со вторым.
        // Далее по тексту обращаетесь не к переменной enemy, а к элементу списка
        // enemies.get(i), где i - номер врага
 
        Scanner bf = new Scanner(System.in);
        //BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String input1 = "";
        String input2 = "";
        Boolean flag = true; // защита от неправильного ввода
 
 
        System.out.println("Выберите гладиатора: 1 - ретиарий, 2 - секутор");
        while (flag) {
            input1 = bf.nextLine();
            switch (input1) {
                case "1":
                    player = new Retiarius("Спартак");
                    enemy = new Secutor("Крикс");
                    flag = false;
                    break;
                case "2":
                    player = new Secutor("Спартак");
                    enemy = new Retiarius("Крикс");
                    flag = false;
                    break;
                default:
                    System.out.println("Ошибка ввода");
                    System.out.println("Выберите гладиатора: 1 - ретиарий, 2 - секутор");
                    flag = true;
            }
        }
 
        // выбрали гладиатора, начали бой!
        int round = 1;
        while (true) {
            // атакуем
            // если остались усуперудары
            if (player.getUltimates() > 0) {
                System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги, 5 - суперудар");
                flag = true;
                while (flag) {
                    input1 = bf.nextLine();
                    switch (input1) {
                        case "1":
                        case "2":
                        case "3":
                        case "4":
                            flag = false;
                            break;
                        case "5":
                            flag = false;
                            player.ultimatesLeft--;
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                            System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
                            flag = true;
                    }
                }
            }
            // если суперударов не осталось
            else {
                System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги, 5 - суперудар");
                flag = true;
                while (flag) {
                    input1 = bf.nextLine();
                    switch (input1) {
                        case "1":
                        case "2":
                        case "3":
                        case "4":
                        case "5":
                            flag = false;
                            break;
                        default:
                            System.out.println("Ошибка ввода");
                            System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
                            flag = true;
                    }
                }
            }
            // защищаемся
            System.out.println("Выберите что защищать: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
            flag = true;
            while (flag) {
                input2 = bf.nextLine();
                switch (input2) {
                    case "1":
                    case "2":
                    case "3":
                    case "4":
                        flag = false;
                        break;
                    default:
                        System.out.println("Ошибка ввода");
                        System.out.println("Выберите куда бить: 1 - голова, 2 - туловище, 3 - пах, 4 - ноги");
                        flag = true;
                }
            }
            player.setTactics(Integer.parseInt(input1), Integer.parseInt(input2));
 
            //суперудар у противника
            if (enemy.ultimatesLeft > 0) {
                enemy.setTactics((int) (Math.random() * 5 + 1), (int) (Math.random() * 4 + 1));
            } else enemy.setTactics((int) (Math.random() * 4 + 1), (int) (Math.random() * 4 + 1));
            if (player.attacks == 5) {
                if (!player.special(enemy)) {
                    System.out.println("Вы победили");
                    break;
                }
            }
            else if (!player.attack(enemy)) {
                    System.out.println("Вы победили");
                    break;
 
            }
                if (enemy.attacks == 5) {
                    enemy.ultimatesLeft--;
                    if (!enemy.special(player)) {
                        System.out.println("Вы проиграли");
                        break;
                    }
                } else if (!enemy.attack(player)) {
                        System.out.println("Вы проиграли");
                        break;
 
                }
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2016, 16:58
Помогаю со студенческими работами здесь

Игрушка на AVR
Нарыл вот такое http://www.bradsprojects.com/itistronic ... lBros.html там есть видео... подаю бесплатную идею для тех кто...

Игрушка в бэйсике
Ребят, прошу помощи. В программировании вообще не шарю, да и стремления даже нет. Понял что не мое. Осталось только сдать курсач по...

Процессоры и игрушка
AMD FX 6120 3.5 GHz or better для нижней игры он нужен,но нету. AMD A10-7850K Radeon R7, 12 Compute Cores4C+8G 3.70GH стоит у меня. В...

Первая игрушка
Ребят, в общем, задача следующая: необходимо разработать игру. Игра представляет собой квадратную комнату (вид сверху), в которой есть 2...

Игрушка Танчики
у меня есть 1 свой танк, 2 вражеских. и сейчас если один вражеский попадет в другого вражеского, то подстреленный исчезает и выходит конец...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru