[][src]Struct console_engine::ConsoleEngine

pub struct ConsoleEngine {
    pub frame_count: usize,
    // some fields omitted
}

Fields

frame_count: usize

The current frame count, publicly accessible

Methods

impl ConsoleEngine[src]

Basic Usage :

use console_engine::pixel;
use console_engine::termion::color;
use console_engine::termion::event::Key;
 
fn main() {
    // initializes a screen of 20x10 characters with a target of 3 frame per second
    // coordinates will range from [0,0] to [19,9]
    let mut engine = console_engine::ConsoleEngine::init(20, 10, 3);
    let value = 14;
    // main loop, be aware that you'll have to break it because ctrl+C is captured
    loop {
        engine.wait_frame(); // wait for next frame + capture inputs
        engine.clear_screen(); // reset the screen
     
        engine.line(0, 0, 19, 9, pixel::pxl('#')); // draw a line of '#' from [0,0] to [19,9]
        engine.print(0, 4, format!("Result: {}", value)); // prints some value at [0,4]
     
        engine.set_pxl(4, 0, pixel::pxl_fg('O', color::Cyan)); // write a majestic cyan 'O' at [4,0]
 
        if engine.is_key_pressed(Key::Char('q')) { // if the user presses 'q' :
            break; // exits app
        }
     
        engine.draw(); // draw the screen
    }
}

pub fn init(width: u32, height: u32, target_fps: u32) -> ConsoleEngine[src]

Initialize a screen of the provided width and height, and load the target FPS

pub fn init_fill(target_fps: u32) -> ConsoleEngine[src]

Initialize a screen filling the entire terminal with the target FPS

pub fn scr_w(&self) -> u32[src]

Get the screen width

pub fn scr_h(&self) -> u32[src]

Get the screen height

pub fn clear_screen(&mut self)[src]

Reset the screen to a blank state

pub fn print(&mut self, x: u32, y: u32, string: String)[src]

prints a string at the specified coordinates.
The string will automatically overlaps if it reach the right border

usage:

engine.print(0,0, String::from("Hello, world!"));
engine.print(0, 4, format!("Score: {}", score));

pub fn print_fbg<C1: Color + Clone, C2: Color + Clone>(
    &mut self,
    x: u32,
    y: u32,
    string: String,
    fg: C1,
    bg: C2
)
[src]

prints a string at the specified coordinates with the specified foreground and background color
The string will automatically overlaps if it reach the right border

usage

// print "Hello, world" in blue on white background
engine.print(0,0, String::from("Hello, world!"), color::Blue, color::White);

pub fn line(
    &mut self,
    start_x: u32,
    start_y: u32,
    end_x: u32,
    end_y: u32,
    character: Pixel
)
[src]

draws a line of the provided character between two sets of coordinates
this code is heavily inspired by the drawLine function of olc::PixelGameEngine
see: olcPixelGameEngine Repository

usage :

use console_engine::pixel;
// ...
engine.line(0, 0, 9, 9, pixel::pxl('#'));

pub fn set_pxl(&mut self, x: u32, y: u32, character: Pixel)[src]

sets the provided character in the specified coordinates

usage:

use console_engine::pixel;
// ...
engine.set_pxl(3,8,pixel::pixel('o'));

pub fn get_pxl(&self, x: u32, y: u32) -> Pixel[src]

Get the character stored at provided coordinates

usage:

if engine.get_pxl(3,8).chr == 'o' {
    engine.print(0,0,"Found a 'o'");
}

pub fn draw(&self)[src]

Draw the screen in the terminal
For best results, use it once per frame

usage:

engine.print(0,0,String::from("Hello, world!")); // <- prints "Hello, world!" in 'screen' memory
engine.draw(); // display 'screen' memory to the user's terminal

pub fn wait_frame(&mut self)[src]

Pause the execution until the next frame need to be rendered
Internally gets user's input for the next frame

usage:

// initializes a screen with a 10x10 screen and targetting 30 fps
let mut engine = console_engine::ConsoleEngine::init(10, 10, 30);
loop {
    engine.wait_frame(); // wait for next frame
    // do your stuff
}

pub fn is_key_pressed(&self, key: Key) -> bool[src]

checks whenever a key is pressed (first frame held only)

usage:

loop {
    engine.wait_frame(); // wait for next frame + captures input
     
    if engine.is_key_pressed(Key::Char('q')) {
        break; // exits app
    }
}

pub fn is_key_held(&self, key: Key) -> bool[src]

checks whenever a key is held down

usage:

loop {
    engine.wait_frame(); // wait for next frame + captures input
     
    if engine.is_key_held(Key::Char('8')) && pos_y > 0 {
        pos_y -= 1; // move position upward
    }
}

pub fn is_key_released(&self, key: Key) -> bool[src]

checks whenever a key has been released (first frame released)

usage:

if engine.is_key_held(Key::Char('h')) {
    engine.clear_screen();
    engine.print(0,0,"Please don't hold this button.");
    engine.draw();
    while !engine.is_key_released(Key::Char('h')) {
        engine.wait_frame(); // refresh button's states
    }
}

pub fn debug_keys(&self)[src]

prints key status on screen. For debug purposes only.

Trait Implementations

impl Drop for ConsoleEngine[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.