Перейти к содержимому

Фото
- - - - -

Võrgurakendused I / Programmeerimise põhikursus


  • Вы не можете создать новую тему
  • Please log in to reply
1046 ответов в этой теме

#541 NeonIce

NeonIce
  • Пользователь
  • 87 сообщений
  • Откуда:Tallinn (IABB)

Отправлено 16 сентября 2010 - 20:48

NeonIce,
парень на харьютусе подтвердил, что пропущена 6 в таблице
буква B означает бонус (за >=63)


Про то, что "B" означает "Bonus", я не догадался. Спасибо!
  • 0
human brain has endless capacity for useless information.
programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. so far, the universe is winning. © rick cook

#542 lavlein

lavlein
  • Пользователь
  • 233 сообщений

Отправлено 17 сентября 2010 - 10:28

LaVVa, хорошая цель ) а дальше?


все сдам и диплом :rolleyes:
  • 0

#543 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 17 сентября 2010 - 10:36

LaVVa, это ясно, а дальше? )
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#544 lavlein

lavlein
  • Пользователь
  • 233 сообщений

Отправлено 17 сентября 2010 - 10:42

LaVVa, это ясно, а дальше? )



а дальше магистратура только не этой профессии :) (больше я так не оступлюсь :D )
  • 0

#545 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 17 сентября 2010 - 10:46

LaVVa, по какой пойдешь? ) Экономика?
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#546 Onyx8

Onyx8
  • Пользователь
  • 306 сообщений

Отправлено 18 сентября 2010 - 11:45

Если кому интересно, то я скажу, как у меня программа работает:

* Вводятся имена игроков. Например,
Player1 player2 player3
* Каждые 4 раунда (я ограничил до 4) каждый игрок вводит очки и комбинацию:
player1 25 fh
player3 24 6
player2 50 Y

* Когда все игроки ввели данные, они сортируются (по заданию не надо, но я сделал).
* Затем показывается таблица, в которой отмечен(ы) лидер(ы)
* Игра зависает до тех пор, пока пользователь не нажмет клавишу <ENTER>

Получилось меньше, чем на 200 строк кода. Код разборчивый и хорошо прокомментирован.

У кого по другому программа работает?

Сообщение изменено: Onyx8 (18 сентября 2010 - 11:48 )

  • 0

#547 null

null
  • Постоялец
  • 15 928 сообщений

Отправлено 18 сентября 2010 - 12:25

LaVVa, по какой пойдешь? ) Экономика?

да уж :D
  • 0

#548 Asgardian

Asgardian
  • Пользователь
  • 57 сообщений

Отправлено 18 сентября 2010 - 16:12

У кого по другому программа работает?

Самое первое условие задания выделено жирным шрифтом Suvaline arv mängijaid (произвольное ко-лво игроков, то есть хоть 1000)
У меня получилось так:
1. Ввод игроков, каждого через энтер, чтобы завершить ввод игроков, надо ввести 0.
2. Выводится пустая таблица со всеми игроками
3. Ввод данных в формате Игрок Игра Очки (Player1 FH 28)
4. Каждый раз при вводе данных выводится таблица с новыми данными, для выхода ввести 0.
Как я понял со слов преподов, программа должна выглядеть просто как таблица, ну тоже самое чтобы ты на бумажке писал, только тут вот на компе можно, то есть никаких строгих ограничений, любые данные (ну например если ввел очки неправильно) можно перезаписать заново.
  • 0
IAPM

#549 GGr

GGr
  • Пользователь
  • 68 сообщений
  • Откуда:Nar/Tln

Отправлено 18 сентября 2010 - 16:21

Получилось меньше, чем на 200 строк кода. Код разборчивый и хорошо прокомментирован.

Чего-то мне слабо вериться что могло всё в 200 строк влезть)
Наверно всё в мэйн запихал, в стиле си?))
Также советую приучиться к Java Code Conventions - Sun Microsystems
  • 0

#550 Onyx8

Onyx8
  • Пользователь
  • 306 сообщений

Отправлено 18 сентября 2010 - 17:28

>> GGr

Нет, у меня разборчивая ОО модель. Функция main практически пустая, запускает остальные функции.
Мало строк кода получилось благодаря правильному использованию встроенных интерфейсов и структур данных.

Это еще с сортировкой, которой нет в задании, но так лучше.

>> Asgardian

Ты правильно понял. Я тоже не делал проверку на корректность вводимых данных, т. к. по заданию не требуется.

Сообщение изменено: Onyx8 (18 сентября 2010 - 17:30 )

  • 0

#551 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 18 сентября 2010 - 17:44

Onyx8,
а сколько у тебя классов получилось(штук)?
  • 0
Former IAPB 8X.
Bachelor of Eternity

#552 archieb0ld

archieb0ld
  • Пользователь
  • 646 сообщений
  • Откуда:IABB

Отправлено 18 сентября 2010 - 18:16

Onyx8,

Programm peab näitama hetke liidrit

в моём понимании это означает то, что прога должна выдавать таблицу после ввода каждой комбинации "имя-трик-скор"
Asgardian,
со слов умного дяди на практикуме, уже введённые значения перезаписывать нельзя
письменные доказательства отсутствуют
  • 0
www.last.fm/user/archieb0ld
Когда я перестану пить...совершенно, все скажут: "Как же он хорош! Какая милашка!" © НаиВ
Когда таким, как ты сейчас, был я, таких, как я сейчас, не слушал. © Тараканы

#553 Ketty:)

Ketty:)
  • Пользователь
  • 223 сообщений
  • Откуда:Tallinn

Отправлено 18 сентября 2010 - 18:31

подтверждаю слова archieb0ld :)
  • 0

#554 GGr

GGr
  • Пользователь
  • 68 сообщений
  • Откуда:Nar/Tln

Отправлено 18 сентября 2010 - 19:47

Onyx8, Mr. Positive,
ну по минимуму классов 4-5 быть должно : Игрок, Трюк, ТаблицаОчков, Yahtzee, Ведущий(класс отвечающий за ввод очков).
Onyx8,
могу поверить что 200 строк получилось, если коменты были однострочные(//коммент),ну и отсутствие инкапсуляцию(ну в принципе чуваки вообще не требуют ООП).
корявые инпуты обрабатывал? а то на сдаче могут докопаться:lol:
  • 0

#555 Onyx8

Onyx8
  • Пользователь
  • 306 сообщений

Отправлено 18 сентября 2010 - 20:53

>> GGr
Обработка исключений не входит в задание.
2 класса и хватит. Незачем в такой простой программе лишние классы городить - сложнее лишь будет.

>> archieb0ld

Programm peab näitama hetke liidrit


Я считаю, что можно определять лидера только после того, как все сделали очередной ход, иначе очки будут распределены не честно.

Сообщение изменено: Onyx8 (18 сентября 2010 - 21:16 )

  • 0

#556 GGr

GGr
  • Пользователь
  • 68 сообщений
  • Откуда:Nar/Tln

Отправлено 19 сентября 2010 - 10:49

Onyx8,
ладно, но как писал Б.Эккель "Everything is an object", ну и чем лучше разделены обязанности, тем проще потом модифицировать :)

Про таблицу:
Думаю самое логичное выводить её либо после добавления очков, либо в любой момент, при помощи специальной команды.

P.s. К вопросу о том, как сделать чтобы очки нельзя было менять. Можно, конечно, проверять score > 0, но есть такой кейс, когда вводится score за трюк = 0 :)))
Фрагменты кода, в пример тому, как просто можно модифицировать программу, с правильно распределёнными обязанностями.

class Trick {

    private int score = 0;
    private boolean entered = false; //1. добавим флажок

    public void setScore(int score) {
        this.score = score;
        entered = true; //3. ну а тут мы флажёк, так сказать, поднимаем 
    }

    public boolean isEntered() { //2. ну и геттер к нему, сеттер не дадим <img src='https://forum.ee/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />
        return entered;
    } 
}

class Host {

    public void addPlayerScore() {

            //Trick currentTrick (трюк, за который добавляем очки. принадлежит определённому игроку)

            if(!currentTrick.isEntered()) { // 4. проверочка
                 currentTrick.setScore(score); 
            } else {
                System.out.println("This trick already has score, choose another!");
            }
    }

}

  • 0

#557 Onyx8

Onyx8
  • Пользователь
  • 306 сообщений

Отправлено 19 сентября 2010 - 12:45

>> GGr

Есть более простой способ проверить.

А сколько у тебя всего классов и строк кода?

Сообщение изменено: Onyx8 (19 сентября 2010 - 12:51 )

  • 0

#558 GGr

GGr
  • Пользователь
  • 68 сообщений
  • Откуда:Nar/Tln

Отправлено 19 сентября 2010 - 13:46

Onyx8,
ну можно ещё очки для игрока хранить в Integer'ах и проинициализировать как null. но это ближе к хаку)))
не в строках Щастье))
главное вот такое не писать и всё ок будет :
        boolean B = false;
        if ( Boolean.valueOf(<img src='https://forum.ee/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />.toString().length() < 5 )
            System.out.println("It's true");

:lol:

Сообщение изменено: GGr (19 сентября 2010 - 13:48 )

  • 0

#559 Infern0

Infern0
  • Постоялец
  • 1 103 сообщений
  • Откуда:Tallinn,Lasna / TTU

Отправлено 19 сентября 2010 - 16:40

GGr,
или вот такое нечто:
if (result == true)
  return true;
else
 return result;
govnokod.ru FTW :)
  • 0
My TUT/TTÜ docs: http://goo.gl/FTSZy

#560 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 19 сентября 2010 - 22:26

Пока не был подвержен воздействия извне, я написал так:
Собсна менюшка: новый игрок, добавить очков игроку, просмотр таблицы
У нового игрока надо ввести имя.
Когда добавляем на выбор выдается 13 позиций по очкам(вероятно надо было сделать 6, седьмая бонус и остальные 7 вроде как расписаны или хз)
Таблица собсна и есть таблица, думаю ни у кого не возникло трудностей с её рисованием.

Onyx8, ты такой милый, чтобы я без тебя делал :-*

P.S. А сподвигло меня сомневаться вот такая вот фигня:

Самое первое условие задания выделено жирным шрифтом Suvaline arv mängijaid (произвольное ко-лво игроков, то есть хоть 1000)
У меня получилось так:
1. Ввод игроков, каждого через энтер, чтобы завершить ввод игроков, надо ввести 0.
2. Выводится пустая таблица со всеми игроками
3. Ввод данных в формате Игрок Игра Очки (Player1 FH 28)
4. Каждый раз при вводе данных выводится таблица с новыми данными, для выхода ввести 0.
Как я понял со слов преподов, программа должна выглядеть просто как таблица, ну тоже самое чтобы ты на бумажке писал, только тут вот на компе можно, то есть никаких строгих ограничений, любые данные (ну например если ввел очки неправильно) можно перезаписать заново.


Сообщение изменено: JakeTheFIsh (19 сентября 2010 - 22:29 )

  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#561 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 20 сентября 2010 - 11:07

P.P.S. Написал письмо Аниеру и Лубергу. Аниер ответил:
On 20.09.2010 9:30, Jevgeni Smirnov wrote:


First of all, how players should be entered? At the start of the program? Or
players should be entered during game session?



What do you mean? How are you planning to calculate scoring if additional players join in the middle of the game?

Of course at the start of the game.




Moreover how scores should be entered?
playername trick score in 1 line

or it is ok if i enter like this:
playername<enter>
trick<enter>
score<enter>

?



Freedom of choice.



Shoul there be any rounds? Or simply score entering?


Look into game rules - the idea is to support the rules by computer.
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#562 Ketty:)

Ketty:)
  • Пользователь
  • 223 сообщений
  • Откуда:Tallinn

Отправлено 20 сентября 2010 - 11:32

На практикуме препод сказал, что в любой момент может присоединится другой игрок.
  • 0

#563 archieb0ld

archieb0ld
  • Пользователь
  • 646 сообщений
  • Откуда:IABB

Отправлено 20 сентября 2010 - 13:03

What do you mean? How are you planning to calculate scoring if additional players join in the middle of the game?
Of course at the start of the game.

не знаю, что именно он хотел сказать, но лично у меня очки подсчитываются "на лету", и лидер тоже "на лету" определяется. Хотя прога ещё до конца не готова (у меня вместо живого ввода все добавления в мэйн впихнуты. И пока отлично работает
сумму можно и с пустыми ячейками подсчитывать же

На практикуме препод сказал, что в любой момент может присоединится другой игрок.

лично я этого не слышал

с сайта:

Mängu alguses on kõigil 0 punkti, sellisel juhul liidrit ei märgita

это как бы намекает на то, что вначале всё-таки нужно ввести всех игроков. Но я делаю иначе. Надеюсь успеть предварительно ему показать, чтобы было время изменить, если что не так

Сообщение изменено: archieb0ld (20 сентября 2010 - 13:04 )

  • 0
www.last.fm/user/archieb0ld
Когда я перестану пить...совершенно, все скажут: "Как же он хорош! Какая милашка!" © НаиВ
Когда таким, как ты сейчас, был я, таких, как я сейчас, не слушал. © Тараканы

#564 Ketty:)

Ketty:)
  • Пользователь
  • 223 сообщений
  • Откуда:Tallinn

Отправлено 20 сентября 2010 - 13:50

archieb0ld,
это было сказано, правда, не знаю, может он имел ввиду то, что игрок не должен автоматически меняться и если опрееделено 3 игрока, то сначала могут играть 2 а потом присоединиться третий
  • 0

#565 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 20 сентября 2010 - 15:08

archieb0ld,
ну собсна он как бэ намекнул, что игроков надо ввесит в начале игры, когда вводишь поинты игроков вводить нельзя
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#566 KatrionaZ

KatrionaZ
  • Пользователь
  • 29 сообщений

Отправлено 20 сентября 2010 - 16:09

А всё это действо в консоли должно происходить или нужно форму/таблицу рисовать?
  • 0

#567 archieb0ld

archieb0ld
  • Пользователь
  • 646 сообщений
  • Откуда:IABB

Отправлено 20 сентября 2010 - 17:02

KatrionaZ,
в консоли нужно нарисовать таблицу как на сайте

Сообщение изменено: archieb0ld (20 сентября 2010 - 17:02 )

  • 0
www.last.fm/user/archieb0ld
Когда я перестану пить...совершенно, все скажут: "Как же он хорош! Какая милашка!" © НаиВ
Когда таким, как ты сейчас, был я, таких, как я сейчас, не слушал. © Тараканы

#568 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 20 сентября 2010 - 19:59

Я вместо задания по программированию написал игру целиком. Это очень плохо?

П.С. Рчеь о Yahtzee.
  • 0
Former IAPB 8X.
Bachelor of Eternity

#569 GGr

GGr
  • Пользователь
  • 68 сообщений
  • Откуда:Nar/Tln

Отправлено 20 сентября 2010 - 21:21

як по мне, так работать прога должна так :
1) Запускаем из консоли java Yahtzee #{Player_name} #{Player_name} *любое кол-во имён (в эклипсе тоже можно дать аргументы в метод мэйн)
2) Читаем из переменной args( public static void main(String[] args) ) имена игроков, добавляем игроков.
примерно так :
        for (String s: args) {
            addPlayer(new Player(s));
        }
3) Потом через консоль добавляем очки для игроков: %Player_name% %Trick% %Score%
судя по - Automaatset mängijavahetust ei ole vaja - очки для каждого игрока можно вводить хоть все сразу, не обязательно делать так, чтобы после ввода очков для игрока А нужно было вводить очки для игрока Б.
4) По появлению команды score в консоли выводим таблицу
----
автоматическое оканчание игры, после того как все очки для все игроков введены, вроде не требуется.
----

то есть ваш метод мэйн(ну или любой другой) должен выглядеть примерно так :

public static void main(String[] args) {
        for (String s: args) {
            addPlayer(new Player(s));
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        while(true) {
            try {
                System.out.print("Your input: ");
                String s = br.readLine();
                if (!s.equals("")) {
                    if (s.equals("exit")) {
                        System.exit(0);
                    }
                    else if (s.equals("score")) {
                        System.out.println(resultTable);//печатаем таблицу
                    }
                    else {
                        setScore(s);//в методе есть проверки на правильность инпута)
                    }
                }
            } catch (IOException e) {
                //whatever
            }
        }
}

  • 0

#570 NeonIce

NeonIce
  • Пользователь
  • 87 сообщений
  • Откуда:Tallinn (IABB)

Отправлено 20 сентября 2010 - 21:31

Я вместо задания по программированию написал игру целиком. Это очень плохо?


Так у тебя компьютер сам в Yahtzee играет без участия людей? :)
  • 0
human brain has endless capacity for useless information.
programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. so far, the universe is winning. © rick cook