generated from sigonasr2/CPlusPlusProjectTemplate
Deluge
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
2a50fb0fff
commit
0749e7264e
26
Board.cpp
26
Board.cpp
@ -5,8 +5,8 @@ extern Meteos*game;
|
|||||||
Board::Board()
|
Board::Board()
|
||||||
:colorHandler({}){}
|
:colorHandler({}){}
|
||||||
|
|
||||||
Board::Board(vi2d boardSize,float gravity,float launchSpd,float spawnRate,std::array<int,10> colorRates,Renderable&tileset)
|
Board::Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float spawnRate,std::array<int,10> colorRates,Renderable&tileset)
|
||||||
:boardSize(boardSize),gravity(gravity),launchSpd(launchSpd),spawnRate(spawnRate),colorHandler(colorRates),tileset(tileset.Decal()){
|
:boardSize(boardSize),gravity(gravity),maxGravity(maxGravity),launchSpd(launchSpd),spawnRate(spawnRate),colorHandler(colorRates),tileset(tileset.Decal()){
|
||||||
drawOffset={(float)game->ScreenWidth()/2-boardSize.x/2*12,(float)game->ScreenHeight()/2-boardSize.y/2*12};
|
drawOffset={(float)game->ScreenWidth()/2-boardSize.x/2*12,(float)game->ScreenHeight()/2-boardSize.y/2*12};
|
||||||
yBottom=(boardSize.y-1)*12;
|
yBottom=(boardSize.y-1)*12;
|
||||||
for (int i=0;i<boardSize.x;i++) {
|
for (int i=0;i<boardSize.x;i++) {
|
||||||
@ -16,26 +16,8 @@ Board::Board(vi2d boardSize,float gravity,float launchSpd,float spawnRate,std::a
|
|||||||
|
|
||||||
void Board::spawnBlock(int col){
|
void Board::spawnBlock(int col){
|
||||||
BlockClump c=BlockClump();
|
BlockClump c=BlockClump();
|
||||||
c.addBlock(col,colorHandler.getRandomColor());
|
c.y-=128;
|
||||||
for(int counter=1;game->coinFlip(game->gen)==0;counter++) {
|
c.addBlock(col,0,colorHandler.getRandomColor());
|
||||||
c.addBlock(col,-counter,colorHandler.getRandomColor());
|
|
||||||
}
|
|
||||||
if (game->coinFlip(game->gen)==0) {
|
|
||||||
if (col>0) {
|
|
||||||
c.addBlock(col-1,colorHandler.getRandomColor());
|
|
||||||
for(int counter=1;game->coinFlip(game->gen)==0;counter++) {
|
|
||||||
c.addBlock(col-1,-counter,colorHandler.getRandomColor());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (game->coinFlip(game->gen)==0) {
|
|
||||||
if (col<boardSize.x-1) {
|
|
||||||
c.addBlock(col+1,colorHandler.getRandomColor());
|
|
||||||
for(int counter=1;game->coinFlip(game->gen)==0;counter++) {
|
|
||||||
c.addBlock(col+1,-counter,colorHandler.getRandomColor());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clumps.push_back(c);
|
clumps.push_back(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
Board.h
3
Board.h
@ -38,10 +38,11 @@ class Board{
|
|||||||
vf2d drawOffset;
|
vf2d drawOffset;
|
||||||
vi2d boardSize;
|
vi2d boardSize;
|
||||||
float gravity;
|
float gravity;
|
||||||
|
float maxGravity;
|
||||||
float spawnRate;
|
float spawnRate;
|
||||||
float launchSpd;
|
float launchSpd;
|
||||||
Board();
|
Board();
|
||||||
Board(vi2d boardSize,float gravity,float launchSpd,float spawnRate,std::array<int,10> colorRates,Renderable&tileset);
|
Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float spawnRate,std::array<int,10> colorRates,Renderable&tileset);
|
||||||
void spawnBlock(int col);
|
void spawnBlock(int col);
|
||||||
std::vector<Block>&getBlocks(int col);
|
std::vector<Block>&getBlocks(int col);
|
||||||
std::vector<BlockClump>&getBlockClumps();
|
std::vector<BlockClump>&getBlockClumps();
|
||||||
|
Binary file not shown.
15
main.cpp
15
main.cpp
@ -16,7 +16,7 @@ bool Meteos::OnUserCreate()
|
|||||||
randBlockPos=std::uniform_int_distribution<>(0, 9);
|
randBlockPos=std::uniform_int_distribution<>(0, 9);
|
||||||
coinFlip=std::uniform_int_distribution<>(0, 1);
|
coinFlip=std::uniform_int_distribution<>(0, 1);
|
||||||
|
|
||||||
gameBoard=Board({10,14},12.f,-20.f,3.0f,{3,0,0,0,0,0,0,0,0,0},SPRITES["blocks_test.png"]);
|
gameBoard=Board({10,14},20.f,100.f,-20.f,1.0f,{3,3,2,3,2,0,0,0,0,0},SPRITES["blocks_test.png"]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -25,8 +25,8 @@ bool Meteos::OnUserUpdate(float fElapsedTime)
|
|||||||
{
|
{
|
||||||
fElapsedTime=std::min(fElapsedTime,1/60.f);
|
fElapsedTime=std::min(fElapsedTime,1/60.f);
|
||||||
lastBlockSpawn+=fElapsedTime;
|
lastBlockSpawn+=fElapsedTime;
|
||||||
if (lastBlockSpawn>=3.0f){
|
if (lastBlockSpawn>=gameBoard.spawnRate){
|
||||||
lastBlockSpawn-=3.0f;
|
lastBlockSpawn-=gameBoard.spawnRate;
|
||||||
gameBoard.spawnBlock(randBlockPos(gen));
|
gameBoard.spawnBlock(randBlockPos(gen));
|
||||||
}
|
}
|
||||||
Clear(Pixel(32,32,255));
|
Clear(Pixel(32,32,255));
|
||||||
@ -42,6 +42,9 @@ bool Meteos::OnUserUpdate(float fElapsedTime)
|
|||||||
for (int i=0;i<gameBoard.getBlockClumps().size();i++){
|
for (int i=0;i<gameBoard.getBlockClumps().size();i++){
|
||||||
BlockClump&c=gameBoard.getBlockClumps()[i];
|
BlockClump&c=gameBoard.getBlockClumps()[i];
|
||||||
c.vspeed+=gameBoard.gravity*fElapsedTime;
|
c.vspeed+=gameBoard.gravity*fElapsedTime;
|
||||||
|
if (c.vspeed>gameBoard.maxGravity){
|
||||||
|
c.vspeed=gameBoard.maxGravity;
|
||||||
|
}
|
||||||
for (int j=0;j<gameBoard.getBlockClumps().size();j++) {
|
for (int j=0;j<gameBoard.getBlockClumps().size();j++) {
|
||||||
if (i==j) continue;
|
if (i==j) continue;
|
||||||
BlockClump&c2=gameBoard.getBlockClumps()[j];
|
BlockClump&c2=gameBoard.getBlockClumps()[j];
|
||||||
@ -82,14 +85,14 @@ bool Meteos::OnUserUpdate(float fElapsedTime)
|
|||||||
for (int k=0;k<gameBoard.getBlocks(col).size();k++){
|
for (int k=0;k<gameBoard.getBlocks(col).size();k++){
|
||||||
Block&b2=gameBoard.getBlocks(col)[k];
|
Block&b2=gameBoard.getBlocks(col)[k];
|
||||||
if (c.getBlockPosition(b).y+12>=b2.pos.y&&c.getBlockPosition(b).y<=b2.pos.y+12){
|
if (c.getBlockPosition(b).y+12>=b2.pos.y&&c.getBlockPosition(b).y<=b2.pos.y+12){
|
||||||
c.y=b2.pos.y-12;
|
c.y-=c.getBlockPosition(b).y+12-b2.pos.y;
|
||||||
c.vspeed=0;
|
c.vspeed=0;
|
||||||
gameBoard.convertClump(i--);
|
gameBoard.convertClump(i--);
|
||||||
goto nextClump;
|
goto nextClump;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (c.getBlockPosition(b).y>=gameBoard.yBottom) {
|
if (c.getBlockPosition(b).y>=gameBoard.yBottom) {
|
||||||
c.y=gameBoard.yBottom;
|
c.y-=c.getBlockPosition(b).y-gameBoard.yBottom;
|
||||||
c.vspeed=0;
|
c.vspeed=0;
|
||||||
gameBoard.convertClump(i--);
|
gameBoard.convertClump(i--);
|
||||||
goto nextClump;
|
goto nextClump;
|
||||||
@ -171,11 +174,13 @@ bool Meteos::OnUserUpdate(float fElapsedTime)
|
|||||||
for (Block*b2:matchedBlocksX) {
|
for (Block*b2:matchedBlocksX) {
|
||||||
b2->col=BlockColor::LAUNCHED;
|
b2->col=BlockColor::LAUNCHED;
|
||||||
}
|
}
|
||||||
|
c.vspeed=gameBoard.launchSpd;
|
||||||
}
|
}
|
||||||
if (matchedBlocksY.size()>2) {
|
if (matchedBlocksY.size()>2) {
|
||||||
for (Block*b2:matchedBlocksY) {
|
for (Block*b2:matchedBlocksY) {
|
||||||
b2->col=BlockColor::LAUNCHED;
|
b2->col=BlockColor::LAUNCHED;
|
||||||
}
|
}
|
||||||
|
c.vspeed=gameBoard.launchSpd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user