Vil prøve at lave et kortspil - Krig

29/04/2024 kl. 07:45 #21
#19 Ting tager tid. Jeg kunne heller ikke finde ud af det i starten, men det er blevet lidt nemmere nu 🙂 (blev datamatiker i 2002 og har arbejdet som udvikler lige siden)
👍 0❤️ 0😂 0😮 0😢 0😠 0
30/04/2024 kl. 19:30 #22

jeps det gør de... har lavet min første lille test 🙂 Et deck - randaom kort - en knap 🙂 se video.

  1. Det næste er hvordan jeg fordeler kortede, så hver person starter med 26 kort.
  2. Tie bliver nok lidt svære at lave, men vil da prøve.
  3. Hvem der vinder
👍 0❤️ 0😂 0😮 0😢 0😠 0
30/04/2024 kl. 20:21 #23
Sjovt projekt! Mht. just python, anvender jeg selv CustomTkinter for GUI til de 2 python project jeg har lavet. Studerer til Dataingenjör i sverige og er på andet år. Jeg har desvärre ikke brugt tid på at läre at lave spil i de diverse game IDEs der findes, men som sagt har jeg lavet små projekter som så anvender Tkinter. https://github.com/vikander86/Search_Algorithms_Visualizer Det förste program jeg lavede viser hvordan forskellige algoritmer regner ud fx. labyrint(a til b) og en 8-puzzle. Har så leget lidt med animation og timers, men det er stadigväk noget jeg ska bli dygtigere på. Har endnu ikke helt styr på Threads og använding af dem. https://github.com/vikander86/HTN_Visualizer Det näste er en implementation af PyHOP som er en Hieratherically Task Network planner, som er en ret sjov form for AI der en robot ska beväge sig mellem rum og flytte på en kasse. Jeg har fået mig fortalt at HTN planners användes flittigt for AI i spil for fjender, så de kan tage beslutninger ud fra hvad spilleren gör. Desuden er min kod stadigväk ganske mudret og jeg behöver stadigväk lärer mig "clean-code". Mht. din kod, så om jeg forstår dig korrekt, så vil du kunne använde face_cards som en reference til dit deck? Men i och med dine "keys" i dit dictionary er integers og dit ranks array er en array af Strings, så kan du ikke lave en sammenligning. Så du kan eventuellt lave dit dict om til: face_cards = {'01': 'Ace', '11': 'Jack', '12': 'Queen', '13': 'King'} #21 Fedt!
👍 0❤️ 0😂 0😮 0😢 0😠 0
01/05/2024 kl. 12:12 #24
#21 Det er en rigtig fed Godot start 🙂 Congrats #WeezY Hvis jeg dog må være en lidt træls lærer, så vil jeg stadig anbefale dig at få styr på klasserne og spillets regler i en konsol udgave først. Det ved jeg ikke om du allerede har fået. Det vil gøre at du har 100% styr på netop hvordan du laver et Deck med 52 kort og hvordan du deler disse kort ud til spillerne og hvordan du trækker et kort fra hver spiller når spillet så går igang og sammenligner dem og afgør hvem der er vinderen af hånden eller om der er krig. Jeg kan ikke helt se hvad der er nede under denne Godot debugger session, så det kan også være du allerede har disse ting med, men det er den grafiske visning det kniber med. Object Oriented Programming er ret svær at fange i starten, men det er en meget vigtig byggesten i din fremtidige rejse inden for programmering lige meget hvilket sprog du ender med at være proficient i (for husk: man får +2 i bonus på sin ability modifier, hvis man er proficient i sproget)

Dette svar blev ændret 2 år siden af Festival_H.

👍 0❤️ 0😂 0😮 0😢 0😠 0
01/05/2024 kl. 12:33 #25

Nu skal jeg ikke stjæle det for dig, men noget i denne henretning, hvor du gør brug af dine klasser for at løse dine problemer.

Det er ikke et kode visning, men hvad koden gør. Først kører appen med een runde af gangen, men fordi et et spil kan tage på til 850 runder inden en vinder er fundet, så stopper jeg koden på et tidspunkt og lader den spille et helt spil igennem. Det du ser på skærmen er den sidste runde inden en vinder blev fundet. Du kan også se at appen går i Krig nogle gange og at det kan være årsagen til en spiller løb tør for kort.

Hvis du har et spørgsmål specifikt til hvordan du løser et problem med dine klasser, så spørger du bare 🙂

👍 0❤️ 0😂 0😮 0😢 0😠 0
01/05/2024 kl. 18:20 #26
Bageren mange tak. jeg har hørt om Tkinter, men prøvede bare med pygame. Da det er lidt lettere at starte på. Det ser meget cool ud, det du har lavet. Håber jeg bliver lidt bedre til det. Festival_H mange tak. ja, ved godt jeg burde lærer klasser. Det jeg har lavet det i er Godot egen GDscript(mener om python) kodning. lave det i ren konsol, tror det ikke det bliver svære, når man skal tilbage og sætte grafik til den kodning? vil se om jeg kan finde ud af: hvordan jeg fordeler kortede, så hver person starter med 26 kort og den tæller ned.
👍 0❤️ 0😂 0😮 0😢 0😠 0
02/05/2024 kl. 10:08 #27
#25 Hvordan er det nu man spiller en helt elefant? En lille bid af gangen 🙂 Det er min helt klare opfattelse at det nemmeste er at løse så lille en opgave som muligt af gangen. Hvis du både skal lære grafisk manupulation OG klasse design i Python på samme tid at så sætter du dig selv større problemer end du behøver og måske er klar til at håndtere. Så ja. Jeg tror du vil få meget ud af at få sat et python udviklingsmuljø med kun med VSCode og Python hvor du kan lave rene Python projekter der skriver status til en console. Lige som mit eksemple i C#. Start med Card og Deck klasser. En enum af FaceValue 2 - 14 og en Suit enum af Diaamond, Hearts, Clubs og Spades. Når du laver en instans af din Deck klasse looper du igennem FaceValue og Suit enummerne og instansiere Card klasse og lægger instanserne i en liste. Et Deck kan ikke eksistere uden kort. Så det er naturligt at Deck klassen står for at bygge all 52 kort. Prøv at starte der. Det er en rigtig godt start og grundstenen i alle digitale kort spil.
👍 0❤️ 0😂 0😮 0😢 0😠 0
02/05/2024 kl. 10:59 #28
Hov... 'Spiser en hel elefant'. Der er ingen der skal spille en helt elefant, hvad det så end er 🙂
👍 0❤️ 0😂 0😮 0😢 0😠 0
02/05/2024 kl. 11:47 #29
#27 Du har helt ret, gik død i det i går. Tror jeg laver det i koncole først. små bider uden grafik. ligger det på bagefter. fik dog drag and drop til at virke... 🙂
👍 0❤️ 0😂 0😮 0😢 0😠 0
03/05/2024 kl. 07:00 #30
#28 Så jeg har fået sat et Python miljø op med VSCode og nogle PY filer og prøver med lidt python udvikling af Card, Deck, Suit, FaceValue og en Game klasse. Og nu kan det godt være jeg er biased med 20 års .Net udvikling, men for hutlan jeg synes ikke Python er et særligt venligt begynder sprog... jeg skal søge mig frem til selv de simpleste ting og når jeg sidder med en løsning der også virker, så gir det ingen mening... Det er MEGET anderledes fra .Net og C# og selv JavaScript. Det kan godt være at det er helt naturligt hvis man starter ud på Python og ikke har tidligere erfaring med anden programmerings sprog at det så virker meget logisk og det gir jo også mening at starte på Python hvis det er det sprog man skal arbejde videre på. I dont like it.
👍 0❤️ 0😂 0😮 0😢 0😠 0
03/05/2024 kl. 07:43 #31
#29 Mit förste kursus/(fag?) på uni var netop med Python og Matlab hvilket var en fin indgang til programmering for at forstå de mest basale variabler, loops og funktioner. Vi havde så C precis efter hvilket var lidt af et skifte når man skulle begynde og tänke på memory allocation, pointers og referencing 😀 og så det at man skulle afslutte alle linjer kod med et ";" det tog lidt tid inden det blev et muskelminde 😛 Noget som er ulempen ved Python er også det faktum at selvom din kode virker som om den funker, så kan den väre fyldt med bugs uden at man ved om det iom hvordan den tolker din kod. Men alt i alt synes jeg Python er en väldig nice ingangsport til programmering.
👍 0❤️ 0😂 0😮 0😢 0😠 0
03/05/2024 kl. 13:38 #32
#30 Lige for at præcisere så er det .Net og C# jeg snakker om. Jeg er heller ikke tosset med C eller C++. C/C++ er meget forskelligt fra C#. Man kan de samme ting, men C# udgaverne er meget mere clean i syntaxen synes jeg.

Dette svar blev ændret 2 år siden af Festival_H.

👍 0❤️ 0😂 0😮 0😢 0😠 0
21/05/2024 kl. 18:57 #33
Hej igen Festival_H, håber du har tid, kan ikke forstå hvorfor jeg får dette: System.String[]. Da den siger jeg ikke har fejl i min kode. Har brugt alt for lang tid, for at finde ud af det. Hvis jeg laver et breakpoint på "Console.WriteLine(yourHand);" Viser den de 26 kort... :S tænkte det kunne være disse: har prøvet at konverter string'en og lave dem om til S,H,D,C, men virker heller ikke. "♠", "♥", "♦", "♣" dette er mit output MyHand: System.String[] YourHand: System.String[]
using System;
using System.Text;

namespace TEST
{
    internal class Program
    {
        static void Main(string[] args)
        {

            // deck

            string[] cards = new string[52];
            string[] suits = { "♠", "♥", "♦", "♣" };
            string[] ranks = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
            string[] myHand = new string[26];
            string[] yourHand = new string[26];

            for (int i = 0; i < cards.Length; i++)
            {
                cards[i] = ranks[i % 13] + suits[i % 4];
            }

            // Shuffle
            var random = new Random();
            for (int i = 0; i < cards.Length; i++)
            {
                int j = random.Next(52);
                string temp = cards[i];
                cards[i] = cards[j];
                cards[j] = temp;
                

            }

            // Del 12 cards fra shuffle til mig og dig
            for (int i = 0; i < 26; i++)
            {

                myHand[i] = cards[i * 2]; // Tilføj kort til mig
                cards[i * 2] = null!;  // Fjern kort fra bunden

                yourHand[i] = cards[i * 2 + 1]; // Tilføj kort til dig
                cards[i * 2 + 1] = null!; // Fjern kort fra bunden

            }
            
            // Vis kortene
            Console.WriteLine("MyHand: ");
            Console.WriteLine(myHand);

            Console.WriteLine("YourHand: ");
            Console.WriteLine(yourHand);

            Console.ReadLine();
            }

    }
}

Dette svar blev ændret 2 år siden af WeezY.

👍 0❤️ 0😂 0😮 0😢 0😠 0
22/05/2024 kl. 06:38 #34
I C# what you did there 🙂 Først kan jeg se at du har Ace på plads 1 (eller faktisk 0 jo), så hvordan har du tænkt dig at vurder hvem der vinder et udspil hvis Ace er en af de spillede kort? Sæt den sidst så den har den højeste enum værdi. 2: Hvor er alle dine klasser? Klasser, klasser, klasser. Card, Deck, Player og Game (glem hand, det har du ikke brug for i dette spil fordi spillet er tabt når Player ikke har flere kort tilbage). Et Card objekt har en FaceValue og en Suit enum. Det duer ikke at et kort bare er en string. I krig bruges Suit ikke til noget, men du vil gerne bygge en brygbart lib du kan tage med videre. C# har en fantastisk Generic Collection Lib som indeholder en List. Den har en dynamisk længde, så du ADDer bare og REMOVEr når du fjerner. Et Deck består af en privat List cardsInDeck. Der er ingen der skal kigge stikke sine fingre i disse kort. Det er Deck klassen selv der styre det helt 100%. Så den har en Draw funktion der returner en type af Card. Dette Card lægges så i en Players Stack med en Take funktion. Players Draw funktion trækker fra Players egen liste. Som jeg vil implementere som en Queue fordi der altid tages fra toppen og vundne kort tages fra bunken. Prøv at fortælle dig selv en historie om hvordan en af disse titler fungere i virkeligheden. Det forklare ligsom hvordan objektet skal designes for at løse de opgaver det har i den virkelige verden. Object Orienteret Programmering handler netop om at løse problemstillinger fra det virkelige liv i koden. Prøv at starte med det her. De kan være i een fil eller du kan have det i flere filer. Det må du selv om. I starten er det nok nemmere have have det hele i een fil, men når du har styr på encapsulation, så kan du lægge alt i sine egne filer.
   public enum Suit
    {
        Hearts,
        Diamonds,
        Clubs,
        Spades,
    }

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

    public class Card
    {
        public Suit Suit { get; private set; }
        public FaceValue FaceValue { get; private set; }

        public int IntValue => (int)FaceValue;

        public Card(Suit suit, FaceValue faceValue) 
        { 
            Suit = suit;
            FaceValue = faceValue;
        }

        public override string ToString()
        {
            return $"{FaceValue} of {Suit}";
        }
    }

Dette svar blev ændret 2 år siden af Festival_H.

👍 0❤️ 0😂 0😮 0😢 0😠 0
22/05/2024 kl. 06:51 #35
Med hensyn til din fejl, så kan jeg slet ikke compile hvis jeg paster dit kode ind i et nyt projekt. Hvad bruger du som IDE? Visual Studio Community Edition er FREE og anbefales.
👍 0❤️ 0😂 0😮 0😢 0😠 0
22/05/2024 kl. 06:59 #36
Oh vent. Det er ikke en fejl du får. Du kan ikke printe indholdet af et array ud i C# bare ved at skrive den til konsollen. Så vil den bare skrive typen til dig og det er jo rigtig nok at det er string array String[] Enten skal du foreach på alle dine elementer og lave en console med hvert enkelt element eller skal du lige lave en Join på dit array med denne: Console.WriteLine(String.Join(", ", myHand));

Dette svar blev ændret 2 år siden af Festival_H.

👍 0❤️ 0😂 0😮 0😢 0😠 0
22/05/2024 kl. 07:45 #37
#35. Det virkede... mange tak... 🙂 Det er Visual Studio Community 2022 Edition jeg bruger. kom en del videre med det i går... Ved godt det er Noob spørgsmål, men man skal jo lærer det. Er bange for klasser... 🙂 Det skal nok komme... har vel set 10+ timer C# guides - En fra Skillshare, så jeg begynder at forstå små ting og sager.
👍 0❤️ 0😂 0😮 0😢 0😠 0
22/05/2024 kl. 12:55 #38
Det er nemt med klasser når du lige får den under armen. Tænkt det som små kasser med knapper. Du har ingen anelse om hvordan din remote til TV'et virker, men på magiskvis så skifter TV'et kanal når du trykker på en knap. Det er indkapsling. Du behøver ikke at vide hvad der ligger i kassen, så længe der er de rigtige håndtag du kan benytte. Funktionerne. Klasser er blueprints du skal lave instanser af. Card card = new Card(Suit.Hearts, FaceValue.One); Det blir så dejligt når du får der under huden.
👍 0❤️ 0😂 0😮 0😢 0😠 0
22/05/2024 kl. 22:31 #39

WeezY skrev (#33):

for (int i = 0; i &lt; cards.Length; i++)
{
cards = ranks + suits;
}

Dafuq? Jeg forstår ikke helt dine for-løkker, hvor du ikke bruger dine i'er til noget.:)
👍 0❤️ 0😂 0😮 0😢 0😠 0
Nintendo Influencer På dansk: https://www.youtube.com/channel/UC-6I6HgrpYjimEpvayLu3Vg På engelsk: https://www.youtube.com/channel/UCNNzj5gu0Iolj4vcNIp1IUA
23/05/2024 kl. 08:16 #40
#38 Ja, den studsede jeg også over, men tænkte at det skulle være en lille 'WOOT?' når han nåede frem til at have en liste af kort som blev skrevet ud. Learning from the process 🙂
👍 0❤️ 0😂 0😮 0😢 0😠 0
Der opstod en uventet fejl. Genindlæs 🗙

Forbindelsen blev afbrudt

Det sker tit på mobil, når browseren har været i baggrunden. Vi prøver automatisk at genoprette forbindelsen.

Genopretter forbindelsen...

Stadig ikke forbindelse. Prøver igen om sekunder.

Vi kunne ikke genetablere forbindelsen.
Prøv igen eller genindlæs siden.

Sessionen blev sat på pause af serveren.

Sessionen kunne ikke genoptages.
Prøv igen eller genindlæs siden.