#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
int i;
const byte tilemap[] PROGMEM = {14,8,
6,6,
3,3,3,3,3,3,6,6,3,3,3,3,3,3,
3,3,3,5,3,6,6,6,3,3,3,3,3,3,
3,3,6,6,6,6,6,6,6,3,3,3,3,3,
3,6,6,6,6,6,6,6,6,6,3,3,3,3,
6,6,6,6,6,6,6,6,6,6,6,6,6,6,
3,3,6,6,6,6,6,6,6,6,6,6,3,3,
3,3,6,6,6,6,6,6,6,6,6,6,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3};
const byte bush_bottom[] PROGMEM = {B01001000,B00110000,B01011000,B00000000,B00000000, B00000000 };
const byte bush_top[] PROGMEM = {B00000000, B00000000, B00000000, B00110000,B01001000,B10110100 };
const byte bush[] PROGMEM = {B0010000, B01001000, B10110100, B01001000, B00110000, B01011000 };
const byte rock_terrain[] PROGMEM = {B01011000, B10100100, B00010100, B10100000, B10000100, B01011000 } ;
const byte turtle_rock[] PROGMEM = {B00000000, B01110000, B00101000, B01001000, B01110000, B00000000 };
const byte port_noir[] PROGMEM = {B11111100, B11111100, B11111100, B11111100, B11111100,B11111100 };
const byte port_blanc[] PROGMEM = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 } ;
const byte *spritesheet[] = {bush_bottom,bush_top,bush,rock_terrain,turtle_rock,port_noir,port_blanc};
const byte sever_front_1[] PROGMEM = {6,6,0x78,0x0,0x0,0x30,0x0,0xcc,};
const byte sever_front_2[] PROGMEM = {6,6,0x84,0x48,0x78,0x84,0x78,0x0,};
const byte sever_right_1[] PROGMEM = {6,6,0x78,0x80,0xc8,0xb4,0x0,0xcc,};
const byte sever_right_2[] PROGMEM = {6,6,0x4,0x58,0x30,0x0,0x78,0x0,};
const byte sever_rear_1[] PROGMEM = {6,6,0X78,0X78,0X0,0X30,0X0,0XCC,};
const byte sever_rear_2[] PROGMEM = {6,6,0x84,0x0,0x78,0x84,0x78,0x0,};
const byte sever_left_1[] PROGMEM = {6,6,0x78,0x4,0x4c,0xb4,0x0,0xcc,};
const byte sever_left_2[] PROGMEM = {6,6,0x80,0x68,0x30,0x0,0x78,0x0,};
int player_x = 15;
int player_y = 15;
int player_direction = 0;
int x=-50,y=50;
void setup() {
gb.begin();
gb.titleScreen(F("test"));
gb.display.persistence = false;
}
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++;}
gb.display.drawTilemap(x,y,tilemap,spritesheet); // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( x );gb.display.println( y );
if(gb.buttons.repeat(BTN_UP,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_rear_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_rear_2);
}
player_direction = 1;
player_y = player_y - 1;}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_2);
}
player_direction = 2;
player_y = player_y + 1;}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_right_2);
}
player_direction = 3;
player_x = player_x + 1;}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_left_2);
}
player_direction = 4;
player_x = player_x - 1;}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_rear_2);
}
}
else if (player_direction == 2){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_front_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_2);
}
}
else if (player_direction == 3){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_left_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_left_2);
}
}
else if (player_direction == 4){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_right_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_right_2);
}
}
else { gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_front_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_2);
}
}
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 == port_blanc); //Do nothing because it's floor
else if(gb.display.solid[i].spritecol == port_noir);
else if(gb.display.solid[i].spritecol == rock_terrain);
else if(gb.display.solid[i].spritecol == turtle_rock);
else if(gb.display.solid[i].spritecol == bush);
else if(gb.display.solid[i].spritecol == bush_bottom);
else if(gb.display.solid[i].spritecol == bush_top);
}
}
}
}
Duhjoker wrote:Ok I think we need to start over I'm starting to get confused and I can't understand why my tilemaps refuse to show now.
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
const byte tilemap[] PROGMEM = {14,8,
8,8,
3,3,3,3,3,3,6,6,3,3,3,3,3,3,
3,3,3,5,3,6,6,6,3,3,3,3,3,3,
3,3,6,6,6,6,6,6,6,3,3,3,3,3,
3,6,6,6,6,6,6,6,6,6,3,3,3,3,
6,6,6,6,6,6,6,6,6,6,6,6,6,6,
3,3,6,6,6,6,6,6,6,6,6,6,3,3,
3,3,6,6,6,6,6,6,6,6,6,6,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3};
const byte bush_bottom[] PROGMEM = {B01001000,B00110000,B01011000,B00000000,B00000000, B00000000, B00000000, B00000000 };
const byte bush_top[] PROGMEM = {B00000000, B00000000, B00000000, B00110000,B01001000,B10110100, B00000000, B00000000 };
const byte bush[] PROGMEM = {B0010000, B01001000, B10110100, B01001000, B00110000, B01011000, B00000000, B00000000 };
const byte rock_terrain[] PROGMEM = {B01011000, B10100100, B00010100, B10100000, B10000100, B01011000, B00000000, B00000000 } ;
const byte turtle_rock[] PROGMEM = {B00000000, B01110000, B00101000, B01001000, B01110000, B00000000, B00000000, B00000000 };
const byte port_noir[] PROGMEM = {B11111100, B11111100, B11111100, B11111100, B11111100,B11111100, B00000000, B00000000 };
const byte port_blanc[] PROGMEM = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 } ;
const byte *spritesheet[] = {bush_bottom,bush_top,bush,rock_terrain,turtle_rock,port_noir,port_blanc};
const byte sever_front_1[] PROGMEM = {6,6,0x78,0x0,0x0,0x30,0x0,0xcc,};
const byte sever_front_2[] PROGMEM = {6,6,0x84,0x48,0x78,0x84,0x78,0x0,};
const byte sever_right_1[] PROGMEM = {6,6,0x78,0x80,0xc8,0xb4,0x0,0xcc,};
const byte sever_right_2[] PROGMEM = {6,6,0x4,0x58,0x30,0x0,0x78,0x0,};
const byte sever_rear_1[] PROGMEM = {6,6,0X78,0X78,0X0,0X30,0X0,0XCC,};
const byte sever_rear_2[] PROGMEM = {6,6,0x84,0x0,0x78,0x84,0x78,0x0,};
const byte sever_left_1[] PROGMEM = {6,6,0x78,0x4,0x4c,0xb4,0x0,0xcc,};
const byte sever_left_2[] PROGMEM = {6,6,0x80,0x68,0x30,0x0,0x78,0x0,};
int player_x = 20;
int player_y = 20;
int player_direction = 0;
int x=0,y=0;
void setup() {
gb.begin();
gb.titleScreen(F("test"));
gb.display.persistence = false;
}
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++;}
gb.display.drawTilemap(x,y,tilemap,spritesheet); // draw the tilemap
// gb.display.cursorY = 12; gb.display.println( x );gb.display.println( y );
if(gb.buttons.repeat(BTN_UP,1)){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_rear_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_rear_2);
}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_2);
}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_right_2);
}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_left_2);
}
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_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_rear_2);
}
}
else if (player_direction == 2){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_front_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_2);
}
}
else if (player_direction == 3){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_left_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_left_2);
}
}
else if (player_direction == 4){
gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_right_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_right_2);
}
}
else { gb.display.setColor(BLACK);{
gb.display.drawBitmap(player_x,player_y,sever_front_1);
}
gb.display.setColor(GRAY);{
gb.display.drawBitmap(player_x,player_y,sever_front_2);
}
}
}
}
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,6,6,gb.display.solid[i].x,gb.display.solid[i].y,8,8))
{
if(gb.display.solid[i].spritecol == port_blanc); //Do nothing because it's floor - This line not needed
if(gb.display.solid[i].spritecol == port_noir);
else if(gb.display.solid[i].spritecol == rock_terrain){gb.popup(F(" ""Rock"" "),1); return true;} //Return True if character have touched the wall
else if(gb.display.solid[i].spritecol == turtle_rock);
else if(gb.display.solid[i].spritecol == bush);
else if(gb.display.solid[i].spritecol == bush_bottom);
else if(gb.display.solid[i].spritecol == bush_top);
}
}
return false; // Return false if don't touch anything
}
naed wrote:so i got to a computer this evening and took a look at Summoner123's collision code for tilemaps, and i must say it works amazingly well
Duhjoker wrote:actually I think camera controls would be better for now
#include <SPI.h>
#include <Gamebuino.h>
#define nojump 0
#define jumping 1
#define faling 2
#define flr 1
#define doorway 2
#define dead 3
#define goleft 1
#define goright 2
#define maxjump 26
Gamebuino gb;
const byte dv[] PROGMEM = {8,12,0xF0,0xFE,0xE8,0xF0,0x60,0xF0,0xF8,0xF8,0xE8,0x70,0xD8,0xEC,};
const byte dvl[] PROGMEM = {8,12,0x1E,0xFE,0x2E,0x1E,0xC,0x1E,0x3E,0x3E,0x2E,0x1C,0x36,0x6E,};
const byte dvjp[] PROGMEM = {16,12,0x3C,0x0,0x3F,0x80,0x3A,0x0,0x3C,0x0,0x18,0x0,0x3D,0x80,0xFF,0x80,0xDB,0x0,0x18,0x0,0xFF,0x0,0xF7,0x0,0x83,0x80,};
const byte dvw1[] PROGMEM = {8,12,0x78,0x7F,0x74,0x78,0x30,0x78,0xFC,0xB7,0x33,0x78,0xCD,0x66,};
const byte dvw2[] PROGMEM = {8,12,0x78,0x7F,0x74,0x78,0x30,0x78,0xFC,0xB6,0x32,0x78,0xCD,0x66,};
const byte dvjpl[] PROGMEM = {16,12,0x1E,0x0,0xFE,0x0,0x2E,0x0,0x1E,0x0,0xC,0x0,0xDE,0x0,0xFF,0x80,0x6D,0x80,0xC,0x0,0x7F,0x80,0x77,0x80,0xE0,0x80,};
const byte dvwl1[] PROGMEM = {8,12,0x1E,0xFE,0x2E,0x1E,0xC,0x1E,0x3F,0xED,0xCC,0x1E,0xB3,0x66,};
const byte dvwl2[] PROGMEM = {8,12,0x1E,0xFE,0x2E,0x1E,0xC,0x1E,0x3F,0x6D,0x4C,0x1E,0xB3,0x66,};
const byte stage1[] PROGMEM = {19,10,
8,8,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1,
1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 1,
1, 6, 6, 0, 6, 6, 6, 0, 6, 6, 6, 0, 6, 6, 6, 0, 6, 6, 1,
1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1,
1, 0, 6, 6, 6, 0, 6, 6, 6, 0, 6, 6, 6, 0, 6, 6, 6, 0, 1,
1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1,
1, 6, 6, 6, 0, 0, 0, 0, 6, 6, 6, 1, 0, 0, 0, 0, 0, 6, 1,
1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 3, 6, 6, 6, 6, 6, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ;
const byte stage2[] PROGMEM = {50,10, // if(stage = 0) xmax = (-1 * (pgm_read(&stage1[0]) * 8)) + 84;
8,8,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 1,
1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 0, 0, 0, 0, 6, 1, 1, 6, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 0, 6, 6, 6, 6, 6, 1, 1, 6, 6, 6, 6, 6, 1, 5, 5, 5, 6, 5, 5, 5, 6, 5, 5, 6, 6,
1, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 6, 6, 6, 1, 6, 6, 6, 6, 6, 6, 6, 1, 0, 6, 6, 1, 0, 0, 1, 0, 0, 0, 0, 1, 6, 6, 1, 5, 6, 5, 6, 5, 6, 6, 6, 5, 6, 5, 6,
1, 6, 0, 0, 6, 6, 6, 6, 6, 1, 6, 6, 6, 4, 1, 6, 0, 0, 0, 0, 0, 6, 1, 6, 6, 1, 0, 6, 6, 1, 6, 6, 6, 6, 1, 6, 6, 1, 5, 5, 5, 6, 5, 6, 6, 6, 5, 5, 6, 6,
1, 6, 6, 6, 6, 6, 6, 6, 6, 1, 6, 0, 6, 6, 1, 6, 6, 6, 6, 6, 6, 6, 1, 6, 1, 0, 6, 6, 6, 1, 6, 6, 1, 6, 0, 6, 0, 1, 5, 6, 6, 6, 5, 6, 6, 6, 5, 6, 5, 6,
1, 6, 6, 6, 0, 0, 0, 6, 6, 1, 6, 6, 6, 6, 1, 6, 6, 6, 6, 6, 6, 6, 1, 6, 0, 6, 6, 0, 6, 6, 6, 0, 1, 6, 6, 6, 6, 1, 5, 6, 6, 6, 5, 5, 5, 6, 5, 6, 5, 6,
1, 6, 6, 6, 6, 6, 6, 6, 6, 1, 6, 6, 6, 0, 1, 6, 6, 6, 6, 6, 6, 6, 1, 6, 6, 6, 1, 6, 6, 6, 6, 6, 1, 6, 6, 1, 6, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1, 1, 1, 5, 5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 } ;
const byte block[] PROGMEM = {
0xff,//B11110011,
0xff,//B00011111,
0xff,//B11111100,
0xff,//B11000111,
B00000000,
B00000000,
B00000000,
B00000000 } ;
const byte plataform[] PROGMEM = {
0xff,//B11111111,
0xff,//B11011011,
0xff,//B10100101,
0xff,//B11011011,
0xff,//B11011011,
0xff,//B10100101,
0xff,//B11011011,
0xff//B11111111
} ;
const byte diamond[] PROGMEM = {
B00000000,
B00111100,
B01111110,
B11111111,
B01111110,
B00111100,
B00011000,
B00000000 } ;
const byte door[] PROGMEM = {
B01111110,
B01111110,
B01000010,
B01111110,
B01111010,
B01111110,
B01000010,
B01111110 } ;
const byte tace[] PROGMEM = {
B11111111,
B11111111,
B01111110,
B00111100,
B00011000,
B00011000,
B00011000,
B00111100 } ;
const byte alga[] PROGMEM = {
B01000101,
B10001001,
B10010010,
B10010100,
B01010010,
B00101010,
B00101001,
B01011101 } ;
const byte voidtile[] PROGMEM = {
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000 } ;
const byte *spritesheet[] = { block,plataform,diamond,door,tace,alga,voidtile } ;
typedef struct{
int posx=10;
int posy=24;
byte jump = nojump;
byte hjump = 0;
const byte *bitmap = dv;
}character;
character player;
int camerax = 0;
int cameray = -32;
byte stage = 0;
unsigned int score = 0;
int xmax = -68;
extern const byte font3x5[];
bool tkey = false;
const byte *stagesheet[2] = {stage1,stage2};
void setup()
{
gb.begin();
gb.titleScreen(F("DD Port"),dvjp);
gb.display.setFont(font3x5);
}
void loop()
{
if(gb.update())
{
anda(); // Anda = Walk in Portuguese
checkcolision();
renderiza(); // Renderiza = Reder in Protuguese
}
}
void anda() //walk
{
byte walk = 0;
if(gb.buttons.repeat(BTN_RIGHT,1))
{
player.posx++;
walk=goright;
if(colisao() == flr)player.posx--;
}
else if(gb.buttons.repeat(BTN_LEFT ,1)){
player.posx--;
walk=goleft;
if(colisao() == flr)player.posx++;
}
if(gb.buttons.pressed(BTN_B) && player.jump == nojump){player.jump = jumping; player.hjump = 0; gb.sound.playTick();}
if(walk && player.jump == nojump)
{
if(walk == goright)
{
if(gb.frameCount % 12 >= 0 && gb.frameCount % 12 < 2)player.bitmap = dvw1;
else if(gb.frameCount % 12 >= 2 && gb.frameCount % 12 < 4)player.bitmap = dvw1;
else if(gb.frameCount % 12 >= 4 && gb.frameCount % 12 < 6)player.bitmap = dv;
else if(gb.frameCount % 12 >= 6 && gb.frameCount % 12 < 8)player.bitmap = dv;
else if(gb.frameCount % 12 >= 8 && gb.frameCount % 12 < 10)player.bitmap = dvw2;
else if(gb.frameCount % 12 >= 10 && gb.frameCount % 12 < 12)player.bitmap = dvw2;
}
if(walk == goleft)
{
if(gb.frameCount % 12 >= 0 && gb.frameCount % 12 < 2)player.bitmap = dvwl1;
else if(gb.frameCount % 12 >= 2 && gb.frameCount % 12 < 4)player.bitmap = dvwl1;
else if(gb.frameCount % 12 >= 4 && gb.frameCount % 12 < 6)player.bitmap = dvl;
else if(gb.frameCount % 12 >= 6 && gb.frameCount % 12 < 8)player.bitmap = dvl;
else if(gb.frameCount % 12 >= 8 && gb.frameCount % 12 < 10)player.bitmap = dvwl2;
else if(gb.frameCount % 12 >= 10 && gb.frameCount % 12 < 12)player.bitmap = dvwl2;
}
}
else if(player.jump == jumping)
{
if(player.hjump < maxjump) {player.posy -=2; player.hjump +=2;}
if(colisao() == flr || player.hjump == maxjump)player.jump = faling;
player.bitmap = dvjp;
if(walk == goleft)player.bitmap = dvjpl;
}
else if(player.jump == faling)
{ //
player.posy+=2;
player.bitmap = dvjp;
if(walk == goleft)player.bitmap = dvjpl;
if(colisao() == flr)
{
player.jump=nojump;
player.bitmap = dv;
player.posy -=2;
// gb.popup(F("colision Block"),15);
}
}
}
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
gb.display.drawTilemap(camerax,cameray,stagesheet[stage],spritesheet);
gb.display.drawBitmap(player.posx,player.posy,player.bitmap);
gb.display.cursorY = 43;
if(tkey)
{
gb.display.cursorX = 0;
gb.display.print(F("To the door"));
}
gb.display.cursorX = 48;
gb.display.print(F(" Score: ")); gb.display.print(score * 10);
if(gb.buttons.pressed(BTN_A))Serial.println(player.posy);
}
byte colisao()
{
byte i =0;
byte height = 8;
for(i=0; i < gb.display.numcolision + 1; i++)
{
if(gb.display.solid[i].spritecol == block)height = 4;
if(gb.collideRectRect(player.posx,player.posy,8,12,gb.display.solid[i].x,gb.display.solid[i].y,8,height))
{
if(gb.display.solid[i].spritecol == door)return doorway;
else if(gb.display.solid[i].spritecol == plataform )return flr;
else if(gb.display.solid[i].spritecol == block )return flr;
else if(gb.display.solid[i].spritecol == alga)return dead;
else if(gb.display.solid[i].spritecol == tace)
{
spritesheet[4] = voidtile;
tkey=true;
}
}
}
return 0;
}
void checkcolision()
{
byte collisionstate = colisao();
player.posy+=2;
if(colisao() != flr && player.jump == nojump)player.jump = faling;
player.posy-=2;
if(collisionstate == doorway && tkey == true)
{
player.posx = 10;
player.posy = 24;
camerax = 0;
cameray = -32;
if(stage == 1)stage = 0;
else stage = 1;
tkey = false;
spritesheet[4] = tace;
if(stage == 1) xmax = (-1 * (pgm_read_byte(&stage2[0]) * 8)) + 84;
if(stage == 0) xmax = (-1 * (pgm_read_byte(&stage1[0]) * 8)) + 84;
// Serial.println(stage);
}
if(collisionstate == dead)
{
player.posx = 10;
player.posy = 24;
camerax = 0;
cameray = -32;
}
}
Return to Programming Questions
Users browsing this forum: No registered users and 7 guests