#include "World.h" World::World(int l):level(l) { level--; next_level(); reset(); } void World::reset() { player.x2=player.x=0; player.speed=level; player.anim=0; player.y=bricks[0][0].altitude+1; player.y2=0; player.dead=false; player.win=false; coins_pos.clear(); for(int i=0;i0.4) { player.dead=true; return; } } player.anim=(int)(player.x2*6*player.speed)%2; while(player.x2>1.0) { player.x2-=1; player.x+=1; if (player.x>=bricks.size()) { player.win=true; return; } if(last_brick==4){player.y--;player.y2=0;} if(last_brick==3){player.y++;player.y2=0;} bool ok=false; for(Brick &brick:bricks[player.x]) { if(brick.altitude==player.y-1&&brick.type!=3)ok=true; else if(brick.altitude==player.y&&brick.type==3)ok=true; else if(brick.altitude==player.y&&brick.type!=3) { ok=false; break; } } if (!ok) { player.dead=true; return; } // player.speed--; } } void World::mouseclick(int x, int y) { if(player.dead){reset();return;} if(player.win){next_level();return;} if(x<0||x>=bricks.size())return; int idx=0; for(Brick &brick:bricks[x]) { if(brick.type==0&&brick.altitude>=y) { return; } if(brick.type<=1&&brick.altitude==y) { return; } if(brick.type>1&&brick.altitude==y) { brick.type++; if(brick.type>=5) { bricks[x].erase(bricks[x].begin()+idx); } return; } idx++; } bricks[x].push_back({y,2}); // player.speed++; }