Toon posts:

[JAVA] Ontwerpen sort-of-21'en

Pagina: 1
Acties:
  • 183 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
beste mensen,

ik gebruik momenteel het boek "java voor studenten van douglas bell & mike parr"

daar in staat een opdracht Blackjack waar je arrays moet gebruiken.

hier de opdracht:
schrijf een programma om dit kaartspel te spelen. de computer is de gever. de gever geeft je eerst 2 kaarten. dit zijn willekeurige kaarten.(in het echt heeft de deler een enorm pak kaarten, dit zijn verschillende geschudde stokken). je doel is om een score hoger dan de gever te bereiken zonder boven de eenentwintig uit te komen. de aas telt voor 1 of 11. je kunt op elk moment "kaart"zeggen (vragen om een nieuwe kaart) of pas(je bent tevreden met wat je hebt). je kunt ook kapot zijn (meer dan 21 punten). nadat je past of kapot bent, geeft de deler zichzelf kaarten. het doel van de deler is om meer punten dan jij te behalen zonder kapot te gaan. maar de deler kent je score niet en gokt op wat je kunt hebben. lever knoppen om een nieuwe spel te beginnen, een kaart te vragen en te passen. laat beide sets kaarten die gedeeld zijn op het scherm zien.

ik zal echt niet weten hoe ik moet beginnen. zal iemand mij kunnen helpen? de applet zelf is geen probleem maar het maken van een classe en methode hiervoor is klote.


ps: het gaat me niet om het tekenen van die kaarten maar over de inhoud.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

1) vergeet de gui
2) begin met objecten waarin jij de functionaliteit voor dit domein kan plaatsen:
Kaart, Spel, Speler, Ronde

En verder vind ik dus dus weer een typisch voorbeeld van een minder begaafde informatica docent die voor geen meter les kan geven. Geef hem anders maar email adres: peter_veentjer@alarmnummer.net. Dan zal ik hem even uitleggen dat je zo geen les moet geven. Je begint bij de basics, en dan ga je verder uitbouwen. Gui komt hierbij zeer laat aan bod, omdat mensen te snel verzanden en zich niet bezighouden met het gene dat werkelijk belangrijk is.

[ Voor 64% gewijzigd door Alarmnummer op 24-03-2003 20:00 ]


Verwijderd

Alarmnummer schreef op 24 maart 2003 @ 19:56:
Dan zal ik hem even uitleggen dat je zo geen les moet geven. Je begint bij de basics, en dan ga je verder uitbouwen. Gui komt hierbij zeer laat aan bod, omdat mensen te snel verzanden en zich niet bezighouden met het gene dat werkelijk belangrijk is.
Wie zegt dat dit niet de volgorde is waarin hij de stof behandeld? Misschien is de GUI code wel geleverd? ;)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
Lekker zinnige topic title heb je gekozen. Verder mis ik nog wat dingen uit de quickstart, zo van, wat heb je zelf al bedacht enzo. Als je echt geen idee hebt waar te beginnen, kun je misschien beter bij het begin van je leerboek beginnen met lezen, in plaats van direct naar de opdrachten door te bladeren. Als het boek niet deugt kun je ook de Java tutorial trail van Sun gebruiken, die is erg goed (maar waarom heb je dat boek dan ooit gekocht?).

Het spel dat je beschrijft lijkt trouwens meer op een-en-twintigen dan op blackjack, aangezien je niet kan splitsen, verdubbelen of verzekeren.

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op 24 March 2003 @ 20:11:
[...]

Wie zegt dat dit niet de volgorde is waarin hij de stof behandeld? Misschien is de GUI code wel geleverd? ;)
in een dergelijk stadium van leren programmeren moet je je helemaal niet druk hoeven te maken over het hoe en wat van het implementeren van een GUI.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

HunterPro schreef op 24 March 2003 @ 20:16:
[...]

in een dergelijk stadium van leren programmeren moet je je helemaal niet druk hoeven te maken over het hoe en wat van het implementeren van een GUI.
Precies. Dit is iets wat ik trouwens erg vaak zie. Veel studenten zijn bezig met allerlei gecompliceerde gui`s en client/server applicaties terwijl ze voor geen meter kunnen ontwerpen of ook meer iets begrijpen van de problemen die daarbij horen.
Het spel dat je beschrijft lijkt trouwens meer op een-en-twintigen dan op blackjack, aangezien je niet kan splitsen, verdubbelen of verzekeren.
*maakt notitie: niet tegen soultaker kaarten*

Verwijderd

I agree, ik heb vorig jaar 1.5 uur per week JAVA gehad, echt neit veel, maar we hebben ook geen reet GUI's gezien, maar wel DB connecties(DAO's), objecten, ... en ik vond het achteraf gezien zeker geen slechte aanpak.
AWT leer je zo op internet, met java tutorial ofzo....heb eigenlijk wel spijt dat die docent gestopt is met lesgeven :S

In JAVA is het goed mogelijk een GUI boven een CUI programma te hangen, omdat je dan je CUI programma instantieert in je GUI, en vandaar de methoden aanroept, dus maak eerst een mooi DOS/shell programmaatje, en hang daar dan een GUI boven (implementeer indien nodig enkele nieuwe methoden voor de GUI versie).

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 20-08 09:32
Wie zegt dat het hier om een schoolopdracht gaat ?
Misschien is de TS wel zelf begonnen met het aanleren van Java.

@ TS:
Kun je wat meer informatie geven van wat je al wel kent? Heb je al ervaring met het ontwerpen van classes?
Wat is precies het probleem met het maken van de class en de methods ?

Ik zou eerst een goed ontwerp maken van alle classes die je nodig hebt en welke properties/methods die classes bevatten.
(Houd hierbij goed in de gaten dat je alle functionaliteiten in de goede class zet. Dus het reken-werk niet in de class 'kaart' bijv. maar in een gedeelte dat _gebruik maakt van_ de class 'kaart'. Zoiets zie ik ook nogal eens fout gaan.)

[ Voor 38% gewijzigd door maikel op 24-03-2003 21:07 ]


Verwijderd

Topicstarter
nee ik ben zelf een IVIT (informatie voorziening & informatie kunde). ik heb de basis al gehad ik weet hoe java ongeveer in elkaar zit. ik heb alleen problemen met classes en methodes. bij deze opgave weet ik dus niet hoeveel classe je hebt (ik denk zelf een klasse kaarten met daarin methodes als kaartgeven()(met daarin random getal en random string), punten() (het bij houden van punten), display().

ik weet dus echt niet of dit goed is. het is net zoiets als master mind zwaar klote dus. ik hoop dat jullie mij kunnen helpen.

ps: ik heb zelf hiervoor een klassen diagram in UML gemaakt. of het goed is weet ik natuurlijk niet:S.

[ Voor 10% gewijzigd door Verwijderd op 24-03-2003 21:11 ]


  • maikel
  • Registratie: Januari 2001
  • Laatst online: 20-08 09:32
Zou je iets meer van dat diagram kunnen posten ?
(screenshot of zo, als het digitaal is)

Als je van de omschrijving van het programma alle zelfstandige naamwoorden hebt, heb je al een aardig beeld van alle classes die je nodig hebt (ligt natuurlijk ook aan de omschrijving).

Loop je tegen problemen aan als je probeert het systeem samen te stellen met jouw classes?

Verwijderd

Topicstarter
ik heb in iedergeval het volgende in gedachte:

klasse: Gever
attributen: geen
operaties: geef kaarten(uit klasse speelkaart
: bijhouden scores

klasse: speelkaart
attributen: geen
operaties: geef kaarten

ik ga hem vandaag/morgen uitwerken en hier plaatsen.

Verwijderd

Waarom heeft de klasse speelkaart een operatie "geef kaarten"? En de Gever heeft bijvoorbeeld referenties naar alle kaarten die doorgegeven kunnen worden aan bijvoorbeeld de klasse(n) Hand.

Een (logischer) ontwerp voor de klase kaart is bv:
klasse: Kaart
attributen: kleur, waarde
methoden: isgroterdan, iskleinerdan, equals

Waarbij de laatste methoden vooral handig zijn bij het uiteindelijke implementeren. Je moet toch een keer kaarten met elkaar gaan vergelijken.

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 20-08 09:32
Die klasse 'speelkaart' klopt zo inderdaad niet nee. Je moet het gewoon als de bestaande, echte objecten zien. Je zegt ook niet "de kaart geeft mij een kaart", het is de 'deler' die mij een kaart geeft. En, zoals Gorny al zegt, die kaart heeft weer een bepaalde kleur en waarde.

Verwijderd

Inderdaad. Ik weet niet hoe het boek het OO programmeren heeft uitgelegd, maar zorg eerst maar dat die basis goed is. Daarna pas kun je echt goed gaan programmeren. Het boek "Introduction to Programming and Object Oriented Design (in Java)" van Nino&Hosch is erg goed. Er komt wel wat Java bij aan bod, maar in het begin wordt er eerst voornamelijk gefocused op het ontwerpen. Als dat eenmaal goed zit kan men wel via de SUN Java API documentatie de verdere programma's schrijven.

Verwijderd

Topicstarter
hmm jullie hebben gelijk. maar zoals ik al eerder zij die klassen diagram van mij was niet goed. ik hoop dat ik wat verder kom.

dus als ik het goed begrijp kan ik beter 2 klassen gebruiken namelijk (kaart en gever). ik ga het morgen proberen.

nogmaals bedankt

Verwijderd

Mwoah je kunt er beter nog een klasse bij gebruiken, namelijk Hand. In een Hand zitten een aantal Kaarten. De Gever extends dan Hand met de functies die specifiek zijn voor de Gever. Dat lijkt mij het makkelijkste en het meest logische ontwerp.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Soultaker schreef op 24 maart 2003 @ 20:12:
Het spel dat je beschrijft lijkt trouwens meer op een-en-twintigen dan op blackjack, aangezien je niet kan splitsen, verdubbelen of verzekeren.


semi-offtopic: volgens mij kun je bij 21-en ook splitsen. Wat ik overigens wel een vage speelwijze vindt is dat de deler jouw kaarten niet weet. Hij legt ze toch altijd gewoon open op tafel :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
.oisyn schreef op 25 March 2003 @ 10:49:
semi-offtopic: volgens mij kun je bij 21-en ook splitsen.
Oh, dat heb ik nooit zo gespeeld, maar het zou kunnen dat dat een variatie is (of dat ik het fout doe :P ).
Wat ik overigens wel een vage speelwijze vindt is dat de deler jouw kaarten niet weet. Hij legt ze toch altijd gewoon open op tafel :?
Hangt er een beetje vanaf. Als ik met andere mensen 21-en doe, dan heeft iedereen z'n kaarten dicht (en dan moet je achteraf dus dingen als splitsen checken, als je vermoedt dat er valsgespeeld wordt).

In een casino maakt 't niet uit dat de deler weet wat voor kaarten de spelers hebben, want hij is verplicht zich aan een vaste strategie die onafhankelijk is van de kaarten van de spelers te houden (kaarten pakken zolang 'ie onder 17 zit en daarna verplicht stoppen, als ik me niet vergis).

  • Juup
  • Registratie: Februari 2000
  • Niet online
Soultaker schreef op 25 March 2003 @ 14:15:
In een casino maakt 't niet uit dat de deler weet wat voor kaarten de spelers hebben, want hij is verplicht zich aan een vaste strategie die onafhankelijk is van de kaarten van de spelers te houden (kaarten pakken zolang 'ie onder 17 zit en daarna verplicht stoppen, als ik me niet vergis).
Weet je dat zeker? Als de spelers nu allemaal kapot gespeeld zijn en de deler heeft 12, gaat 'ie dan een kaart pakken?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

als een speler kapot is hoeft de bank (de deler ;), red.) geen kaarten te pakken als ik me niet vergis

[ Voor 12% gewijzigd door .oisyn op 25-03-2003 14:27 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
wat een casino go-ers hier allemaal? :)

Verwijderd

offtopic:
De inzet wordt al weggenomen als de speler dood gaat. Als alle spelers dood zijn kan de bank wel doodgaan, maar is er toch niets meer uit te betalen. Dus kan-ie ook wel stoppen.

Een moeilijkere vraag (als er toch 'casino go-ers' zijn hier): Als de speler met de hoogste kaarten 15 heeft. De bank heeft 16. Koopt de bank dan? Dit is mij een beetje onduidelijk van de casino regels.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
Juup schreef op 25 March 2003 @ 14:23:
Weet je dat zeker? Als de spelers nu allemaal kapot gespeeld zijn en de deler heeft 12, gaat 'ie dan een kaart pakken?
Zelfs als het niet zinloos was om te stoppen, moet de deler pakken; zo zijn de regels nu eenmaal. De deler is een 'automatisme' waar de spelers tegen spelen. Als alle spelers hoger dan 18 hebben en de deler heeft zelf 18, dan moet deze ook stoppen, ook al wéét 'ie zeker dat 'ie zo alles verliest.
Verwijderd schreef op 25 March 2003 @ 15:08:
Een moeilijkere vraag (als er toch 'casino go-ers' zijn hier): Als de speler met de hoogste kaarten 15 heeft. De bank heeft 16. Koopt de bank dan? Dit is mij een beetje onduidelijk van de casino regels.
Ja, dan moet de bank dus ook kaarten kopen (zelfs als dat mogelijk de winst verpest).

[ Voor 30% gewijzigd door Soultaker op 25-03-2003 19:06 ]


Verwijderd

Topicstarter
he mensen,

ik heb jullie tip gevolgd maar kom er nog steeds niet uit. heeft iemand nog tips? ik heb vooral problemen met hoe die verschillende klassen met elkaar moet communiceren:S

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
b:

1 class: 'game' sequence manager:
has x -players
has logic: determines who plays next
determines winner
let's player play by: player[x].play...
ask player if dead ... blbal...

1 class: stack of cards (could be part of 'game')

1 class: dealer, extends player
can card vragen : ie deckof cards.getNew one...
has logic - ie what to do with given hand..
1 class :player == 1hand
can card vragen
has logic - ie what to do with given hand..
1 class :card
doet niets
Pagina: 1