Archief - [PROG][C#] Classes probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

sabaoth

Legacy Member
Ik ben juist begonnen met een breakout te maken in XNA gamestudio en ik heb een probleem.
Ik heb 2 classes "Player" & "Ball" maar er klopt iets niet. Als ik compile krijg ik deze error: "NullReferenceException was unhandled by user code".

De classes staan hier (ook aangeduid waar de error zit):
www.randomcrap.somee.com/classes.htm

het is waarschijnlijk een heel domme fout :$

Tyfius

Legacy Member
Volgens mij zit jij toch met een serieuze memory leak. Je maakt een oneindige loop aan van Players en Balls.

Tyfius

Legacy Member
Uw code herwerken. Je maakt in de klasse Player een new Ball aan, in new Ball een new Player, in die nieuwe Player een nieuwe Ball, ...
Daar zit een denkfout.

sabaoth

Legacy Member
Hoe krijg ik dan info van de speler in den bal? Zodat de bal weet waar de speler is. Ik snap het nimeer :s

schop aars

Legacy Member
beste manier is
klasse speler maken met verschillende eigenschappen: positie, ...
en bij bal ook positie en bv kleur as ge me verschillende kleuren ballen wilt werken ofzo ge ziet wel,enzo
en die variabelen maakte dan private maar ge maakt in elke klasse wel methoden om de waarde van die variabelen te kunnen setten(instellen dus) en te getten(lezen wa der instaat)
kvind al raar dagge eigenlijk uwe speler nen bal doet maken en nie dagge een algemene klasse hebt die speler(s) en bal(len) aanmaakt.

volgens mij loopt ge best eerst de beginsellen van oo-programmeren nog is over(als ge het al kende en anders leerde da maar). en dan zal der al veel duidelijk worden

sabaoth

Legacy Member
Ik heb in totaal 3 classes:
Game -> Hier gebeurt alles in tekenen updaten (bal en speler maken)
Ball -> alle eigenschappen van de bal en update functie ervan
Player -> alle eigenschappen van de speler en update functie

Nu zouden de x en y waarden van Ball moetten kunnen weet waar de x en y van Player zit. Zodat Ball kan zien of ze elkaar raken. Zoja moet hij terug botsen anders mag hij verder doen zoals hij bezig was.
Maar hoe kan ik Ball de x en y waar geven van Player?

killgore

Legacy Member
N/o, ma kon gij eigenlijk al programmeren voor ge hiermee begon :/?

jodeman

Legacy Member
sabaoth zei:
Hoe krijg ik dan info van de speler in den bal? Zodat de bal weet waar de speler is. Ik snap het nimeer :s

je hebt in de twee klassen veel dezelfde logica dat terugkomt, maak een klasse gameobject en erf hiervan over bij bal en bij speler vb. x,y waarden, tekeningen, dimensie die ze innemen enz.
Zoals jij het hierboven doe kun je onmogelijk in speler aan de info van bal raken of omgekeerd. Je moet dit doen bijvoorbeeld in klasse game.

Code:
public class Game {
     private Speler speler;
     private Ball ball;

     public Game() {
          speler = new Speler();
          ball = new Ball();
     }
}

dan kun je in game aan info van ball en speler. Ik zou u ook aanraden van met properties te werken in plaats van met publieke variabelen.

Hopelijk ben je hier iets mee.

edit : je krijgt die error omdat je texture2D nergens initialiseert en dan een deling door 0 uitvoert. Dat smijt een exceptie en je vangt die nergens op.

schop aars

Legacy Member
sabaoth zei:
Ik heb in totaal 3 classes:
Game -> Hier gebeurt alles in tekenen updaten (bal en speler maken)
Ball -> alle eigenschappen van de bal en update functie ervan
Player -> alle eigenschappen van de speler en update functie

Nu zouden de x en y waarden van Ball moetten kunnen weet waar de x en y van Player zit. Zodat Ball kan zien of ze elkaar raken. Zoja moet hij terug botsen anders mag hij verder doen zoals hij bezig was.
Maar hoe kan ik Ball de x en y waar geven van Player?

wel ge hebt dus methodes gemaakt blijkbaar voor het updaten maar wa gij wilt is het opvraggen van de waarden nu zoals ik hierboven al gezegd heb is het best gebruik te maken van setters en getters methoden die de waarden van uw variabelen instellen(setten) en opvragen(getten) die methoden maakt ge dan publiek en dan kunt ge die aanroepen
stel ge hebt ne speler gemaakt die ge blabla noemt
en de getfunctie noemt getposx
dan kunde spelerpositiex = blabla.getposx() doen en da geeft dan de waarde terug van de speler.
ma dees is echt basic en als ge daar nie mee weg zijt zounek echt nie beginnen me spellekes maken want anders gaat uw spel totaal nie performant zijn en de code van uw spel zal ook superlang zijn.
kzou zeggen kgeef een voorbeeldje van code maar ik ken enkel java nie da da veel verschilt van principes mor mss beter dagge direct een voorbeeldje in de juist programmeertaal krijgt

edit: ik ben er me van bewust dat ik geen interpunctie gebruikt heb.

sabaoth

Legacy Member
nvm kheb het al gefixt, en ja killgore ik kon al programmere

WHiSPy

Legacy Member
sabaoth zei:
nvm kheb het al gefixt, en ja killgore ik kon al programmere

Er is wel 'n duidelijk verschil tussen syntax en semantiek op vlak van programmeren, hé. :)

killgore

Legacy Member
sabaoth zei:
nvm kheb het al gefixt, en ja killgore ik kon al programmere

weird, der worden hier nl. enkele extreme basisfouten verbeterd.

Probeerde niet te lopen voor ge kunt stappen?

(n/o meant ze ;)).

edit: en ik bedoel hier dan dat je OO-design basisfouten maakt eh ;).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan