/* To be used by code maker */ void GameBoard :: create_shield_code() { srand(time(nullptr)); for (unsigned int idx=0; idx < pegs_in_row; idx++) { PegColor clr = get_random_color(); Peg peg(PegType::CODE, clr); shield_pegs_row.set_peg(idx, peg); } }
void PuyoGame::update(Input& input) { const int FALLING_PER_FRAME = 1; const int FALLING_FAST = 5; if(falling_puyo == nullptr) { falling_puyo = std::make_shared<Puyo>(40, 0, get_random_color()); falling_puyo->companion = std::make_shared<Puyo>(80, 0, get_random_color()); } if (controller.was_down_pressed(input)) { if(falling_puyo->can_move_to(0 , 5, BOARD_TILES_X, BOARD_TILES_Y, board)) { falling_puyo->fall(FALLING_FAST); } } if (controller.was_right_pressed(input)) { if(falling_puyo->can_move_to(40 , 0, BOARD_TILES_X, BOARD_TILES_Y, board)) { falling_puyo->move_right(); } } if (controller.was_left_pressed(input)) { if(falling_puyo->can_move_to(-40 , 0, BOARD_TILES_X, BOARD_TILES_Y, board)) { falling_puyo->move_left(); } } if (controller.was_rotate_right_pressed(input)) { falling_puyo->rotate_right(BOARD_TILES_X, BOARD_TILES_Y, board); } if(falling_puyo->can_move_to(0 , 1, BOARD_TILES_X, BOARD_TILES_Y, board)) { falling_puyo->fall(FALLING_PER_FRAME); } else { set_falling_peice_in_board(); drop_hanging_peices(); while(remove_completed()) drop_hanging_peices(); } }