Forumdelen sponsras av

Simpelt blackjack spel Java (OO baserat)

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Jan 2011

Simpelt blackjack spel Java (OO baserat)

Hej,

Försöker få polletten med OO programmeringar att trilla ner. Har bestämt mig för att göra ett simpelt blackjack spel som skall använda sig av flera olika klasser. Jag har börjat skissa lite på "designen" och har kommit fram till att jag behöver dessa klasser:

Mainklassen - Där jag kör själva spelet och gör anrop ifrån.
Funktionklassen - Där finns metoder som t.ex: boolean IsBust() som kollar ifall någon har >21 i handen. Här finns också hit() som helt enkelt ger spelaren ett till kort.
PlayerKlassen - Där ska det finnas någon identifier såsom spelarNamn. Möjligtvis createPlayer()?

Är det något mer jag behöver eller något jag bör tänka på? Möjligtvis en spelarhand som kan kopplas till spelare? Värt att nämna är att mina kort endast kommer ha värdet 2-11!

Tips på nybörjarprojekt som du gjorde under din läkningsprocess mottages gärna!

Trädvy Permalänk
Medlem
Registrerad
Jan 2003

I min värld så borde all logik för spelaren ligga i player-klassen, t.ex saker som IsBust() eller Hit()
Player-klassen hade också haft en lista med kort som är dom korten som den spelaren hade fått.

Den där "funktions-klassen" vet jag inte hur du hade tänkt att använda men det låter lite som att du hade tänkt samla all logik där, vilket *jag tycker* är fel.

-- Arkade --

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Jan 2011

@Arkade:

Hmm du har förmodligen rätt. Anledningen varför jag ville placera alla funktioner relaterade till spelet i en och samma klass var för att skapa struktur. Det jag tänkte var att om playerX vill ta ett nytt kort så anropas hit() från funktions-klassen till main-klassen. Vid anrop ska playerX nya kort läggas till i ArrayList som är kopplad till enbart playerX.

Vad är anledningen varför man vill placera dessa funktioner i player-klassen?

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Okt 2004

Tycker att funktionsklassen känns onödig att ha. Om vi kallar Mainklassen för Game så har vi Game och Player.

Gameklassen kan då bestå av två listor, List<Card> med den blandade kortleken, och List<Player> med alla spelare. Ta ett kort från listan med kort, ge det till en spelare (player.addCard(card) typ) och sen kan du kolla om det gick bra med player.isBust().

På det sättet får du en bra uppdelning, allt som rör den individuella spelaren (dennes kort, summan, etc) finns i Playerklassen, och i Game hittar du det som knyter samman spelet. Det känns, i alla fall för mig, mest logiskt att placera det så.

Trädvy Permalänk
Medlem
Plats
Helsingborg
Registrerad
Maj 2005

Du vill nog också ha en klass för ett kort, samt eventuellt en för leken som kan shuffla sina kort och hämta nästa.

Z87-Pro, I5 4670K@4.0 (4.2 single), Sapphire 290 TRI-X ~10% överklock, 16GB Crucial Tactical@stock, Deep Silent 1, Samsung Evo 250GB + 2x1TB 7200 + 500GB SSD (också Evo?)
Toshiba Satellite L855-10U
P5QL, E5300@3640Hz, GTX275, 4GB kingston 800MHz cl4, Threehundred, Zalman 500W

Trädvy Permalänk
Medlem
Plats
Bästkusten
Registrerad
Jun 2009
Skrivet av lodarletarn:

@Arkade:

Hmm du har förmodligen rätt. Anledningen varför jag ville placera alla funktioner relaterade till spelet i en och samma klass var för att skapa struktur. Det jag tänkte var att om playerX vill ta ett nytt kort så anropas hit() från funktions-klassen till main-klassen. Vid anrop ska playerX nya kort läggas till i ArrayList som är kopplad till enbart playerX.

Vad är anledningen varför man vill placera dessa funktioner i player-klassen?

Oftast är det väl saker och ting som man hade kunnat ta på i verkligheten som blir till objekt. Spelare, kort, kortlek osv... Har man en klass enbart för att samla en mängd funktioner så går man ifrån det objektorienterade tänket, i alla fall så som jag lärt mig tänka.

Funktioner som agerar på en klass, brukar väl vara del av den klassen. Inkapsulering, och så vidare:
https://stackify.com/oop-concept-for-beginners-what-is-encaps...

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & OCZ Agility 3 120GB & Samsung 960 EVO 250GB & Crucial V4 256GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Jan 2011

@DunderKlumpen:

Låter logiskt när du väl säger det!

Tack för alla svar. Väldigt hjälpsamma! @everyone

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Jan 2011

@WreXlaM:

Tycker du att jag kan lägga till en klass som heter "Kort" samt en lista i spelarklassen som håller <Kort>?

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Okt 2004
Skrivet av lodarletarn:

@WreXlaM:

Tycker du att jag kan lägga till en klass som heter "Kort" samt en lista i spelarklassen som håller <Kort>?

Helt rätt! Och en lista i Gameklassen också som innehåller korten som är kvar.

Skickades från m.sweclockers.com