そこで、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;
}
}
}