Resetknop werkt niet

Status
Niet open voor verdere reacties.

Tim Hovius

Gebruiker
Lid geworden
25 jan 2008
Berichten
788
Hallo allemaal,

Ik ben bezig met een spel. Alleen heb ik een probleem.
Als ik de reset knop van m'n spel indruk, gebeurt er niks.

Ik snap er niks van. Alle methoden die het spel moeten resetten werken verder wel. Dit heb ik getest met System.out.println()
Het gaat vooral om de klassen SpelPaneel, Level, en Levels.

Omdat je hier om een of andere vage reden de code niet kunt uploaden doe ik het even zo:

Code:
package lunarLockout;

public class Levels
{
	private int[][] level_1, level_2, level_3, level_4, level_5, level_6,
			level_7, level_8, level_9, level_10, level_11, level_12, level_13,
			level_14, level_15, level_16, level_17, level_18, level_19,
			level_20, level_21, level_22, level_23, level_24, level_25,
			level_26, level_27, level_28, level_29, level_30, level_31,
			level_32, level_33, level_34, level_35, level_36, level_37,
			level_38, level_39, level_40;

	public Levels()
	{
		level_1 = new int[5][5];
		level_2 = new int[5][5];
		level_3 = new int[5][5];
		level_4 = new int[5][5];
		level_5 = new int[5][5];
		level_6 = new int[5][5];
		level_7 = new int[5][5];
		level_8 = new int[5][5];
		level_9 = new int[5][5];
		level_10 = new int[5][5];
		level_11 = new int[5][5];
		level_12 = new int[5][5];
		level_13 = new int[5][5];
		level_14 = new int[5][5];
		level_15 = new int[5][5];
		level_16 = new int[5][5];
		level_17 = new int[5][5];
		level_18 = new int[5][5];
		level_19 = new int[5][5];
		level_20 = new int[5][5];
		level_21 = new int[5][5];
		level_22 = new int[5][5];
		level_23 = new int[5][5];
		level_24 = new int[5][5];
		level_25 = new int[5][5];
		level_26 = new int[5][5];
		level_27 = new int[5][5];
		level_28 = new int[5][5];
		level_29 = new int[5][5];
		level_30 = new int[5][5];
		level_31 = new int[5][5];
		level_32 = new int[5][5];
		level_33 = new int[5][5];
		level_34 = new int[5][5];
		level_35 = new int[5][5];
		level_36 = new int[5][5];
		level_37 = new int[5][5];
		level_38 = new int[5][5];
		level_39 = new int[5][5];
		level_40 = new int[5][5];

		// level 1 [x][y]
		level_1[4][0] = 1;
		level_1[2][1] = 2;
		level_1[1][2] = 3;
		level_1[3][3] = 4;
		level_1[4][4] = 10;

		// level 2 [x][y]
		level_2[2][0] = 1;
		level_2[4][1] = 2;
		level_2[1][2] = 3;
		level_2[3][3] = 4;
		level_2[1][4] = 10;

		// level 11 [x][y]
		level_11[2][0] = 1;
		level_11[0][1] = 2;
		level_11[2][1] = 10;
		level_11[4][1] = 3;
		level_11[2][2] = 4;
		level_11[2][3] = 5;

		// level 12 [x][y]
		level_12[1][0] = 1;
		level_12[4][1] = 2;
		level_12[1][4] = 3;
		level_12[4][4] = 10;
	}

	public int[][] getLevel_1()
	{
		return level_1;
	}

	public int[][] getLevel_2()
	{
		return level_2;
	}

	public int[][] getLevel_3()
	{
		return level_3;
	}

	public int[][] getLevel_4()
	{
		return level_4;
	}

	public int[][] getLevel_5()
	{
		return level_5;
	}

	public int[][] getLevel_6()
	{
		return level_6;
	}

	public int[][] getLevel_7()
	{
		return level_7;
	}

	public int[][] getLevel_8()
	{
		return level_8;
	}

	public int[][] getLevel_9()
	{
		return level_9;
	}

	public int[][] getLevel_10()
	{
		return level_10;
	}

	public int[][] getLevel_11()
	{
		return level_11;
	}

	public int[][] getLevel_12()
	{
		return level_12;
	}

	public int[][] getLevel_13()
	{
		return level_13;
	}

	public int[][] getLevel_14()
	{
		return level_14;
	}

	public int[][] getLevel_15()
	{
		return level_15;
	}

	public int[][] getLevel_16()
	{
		return level_16;
	}

	public int[][] getLevel_17()
	{
		return level_17;
	}

	public int[][] getLevel_18()
	{
		return level_18;
	}

	public int[][] getLevel_19()
	{
		return level_19;
	}

	public int[][] getLevel_20()
	{
		return level_20;
	}

	public int[][] getLevel_21()
	{
		return level_21;
	}

	public int[][] getLevel_22()
	{
		return level_22;
	}

	public int[][] getLevel_23()
	{
		return level_23;
	}

	public int[][] getLevel_24()
	{
		return level_24;
	}

	public int[][] getLevel_25()
	{
		return level_25;
	}

	public int[][] getLevel_26()
	{
		return level_26;
	}

	public int[][] getLevel_27()
	{
		return level_27;
	}

	public int[][] getLevel_28()
	{
		return level_28;
	}

	public int[][] getLevel_29()
	{
		return level_29;
	}

	public int[][] getLevel_30()
	{
		return level_30;
	}

	public int[][] getLevel_31()
	{
		return level_31;
	}

	public int[][] getLevel_32()
	{
		return level_32;
	}

	public int[][] getLevel_33()
	{
		return level_33;
	}

	public int[][] getLevel_34()
	{
		return level_34;
	}

	public int[][] getLevel_35()
	{
		return level_35;
	}

	public int[][] getLevel_36()
	{
		return level_36;
	}

	public int[][] getLevel_37()
	{
		return level_37;
	}

	public int[][] getLevel_38()
	{
		return level_38;
	}

	public int[][] getLevel_39()
	{
		return level_39;
	}

	public int[][] getLevel_40()
	{
		return level_40;
	}
}

Code:
package lunarLockout;

public class Level
{
	private Levels levels;
	private int levelLijst[][];
	private int level;

	public Level()
	{
		levels = new Levels();
		levelLijst = new int[5][5];
	}

	public void setLevel(int level)
	{
		this.level = level;

		switch (level)
		{
		case 1:
			levelLijst = (int[][]) levels.getLevel_1().clone();
			break;
		case 2:
			levelLijst = (int[][]) levels.getLevel_2().clone();
			break;
		case 3:
			levelLijst = (int[][]) levels.getLevel_3().clone();
			break;
		case 4:
			levelLijst = (int[][]) levels.getLevel_4().clone();
			break;
		case 5:
			levelLijst = (int[][]) levels.getLevel_5().clone();
			break;
		case 6:
			levelLijst = (int[][]) levels.getLevel_6().clone();
			break;
		case 7:
			levelLijst = (int[][]) levels.getLevel_7().clone();
			break;
		case 8:
			levelLijst = (int[][]) levels.getLevel_8().clone();
			break;
		case 9:
			levelLijst = (int[][]) levels.getLevel_9().clone();
			break;
		case 10:
			levelLijst = (int[][]) levels.getLevel_10().clone();
			break;
		case 11:
			levelLijst = (int[][]) levels.getLevel_11().clone();
			break;
		case 12:
			levelLijst = (int[][]) levels.getLevel_12().clone();
			break;
		case 13:
			levelLijst = (int[][]) levels.getLevel_13().clone();
			break;
		case 14:
			levelLijst = (int[][]) levels.getLevel_14().clone();
			break;
		case 15:
			levelLijst = (int[][]) levels.getLevel_15().clone();
			break;
		case 16:
			levelLijst = (int[][]) levels.getLevel_16().clone();
			break;
		case 17:
			levelLijst = (int[][]) levels.getLevel_17().clone();
			break;
		case 18:
			levelLijst = (int[][]) levels.getLevel_18().clone();
			break;
		case 19:
			levelLijst = (int[][]) levels.getLevel_19().clone();
			break;
		case 20:
			levelLijst = (int[][]) levels.getLevel_20().clone();
			break;
		case 21:
			levelLijst = (int[][]) levels.getLevel_21().clone();
			break;
		case 22:
			levelLijst = (int[][]) levels.getLevel_22().clone();
			break;
		case 23:
			levelLijst = (int[][]) levels.getLevel_23().clone();
			break;
		case 24:
			levelLijst = (int[][]) levels.getLevel_24().clone();
			break;
		case 25:
			levelLijst = (int[][]) levels.getLevel_25().clone();
			break;
		case 26:
			levelLijst = (int[][]) levels.getLevel_26().clone();
			break;
		case 27:
			levelLijst = (int[][]) levels.getLevel_27().clone();
			break;
		case 28:
			levelLijst = (int[][]) levels.getLevel_28().clone();
			break;
		case 29:
			levelLijst = (int[][]) levels.getLevel_29().clone();
			break;
		case 30:
			levelLijst = (int[][]) levels.getLevel_29().clone();
			break;
		case 31:
			levelLijst = (int[][]) levels.getLevel_31().clone();
			break;
		case 32:
			levelLijst = (int[][]) levels.getLevel_32().clone();
			break;
		case 33:
			levelLijst = (int[][]) levels.getLevel_33().clone();
			break;
		case 34:
			levelLijst = (int[][]) levels.getLevel_34().clone();
			break;
		case 35:
			levelLijst = (int[][]) levels.getLevel_35().clone();
			break;
		case 36:
			levelLijst = (int[][]) levels.getLevel_36().clone();
			break;
		case 37:
			levelLijst = (int[][]) levels.getLevel_37().clone();
			break;
		case 38:
			levelLijst = (int[][]) levels.getLevel_38().clone();
			break;
		case 39:
			levelLijst = (int[][]) levels.getLevel_39().clone();
			break;
		case 40:
			levelLijst = (int[][]) levels.getLevel_40().clone();
			break;
		}
	}
	
	public void resetLevel()
	{
		levels = new Levels();
	}

	public int getLevel()
	{
		return level;
	}

	public void setLevelLijst(int[][] levelLijst)
	{
		this.levelLijst = levelLijst;
	}

	public int[][] getLevelLijst()
	{
		return levelLijst;
	}

}
 
Laatst bewerkt:
uhm ik wil je graag helpen maar ik ga geen 50 pagina's nakijken... mischien een idee om het stukje wat er niet doet of wat fout is hier te plaatsen?
 
Sorry, ik dacht dat het misschien handig was dat je alle code had. Maar het gaat om de methode resetLevel(). Naar mijn idee doet deze niks waardoor het level niet gereset wordt. In de klasse levels staan alle levels. De klasse level moet een level selecteren.

Ik wil dat een level uit de klasse Levels niet veranderd kan worden. De klasse Level moet een level ophalen uit de klasse levels. Gedurende het spel kan de klasse Level wel aangepast worden, maar deze aanpassingen mogen niet doorgevoerd worden naar de klasse levels, omdat de levels hetzelfde moeten blijven.

Ik heb al geprobeerd met clone() enzo te werken, maar het lijkt erop of dit niet helpt ...
 
Laatst bewerkt:
Hoi,

Een tip. Ga niet alle Levels resetten in de reset-methode. Geef een parameter mee met het huidige level.
Sla dit huidige level eventueel op als variabele. Level gehaald, huidig level + 1.

Dit is veel sneller dan het weer moeten aanmaken van 40 2d-arrays.
Je nieuwe reset-methode zal dus wel moeten gaan werken.
Je wilt het huidige level resetten, je maakt een nieuw level aan (beginsituatie - en alleen dit level, niet alle andere levels!).

Ik weet niet hoe je het huidige level laat zien, want de code staat er niet.
Mogelijk wil je een soort repaint()-methode aanroepen, om alles opnieuw te tekenen.
Je kunt ook hard tegen de GUI zeggen, mits je deze hebt, waar ik van uit ga, om een nieuw panel te tekenen.

Aangezien ik geen code heb, kan ik niet oordelen. Pas eerst de tip toe in de code om het efficiënter te maken, dan kijken we hoe de GUI van je in elkaar steekt.

Met vriendelijke groeten,

d0mzy
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan