Archief - tetris-like game.

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.

QuietKillah

Legacy Member
hoi, ik maak blokken en zit in de problemen met het tetris gedeelte.
namelijk het vallen, en stoppen als hij naar links en rechts gaat (het blokje) lukt niet naar behoren. Ook het rotaten weet ik niet goed hoe aan te beginnen.
ziehier wat ik al heb:

voor het vallen:
na het tweede blokje dat gevallen is, komt er een nieuwe vraag, maar dan blijft het 2e blokje doorvallen, en blijft hij de trace(field) dus tonen.
Code:
private function drop(event:TimerEvent):void
{
	var tempField= new Array();
	var hit:Boolean = checkHit(tempField);
	if (hit == false)
	{
		field = tempField;
		Shape.y +=  23;
	}
	else
	{
		trace("done");
		for(var iii=0;iii<20;iii++)
		{
			for(var jjj=0;jjj<10;jjj++)
			{
				if (field[iii][jjj] == 2)
				{
					field[iii][jjj] = 1;
				}
			}
		}
		trace(field);
		aantalBlokken++;
		//stelvraag();
		trace(aantalBlokken);
		if (aantalBlokken<2){
		getBlok();}
		else{
			if(vraag<5){
				vraag++;
				stelvraag();
			aantalBlokken=0;}
			else{
				trace("ronde 2");
			}
		}
	}
}

stoppen aan zijkanten:
Code:
private function move(direction:String):void{
	var tempField= new Array();
	var hit:Boolean;
	if (direction=="left"){
		hit = checkSides(tempField,"left");
		if (hit == false){
			field = tempField;
		Shape.x -= 23;}
	}else if(direction=="right"){
		hit = checkSides(tempField,"right");
		if (hit == false){
			field = tempField;
		Shape.x += 23;}
	}else if(direction=="rotate"){
		
	}
}
private function checkSides(tempField:Array,direction:String):Boolean{
	var side:Boolean = false;
	for(var i = 0; i < 20; i++)
	{
		tempField.push(new Array());
		for(var j = 0; j < 10; j++)
		{
			tempField[i][j] = 0;
		}
	}
	for(var ii = 0; ii < 20; ii++)
	{
		for(var jj = 0; jj < 10; jj++)
		{
			if (field[ii][jj] == 2)
			{
				if (jj < 10 && jj>0)
				{
					if(direction=="right"){
						if (field[ii][jj+1] != 1)
						{
							//trace(field);
							tempField[ii][jj+1] = 2;
						}
						else
						{
							trace("hier");
							side = true;
						}}else if(direction=="left"){
							if (field[ii][jj-1] != 1)
							{
								//trace(field);
								tempField[ii][jj-1] = 2;
							}
							else
							{
								trace("hier");
								side = true;
							}
						}
					}
					else
					{
						side = true;
					}
				}
				else if (field[ii][jj]==1)
				{
					tempField[ii][jj] = 1;
				}
			}
		}
		return side;
	}

en voor rotaten :p:
Code:
//geen idee hoe te beginnen

Zero Grav

Legacy Member
't Is gemakkelijker om het project even te kunnen zien als ge het niet erg vindt. Dan kan ik ook zien waar het precies misgaat.

Zero Grav

Legacy Member
Neen man, daar kan ik ook kop noch staart aan krijgen. Kan het sowieso al niet uittesten zonder de services en een dbdump, maar dan nog is het wat teveel werk om al die loopkes te gaan doorpluizen en variabelenamen te gaan decoderen. :p

QuietKillah

Legacy Member
maar het vragengedeelte met database enzo werkt ze ... dus tis maar de blokskes die vallen enzo die nie werken moetk anders es de code maken dat het gewoon tetris is zonder het vragengedeelte? ofzo? :p


EDIT: misschien zou wa uitleg erbij ook handig zijn.
kheb dus een 2D array van 20x10 dat mijn tetrisveld voorstelt. (genaamd field)
deze vul ik op met allemaal 0-en (in een loop). (0 wil zeggen geen blokjes aanwezig)
als er een blokje op de stage komt komt die ook in de juiste positie in die array als 2-tjes. (= vallend blokje).
Wanneer het blokje volledig beneden is veranderen de 2tjes in 1-tjes (=gevallen blokje op bodem).
in de array kan ik dan checken ofdat er onder het 2e vallende blokje (2tjes) geen 1tjes staan en dus dat de kust veilig is om nog 1 blokje naar beneden te vallen, enzodoor.

QuietKillah

Legacy Member
kheb het ook al geprobeerd op die manier, maar dan zat ik heel in de knoop met het op elkaar vallen van blokjes, da ging nie echt goed, en ook kon ik me nie echt een makkelijke manier vinden om dan als er 1 lijn is de onderste weg te doen.

QuietKillah

Legacy Member
kheb die al es bekeken en tziet er goed uit ma ze gebruiken lik 1000 classes ofzo :p
ma kga mss ook moeten werken met wa meer classes enzo :p

QuietKillah

Legacy Member
kben op een andere manier begonnen en kzit al een pak verder, maar nu zit ik in de problemen met het rotaten.
hoe bepaal je de x en y pos van de 4 apparte blokjes van een tetrisblok tijdens het rotaten?
[1][2]
[3][4]

dit is bijvoorbeeld het vierkant met blokje 1,2,3 en 4, bij het rotaten wordt dit
[3][1]
[4][2]

bij andere vormen:
[1]
[2]
[3][4]
wordt:
[3][2][1]
[4]

hoe kan ik dit berekenen? iemand enig idee?
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