» »

C# domača naloga

C# domača naloga

gapoking ::

Pozdravljeni! Jaz bi pa rabil eno pomoč pri nalogi v C#.
Proučite pravila igre s kartami "Poker".

Izdelajte program, ki bo znal določiti, katero igro ima igralec v roki (par, dva para, …, barvna lestvica, …): uporabnik vnese informacijo o petih kartah in program izpiše kakšno kombinacijo kart imamo.

Za predstavitev barve in vrednosti kart morajo biti uporabljene ustrezne strukture podatkov.
Trenutno imam takole ampak rabim vsaj 3 podprograme. Prosim a pomoč

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

namespace Poker
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] barve = { "S", "K", "A", "P" }; //S-srce, K-križ, A-kara, P-pik
            string[] karta = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };

            int[,] kup = new int[4, 13];
            int[] columnSum = new int[13];
            int[] rowSum = new int[4];

            var line = Console.ReadLine();
            var karte = line.Split(',');

            if (karte.Length != 5)
            {
                Console.WriteLine("Vnesite 5 kart");
                Console.ReadLine();
                return;
            }

            foreach (string card in karte)
            {
                if (card.Length < 2)
                {
                    Console.WriteLine("Narobni format karte");
                    Console.ReadLine();
                    return;
                }

                string colour = card.Substring(0, 1);
                string value = card.Substring(1, card.Length - 1);
                int rowIndex = Array.IndexOf(barve, colour);
                int colIndex = Array.IndexOf(karta, value);

                if (rowIndex < 0 || colIndex < 0)
                {
                    Console.WriteLine("Narobna karta");
                    Console.ReadLine();
                    return;
                }

                kup[rowIndex, colIndex] = 1;
            }

            for (int i = 0; i < kup.GetLength(0); i++)
            {
                for (int j = 0; j < kup.GetLength(1); j++)
                {
                    columnSum[j] += kup[i, j];
                    rowSum[i] += kup[i, j];
                }
            }

            int par = columnSum.Where(x => x == 2).Count();
            int tris = columnSum.Where(x => x == 3).Count();
            int poker = columnSum.Where(x => x == 4).Count();
            bool barva = rowSum.Where(x => x == 5).Count() == 1;

            int straightSum = 0;
            bool lestvica = false;
            bool kraljeva = false;
            for (int i = -1; i < columnSum.GetLength(0); i++)
            {
                int value = i == -1 ? columnSum.Last() : columnSum[i];
                value = value != 0 ? value : -1;
                straightSum = Math.Max(straightSum + value, 0);
                if (straightSum == 5)
                {
                    lestvica = true;
                    if (i == columnSum.GetLength(0) - 1)
                    {
                        kraljeva = true;
                    }
                }
            }

            if (poker != 0)
            {
                Console.WriteLine("Poker");
            }
            else if (tris != 0 && par != 0)
            {
                Console.WriteLine("Full house");
            }
            else if (tris != 0)
            {
                Console.WriteLine("Tris");
            }
            else if (par == 2)
            {
                Console.WriteLine("Dva para");
            }
            else if (par == 1)
            {
                Console.WriteLine("En par");
            }
            else if (kraljeva && lestvica && barva)
            {
                Console.WriteLine("Kraljeva lestvica");
            }
            else if (lestvica && barva)
            {
                Console.WriteLine("Barvna lestvica");
            }
            else if (barva)
            {
                Console.WriteLine("Barva");
            }
            else if (lestvica)
            {
                Console.WriteLine("Lestvica");
            }
            else
            {
                Console.WriteLine("Ni kombinacije");
            }

            Console.ReadLine();
        }
    }
}
  • spremenil: bluefish ()

Golaz ::

"Za predstavitev barve in vrednosti kart morajo biti uporabljene ustrezne strukture podatkov."

Razrede in strukture ste že jemali? Potem moraš verjetno narediti nek razred Karta in eno strukturo znotraj razreda npr. Barva. Nek drug razred, ki bo vseboval katere karte so na mizi, in spet en razred ki bo vseboval katere karte ima igralec v roki.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# program za pretvorbo v desetiško število z rekurzijo

Oddelek: Programiranje
81503 (1226) MrStein
»

[C#] Domača naloga - osnove

Oddelek: Programiranje
372511 (1728) 11tomi12
»

[C#] Kopiranje osebe iz seznama v drug seznam

Oddelek: Programiranje
51506 (1367) Presidente

[C#]polje znakov

Oddelek: Programiranje
112389 (2217) Ziga Dolhar
»

Pomoč pri programčkih

Oddelek: Programiranje
152949 (2599) Mitja Bonča

Več podobnih tem