Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Консольная игра.


Автор: Derron 6.10.2011, 22:49
Вот читал я читал книжки по Java и мне захотелось что-то покнопить  smile

Решил воплотить вот какую задачку: 

Компьютер загадывает число от 0 до 100, а вам нужно его угадать. 
Если вы не угадываете, он подсказывает Больше он загадал или меньше. 

Над кодом я сидел часа полтора. Пользовался исключительно Эккелем и Мозгом smile
Код

import java.util.*;

public class Number {
    
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Random rd = new Random();
        int i = rd.nextInt(100);
        System.out.println("Я загадал число от 0 до 100, угадай его!");
        end:
        for( ; true ; ){
            int ans = sc.nextInt();
                if(ans == i){
                    System.out.println("Ты угадал!!!");
                    break end;
                }
                else
                in:
                while(ans != i){
                    if(ans < 0 || ans > 100){
                        System.out.println("Я загадал число от 0 до 100!");
                        break in;
                    }
                    if(ans > i){
                        System.out.println("Нет, загадал чило меньше!");
                        break in;
                    }
                    if(ans < i){
                        System.out.println("Нет, я загадал чило Больше!");
                        break in;
                    }
                }
        }
    }
}



Подскажите, с точки зрения языка, эта задача решена правильно? То, что она работает правильно, еще не означает что она правильно написана. 

И я бы очень хотел посмотреть на другие варианты решения этой задачи.

Автор: toxx 6.10.2011, 23:18
Код

import java.util.*;
public class Number {
   
    public static void main(String[] args) { 
        number();
    }
    static void number() {
        boolean isEnd = false;
        int i = new Random().nextInt(100);
        System.out.println("Я загадал число от 0 до 100, угадай его!");
        do {
            int ans = new Scanner(System.in).nextInt();
            if (ans < 0 || ans > 100) {
                System.out.println("Я загадал число от 0 до 100!");
            }
            else if (ans == i) {
                System.out.println("Ты угадал!!!");
                isEnd = true;
            }
            else if (ans > i) {
                System.out.println("Нет, загадал чило меньше!");
            }
            else if (ans < i) {
                System.out.println("Нет, я загадал чило Больше!");
            }
        } while (!isEnd);
    }
}

Можно обойтись одним do while или while, с 1го взгляда сделал так... nextInt( ) от 0 до n - 1 число генерит =) так что если числа от 0 до 100 включая то некстИнт(101) и знак  >=100 добавить =)

Автор: Derron 6.10.2011, 23:45
Спасибо огромное, я изначально хотел что бы программа примерно так и выглядела, но не смог разобраться с  do-while, что бы работал как мне нужноsmile Буду иметь в своих закромах интересный примерsmile

Автор: Derron 7.10.2011, 00:01
Помогите теперь придумать игрушку подобной сложности, но что бы там нужно было использовать массивы, хочу еще над ними поколдоватьsmile

Автор: GVCH 7.10.2011, 08:42
Цитата(Derron @ 7.10.2011,  00:01)
Помогите теперь придумать игрушку подобной сложности, но что бы там нужно было использовать массивы, хочу еще над ними поколдоватьsmile

Легко.

Простая игра в слова.

Введите с консоли какоенибуть слова например WORLD
Далее переведите переменную типа стринг в массив
String s = "WORLD"
StringBuffer sb = new StringBuffer(s);
далее sb глядя по первым и последним символам вбивайте слова
ну и соответсвенно глядите за правилами игры.
Ну и например можно чтобы не повторялись слова тоже заносить их в массив и проверять не вводили ли такое раньше
единственное правило которое можно опустить ето проверять слово на правильность потомучто базы слов вам неоткудо пока достать =)

Автор: dorogoyIV 7.10.2011, 10:16
на, повтори, сделай такую же...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)