blob: 97f748d0605b73e60366eb9f8ac8c3fdb0962ac1 (
plain)
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
|
use macroquad::prelude::*;
use std::{cell::RefCell, rc::Rc};
use rust_lisp::default_env;
use rust_lisp::lisp;
use rust_lisp::parser::parse;
use rust_lisp::interpreter::eval;
use rust_lisp::model::{Value};
mod extended_environment;
#[macroquad::main("Snake")]
async fn main() {
request_new_screen_size(34.0 * 18.0, 24.0 * 24.0);
let env = Rc::new(RefCell::new(default_env()));
// define new methods
extended_environment::extend_environment(&env);
let main_script = parse(include_str!("../scripts/main.el"));
for exp in main_script {
eval(env.clone(), &exp.unwrap()).unwrap();
}
loop {
clear_background(extended_environment::BACKGROUND_COLOR);
eval(env.clone(), &lisp! {
(update { Value::Float(get_frame_time()) } )
}).unwrap();
eval(env.clone(), &lisp! { (draw) }).unwrap();
next_frame().await
}
}
|