|
Программирование >> Программирование с использованием ajax
public bool HasWonO { bool won = true; Suit match = hand[0] .suit; for (int i = 1; i < hand.Count; i++) won & = hand[i] .suit = match; retum won; Далее необходимо определить класс, который будет отвечать за саму карточную игру Этот класс называется Game и должен содержаться в проекте Chl3CardClient внутри файла Game. cs. У него должно быть четыре следующих приватных поля: а playDeck - переменная типа Deck, содержащая используемую колоду карт; □ currentCard - значение типа int, применяемое в качестве указателя на следующую карту в используемой колоде; а players - массив объектов Player, представляющих игроков игры; □ discardedCards - коллекция Cards, предназначенная для тех карт, которые были отброшены игроками, но не были перетасованы и помещены обратно в колоду. Стандартный конструктор этого класса должен выполнять следующие действия: инициализировать и перетасовывать объект Deck, хранящийся в playDeck, устанавливать для переменной-указателя currentCard значение О (соответствующее первой карте в playDeck) и подключать обработчик событий по имени Reshuffle () к событию playDeck.LastCardDrawn. Этот обработчик должен просто перетасовывать колоду, инициализировать коллекцию discardedCards и снова устанавливать для currentCard значение О в знак готовности к считыванию карт из новой колоды. Еще в классе Game должно содержаться два служебных метода: SetPlayers () для установки игроков для игры (в виде массива объектов Player) и DealHands () для раздачи карт на руки игрокам (по семь карт каждому). Допустимое количество игроков должно ограничиваться от 2 до 7, что гарантирует наличие достаточного числа карт для хождения по кругу. И, наконец, еще в классе Game должен присутствовать метод PlayGame (), содержащий логику самой игры. Мы вернемся к нему чуть позже, после рассмотрения кода в файле Program. CS. В файле же Game. cs получается, что вся остальная часть кода должна выглядеть следующим образом: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Chl3CardLib; namespace ChlSCardClient { public class Game { private int currentCard; private Deck playDeck; private Player[] players; private Cards discardedCards; public Game () { currentCard = 0; playDeck = new Deck(true); playDeck.LastCardDrawn += new LastCardDrawnHandler(Reshuffle); playDeck.Shuffle 0 ; discardedCards = new Cards(); private void Reshuffle(Deck currentDeck) { Console.WriteLine( Discarded cards reshuffled into deck. ); Отброшенные карты перетасованы и помещены в колоду currentDeck.Shuffle О; discardedCards.Clear(); currentCard = 0; public void SetPlayers(Player[] newPlayers) { if (newPlayers.Length > 7) throw new ArgumentException ( A maximum of 7 players may play this + game. ); В эту игру может играть не более 7 игроков if (newPlayers.Length < 2) throw new ArgumentException ( A minimum of 2 players may play this + game. ); В эту игру может играть не менее 2 игроков players = newPlayers; private void DealHandsO { for (int p = 0; p < players.Length; p++) { for (int с = 0; с < 7; С++) { players[p].PlayHand.Add(playDeck.GetCard(currentCard++)); public int PlayGameO { Код, который должен выполняться дальше. В файле Program.CS должна содержаться функция Main (), отвечающая за инициализацию и проведение игры. В частности, она должна выполнять перечисленные ниже шаги. □ Отображать вводную информацию. □ Приглашать пользователя указать количество игроков, каковых может быть не меньше двух, но и не больше семи. □ Создавать массив объектов Player соответствующим образом. а Отображать каждому игроку приглашение ввести имя и использовать его для инициализации одного соответствующего объекта Player в массиве. □ Создавать объект Game и назначать игроков с помощью метода SetPlayers(). □ Запускать игру с помощью метода PlayGame (). □ Использовать значение int, возвращенное PlayGame (), для отображения сообщения о победителе (этим значением является индекс победившего игрока в массиве объектов Player). Код, необходимый для выполнения всех этих шагов, выглядит следующим образом (и для удобства снабжен комментариями): static void Маш (string [ ] args) { Отображение вводной информации. Console.WriteLine( KarliCards: а new and exciting card game. ); KarliCards: новая и увлекательная карточная игра Console.WriteLine ( То win you must have 7 cards of the same suit in + your hand. ); Для выигрыша необходимо, чтобы на руках оказалось 7 карт одной масти Console.WriteLine(); Отображение приглашения указать количество игроков. bool inputOK = false; int choice = -1; Console.WriteLine( How many players (2-7)? ); Ввод количества игроков (2-7) string input = Console.ReadLine0; try Попытка преобразовать введенные данные в допустимое число игроков. choice = Convert.ToInt32(input); if ((choice >= 2) && (choice <= 7)) inputOK = true; catch { Игнорирование неудачных попыток преобразования и продолжение отображения приглашения. } while (inputOK == false); Инициализация массива объектов Player. Р1ауег[] players = new Player[choice]; Получение имен игроков. for (int р = 0; р < players .Length; р++) . Console.WriteLine( Player {0}, enter your name: , p + 1); Ввод имен игроков string playerName = Console.ReadLine (); players[p] = new Player(playerName); Запуск игры. Game newGame = new Game () ; newGame.SetPlayers(players); int whoWon = newGame.PlayGame0; Отображение сообщения о победившем игроке. Console.WriteLine( {0} has won the game! , players[whoWon].Name) ;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |