seperate sketches for seperate game aspects
Posted: Thu Aug 18, 2016 5:19 am
I didn't really know how to ask this question in the topic so I hope its legible.
ok so im building a pretty massive game for this system and as such trying to compile everything in one sketch sheet can make things a lil crazy as far as debugging goes. Sooooooo
I want to split all the different aspects, worldmap, player, monsters, etc, into separate sketches, and since im still new to all this I need just a lil help.
I started off by pulling all the player sprites off my main then transferring all their controls over too. I removed the display tile map command and placed it in the sketch with just the terrain sprites. but I do not know how to start the map sketch off, do I need to do a void drawmap() then start the gb.display or what.
heres my player code ... I cant figure out why I had to add a curly bracket before void set up and cant find its match but it quit giving me errors after I added it.
heres a shortened version of the map file since the whole thing wont fit.......
ok so im building a pretty massive game for this system and as such trying to compile everything in one sketch sheet can make things a lil crazy as far as debugging goes. Sooooooo
I want to split all the different aspects, worldmap, player, monsters, etc, into separate sketches, and since im still new to all this I need just a lil help.
I started off by pulling all the player sprites off my main then transferring all their controls over too. I removed the display tile map command and placed it in the sketch with just the terrain sprites. but I do not know how to start the map sketch off, do I need to do a void drawmap() then start the gb.display or what.
heres my player code ... I cant figure out why I had to add a curly bracket before void set up and cant find its match but it quit giving me errors after I added it.
- Code: Select all
- Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
const byte sever_front_black[] PROGMEM = {8,8,0x39,0x7d,0x01,0x01,0xfe,0x01,0x7c,0x46};
const byte sever_front_grey[] PROGMEM = {8,8,0x82,0x82,0xd6,0x7c,0x01,0xa8,0x00,0x00,};
const byte sever_left_black[] PROGMEM = {8,8,0x9f,0xbe,0x80,0x82,0x7f,0x00,0x3e,0x62,};
const byte sever_left_grey[] PROGMEM = {8,8,0x00,0x00,0x17,0x3c,0x00,0x95,0x00,0x00,};
const byte sever_rear_black[] PROGMEM = {8,8,0x9c,0xbe,0xbe,0x80,0x7f,0x88,0x3e,0x62,};
const byte sever_rear_grey[] PROGMEM = {8,8,0x41,0x41,0x7f,0x3e,0x80,0x15,0x00,0x00,};
const byte sever_right_black[] PROGMEM = {8,8,0xf9,0x7d,0x01,0x41,0xfe,0x00,0x7c,0x46,};
const byte sever_right_grey[] PROGMEM = {8,8,0x00,0x00,0xe8,0x3c,0x00,0xa9,0x00,0x00,};
int player_x = 70;
int player_y = 40;
int player_direction = 0;
int x=0,y=0;
int camerax = -20 ;
int cameray = -10 ;
int xmax = -68;
{/////////// do not understand why I had to add this for it to compile,cant find end
void setup() {
gb.begin();
gb.titleScreen(F("test"));
gb.setFrameRate(62);
gb.display.persistence = false;
}
/////////PLAYER_MOVEMENT\\\\\\\\\
void loop() {
if(gb.update()){
if (gb.buttons.repeat(BTN_RIGHT,1));//{x--;}
if (gb.buttons.repeat(BTN_LEFT,1));//{x++;}
if (gb.buttons.repeat(BTN_DOWN,1));//{y--;}
if (gb.buttons.repeat(BTN_UP,1));//{y++;}
//////camera controls
if(player_x > 59 && camerax < 0 && camerax > -52){player_x = 59;camerax--;}
//value 59 equals player position on right when camera will start to follow
//value 0 and -52 equals camera boundary positions
else if(player_x < 15 && camerax < 0 && camerax > -52){player_x = 15;camerax++;}
//value 15 equals player position on left when camera will start to follow
//value 0 and -52 equals camera boundary positions
else if(player_x > 59 && camerax <= 0 && camerax >= -52)camerax--;
else if(player_x < 15 && camerax <= 0 && camerax >= -52)camerax++;
if(player_y > 28 && cameray < 0 && cameray > -40){player_y = 28;cameray--;}
//value 28 equals player position on right when camera will start to follow
//value 0 and -40 equals camera boundary positions
else if(player_y < 15 && cameray < 0 && cameray > -40){player_y = 15;cameray++;}
//value 15 equals player position on left when camera will start to follow
//value 0 and -40 equals camera boundary positions
else if(player_y > 28 && cameray <= 0 && cameray >= -40)cameray--;
else if(player_y < 15 && cameray <= 0 && cameray >= -40)cameray++;
if(camerax > 0)camerax= 0;
else if(camerax < -52) camerax = -52;
//value 0 and -52 equals camera boundary positions
if(cameray > 0)cameray= 0;
else if(cameray < -40) cameray = -40;
//value 0 and -40 equals camera boundary positions
if(gb.buttons.repeat(BTN_UP,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_rear_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_rear_grey);
}
player_direction = 1;
player_y = player_y - 1;
if(checkcolision())player_y++; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_y <= 0){
player_y = 0;}
if(gb.buttons.repeat(BTN_DOWN,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_front_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_grey);
}
player_direction = 2;
player_y = player_y + 1;
if(checkcolision())player_y--; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_y >= 40){
player_y = 40;}
if(gb.buttons.repeat(BTN_RIGHT,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_right_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_right_grey);
}
player_direction = 3;
player_x = player_x + 1;
if(checkcolision())player_x--; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_x >= 77){
player_x = 77;}
if(gb.buttons.repeat(BTN_LEFT,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_left_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_left_grey);
}
player_direction = 4;
player_x = player_x - 1;
if(checkcolision())player_x++; // ADD by Summoner123 - If have colision on the new position regreat one Pixel
}
if(player_x <= -2){
player_x = -2;}
////////////PLAYER DIRECTION/////////////
if (player_direction == 1){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_rear_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_rear_grey);
}
}
else if (player_direction == 2){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_front_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_grey);
}
}
else if (player_direction == 3){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_left_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_left_grey);
}
}
else if (player_direction == 4){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_right_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_right_grey);
}
}
else { gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_front_black);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_grey);
}
}
}
}
bool checkcolision() // Transformed it into a function
{
uint16_t i;
for(i=0; i < gb.display.numcolision + 1; i++)
{
if(gb.collideRectRect(player_x,player_y,8,8,gb.display.solid[i].x,gb.display.solid[i].y,8,8))
{
if(gb.display.solid[i].spritecol == void_tile);
if(gb.display.solid[i].spritecol == bridge_h );
if(gb.display.solid[i].spritecol == bridge_h );
if(gb.display.solid[i].spritecol == sand);
if(gb.display.solid[i].spritecol == steps );
else if(gb.display.solid[i].spritecol == bush)return true;
else if(gb.display.solid[i].spritecol == dead_tree)return true;
else if(gb.display.solid[i].spritecol == dungeon_left_bottom)return true;
else if(gb.display.solid[i].spritecol == dungeon_left_top)return true;
else if(gb.display.solid[i].spritecol == dungeon_middle)return true;
else if(gb.display.solid[i].spritecol == dungeon_right_bottom)return true;
else if(gb.display.solid[i].spritecol == dungeon_right_top)return true;
else if(gb.display.solid[i].spritecol == grave_marker)return true;
else if(gb.display.solid[i].spritecol == port_noir)return true;
else if(gb.display.solid[i].spritecol == rock_terrain_master)return true;//{gb.popup(F(" ""Rock"" "),1); return true;} //Return True if character have touched the wall
else if(gb.display.solid[i].spritecol == rock_valley_ne)return true;
else if(gb.display.solid[i].spritecol == rock_valley_nw)return true;
else if(gb.display.solid[i].spritecol == rock_valley_se)return true;
else if(gb.display.solid[i].spritecol == rock_valley_sw)return true;
else if(gb.display.solid[i].spritecol == turtle_rock)return true;
else if(gb.display.solid[i].spritecol == water_left_bottom)return true;
else if(gb.display.solid[i].spritecol == water_left_middle)return true;
else if(gb.display.solid[i].spritecol == water_left_top)return true;
else if(gb.display.solid[i].spritecol == water_right_bottom)return true;
else if(gb.display.solid[i].spritecol == water_right_middle)return true;
else if(gb.display.solid[i].spritecol == water_right_top)return true;
else if(gb.display.solid[i].spritecol == water_middle_bottom)return true;
else if(gb.display.solid[i].spritecol == water_middle_middle)return true;
else if(gb.display.solid[i].spritecol == water_middle_top)return true;
}
}
return false; // Return false if don't touch anything
}
heres a shortened version of the map file since the whole thing wont fit.......
- Code: Select all
[code]
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
const byte room_1_1[] PROGMEM = {17,11,
8,8,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,13,20,20,20,20,20,20,20,20,20,20,20,20,20,
11,11,13,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
11,13,20,20,20,20,3,20,20,3,20,20,20,20,20,20,20,20,
11,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
11,15,20,20,20,20,20,3,20,20,3,20,20,20,20,20,20,
11,11,15,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
11,11,11,15,20,20,20,20,20,20,20,20,20,20,20,20,20,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,};
const byte bridge_h[] PROGMEM = {B01110111,B10001000,B10101010,B10001000,B10001000,B10101010,B10001000,B01110111,};
const byte bridge_v[] PROGMEM = {B01111110,B10000001,B10100101,B10000001,B01111110,B10000001,B10100101,B10000001,};
const byte bush[] PROGMEM = {B00101100,B01010010,B10001001,B01000010,B10010001,B01001010,B00100100,B01111110,};
const byte dead_tree[] PROGMEM = {B10101001,B01010110,B01001001,B10101010,B01011010,B00111100,B00011000,B00011000,};
const byte dungeon_left_bottom[] = {B11111111,B10001111,B01001111,B11111111,B10001111,B01001111,B11111111,B10001111,};
const byte dungeon_left_top[] = {B00010001,B00101110,B00101010,B00101110,B01000000,B01000001,B10010010,B10001000,};
const byte dungeon_middle[] = {B10000001,B01000010,B00111100,B00000000,B00000000,B10011001,B00011000,B01000010,};
const byte dungeon_right_bottom[] = {B11111111,B11110001,B11110010,B11111111,B11110001,B11110010,B11111111,B11110001,};
const byte dungeon_right_top[] = {B10001000,B01110100,B01010100,B01110100,B00000010,B10000010,B01001001,B00010001,};
const byte grave_marker[] PROGMEM = {B00011000,B00111100,B01100110,B0100010,B01100110,B01100110,B00111100,B11111111,};
const byte port_noir[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte rock_terrain_master[] PROGMEM = {B01001101,B10100100,B10010001,B01001010,B10010000,B01100101,B10001001,B01011010,};
const byte rock_valley_ne[] PROGMEM = {B10101010,B10010101,B01000100,B00101001,B00110010,B00001010,B00000100,B00000011,};
const byte rock_valley_nw[] PROGMEM = {B01010101,B10101001,B00100010,B10010100,B01001100,B01010000,B00100000,B11000000,};
const byte rock_valley_se[] PROGMEM = {B00000011,B00000100,B0011001,B00010010,B00101001,B01000110,B10110001,B10001010,};
const byte rock_valley_sw[] PROGMEM = {B11000000,B00100000,B10011000,B01001000,B10010100,B01100010,B10001101,B01010001,};
const byte sand[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte statue[] PROGMEM = {B10111010,B11000110,B01101100,B11101110,B11111110,B11111110,B01101100,B01101100,};
const byte steps[] PROGMEM = {B01111110,B10000001,B00000000,B10000001,B01111110,B10000001,B00000000,B10000001,};
const byte turtle_rock[] PROGMEM = {B01101100,B10110010,B11010001,B01010101,B01010010,B10011001,B10000001,B11111110,};
const byte void_tile[] PROGMEM = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
const byte water_left_bottom[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B11111111,};
const byte water_left_middle[] PROGMEM = {B10001111,B10000000,B11110000,B10000000,B10001111,B10000000,B11110000,B10000000,};
const byte water_left_top[] PROGMEM = {B11111111,B10000000,B11110000,B10001111,B10000000,B10000000,B11110000,B10000000,};
const byte water_right_bottom[] PROGMEM = {B1110001,B00000001,B0000111,B00000001,B11110001,B00000001,B00001111,B11111111,};
const byte water_right_middle[] PROGMEM = {B11110001,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_right_top[] PROGMEM = {B11111111,B00000001,B00001111,B00000001,B11110001,B00000001,B00001111,B00000001,};
const byte water_middle_bottom[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B11111111,};
const byte water_middle_middle[] PROGMEM = {B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,B00001111,B00000000,};
const byte water_middle_top[] PROGMEM = {B11111111,B00000000,B11110000,B00000000,B00001111,B00000000,B11110000,B00000000,};
const byte *spritesheet[] = {bridge_h, bridge_v, bush, dead_tree, dungeon_left_bottom, dungeon_left_top, dungeon_middle,
dungeon_right_bottom, dungeon_right_top, grave_marker, port_noir, rock_terrain_master, rock_valley_ne, rock_valley_nw,
rock_valley_se, rock_valley_sw, sand, statue, steps, turtle_rock, void_tile, water_left_bottom, water_left_middle, water_left_top,
water_middle_bottom, water_middle_middle, water_middle_top, water_right_bottom, water_right_middle, water_right_top};
/////don't know what kind of loop to use or how to set up with player sketch
gb.display.drawTilemap(camerax,cameray,room_1_1,spritesheet);
[/code]