diff --git a/config.toml b/config.toml index 7cddb77..b849d71 100644 --- a/config.toml +++ b/config.toml @@ -4,4 +4,4 @@ batch_size = 48 replay_size = 300 learning_rate = 0.01 gamma = 0.97 -train = false +train = true diff --git a/justfile b/justfile index 839da3a..fe758bb 100644 --- a/justfile +++ b/justfile @@ -6,6 +6,6 @@ build-cuda: cd pyr && cargo build --release --features cuda train level: run level: - python -m mlgame -f 400 -i ./ml/ml_play_pyr_test.py -i ./ml/ml_play_pyr_test.py . --sound off --level {{level}} --game_times 3 + python -m mlgame -f 400 -i ./ml/ml_play_pyr_test.py -i ./ml/ml_play_manual_2P.py . --sound off --level {{level}} --game_times 3 clean: rm -r model.bin diff --git a/ml/ml_play_pyr_test.py b/ml/ml_play_pyr_test.py index 14232ed..3175941 100644 --- a/ml/ml_play_pyr_test.py +++ b/ml/ml_play_pyr_test.py @@ -7,6 +7,7 @@ import pygame from ctypes import * libpyr = cdll.LoadLibrary("./pyr/target/release/libpyr.so") + app_ptr = c_ulonglong(0) class Overall(Structure): @@ -36,6 +37,18 @@ class Food(Structure): ("kind", c_int32), ] +libpyr.tick.argtypes = [c_ulonglong, POINTER(Overall), POINTER(Food), c_uint64] +libpyr.tick.restype = c_int32 + +libpyr.new_app.argtypes = [] +libpyr.new_app.restype = c_ulonglong + +libpyr.drop_app.argtypes = [c_ulonglong] +libpyr.drop_app.restype = None + +libpyr.check_point.argtypes = [c_ulonglong] +libpyr.check_point.restype = None + def new_app(): global app_ptr app_ptr=c_ulonglong(libpyr.new_app()) @@ -89,7 +102,7 @@ def tick(scene_info: dict): elif kind=="GARBAGE_3": foods[i].kind=c_int(6) - result=libpyr.tick(app_ptr,pointer(overall),pointer(foods),c_uint64(n)) + result=libpyr.tick(app_ptr,(pointer(overall)),(POINTER(Food))(pointer(foods)),c_uint64(n)) if result==1: return ["UP"] if result==2: diff --git a/pyr/src/lib.rs b/pyr/src/lib.rs index 887a429..97c104f 100644 --- a/pyr/src/lib.rs +++ b/pyr/src/lib.rs @@ -49,5 +49,5 @@ pub unsafe extern "C" fn new_app() -> *const App { #[no_mangle] pub unsafe extern "C" fn drop_app(app: *mut App) { - // drop(Box::from_raw(app)) + drop(Box::from_raw(app)) }