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:
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]
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
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: