Программирование >>  Программирование с использованием ajax 

1 ... 122 123 124 [ 125 ] 126 127 128 ... 396


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) ;



1 ... 122 123 124 [ 125 ] 126 127 128 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика