Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <gb/gb.h>
- #include <gb/drawing.h>
- #include "tiles.c"
- #include "sprites.c"
- #include "map.c"
- #define door 0x01
- #define empty 0x00
- unsigned char map[] =
- {
- 0x0A,0x10,0x10,0x10,0x0E,0x10,0x10,0x10,0x10,0x10,
- 0x0E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x09,
- 0x11,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,
- 0x11,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,
- 0x11,0x00,0x00,0x04,0x00,0x0A,0x10,0x06,0x00,0x11,
- 0x11,0x00,0x00,0x00,0x0A,0x10,0x0B,0x00,0x11,0x00,
- 0x07,0x10,0x10,0x08,0x00,0x11,0x00,0x00,0x00,0x11,
- 0x0C,0x10,0x10,0x10,0x0B,0x00,0x11,0x00,0x11,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x0A,0x10,0x0B,
- 0x11,0x00,0x00,0x00,0x03,0x00,0x07,0x10,0x08,0x00,
- 0x0A,0x10,0x10,0x06,0x00,0x11,0x00,0x11,0x00,0x11,
- 0x11,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x11,0x00,0x00,0x00,0x00,0x11,0x00,0x03,0x00,0x11,
- 0x11,0x00,0x07,0x10,0x09,0x00,0x0A,0x10,0x10,0x10,
- 0x08,0x00,0x05,0x10,0x0E,0x08,0x00,0x00,0x00,0x11,
- 0x11,0x00,0x00,0x00,0x07,0x10,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x04,0x00,0x11,
- 0x0C,0x10,0x09,0x00,0x00,0x00,0x00,0x00,0x0A,0x10,
- 0x0E,0x10,0x10,0x10,0x08,0x00,0x05,0x0B,0x00,0x11,
- 0x11,0x00,0x11,0x00,0x0A,0x10,0x10,0x10,0x08,0x00,
- 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x11,
- 0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,0x00,0x00,
- 0x07,0x10,0x10,0x06,0x00,0x05,0x10,0x0D,0x10,0x0B,
- 0x11,0x00,0x07,0x10,0x08,0x00,0x05,0x10,0x09,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,
- 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,
- 0x0A,0x10,0x10,0x10,0x10,0x10,0x10,0x09,0x00,0x11,
- 0x11,0x00,0x0A,0x10,0x10,0x10,0x09,0x00,0x11,0x00,
- 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x11,
- 0x11,0x00,0x03,0x00,0x00,0x00,0x07,0x10,0x0D,0x10,
- 0x08,0x00,0x0A,0x10,0x10,0x06,0x00,0x11,0x00,0x11,
- 0x11,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x11,0x00,0x11,
- 0x07,0x10,0x10,0x10,0x0D,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x0D,0x10,0x10,0x10,0x10,0x0D,0x10,0x08
- };
- unsigned char sprites[] =
- {
- 0x3C,0x3C,0x7E,0x42,0xFF,0xA5,0xFF,0x81,
- 0xFF,0xA5,0xFF,0x99,0x7E,0x42,0x3C,0x3C,
- 0x18,0x18,0x2C,0x24,0x3C,0x24,0x18,0x18,
- 0x08,0x08,0x18,0x18,0x08,0x08,0x18,0x18,
- 0x3C,0x3C,0x42,0x42,0x81,0x81,0x81,0x81,
- 0x81,0x81,0x81,0x81,0x81,0x81,0xFF,0xFF,
- 0x3C,0x3C,0x56,0x6A,0xD5,0xAB,0xD5,0xAB,
- 0xD1,0xAB,0xD5,0xAB,0xD5,0xAB,0xFF,0xFF
- };
- unsigned char tiles[] =
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x3C,0x3C,0x56,0x6A,0xD5,0xAB,0xD5,0xAB,
- 0xD1,0xAB,0xD5,0xAB,0xD5,0xAB,0xFF,0xFF,
- 0x7E,0x7E,0x83,0x81,0xBD,0x83,0xBD,0x83,
- 0xBD,0x83,0xBD,0x83,0xC1,0xBF,0x7E,0x7E,
- 0xBD,0x83,0xBD,0x83,0xBD,0x83,0xBD,0x83,
- 0xBD,0x83,0xBD,0x83,0xC1,0xBF,0x7E,0x7E,
- 0x7E,0x7E,0x83,0x81,0xBD,0x83,0xBD,0x83,
- 0xBD,0x83,0xBD,0x83,0xBD,0x83,0xBD,0x83,
- 0x7F,0x7F,0x80,0x80,0xBF,0x80,0xBF,0x80,
- 0xBF,0x80,0xBF,0x80,0xC0,0xBF,0x7F,0x7F,
- 0xFE,0xFE,0x03,0x01,0xFD,0x03,0xFD,0x03,
- 0xFD,0x03,0xFD,0x03,0x01,0xFF,0xFE,0xFE,
- 0xBD,0x83,0xBE,0x80,0xBF,0x80,0xBF,0x80,
- 0xBF,0x80,0xBF,0x80,0xC0,0xBF,0x7F,0x7F,
- 0xBD,0x83,0x7D,0x03,0xFD,0x03,0xFD,0x03,
- 0xFD,0x03,0xFD,0x03,0x03,0xFD,0xFE,0xFE,
- 0xFE,0xFE,0x03,0x01,0xFD,0x03,0xFD,0x03,
- 0xFD,0x03,0xFD,0x03,0x7D,0x83,0xBD,0x83,
- 0x7F,0x7F,0xC0,0x80,0xBF,0x80,0xBF,0x80,
- 0xBF,0x80,0xBF,0x80,0xBE,0x81,0xBD,0x83,
- 0xBD,0x83,0x7D,0x03,0xFD,0x03,0xFD,0x03,
- 0xFD,0x03,0xFD,0x03,0x7D,0x83,0xBD,0x83,
- 0xBD,0x83,0xBE,0x80,0xBF,0x80,0xBF,0x80,
- 0xBF,0x80,0xBF,0x80,0xBE,0x81,0xBD,0x83,
- 0xBD,0x83,0x7E,0x00,0xFF,0x00,0xFF,0x00,
- 0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,
- 0xFF,0x00,0xFF,0x00,0x7E,0x81,0xBD,0x83,
- 0xBD,0x83,0x7E,0x00,0xFF,0x00,0xFF,0x00,
- 0xFF,0x00,0xFF,0x00,0x7E,0x81,0xBD,0x83,
- 0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,
- 0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,
- 0xBD,0x83,0xBD,0x83,0xBD,0x83,0xBD,0x83,
- 0xBD,0x83,0xBD,0x83,0xBD,0x83,0xBD,0x83,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- UINT16 gridxTL, gridyTL, gridxBR, gridyBR, gridxBL, gridyBL, gridxTR, gridyTR, x, y, x2, y2, scrx, scry = 0;
- int gridPosTL(int addx, int addy){
- gridxTL = (x/8) + addx;
- gridyTL = (y/8) + addy;
- return map[((20*gridyTL) + gridxTL)];
- }
- int gridPosTR(int addx, int addy){
- gridxTR = ((x2)/8) - addx;
- gridyTR = ((y)/8) + addy;
- return map[((20*gridyTR) + gridxTR)];
- }
- int gridPosBL(int addx, int addy){
- gridxBL = ((x)/8) + addx;
- gridyBL = ((y2)/8) - addy;
- return map[((20*gridyBL) + gridxBL)];
- }
- int gridPosBR(int addx, int addy){
- gridxBR = ((x2)/8) - addx;
- gridyBR = ((y2)/8) - addy;
- return map[((20*gridyBR) + gridxBR)];
- }
- int keyFlag1, keyFlag2, keyFlag3;
- void main(){
- x = 16; //starting position of the player
- y = 16;
- move_sprite(1,152,57); //move key
- DISPLAY_ON;
- set_bkg_data(0, 18, tiles); //load 3 tiles into background memory
- set_bkg_tiles(0, 0, 20, 18, map); //load map on display
- set_sprite_data(0, 0, sprites); //load sprites into memory
- set_sprite_tile(0, 0); //set tile 0 as sprite 0
- set_sprite_tile(1, 1); //set tile 1 as sprite 1...
- set_sprite_tile(2, 3);
- set_sprite_tile(4, 1);
- set_sprite_tile(5, 1);
- set_sprite_tile(3, 2);
- move_sprite(2,113,144); //move door
- move_sprite(4,152,143); //move key
- move_sprite(5,32,103); //move key
- SHOW_BKG;
- SHOW_SPRITES;
- keyFlag1, keyFlag2, keyFlag3 = 0;
- while(1){
- scrx = x + 8; //fixes discrepancy between screen coordinates and sprite coordinates
- scry = y + 16;
- x2 = x + 7; //coordinates of sprite's bottom right pixel for collision testing
- y2 = y + 7;
- move_sprite(0,scrx,scry); //move sprite to screen cooridnates
- if(joypad() & J_UP && gridPosBR(0,1) == empty && gridPosBL(0,1) == empty){ //move up if above tile is not a wall
- y --;
- }
- if(joypad() & J_DOWN && gridPosTL(0,1) == empty && gridPosTR(0,1) == empty){ //move down if below tile is not a wall
- y ++;
- }
- if(joypad() & J_RIGHT && gridPosTL(1,0) == empty && gridPosBL(1,0) == empty){ //move right if right tile is not a wall
- x ++;
- }
- if(joypad() & J_LEFT && gridPosBR(1,0) == empty && gridPosTR(1,0) == empty){ //move left if left tile is not a wall
- x --;
- }
- if(scrx == 152 && scry == 64){ //if sprite overlaps key...
- keyFlag1 = 1;
- move_sprite(1,0,0);
- }
- if(scrx == 152 && scry == 136){ //if sprite overlaps key...
- keyFlag2 = 1;
- move_sprite(4,0,0);
- }
- if(scrx == 32 && scry == 96){ //if sprite overlaps key...
- keyFlag3 = 1;
- move_sprite(5,0,0);
- }
- if((keyFlag1 == 1)&&(keyFlag2 == 1)&&(keyFlag3 == 1)){
- move_sprite(2,0,0);
- move_sprite(3,113,144);
- }
- if(((keyFlag1 == 1)&&(keyFlag2 == 1)&&(keyFlag3 == 1)) && (scrx == 119 && scry == 144)){ //if sprite overlaps door...
- gotogxy(6,8);
- gprintf("You win!");
- HIDE_SPRITES;
- }
- delay(10);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement