Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61

Добавить к маленькой программке счетчик хода

17.02.2016, 12:31. Показов 2076. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Мудрю дальше. Пробую добавить на ранее показанной программке счетчик хода.
Цель такая. Пользователь видит какой раз он не может отгадать задуманное число компьютером. А если он угадывает, то ему показывается с какого раза он все таки угадал. Я начал делать, но опять загвоздка в моих знаниях.
Вот прога:
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
import java.util.Scanner;
 
public class Logica1 {
 
    public static Scanner vvod() {
        Scanner scanner = new Scanner(System.in);
        return scanner;
    }
    public static int intUser() {
        System.out.println("Введите число от 1 до 3" );
        return vvod().nextInt();
    }
    public static int intComp() {
        return (int) (Math.random() * 3 + 1);
    }
 
 
 
    public static int decisionPlayer() {
        System.out.println(" Чтобы продолжить нажмите любую клавишу, чтобы выйти нажмите: q ");
        int decision;
        String temp = vvod().nextLine();
        if (temp.equals("q")) {
            decision = 1;
        } else {
            decision = -1;
        }
        return decision;
    }
 
 
    public static void log() {
        int comp, user;
        while (true) {
 
        comp = intComp();
        user = intUser();
 
            if (comp == user) {
                System.out.println(" Правильно, вы угадали "+getMoveCounter()+" раза");
                break;
            } else {
                System.out.println
                        ("№ хода: "+getMoveCounter()+" Увы, вы не угадали. Компьютер загадал число: " + comp );
 
            }
 
        }
 
    }
    public static byte getMoveCounter() {//счетчик хода.
        byte moveCounter = 1; //Начинаеться с одного.
        return moveCounter;
    }
        public static void main (String[]args){
 
            System.out.println(" Угадайте число");
            log();
            while (true) {
 
 
                if (decisionPlayer() < 0) {
 
                    log();
                } else {
                    System.out.println(" Вы вышли из программы");
                    break;
                }
            }
        }
 
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2016, 12:31
Ответы с готовыми решениями:

Обнулить клетку начала хода, и перезаписать шашку в клетку конца хода.
Добрый день! Казалось бы простая функция записи массива (позиции) расстановки шашек. Есть функция Запись позиции, она вызывается в скрипте...

Как добавить счетчик?
Здравствуйте, написал программу на ассемблере, обрабатывающая массив. Консультировался у знающего человека, он сказал, что все правильно,...

Как добавить переменную счетчик?
Как добавить переменную счетчик? напишите код пожалуйста.

7
17.02.2016, 13:56

Не по теме:


если интересно, есть решение этой задачи в mvc на гитхабе - https://github.com/mocivan/GuessNumberGame

0
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
17.02.2016, 14:15  [ТС]
mocivan, MVC точно не по теме. Я пробовал сделать по другим примеров но чета не выходит, чета еще нужно добавить.
0
8 / 8 / 4
Регистрация: 07.02.2016
Сообщений: 26
17.02.2016, 17:30
Не глядя в код. Если в класс добавить статическую переменную и инкрементировать ее каждый раз при неправильном ответе?
0
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
17.02.2016, 20:18  [ТС]
Maximkaa, А, что именно вы хотели сказать? Не понятно? И причем здесь неправильный ответ? По коду, при неправильном вводе выдается предупреждение, но оно выдается только если пользователь угадал, а значит предполагаемый счетчик хода должен обнулится. Не глядя в код у вас не получилось, посмотрите в код и выдайте свой вариант кода, а мы подождем.
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
17.02.2016, 22:27
Лучший ответ Сообщение было отмечено Atom77 как решение

Решение

Atom77, без большой переработки: добавим один метод, чуть отредактируем другой. По логике игры получается, что при выигрыше человека следует запрос о продолжении или прекращении игры, так что в этой части и внесём изменения. Раунд идёт до N побед.
Кликните здесь для просмотра всего текста
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
    public static void log() {
        int comp, user, step = 5, victory = 0, rout = 0;
        System.out.println("Раунд идёт до " + step + " побед.");
        while (victory < step & rout < step) {
            comp = intComp();
            user = intUser();
            if (comp == user) {
                System.out.println("Правильно, вы угадали ");
                victory++;
            } else {
                System.out.println("Увы, вы не угадали. Компьютер загадал число: " + comp);
                rout++;
            }
            roundCounter(victory, rout, step);
        }
    }
 
    public static void roundCounter(int victory, int rout, int step) {
        System.out.println("Счёт раунда: " + victory + " : " + rout);
        if (victory == step) {
            System.out.println("Победил человек!");
        }
        if (rout == step) {
            System.out.println("Победил компьютер!");
        }
    }

Проверяйте...

Добавлено через 51 минуту
Вариант с локальным (раундов) и общим (игры) счётом:
Кликните здесь для просмотра всего текста
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
class Logica {
 
    public static Scanner vvod() {
        Scanner scanner = new Scanner(System.in);
        return scanner;
    }
 
    public static int intUser() {
        System.out.println("Введите число от 1 до 3");
        return vvod().nextInt();
    }
 
    public static int intComp() {
        return (int) (Math.random() * 3 + 1);
    }
 
    public static int decisionPlayer() {
        System.out.println(" Чтобы продолжить нажмите любую клавишу, чтобы выйти нажмите: q ");
 
        int decision;
        String temp = vvod().nextLine();
        if (temp.equals("q")) {
            decision = 1;
        } else {
            decision = -1;
        }
        return decision;
    }
 
    public static int log() {
        int comp, user, step = 5, victory = 0, rout = 0;
        System.out.println("Раунд идёт до " + step + " побед.");
        while (victory < step & rout < step) {
            comp = intComp();
            user = intUser();
            if (comp == user) {
                System.out.println("Правильно, вы угадали ");
                victory++;
            } else {
                System.out.println("Увы, вы не угадали. Компьютер загадал число: " + comp);
                rout++;
            }
            roundCounter(victory, rout, step);
        }
        return (victory == step) ? 5 : 1;
    }
 
    public static void roundCounter(int victory, int rout, int step) {
        System.out.println("Счёт раунда: " + victory + " : " + rout);
        if (victory == step) {
            System.out.println("Победил человек!");
        }
        if (rout == step) {
            System.out.println("Победил компьютер!");
        }
    }
 
    public static void getMoveCounter() {
        int victory = 0, rout = 0, digit, start = -1;
        while (true) {
            if (start < 0) {
                digit = log();
                int temp = (digit > 3) ? victory++ : rout++;
            } else {
                System.out.println(" Вы вышли из программы");
                break;
            }
            System.out.println("Общий счёт побед в игре:\n" + "Человек - " + victory + "\nКомпьютер - " + rout);
            start = decisionPlayer();
        }
    }
 
    public static void main(String[] args) {
        System.out.println(" Угадайте число");
        getMoveCounter();
    }
}
1
8 / 8 / 4
Регистрация: 07.02.2016
Сообщений: 26
18.02.2016, 09:59
Atom77, я посмотрел код, так вот я предлагаю просто добавить локальную(в итоге) переменную moveCount в метод Log(), и инкрементировать ее каждый раз в конце блока else. А так же разумеется использовать ее в выводе:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void log() {
        int comp, user;
        int moveCounter = 1;  //добавили
        while (true) {
 
            comp = intComp();
            user = intUser();
 
            if (comp == user) {
                System.out.println(" Правильно, вы угадали с "+moveCounter+" раза");
                break;
            } else {
                System.out.println
                        ("№ хода: "+moveCounter+" Увы, вы не угадали. Компьютер загадал число: " + comp );
 
                moveCounter++; //инкремент
            }
 
        }
 
    }
п.с : могу еще предложить проверочку на вводимое число чтоб прога не падала..
1
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
18.02.2016, 11:44  [ТС]
Класс все работает. Спасибо HOBATOP и Maximkaa, ваши варианты работают. Новатор так вообще супер усовершенствовал програмку так как даже и в планах не было. Получилось очень даже наглядно и понятно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2016, 11:44
Помогаю со студенческими работами здесь

Добавить счетчик количества сочетаний
Program lab2; type mas=array of integer; procedure s_povtorami(s: string; m,n:integer); var i,count1:integer; begin if...

Цифровой счетчик, добавить шаг счетчика
Цифровой счетчик – это целочисленная переменная с ограниченным диапазоном значений, которая сбрасывается при достижении максимального...

Как добавить счетчик перестановок в сортировке?
Добавлено через 42 секунды # Сортировка выбором from random import * def selection_sort(arrayToSort): a=arrayToSort for i...

Как добавить счетчик в сайт на MODX ?
Здравствуйте. Мне необходимо добавить счетчик Яндекс.Метрики в сайт. Опыта в работе с MODX не имею, однако нашел в разделе чанки файл...

Добавить счетчик, срабатывающий при открытии
Есть форма ms word в нее необходимо добавить счетчик который бы срабатывал при каждом её открытии но форму нельзя сохранять файл прилагается


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru