forked from Tituya/AST3_C
ajout blocks apparaissant et disparaissant avec clefs
This commit is contained in:
parent
6cada13c72
commit
79836d70fe
Binary file not shown.
After Width: | Height: | Size: 266 B |
Binary file not shown.
After Width: | Height: | Size: 116 B |
|
@ -14,7 +14,10 @@ char collide(int x, int y, char level[], char gravity, char block) //detect if p
|
|||
|
||||
char collide_solid(int x, int y, char level[], char gravity)
|
||||
{
|
||||
return collide(x, y, level, gravity, '1') || collide(x, y, level, gravity, '2');
|
||||
return collide(x, y, level, gravity, '1')
|
||||
|| collide(x, y, level, gravity, '2')
|
||||
|| collide(x, y, level, gravity, '3')
|
||||
|| collide(x, y, level, gravity, '4');
|
||||
}
|
||||
|
||||
char collide_dead(int x, int y, char level[])
|
||||
|
|
|
@ -8,6 +8,8 @@ extern bopti_image_t img_solid_1; //another solid block
|
|||
extern bopti_image_t img_dead; //dead block
|
||||
extern bopti_image_t img_player; //player
|
||||
extern bopti_image_t img_end; //end of level
|
||||
extern bopti_image_t img_key1; //key 1
|
||||
extern bopti_image_t img_keyblock; //block link to the key1
|
||||
|
||||
void draw_player(int x, int y)
|
||||
{
|
||||
|
@ -23,18 +25,30 @@ void draw_level(char level[])
|
|||
{
|
||||
switch(level[i])
|
||||
{
|
||||
case '1':
|
||||
case '1': //solid block
|
||||
dimage(x,y,&img_solid_0);
|
||||
break;
|
||||
case '2':
|
||||
case '2': //another solid block
|
||||
dimage(x,y,&img_solid_1);
|
||||
break;
|
||||
case 'd':
|
||||
case 'd': //dead block
|
||||
dimage(x,y,&img_dead);
|
||||
break;
|
||||
case 'e':
|
||||
case 'e': //end of level
|
||||
dimage(x,y,&img_end);
|
||||
break;
|
||||
case '3': //block link to the key1
|
||||
dimage(x,y,&img_keyblock);
|
||||
break;
|
||||
case 'k': //key1
|
||||
dimage(x,y,&img_key1);
|
||||
break;
|
||||
case '4': //block link to the key2
|
||||
dimage(x,y,&img_keyblock);
|
||||
break;
|
||||
case 'K': //key2
|
||||
dimage(x,y,&img_key1);
|
||||
break;
|
||||
}
|
||||
x+=16;
|
||||
if(x==16*25)
|
||||
|
|
16
src/main.c
16
src/main.c
|
@ -131,6 +131,22 @@ int main(void)
|
|||
player_x = start_x;
|
||||
player_y = start_y;
|
||||
}
|
||||
if(collide(player_x, player_y, level, gravity, 'k')) //Collide with key1 = disappearance of blocks
|
||||
{
|
||||
for (int i = 0; level[i]!='\0' ; i++)
|
||||
{
|
||||
if(level[i]=='3') level[i]='0';
|
||||
if(level[i]=='k') level[i]='0';
|
||||
}
|
||||
}
|
||||
if(collide(player_x, player_y, level, gravity, 'K')) //Collide with key2 = appearance of blocks
|
||||
{
|
||||
for (int i = 0; level[i]!='\0' ; i++)
|
||||
{
|
||||
if(level[i]=='a') level[i]='4';
|
||||
if(level[i]=='K') level[i]='0';
|
||||
}
|
||||
}
|
||||
if(player_y>=212) player_y=-4;
|
||||
if(player_y<-6) player_y=212;
|
||||
}
|
||||
|
|
|
@ -12,12 +12,14 @@ void set_level(int id_level, char level[], int *startx, int *starty, char *gravi
|
|||
switch(id_level)
|
||||
{
|
||||
case 1:
|
||||
//memcpy(level,"11111ddd111111111111001111000000000000000000000001000000000000001dddd100000000000000111110000000000010000000000001000000000021222000000000d000000000022000000000000d000000000012000000000000200000000001200000000000020000000000110001111000002000001122211000000101111100000100001100000010100020000010000110s00001000002000001000e111122111111dd111121100111",350);
|
||||
memcpy(level,"11010011111011111111111111101001dd10001111dddd11110001001dd10001000000000001111001dd100010001111ddd110s00010010001000000000011dddd110010001000dd00000100000000010e01000dd00000011111100011111dddddddd1111ddddd00010000111001111111111111101000000000111111000100000100000000000000011010000010001110000001111101000001000111000ddd1111101001111101111111111111",350);
|
||||
memcpy(level,"111111111111111111111111110000000003a000000000000110000000003a000000000000110000000003a000000000000110000000023a000000000000110000000013a000000000000110000000013a000000000000110000000003a000000000000110000000003a000000000000110000000003a000000000000110000000003a000000000000110000000003a000000000000110s00000k03a00K000000e0011111111111111111111111111",350);
|
||||
break;
|
||||
case 2:
|
||||
memcpy(level,"1210011111111002110011122200000111ddd000111000000120000000000000011100000e1111111ddd111112211111121100000000000000000000d0000122111111dd111111200d000210002100000000011200d000200002100000000012100d000000000000000000011100d00001111dd11200000011100112222000011211ddd0021100111111000011111ddd00211001111110s0021111ddd0012100211111110021111111001110021111",350);
|
||||
break;
|
||||
case 3:
|
||||
memcpy(level,"11010011111011111111111111101001dd10001111dddd11110001001dd10001000000000001111001dd100010001111ddd110s00010010001000000000011dddd110010001000dd00000100000000010e01000dd00000011111100011111dddddddd1111ddddd00010000111001111111111111101000000000111111000100000100000000000000011010000010001110000001111101000001000111000ddd1111101001111101111111111111",350);
|
||||
break;
|
||||
}
|
||||
|
||||
set_gravity(id_level, gravity);
|
||||
|
@ -49,10 +51,13 @@ void set_gravity(int id_level, char *default_gravity)
|
|||
switch(id_level)
|
||||
{
|
||||
case 1:
|
||||
*default_gravity = 1; //0 down - 1 up
|
||||
*default_gravity = 0; //0 down - 1 up
|
||||
break;
|
||||
case 2:
|
||||
*default_gravity = 0; //0 down - 1 up
|
||||
break;
|
||||
case 3:
|
||||
*default_gravity = 1; //0 down - 1 up
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue