tetriskloon, valt een (deel)blok nog verder

  • Onderwerp starter Onderwerp starter c er
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

c er

Gebruiker
Lid geworden
11 dec 2007
Berichten
144
Hallo, ik ben bezig met een soort tetriskloon m.b.v. code van het internet.

Ik heb een vraag over blokken of een deel van een blok dat verder
naar beneden valt bij het verdwijnen van een rij.

Bijvoorbeeld:

Code:
Stel je begint zo:
Het blokje P bestaande uit de letters p valt naar beneden.
rij
5     |     p    |
4     |    ppp   |
3     |         l|
2     |xxxx   lll|
1     | xxxx xxxx|
      ============  fig1
Dan krijg je na 2 stappen:
rij
5     |          |
4     |          |
3     |     p   l|
2     |xxxxppplll|
1     | xxxx xxxx|
      ============  fig2
Vervolgens verdwijnt de 2de rij, de rij is immers helemaal vol.
Dan krijg je:
rij
5     |          |
4     |          |
3     |          |
2     |     p   l|
1     | xxxx xxxx|
      ============  fig3
De vraag is nu of het blok je p nog naar beneden valt zodat uit eindelijk
deze situatie ontstaat:
rij
5     |          |
4     |          |
3     |          |
2     |         l|
1     | xxxxpxxxx|
      ============  fig4
Bij code die ik op net gevonden heb gebeurt dat namelijk niet.
link naar de code http://www.gamedev.net/community/forums/topic.asp?topic_id=192483

Edit:
Hier een gedeelte van de code waarbij een rij verwijderd wordt.[cpp]
const int MAPWIDTH=10;
const int MAPHEIGHT=30;
int Map[MAPWIDTH][MAPHEIGHT+1]; //the game map!

void RemoveRow(int row)
{
int x,y;
int counter=0;

for(x=0; x< MAPWIDTH; x++)
for(y=row; y>0; y--)
Map[x][y]=Map[x][y-1];

}

en de code die RemoveRow() aanroept
i en j zijn hier ook ints: int i,j;
//check for cleared row!

for(j=0; j< MAPHEIGHT; j++)
{
bool filled=true;
for(i=0; i< MAPWIDTH; i++)
if(Map[ i ][j] == TILEBLACK)
filled=false;

if(filled)
{
RemoveRow(j);
}
}
[/cpp]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan