![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
All there but errors need fixing
Diff: TetrisGame/TetrisGame.cpp
- Revision:
- 4:7ddd287a5d28
- Parent:
- 3:522c6f850e91
- Child:
- 5:53e021832adc
diff -r 522c6f850e91 -r 7ddd287a5d28 TetrisGame/TetrisGame.cpp --- a/TetrisGame/TetrisGame.cpp Sun May 24 11:18:33 2020 +0000 +++ b/TetrisGame/TetrisGame.cpp Sun May 31 17:01:53 2020 +0000 @@ -10,81 +10,79 @@ } -void TetrisGame::init(int tetromino_width, int tetromino_height, int tetromino_size, int speed) +void TetrisGame::init(int number, int x, int y, int speed) { - _tetromino_width = tetromino_width; - _tetromino_height = tetromino_height; - _tetromino_size = tetromino_size; + // initialise game parameters + _number = blockArray[blocknumber]; + _x = x; + _y = y; _speed = speed; - // CHANGE SO STARTS AT TOP? - _p1x = GAP; - _p1.init(_p1x,_tetromino_height,_tetromino_width); - _tetromino.init(_tetromino_height, _tetromino_width, _tetromino_size,_speed); + _tetromino.init(_number, WIDTH/2 - 2, HEIGHT, _speed); // puts tetromino in middle SHOULD THIS INCLUDE ARRAY???? + } + void TetrisGame::read_input(Gamepad &pad) { _d = pad.get_direction(); - _mag = pad.getmag(); + _mag = pad.get_mag(); } void TetrisGame::draw(N5110 &lcd) { + // draw elements in lcd buffer + // board lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT); - _p1.draw(lcd); -} - -void TetrisGame::update(Gamepax &pad) -{ - check_goal(pad); + _tetromino.draw(lcd, _number); - _p1.update(_d,_mag); - check_floor_collision(pad); - check_tetromino_collisions(pad); } -void TetrisGame::check_floor_collision(Gamepad &pad) +void TetrisGame::update(Gamepad &pad) { - Vector2D tetromino_pos = _tetromino.get_pos(); + // check_score(pad); + + // _p1.update(_d,_mag); + _tetromino.update(_d,_mag); - if (tetromino_pos.y + _tetromino_size >= (HEIGHT-1) ) { - - tetromino_pos.y = (HEIGHT-1) - _tetromino_size; - tetromino_velocity.y = 0; - - pad.tone(750.0,0.1); - } - // update tetromino parameters?? + check_wall_collision(pad); + check_tetromino_collisions(); } - -void TetrisGame::check_tetromino_collisions(Gamepad &pad) + + +void TetrisGame::check_wall_collision(Gamepad &pad) { Vector2D tetromino_pos = _tetromino.get_pos(); Vector2D tetromino_velocity = _tetromino.get_velocity(); - Vector2D p1_pos = _p1.get_pos(); - - if ( - (tetromino_pos.y >= p1_pos.y) && - (tetromino_pos.y <= p1_pos.y + _tetromino_height) && - (tetromino_pos.x >= _p1x) && - (tetromino_pos.x <= _plx + _tetromino_width) - ) { - tetromino_pos.x = _plx + _tetromino_width; - tetromino_velocity.x = 0; + // check if hit floor + if (tetromino_pos.y + 4 >= (HEIGHT-1) ) { + + tetromino_pos.y = (HEIGHT-1) - 4; + tetromino_velocity.y = 0; + + pad.tone(750.0,0.1); - pad.tone(1000.0,0.1); + cancel_line(); // check if line full and cancel + drop down if it is + + _tetromino.init(_number, WIDTH/2 - 2, HEIGHT, _speed); // drop new shame + + blocknumber ++; + if (blocknumber > 4) { + blocknumber = 0; + } + } + // check if hit roof + else if (tetromino_pos.y <= 1) { + + exit_game(); + } - - - - - - - - \ No newline at end of file + // SAVE OLD SCREEN AND DROP NEW TETROMINO???? // + // update tetromino parameters?? +} +