array met objecten

Status
Niet open voor verdere reacties.

LLocke

Nieuwe gebruiker
Lid geworden
27 feb 2007
Berichten
3
Code:
import java.awt.Canvas;
import java.awt.Color;


public class MEJN_speelbord extends Canvas {
// Attributen
	private veld[] velden;
	
// Creator
	public MEJN_speelbord() {
		 setSize(300, 300);
		 setBackground(Color.white);
[COLOR="Red"]		 velden[ 1] = new veld(100, 250, 25);
		 velden[ 2] = new veld(100, 225, 25);
		 velden[ 3] = new veld(100, 200, 25);
		 velden[ 4] = new veld(100, 175, 25);
		 velden[ 5] = new veld(100, 150, 25);
		 velden[ 6] = new veld( 75, 150, 25);
		 velden[ 7] = new veld( 50, 150, 25);
		 velden[ 8] = new veld( 25, 150, 25);
		 velden[ 9] = new veld(  0, 150, 25);
		 velden[10] = new veld(  0, 125, 25);
		 velden[11] = new veld(  0, 100, 25);
		 velden[12] = new veld( 25, 100, 25);
		 velden[13] = new veld( 50, 100, 25);
		 velden[14] = new veld( 75, 100, 25);
		 velden[15] = new veld(100, 100, 25);
		 velden[16] = new veld(100,  75, 25);
		 velden[17] = new veld(100,  50, 25);
		 velden[18] = new veld(100,  25, 25);
		 velden[19] = new veld(100,   0, 25);
		 velden[20] = new veld(125,   0, 25);
		 velden[21] = new veld(150,   0, 25);
		 velden[22] = new veld(150,  25, 25);
		 velden[23] = new veld(150,  50, 25);
		 velden[24] = new veld(150,  75, 25);
		 velden[25] = new veld(150, 100, 25);
		 velden[26] = new veld(175, 100, 25);
		 velden[27] = new veld(200, 100, 25);
		 velden[28] = new veld(225, 100, 25);
		 velden[29] = new veld(250, 100, 25);
		 velden[30] = new veld(250, 125, 25);
		 velden[31] = new veld(250, 150, 25);
		 velden[32] = new veld(225, 150, 25);
		 velden[33] = new veld(200, 150, 25);
		 velden[34] = new veld(175, 150, 25);
		 velden[35] = new veld(150, 150, 25);
		 velden[36] = new veld(150, 175, 25);
		 velden[37] = new veld(150, 200, 25);
		 velden[38] = new veld(150, 225, 25);
		 velden[39] = new veld(150, 250, 25);
		 velden[40] = new veld(125, 250, 25);[/COLOR]
	}

// Getters

// Setters

// Classes
	private class veld extends Canvas {
	// Attributen
		private Integer xPos;
		private Integer yPos;
		private Integer size;
		private Integer speler;
		
	//Creator
		public veld(Integer x, Integer y, Integer s) {
			setSize(s,s);
			xPos = x;
			yPos = y;
		}
	}
}

Dag mensen, ik ben nog niet zo lang met Java bezig, en ik ben bezig met het spel Mens Erger Je Niet (zal ik even afkorten met MEJN) te maken.

Ik heb de velden op het speelbord in een array opgenomen, maar hier gaat iets fout. ik weet dat het bij het aanmaken van de velden fout gaat, want als ik dit gedeelte als commentaar opneem dan werkt het programma wel (voor zover het al iets doet ;) )

kan het zijn dat ik pointers moet gebruiken bij het aanmaken van de velden in het array?
 
Probeer eens:
Code:
private veld[] velden = new veld[40];

Want je had de array nog geen lengte meegegeven
 
Laatst bewerkt:
Nee, java heeft geen pointers, maar is wel hoofdlettergevoelig. Je hebt zeker een klasse Veld aangemaakt en wil op elke positie in de array een Veld aanmaken. Het moet dus zijn velden[1] = new Veld(...); Bovendien bestaat een array met 40 posities uit de plaatsen 0 t/m 39 en niet 1 t/m 40. Het laatste element heeft dus index 39.
 
Probeer eens:
Code:
private veld[] velden = new veld[40]();

Want je had de array nog geen lengte meegegeven

Het gebruik van new is geen functie, maar de aanroep van een constructor. Voor een array was dat wel degelijk goed, alleen moet er een hoofdletter gebruikt worden. Het moet dus zijn:
private Veld[] velden = new Veld[40];
 
Nee, java heeft geen pointers, maar is wel hoofdlettergevoelig. Je hebt zeker een klasse Veld aangemaakt en wil op elke positie in de array een Veld aanmaken. Het moet dus zijn velden[1] = new Veld(...); Bovendien bestaat een array met 40 posities uit de plaatsen 0 t/m 39 en niet 1 t/m 40. Het laatste element heeft dus index 39.

De veld klasse staat bij-in de code welke meegegeven is.
En die is met kleine letter.

Het gebruik van new is geen functie, maar de aanroep van een constructor. Voor een array was dat wel degelijk goed, alleen moet er een hoofdletter gebruikt worden. Het moet dus zijn:
private Veld[] velden = new Veld[40];

Waar zie je mij zeggen dat het een functie is? ;)
 
Laatst bewerkt:
Dan wordt dat zeker ook niet goed herkend. Klassen horen in Java nou eenmaal met een hoofdletter geschreven te worden.
 
Probeer eens:
Code:
private veld[] velden = new veld[40];

Want je had de array nog geen lengte meegegeven


De hoofdletter maakte niets uit, het is misschien standaard dat dit in Java wel gedaan wordt, maar het is zeker geen verplichting.
Na aanpassen naar Veld met hoofdletter deed hij nog steeds niets.

Bovenstaande oplossing van killermenace werkt wel, nu moet ik alleen de velden nog weergeven op mijn speelbord =)


Wel nog de vraag of er bij
Code:
private veld[] velden = new veld[40];
niet al alle velden aangemaakt worden, waarna ik dat nog eens herhaal voor elk veld in het array met deze code?
Code:
velden[xx] = new Veld (xxx, xxx, xx);



ps, bedankt voor jullie snelle reactie :thumb:
 
Je moet nog wel beginnen met velden[0] = new veld(x,y,z);
Omdat een array bij 0 begint.

Bij de contructor(stuk code wat ik gaf) wordt alleen array aangemaakt met een bepaalde lengte. Er wordt daar nog niets ingezet.
Dan hebben de velden verder nog geen waarden, die geef je er bij het 2e stuk er dus aan.
 
Je moet nog wel beginnen met velden[0] = new veld(x,y,z);
Omdat een array bij 0 begint.

Bij de contructor(stuk code wat ik gaf) wordt alleen array aangemaakt met een bepaalde lengte. Er wordt daar nog niets ingezet.
Dan hebben de velden verder nog geen waarden, die geef je er bij het 2e stuk er dus aan.

:thumb:

de arraywaarden 1..40 had ik al aangepast naar 0..39
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan