tetris_core
Simple Tetris game logic (with no interface)
WARNING: This project was created on an early stage of learning RUST. It might lack many good practices.
Usage:
- Use any drawing library. (i.e: piston_window)
- Use any randomizer library or method (i.e: rand)
As an example of implementation, you can check https://github.com/etoledom/rust_practice/blob/master/07_tetris/src/main.rs
Implement the Randomizer
trait
;
Instantiate a Tetris Game instance using an instance or your randomizer struct and the desired board size:
let game_size = Size ;
let mut game = new;
update(&mut self, delta_time: f64)
Call game.update(delta_time);
on every game loop.
draw(&self) -> Vec<Block>
Get the board model to be drawn:
let game_blocks = game.draw;
A block is a structure that specifies the block's position, size and color in rgba. Position and size are unitary, you can give it the unit and size you want.
struct Block {
pub rect: Rect,
pub color: Color,
}
perform(&mut self, action: Action)
Perform movement and rotation actions
game.perform;
is_game_over(&self) -> bool
Checks if is game over.
get_score(&self) -> u64
Gets the current score.