Ændring af farve på kort.

I dette forum kan du stille og svare på spørgsmål om C# programmering. Alle med en interesse for C# er velkommen!
Besvar
tocase
Begynder
Indlæg: 2
Tilmeldt: 21. maj 2017, 23:57

Ændring af farve på kort.

Indlæg af tocase » 22. maj 2017, 00:02

Hej med jer,

Jeg har kodet et blackjack spil og kunne godt tænke mig at ændre farven på det kort der bliver trukket fra en bunke. Så f.eks er hjerter 10 rød og ruder k er grå.

Tænker vel at jeg skal angive farven i selve spillet?

Spillet er pt. delt op i et spil og en kortbunke (2 filere)

Er der nogle der kan hjælpe?

Main klassen:

Kode: Vælg alt

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

namespace Blackjack
{
    class Program
    {
        static void Main(string[] args)
        {
            int balance =100;
            string betstring;
            int betvalue;
            string spillernavn;
            string repeatspil;

            Console.WriteLine("Blackjack by Slass!!");
            Console.WriteLine("**************************");
            Console.Write("Hvad er dit navn: ");
            spillernavn = Console.ReadLine();

            while (spillernavn == "")
            {
                Console.WriteLine("Indtast venligst dit navn:");
                spillernavn = Console.ReadLine();
            }
            Console.Clear();
            Console.WriteLine("Velkommen til spillet " + spillernavn);
            Console.WriteLine();
            
            // starter spillet indtil du siger nej (n)
            do
            {
                Betstart: //Label der sender dig tilbage hvis du bruger goto.
                Console.WriteLine("Du har kr. " + balance + " på din konto, Hvor meget vil du bette?");

                betstring = Console.ReadLine();

                if (Int32.TryParse(betstring, out betvalue))
                {

                    betvalue = Convert.ToInt32(betstring);
                }
                else
                {
                    Console.WriteLine("Du må kun indtaste tal som bet - du better automatisk 10 kr.");
                    betvalue = 10;
                }
                if (betvalue > balance)
                {
                    Console.WriteLine("Du har ikke nok penge på din konto. Kontakte din bank for et quick lån :-)");
                    goto Betstart; // går tilbage til betstart:
                }
                Console.Clear();
                balance = balance + Spil(spillernavn, betvalue); //indlæser i rækkefølge
                if (balance <= 0)
                {
                    Console.WriteLine("Du er broke. Helt færdig! Kontakt en rocker for at låne flere penge :-)");
                    return;
                }
                Console.WriteLine();
                Console.WriteLine("Vi tager en runde mere. Du har " + Convert.ToString(balance) + " kr. Tryk N hvis du ikke ønsker at spille mere.");
                repeatspil = Console.ReadLine();
            } while (repeatspil != "n");
            

        }

        static int Spil(string navn, int bet) //indlæser i rækkefølge
        {
            int kortvalg;
            int spillerKortValue = 0;
            int spillerKortAntal = 0;
            string spillerKortTekst = "Din hånd: ";
            int dealerKortValue = 0;
            int dealerKortAntal = 0;
            string dealerKortTekst = "Dealerens hånd: ";
            card.GenerateDeck();

            Random random = new Random();
            kortvalg = random.Next(0, (card.deck.Count - 1)); //trækker et tilfældigt kort fra bunken

            //herunder kort til spilleren
            spillerKortValue += card.deck[kortvalg].value;
            spillerKortTekst += card.deck[kortvalg].type + card.deck[kortvalg].suit + " ";
            spillerKortAntal += 1; // Tæller antal af kort for at holde styr på om det er en blackjack ud fra to kort. 
            card.deck.RemoveAt(kortvalg); //fjerner kort fra bunken.

            //herunder kort til dealeren
            kortvalg = random.Next(0, (card.deck.Count - 1)); //trækker et tilfældigt kort fra bunken
            dealerKortValue += card.deck[kortvalg].value;
            dealerKortAntal += 1; // Tæller antal af kort for at holde styr på om det er en blackjack ud fra to kort.
            dealerKortTekst += card.deck[kortvalg].type + card.deck[kortvalg].suit + " ";
            card.deck.RemoveAt(kortvalg); //fjerner kort fra bunken. 

            //Spiller
            Console.WriteLine("Dit bet: " +bet );
            Console.WriteLine(dealerKortTekst + "(" + dealerKortValue.ToString() + ")");
            while (true)
            {
                if (spillerKortValue == 21 && spillerKortAntal == 2) //Kontrollere om spilleren har 21 og om det er ud fra to kort.
                { 
                    Console.WriteLine("Blackjack - Du vinder!");
                    return bet; //spilleren har ramt ægte blackjack (2 kort) og vinder dermed spillet.
                }
                
                Console.WriteLine(spillerKortTekst + "(" + spillerKortValue.ToString() + ")"); //Trækker kort
                string svar = Console.ReadLine();
                
                if (svar == "") //Hvis spilleren trykker enter fortsætter trækker man et kort. .
                {
                    kortvalg = random.Next(0, (card.deck.Count - 1));

                    spillerKortValue += card.deck[kortvalg].value;
                    spillerKortTekst += card.deck[kortvalg].type + card.deck[kortvalg].suit + " ";
                    spillerKortAntal += 1;
                    card.deck.RemoveAt(kortvalg);

                    if (spillerKortValue > 21)
                    {
                        Console.WriteLine("Du er gået over 21");
                        return -bet; //spiller er færdig med sin tur.
                    }
                    else
                    {
                        continue;
                    } 

                }
                else
                {
                    break; // tilfældigt imput (stopper spilleren i at trække) 
                }

            }
            //dealer
            Console.WriteLine(navn + " har valgt at stå på " + spillerKortValue.ToString());

            if (spillerKortValue <= 21)
            {
                while (dealerKortValue < 17) //Hvis dealerens kort værdi er under 17 skal dealeren trækker kort.
                {
                    dealerKortValue += card.deck[kortvalg].value;
                    dealerKortTekst += card.deck[kortvalg].type + card.deck[kortvalg].suit + " ";
                    Console.WriteLine(dealerKortTekst + "(" + dealerKortValue.ToString() + ")");
                    card.deck.RemoveAt(kortvalg);
                }
                if (dealerKortValue > 21)
                {
                    Console.WriteLine("Dealer er gået over og du vinder dermed spillet! ");
                    return bet;
                }

                else if (spillerKortValue == dealerKortValue)
                {
                    Console.WriteLine(navn + " og dealer har det samme");
                    return 0;
                }
                else if (spillerKortValue < dealerKortValue)
                {
                    Console.WriteLine("Dealer vinder! ");
                    return -bet;
                }
                else
                {
                    Console.WriteLine(navn + " Har vundet spillet");
                    return bet;
                }
                
            }

            else
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("Dealeren har vundet!");
                return -bet;
            }
        }
    }
}
card klassen:

Kode: Vælg alt

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

namespace Blackjack
{
    public class card
    {
     
        public string suit { get; set; }

        public string type { get; set; }
        public int value { get; set; }

        public static List<card> deck = new List<card>();

        public static void GenerateDeck()
        {

            deck.Clear(); //tømmer listen så der gennereres et nyt dæk

            string card_suit = "♦";
            int i = 1;

            while (i <= 4)
            {
                if (i==2)
                {
                    card_suit = "♠";
                }
                if (i == 3)
                {
                    card_suit = "♥";
                }
                if (i == 4)
                {
                    card_suit = "♣";
                }

                // Tilføjer kort til dækket.
                deck.Add(new card() { suit = card_suit, type = "2", value = 2 });
                deck.Add(new card() { suit = card_suit, type = "3", value = 3 });
                deck.Add(new card() { suit = card_suit, type = "4", value = 4 });
                deck.Add(new card() { suit = card_suit, type = "5", value = 5 });
                deck.Add(new card() { suit = card_suit, type = "6", value = 6 });
                deck.Add(new card() { suit = card_suit, type = "7", value = 7 });
                deck.Add(new card() { suit = card_suit, type = "8", value = 8 });
                deck.Add(new card() { suit = card_suit, type = "9", value = 9 });
                deck.Add(new card() { suit = card_suit, type = "10", value = 10 });
                deck.Add(new card() { suit = card_suit, type = "J", value = 10 });
                deck.Add(new card() { suit = card_suit, type = "D", value = 10 });
                deck.Add(new card() { suit = card_suit, type = "K", value = 10 });
                deck.Add(new card() { suit = card_suit, type = "A", value = 11 });
                
                i++;
            }
        }
    }
}

cristian
Moderator
Moderator
Indlæg: 882
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: Ændring af farve på kort.

Indlæg af cristian » 22. maj 2017, 08:48

Jeg forstår ikke lige hvor det er du gerne vil ændre farven da så vidt jeg kan se dette er et konsol spil.

Mere info! xD

tocase
Begynder
Indlæg: 2
Tilmeldt: 21. maj 2017, 23:57

Re: Ændring af farve på kort.

Indlæg af tocase » 22. maj 2017, 09:36

Jeg vil gerne ændre farven på ♥ som bliver printet ud i consollen.

Kode: Vælg alt

card_suit = "♥";
Vil også gerne ændre farven på "dealerkorttekst"

Kode: Vælg alt

Console.WriteLine(dealerKortTekst + "(" + dealerKortValue.ToString() + ")");
Gir det stadig ikke mening? :shock:

cristian
Moderator
Moderator
Indlæg: 882
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: Ændring af farve på kort.

Indlæg af cristian » 22. maj 2017, 19:22

Har du prøvet

Kode: Vælg alt

Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Rød tekst.");

Besvar