1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
extern crate rand;
extern crate pancurses;
#[macro_use]
extern crate text_io;
mod character;
mod computer;
mod world;
use character::Player;
use computer::Enemy;
use pancurses::{Window, initscr, endwin};
use rand::Rng;
use std::io;
use std::convert::TryFrom;
use world::{World, GameWorld, TileType};
fn tile_to_str(tile: &TileType) -> &str {
match tile {
TileType::Floor => ".",
TileType::Wall => "█",
TileType::Empty => " ",
TileType::StairsDown => ">",
TileType::StairsUp => "<",
_ => "?"
}
}
fn draw_block(window: &Window, block: &TileType) {
window.printw(tile_to_str(block));
}
fn render_world(window: &Window, world: &World) {
let grid = world.to_tilegrid().unwrap();
for (linenum, line) in grid.raw_data().iter().enumerate() {
for block in line.iter() {
draw_block(&window, block);
}
window.mv(linenum as i32, 0);
}
}
fn debug_world(world: &World) {
let grid = world.to_tilegrid().unwrap();
for line in grid.raw_data().iter() {
for block in line.iter() {
print!("{}", tile_to_str(block));
}
print!("\n");
}
}
fn main() {
let mut world = World::new(80, 24);
world.generate();
debug_world(&world);
// let window = initscr();
// render_world(&window, &world);
// window.refresh();
// window.getch();
// endwin();
}
|