-1

そこで、C# を学ぶためにちょっとしたカードゲームを書いています。それは私の最初のプロジェクトで、少し問題があります。したがって、ゲームはいくつかの簡単な質問をするだけです。次のカードが赤か黒か、次のカードが前のカードより高いか低いか、次のカードが前の 2 枚のカードの内側か外側か。最後に、次のカードのスーツを選びます。インアウトセクションを除いて、すべて機能しています。switch ステートメントを使用してユーザー入力を取得し、if ステートメントを使用して正しい答えを出しています。「in」をオンにすると完全に動作しますが、「out」を入力すると正しく動作しません。助けてください。さらに、どんな批評でもいいでしょう。ご協力ありがとうございました。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Text.RegularExpressions;
    using System.Collections;

    namespace Drinking_Game_
{
class Program
{
    public static void Main()
    {
        Deck deck = new Deck();
        Card card = new Card();
        Intro intro = new Intro();
        Game drink = new Game();
        deck.Shuffle();
        intro.intro();
        drink.game();
        //Console.WriteLine(deck.TakeCard());
        Console.ReadLine();
    }


        //In out part of the  Game
        Card inOut = new Card();
        deck.Shuffle();
        inOut = deck.TakeCard();
        Start2:
        Console.WriteLine("Is the next card going to be inside, out, or equal to \n {0} & {1}
        (in, out or equal)  \n", rorbcard,highLow);
        string userValue2 = Console.ReadLine().ToLower();
        Console.WriteLine(inOut.ToString());
        switch (userValue2)
        {
            case "out":
                          //+                      -
                    if (rorbcard.CardNumber > highLow.CardNumber)
                    {
                        if (inOut.CardNumber > rorbcard.CardNumber) & (inOut.CardNumber <
                        highLow.CardNumber)
                        {
                            Console.WriteLine("Correct give 6 drinks\n");
                        }
                        else
                        {
                            Console.WriteLine("Wrong take 6 drinks\n");
                        }
                    }
                    else if (rorbcard.CardNumber < highLow.CardNumber)
                    {
                        if (inOut.CardNumber < rorbcard.CardNumber) & (inOut.CardNumber >
                        highLow.CardNumber)
                        {
                            Console.WriteLine("Correct give 6 drinks\n");
                        }
                        else
                        {
                            Console.WriteLine("Wrong take 6 drinks\n");
                        }
                    }
                break;
            case "in":
                    if (rorbcard.CardNumber > highLow.CardNumber)
                    {
                        if (inOut.CardNumber < rorbcard.CardNumber & inOut.CardNumber >
                        highLow.CardNumber)
                        {
                            Console.WriteLine("Correct give 6 drinks\n");
                        }
                        else
                        {
                            Console.WriteLine("Wrong take 6 drinks\n");
                        }
                    }
                    else if (rorbcard.CardNumber < highLow.CardNumber)
                    {
                        if (inOut.CardNumber > rorbcard.CardNumber && inOut.CardNumber <
                         highLow.CardNumber)
                        {
                            Console.WriteLine("Correct give 6 drinks\n");
                        }
                        else
                        {
                            Console.WriteLine("Wrong take 6 drinks\n");
                        }
                    }
                break;
            case "equal":

                    if (inOut.CardNumber == rorbcard.CardNumber || inOut.CardNumber ==
                    highLow.CardNumber)
                    {
                        Console.WriteLine("Correct give 6 drinks\n");  
                    }
                    else
                    {
                        Console.WriteLine("Bold move, but wrong drink 6\n");
                    }
                break;
            default:
                {
                    Console.WriteLine("You must input in, out, or equal");
                    goto Start2;
                }
        }
 public enum Suit
{
    Spades = 0,
    Hearts = 1,
    Diamonds = 2,
    Clubs = 3,
}

public enum CardNumber
{
    Two = 1,
    Three = 2,
    Four = 3,
    Five = 4,
    Six = 5,
    Seven = 6,
    Eight = 7,
    Nine = 8,
    Ten = 9,
    Jack = 10,
    Queen = 11,
    King = 12,
    Ace = 13,
}

public class Card
{
    public Suit Suit { get; set; }
    public CardNumber CardNumber { get; set; }

    public override string ToString()
    {
        return CardNumber + " of " + Suit;
    }


}

public class Deck
{

    public Deck()
    {
        Reset();
    }

    public List<Card> Cards { get; set; }

    public void Reset()
    {
        Cards = Enumerable.Range(0, 3).SelectMany(s => Enumerable.Range(1, 13).Select(c => new
        Card()
        {
            Suit = (Suit)s,
            CardNumber = (CardNumber)c
        } )).ToList();
    }

    public void Shuffle()
    {
        Cards = Cards.OrderBy(c => Guid.NewGuid())
                     .ToList();
    }

    public Card TakeCard()
    {
        var card = Cards.FirstOrDefault();
        Cards.Remove(card);
        return card;


    }

    public IEnumerable<Card> TakeCards(int numberOfCards)
    {
        var cards = Cards.Take(numberOfCards);

        var takeCards = cards as Card[] ?? cards.ToArray();
        Cards.RemoveAll(takeCards.Contains);

        return takeCards;
    }
}
}
4

2 に答える 2

0

あなたの out ケースにもっと括弧があることに気付きました。これにより、コードの動作が変わる場合があります。

于 2013-10-16T19:54:06.053 に答える