void render()
{
if(player.posx > 54 && camerax < 0 && camerax > -156){player.posx = 54;camerax--;}
else if(player.posx < 30 && camerax < 0 && camerax > -156){player.posx = 30;camerax++;}
else if(player.posx > 54 && camerax <= 0 && camerax >= -156)camerax--;
else if(player.posx < 30 && camerax <= 0 && camerax >= -156)camerax++;
if(player.posy > 28 && cameray < 0 && cameray > -192){player.posy = 28;cameray--;}
else if(player.posy < 20 && cameray < 0 && cameray > -192){player.posy = 20;cameray++;}
else if(player.posy > 28 && cameray <= 0 && cameray >= -192)cameray--;
else if(player.posy < 20 && cameray <= 0 && cameray >= -192)cameray++;
if(camerax > 0)camerax=0;
else if(camerax < -156) camerax = -156;
if(cameray > 0)cameray=0;
else if(cameray < -192) cameray = -192;
void renderiza() //render
{
if(player.posx > 35 && camerax != 0 && camerax != xmax){player.posx = 3 ; camerax--;} //X Scrolling to the Right
else if(player.posx < 30 && camerax != 0 && camerax != xmax){player.posx = 30; camerax++;} //X Scrolling to the Left
else if(player.posx > 35 && camerax <= 0 && camerax >= xmax)camerax--;
else if(player.posx < 30 && camerax <= 0 && camerax >= xmax)camerax++;
if(camerax >0)camerax=0;
if(camerax < xmax) camerax = xmax;
if(player.posy > 14 ) {cameray-=2; player.posy -=2;} //Y Scrolling Down
else if(player.posy < 10 ){cameray+=2; player.posy +=2;} //Y Scrolling Up
if(player_x > 35 && camerax != 0 && camerax != xmax){player_x = 3 ; camerax--;} //X Scrolling to the Right
else if(player_x < 30 && camerax != 0 && camerax != xmax){player_x = 30; camerax++;} //X Scrolling to the Left
else if(player_x > 35 && camerax <= 0 && camerax >= xmax)camerax--;
else if(player_x < 30 && camerax <= 0 && camerax >= xmax)camerax++;
if(camerax >0)camerax=0;
if(camerax < xmax) camerax = xmax;
if(player_y > 14 ) {cameray-=2; player_y -=2;} //Y Scrolling Down
else if(player_y < 10 ){cameray+=2; player_y +=2;} //Y Scrolling Up
Duhjoker wrote:For grey tiles lik sand you would probably have to make two tilemaps. One with the black sprites then one with oonly the floor tiles.
if(camerax >=0) camerax = 0;
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
const byte tilemap[] PROGMEM = {17,11,
8,8,
2, 2, 2, 2, 2, 2, 2,19, 8, 8, 3,18,18,18,18,18, 2,
2, 2, 2, 2, 2, 2, 2,19, 8, 8,27,27,27,27,27,27,20,
2, 2, 2, 2, 2, 2, 2,19, 8, 8,26,26,26,26,26,26,20,
2, 2, 2, 2, 2, 2,18, 4, 8, 8,25,26,26,26,26,26,20,
2, 2, 2, 2, 2, 4, 8, 8, 8, 8, 8,26,26,26,26,26,20,
2, 2, 2, 2, 4, 8, 8, 8, 8, 8, 8,26,26,26,26,26,20, /////////112x64 pix res
18,18,18, 4, 8, 8, 8, 8, 8, 8, 8, 8,25,25,25,25, 3,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
21,21, 6, 8, 8, 8,22,23,24, 8, 8, 8, 8, 8, 5,21,21,
2, 2,19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,20, 2, 2,
2, 2, 2,21,21,21,21,21,21,21,21,21,21,21, 2, 2, 2,};
const byte bush[] PROGMEM = {B00101100,B01010010,B10001001,B01000010,B10010001,B01001010,B00100100,B01111110,};
const byte port_noir[] PROGMEM = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
const byte rock_terrain_master[] PROGMEM = {B00000010,B00010000,B01000000,B00000010,B00010000,B00001000,B01000001,B00000100,};
const byte rock_valley_ne[] PROGMEM = {B10100000,B11001001,B01110000,B00001100,B00000101,B00000100,B00000110,B00000011,};
const byte rock_valley_nw[] PROGMEM = {B00000101,B10010011,B00001110,B00110000,B10100000,B00100000,B01100000,B11000000,};
const byte rock_valley_se[] PROGMEM = {B00000011,B00000110,B00000100,B00000101,B00001100,B01110000,B11001001,B10100000,};
const byte rock_valley_sw[] PROGMEM = {B11000000,B01100000,B00100000,B10100000,B00110000,B00001110,B10010011,B00000101,};
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 rock_s[] PROGMEM = {B00010010,B00000000,B01001000,B00000100,B00100001,B10001100,B01110010,B10000001,};
const byte rock_e[] PROGMEM = {B00000101,B00100010,B00001010,B10000010,B00100100,B00010100,B10000010,B00001001,};
const byte rock_n[] PROGMEM = {B10000001,B01110010,B10001100,B00100001,B00000100,B01001000,B00000000,B00010010,};
const byte rock_w[] PROGMEM = {B10100000,B01000100,B01010000,B01000001,B00100100,B00101000,B01000001,B10010000,};
const byte bush_left[] PROGMEM = {B00111011,B01000100,B10100000,B10010100,B01000010,B10000000,B10001000,B01110111,};
const byte bush_middle[] PROGMEM = {B10111101,B01000010,B00001000,B10000100,B00010000,B00100001,B10001000,B01110111,};
const byte bush_right[] PROGMEM = {B11011100,B00100010,B00000101,B00101001,B01000010,B00000001,B00010001,B11101110,};
const byte tree_base[] PROGMEM = {B01010100,B01000100,B10100010,B10001010,B10000010,B01101100,B00101000,B00101000,};
const byte tree_repeat[] PROGMEM = {B01010100,B01000100,B10000010,B10010010,B10101010,B01101100,B00101000,B01000100,};
const byte tree_top[] PROGMEM = {B00000000,B00000000,B00000000,B00010000,B00101000,B00101000,B00101000,B01000100,};
const byte *spritesheet[] = {bush, //0
port_noir, //1
rock_terrain_master, //2
rock_valley_ne, //3
rock_valley_nw, //4
rock_valley_se, //5
rock_valley_sw, //6
turtle_rock, //7
void_tile, //8
water_left_bottom, //9
water_left_middle, //10
water_left_top, //11
water_right_bottom, //12
water_right_middle, //13
water_right_top, //14
water_middle_bottom, //15
water_middle_middle, //16
water_middle_top, //17
rock_s, //18
rock_e, //19
rock_w, //20
rock_n, //21
bush_left, //22
bush_middle, //23
bush_right, //24
tree_base, //25
tree_repeat, //26
tree_top}; //27
const byte backblack[] PROGMEM = {8,8,0x7E,0x42,0x42,0x3C,0x7E,0x3C,0x3C,0x24,};
const byte backgrey[] PROGMEM = {8,8,0x1,0x1,0x1,0xC1,0x81,0xC0,0x40,0x0,};
const byte frontblack[] PROGMEM = {8,8,0x7E,0x66,0x42,0x38,0x78,0x38,0x3C,0x24,};
const byte frontgrey[] PROGMEM = {8,8,0x80,0x80,0x80,0x87,0x87,0x7,0x2,0x0,};
const byte leftblack[] PROGMEM = {8,8,0x3E,0x32,0x22,0x1C,0x1C,0x1C,0x1C,0x14,};
const byte leftgrey[] PROGMEM = {8,8,0x0,0x0,0x0,0x60,0x60,0x60,0x40,0x0,};
const byte rightblack[] PROGMEM = {8,8,0x7C,0x4C,0x44,0x38,0x3C,0x38,0x38,0x28,};
const byte rightgrey[] PROGMEM = {8,8,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,};
int player_x = 70; //cant get these to center
int player_y = 40; //cant get these to center
int player_direction = 0;
int x,y; ///if 0 player spite will not move, -50,50 no tilemap
//////CAMERA//////
int camerax = -20 ;
int cameray = -20 ;
int xmax = -68;
void setup() {
gb.begin();
gb.titleScreen(F("test"));
gb.setFrameRate(62); ////////for sprite
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++;}
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
gb.display.drawTilemap(camerax,cameray,tilemap,spritesheet); // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( player_x );gb.display.println( player_y );
if(gb.buttons.repeat(BTN_UP,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,backblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,backgrey);
}
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,frontblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,frontgrey);
}
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,rightblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,rightgrey);
}
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,leftblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,leftgrey);
}
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,backblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,backgrey);
}
}
else if (player_direction == 2){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,frontblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,frontgrey);
}
}
else if (player_direction == 3){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,rightblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,rightgrey);
}
}
else if (player_direction == 4){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,leftblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,leftgrey);
}
}
else { gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,frontblack);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,frontgrey);
}
}
}
}
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))///changed player_x,y back to 8
{
// if(gb.display.solid[i].spritecol == void_tile); //Do nothing because it's floor - This line not needed
if(gb.display.solid[i].spritecol == bush) return true;
else if(gb.display.solid[i].spritecol == port_noir) return true;
else if(gb.display.solid[i].spritecol == rock_terrain_master) {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;
else if(gb.display.solid[i].spritecol == rock_n) return true;
else if(gb.display.solid[i].spritecol == rock_e) return true;
else if(gb.display.solid[i].spritecol == rock_s) return true;
else if(gb.display.solid[i].spritecol == rock_w) return true;
else if(gb.display.solid[i].spritecol == bush_left) {gb.popup(F(" ""A bush!!"" "),1); return true;}
else if(gb.display.solid[i].spritecol == bush_middle) {gb.popup(F(" ""A bush!!"" "),1); return true;}
else if(gb.display.solid[i].spritecol == bush_right) {gb.popup(F(" ""A bush!!"" "),1); return true;}
else if(gb.display.solid[i].spritecol == tree_base) return true;
else if(gb.display.solid[i].spritecol == tree_repeat) return true;
else if(gb.display.solid[i].spritecol == tree_top) return true;
}
}
return false; // Return false if don't touch anything
}
Return to Programming Questions
Users browsing this forum: No registered users and 0 guests