Проблемы с организацией / созданием классов для Game of Nim - PullRequest
0 голосов
/ 27 октября 2010

Этот конкретный вариант Нима включает в себя: Два игрока поочередно берут мрамор из кучи. В каждом ходу игрок выбирает, сколько шариков взять. Игрок должен взять хотя бы один, но не более половины шариков. Затем другой игрок делает ход. Игрок, который берет последние шарики, проигрывает. Мне необходимо: - Напишите программу, в которой человек играет против компьютера. - Генерация случайного числа от 10 до 100 для обозначения начального размера стопки - Генерация случайного числа от 0 до 1, чтобы решить, будет ли компьютер или человек делать первый ход - Генерация случайного числа от 0 до 1, чтобы решить, будет ли компьютер играть «умно» или «глупо» (вычислять ходы или выбирать случайным образом)

Проблема в том, что мы должны использовать три класса: Pile, Player и Game. Я понятия не имею, как заставить все три класса «разговаривать» друг с другом и как разделить то, что и куда. Я полностью потерян, как начать это.

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

Начните с определения ваших классов.

У вас есть куча.Что вы можете сделать с кучей?Какие вопросы вы можете задать?Пример: "Куча, сколько мраморов осталось?"Запишите эти вопросы и действия - они станут общедоступными методами в Pile.

У вас есть игрок.Что может сделать игрок?Одна вещь, которую игрок может сделать, это «взять ход».Что еще может сделать игрок?Запишите все эти вещи - они станут общедоступными методами в Player.

У вас есть игра.Что делает игра?наверное что-то типа "играть".Запишите эти вещи, они будут публичными методами в Game.

Теперь у вас есть 3 класса, полных полезных методов.Кодируйте их.Как только вы доберетесь до этого места, отправьте сообщение обратно.

1 голос
/ 27 октября 2010

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

Свая как минимум содержала бы int для хранения количества шариков в куче, метод, который генерировал бы начальное число, и метод для взятия шариков.

0 голосов
/ 28 октября 2010

Если вы имеете в виду: «Я не знаю, как заставить класс вызывать методы другого класса», то это типичная проблема, когда вы впервые начинаете учиться программировать.Итак, я собираюсь сделать необоснованное предположение, что вы очень плохо знакомы с программированием и ОО-ориентированным программированием, в частности.

Попробуйте начать с написания класса с именем «Pile» с закрытой переменной типа Integer.Назовите эту переменную «мрамором» и инициализируйте ее некоторым числом, например, 50.

Напишите открытый метод для этого класса с именем 'how_many', который возвращает количество мраморов, и другой открытый метод с именем 'take_marbles'вызывается с целым числом и уменьшает размер стопки.

Создайте класс под названием «Игра».Игра имеет атрибут типа «Куча», созданный при создании новой Игры, и имеет методы, позволяющие ей вызывать методы «how_many» и «take_marbles» своего Куча.

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

Я думаю, что как только вы это сделаете, у вас будет представление о том, что делать дальше.

...