C# Monopoly namaken

Status
Niet open voor verdere reacties.

BramVan

Gebruiker
Lid geworden
8 dec 2016
Berichten
31
Hoi allemaal, dit is mijn eerste post hier op het forum en al meteen heb ik hulp nodig. Ik moet als projectopdracht voor de les Softwareontwikkeling het gezelschapsspel Monopoly namaken in C#.
Echter, allemaal kleine oefeningetjes maken viel nog mee, maar ik heb geen flauw idee hoe hieraan te beginnen..

Een Windows Form Application wordt het sowieso denk ik, maar dan heb ik het eerder over welke verschillende klasses ik aanmaak?
Een klasse "Speler" lijkt me logisch, en een Form "Spelbord", maar daar stopt het ook op dit moment voor mij.
Mocht er iemand ervaring hebben hierin en me willen op weg helpen zou dit een grote hulp kunnen zijn. Ik ga zeker en vast zelf wat proberen prutsen ook.

Bram
 
Gewoon je classes verder uitwerken:

Speelbord -> vakjes
vakjes -> effecten / status
Speelbord -> kaarten (kans, etc.)
kaarten -> effecten/status

Speler klasse is in principe genoeg, omdat spelers elkaar niet direct kunnen beïnvloeden. ze kunnen echter wel het spelbord beïnvloeden. dus je zou kunnen splitsen naar een "Speler-acties" en "speler-status"
 
Gewoon je classes verder uitwerken:

Speelbord -> vakjes
vakjes -> effecten / status
Speelbord -> kaarten (kans, etc.)
kaarten -> effecten/status

Speler klasse is in principe genoeg, omdat spelers elkaar niet direct kunnen beïnvloeden. ze kunnen echter wel het spelbord beïnvloeden. dus je zou kunnen splitsen naar een "Speler-acties" en "speler-status"

Hey, allereerst bedankt om me te willen helpen. Dan wil ik even vragen om wat meer uitleg, omdat ik niet zo goed snap waar je naartoe wil.. Wat wil een -> pijl zeggen?
Dan eronder zeg je "Speler klasse is in principe genoeg", maar dan erboven geef je al andere classes (?) aan?
 
Hoofdklasse speelbord
->subklasse vakje
->subklasse speelkaarten

hoofdklasse speler
of
hoofdklasse speler
->subklasse speler-acties
->subklasse speler-status

Je gaat gewoon net zo lang door dat je alleen een groep functies overhoud. Er is geen ideale indeling voor alle klasses.

zowel kaarten en speelvakjes kunnen effecten hebben. als ze veel overeenkomstige effecten hebben kun je ze bundelen. Als ze voornamelijk anders zijn kun je ze in hun eigen klasse laten.

meeste speelvakjes hebben in principe 3 mogelijke status: onverkocht, verkocht, verkocht/verpand... kan dus prima in een vakjesklasse.

vakjesklasse kun je dus mogelijk opdelen in:
- standaardvakjes
- speciaal vakje

of je kunt het 1 klasse laten en een aantal speciale procedures toevoegen.
 
Hoofdklasse speelbord
->subklasse vakje
->subklasse speelkaarten

hoofdklasse speler
of
hoofdklasse speler
->subklasse speler-acties
->subklasse speler-status

Je gaat gewoon net zo lang door dat je alleen een groep functies overhoud. Er is geen ideale indeling voor alle klasses.

zowel kaarten en speelvakjes kunnen effecten hebben. als ze veel overeenkomstige effecten hebben kun je ze bundelen. Als ze voornamelijk anders zijn kun je ze in hun eigen klasse laten.

meeste speelvakjes hebben in principe 3 mogelijke status: onverkocht, verkocht, verkocht/verpand... kan dus prima in een vakjesklasse.

vakjesklasse kun je dus mogelijk opdelen in:
- standaardvakjes
- speciaal vakje

of je kunt het 1 klasse laten en een aantal speciale procedures toevoegen.

Bedankt, ik zie even wat ik hiermee kan :)
 
Nog een vraagje hierbij; Ik wil dus graag een Form met het spelbord en knoppen om het spel te spelen. Maar is mijn mainklasse dan de code van die Form of hoe roep ik die Form dan op?
 
Een form is gewoon een object zoals ieder ander. Je bent dus vrij om een apart form te ontwikkelen voor je speelbord. of 10. of 100.

Het enige echte verschil met de meeste andere objecten is dat Microsoft in visual studio een designer voor de forms meegeeft. Echter onder water is het ook gewoon code. In principe kun je een form, alle knoppen e.d. helemaal zelf bouwen vanuit het niets, zou je dat echt willen ;)

Waarschijnlijk is dit je vraag niet echt, maar wat je moet instellen is afhankelijk van het project en welke ontwikkel-omgeving je gebruikt. Als je visual studio met een form project gebruikt heb je in principe alle code en instellingen al om je eerste form te gebruiken.
 
Een form is gewoon een object zoals ieder ander. Je bent dus vrij om een apart form te ontwikkelen voor je speelbord. of 10. of 100.

Het enige echte verschil met de meeste andere objecten is dat Microsoft in visual studio een designer voor de forms meegeeft. Echter onder water is het ook gewoon code. In principe kun je een form, alle knoppen e.d. helemaal zelf bouwen vanuit het niets, zou je dat echt willen ;)

Waarschijnlijk is dit je vraag niet echt, maar wat je moet instellen is afhankelijk van het project en welke ontwikkel-omgeving je gebruikt. Als je visual studio met een form project gebruikt heb je in principe alle code en instellingen al om je eerste form te gebruiken.

Ik gebruik Visual Studio dus onrechtstreeks is mijn eerste vraag al wat beantwoord. Mijn main klasse zal nog steeds een gewone klasse zijn en daarin moet ik dan mijn Form(s) aanroepen, hoe dat gaat zal ik wel nog uitvinden (hoop ik).
 
Mochten er nog mensen andere gedachtenideeën hebben, geef ze gerust!
 
Afgezien van de classes, als je nog redelijk nieuw bent in programmeren schrijf een aantal aparte programmaatjes om te oefenen:

- een dobbelsteen werper (werken met random)
- Een programma dat kaarten kan schudden en de bovenste kaart kan trekken (random en werken met lists / andere collecties)
- een grafische output met een eigen geladen bitmap achtergrond en/of eigen gemaakte draw calls
- een programma dat dynamisch elementen aanmaakt op een form en eventueel daaraan gekoppeld system events

hap niet teveel af en voor elk probleem dat je op moet lossen schrijf eerst even een losstaande oefening. Het voorkomt veel frustratie en voorkomt dat je je teveel op dingen focust die niet belangrijk zijn. Doe grafische dingen e.d. als laatste en maak eerst de engine, ipv omgekeerd
 
Afgezien van de classes, als je nog redelijk nieuw bent in programmeren schrijf een aantal aparte programmaatjes om te oefenen:

- een dobbelsteen werper (werken met random)
- Een programma dat kaarten kan schudden en de bovenste kaart kan trekken (random en werken met lists / andere collecties)
- een grafische output met een eigen geladen bitmap achtergrond en/of eigen gemaakte draw calls
- een programma dat dynamisch elementen aanmaakt op een form en eventueel daaraan gekoppeld system events

hap niet teveel af en voor elk probleem dat je op moet lossen schrijf eerst even een losstaande oefening. Het voorkomt veel frustratie en voorkomt dat je je teveel op dingen focust die niet belangrijk zijn. Doe grafische dingen e.d. als laatste en maak eerst de engine, ipv omgekeerd

Bedankt voor de tips. Ik ging inderdaad eerst aan de slag gaan met de GUI enzoverder, maar ik ga me eerste bezig houden met de engine dus. Ik post nog verdere problemen hier waarschijnlijk :)
 
In welke klasse ga ik best al mijn kaarten steken en de waardes van huizen etc?

Maak ik een aparte klasse voor de posities van het spelbord? Ik zou namelijk een Array maken met het aantal plaatsen dat je kan op staan, dus bvb Array spelbordPlaats[10] = de elfde plaats op het bord. Steek ik dit best rechtstreeks in de klasse speler?
 
je kunt zoals ik boven al aangaf beter een "vakjes" klasse maken en dan een array maken van "vakjes". Vakjes kunnen eventueel opgedeeld worden in "normaal" en "speciaal. Straten, stations worden dan "normaal" (hebben allemaal een waarde, gekocht, verkocht etc.) en speciaal wordt dan gevangenis, start, kans kaart, etc.

Geen superklasse maken dus die niet gerelateerd is aan een groep objecten.
 
je kunt zoals ik boven al aangaf beter een "vakjes" klasse maken en dan een array maken van "vakjes". Vakjes kunnen eventueel opgedeeld worden in "normaal" en "speciaal. Straten, stations worden dan "normaal" (hebben allemaal een waarde, gekocht, verkocht etc.) en speciaal wordt dan gevangenis, start, kans kaart, etc.

Geen superklasse maken dus die niet gerelateerd is aan een groep objecten.

Bedankt voor je reactie. Ik wil je zeker niet ergeren en dingen die je zegt negeren, maar als dit voorkomt is het gewoon omdat ik jouw idee niet goed door had. Ik probeer even verder.
Over die vakjes klasse, als ik eenmaal de array vakjes heb aangemaakt, hoe geef ik dan bvb de vakjes[5] de waarde normaal, waarin in dan wil zetten dat deze nog beschikbaar is en 450 kost (bijvoorbeeld)?
 
En dan een bijhorende vraag; wat bedoel je net met een "subklasse" en moet je deze anders aanmaken dan een gewone klasse die je toevoegt?

EDIT: Ik denk dat je bedoelt dat ik in de subklasse de hoofdklasse overerf?
 
Laatst bewerkt:
inderdaad. inheritance.

De status is een waarde (enum) : onverkocht, verkocht, verpand. Je hebt een eigenaar. Je hebt een koopprijs, je hebt een "stad". etc.
 
inderdaad. inheritance.

De status is een waarde (enum) : onverkocht, verkocht, verpand. Je hebt een eigenaar. Je hebt een koopprijs, je hebt een "stad". etc.

En de eigenaar is dan een gewone string, de koopprijs een int en de stad ook weer een string? Dit maak je dan aan in de subklasse vakje dacht ik?
 
De stad kan een aparte klasse zijn. De speler zou geen string moeten zijn maar van een player-object
 
De stad kan een aparte klasse zijn. De speler zou geen string moeten zijn maar van een player-object

Ja, inderaad, gewoon een object van de Speler klasse. Was redelijk dom van me.
Over de spelkaarten, zou ik deze best in een List steken of ga ik beter een andere Collection gebruiken?
 
een list is in principe prima. Je hebt in dit geval wel een aantal andere opties. in principe kun je ook een "queue" of een "stack" gebruiken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan