From be7a3e731b73f3165a8ed2397d586f5340920450 Mon Sep 17 00:00:00 2001 From: zongor Date: Sat, 7 Dec 2024 20:41:02 -0500 Subject: [PATCH] add more ideas --- idea.zl0b | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++ idea.zl2 | 4 +- idea.zl2b | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ idea.zl3 | 20 ++++++---- idea.zl4 | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 337 insertions(+), 9 deletions(-) create mode 100644 idea.zl0b create mode 100644 idea.zl2b create mode 100644 idea.zl4 diff --git a/idea.zl0b b/idea.zl0b new file mode 100644 index 0000000..dc28e49 --- /dev/null +++ b/idea.zl0b @@ -0,0 +1,105 @@ +:vec { + :x f32 + :y f32 + :z f32 +} type + +:color { + :r i8 + :g i8 + :b i8 +} type + +:player { + :username str + :pos vec + :color color +} type + +:login { + :player 0 check + :str 1 check + + (* do the login here *) +} sub + +255 255 0 :purple color + +:main { + 800 :screen_width i32 + 450 :screen_height i32 + + argv split + :username str + :password str + + username 0.0 f32 1.0 f32 2.0 f32 vec purple :me player + password me login :players set + + () me.pos.x push + me.pos.y 10.0 add push + me.pos.z 10.0 add push (* Camera pos *) + me.pos (* Camera looking at point *) + 0.0 1.0 0.0 vec (* Camera up vector(rotation towards target) *) + 45.0 f32 (* Camera field - of - view Y *) + :CAMERA_PERSPECTIVE (* Camera projection type *) + :camera Camera3D + + screen_width screen_height "zwl client : raylib" init_window + 60 set_target_fps + + (* Main game loop *) + { + + :KEY_RIGHT is_key_down { + 0.2 me.pos.x add :me.pos.x set + true :player_updated set + } ifyes + + :KEY_LEFT is_key_down { + 0.2 me.pos.x sub :me.pos.x set + true :player_updated set + } ifyes + + :KEY_DOWN is_key_down { + 0.2 me.pos.z add :me.pos.z set + true :player_updated set + } ifyes + + :KEY_UP is_key_down { + 0.2 me.pos.z sub :me.pos.z set + true :player_updated set + } ifyes + + camera me sync_camera + + player_updated choose { + me move :players set + } ifyes { + me ping :players set + } ifno + + begin_drawing + RAYWHITE clear_background + + camera begin_mode_3d + + (* Draw floor *) + 30 1.0 draw_grid + + me.pos 0.5 0.5 0.5 me.apperance draw_cube + players :player { + player.pos 0.5 0.5 0.5 player.apperance draw_cube + } map + + end_mode_3d + + end_drawing + } + { window_should_close not } while (* Detect window close button or ESC key *) + + close_window (*Close window and OpenGL context *) + +} sub + +main \ No newline at end of file diff --git a/idea.zl2 b/idea.zl2 index 7d43a1a..19e2866 100644 --- a/idea.zl2 +++ b/idea.zl2 @@ -96,8 +96,8 @@ fn :main { draw_cube [acc me :pos] 0.5 0.5 0.5 [acc me :apperance] - map players { - draw_cube [acc @this :pos] 0.5 0.5 0.5 [acc @this apperance] + map :player players { + draw_cube [acc player :pos] 0.5 0.5 0.5 [acc player apperance] } end_mode_3d diff --git a/idea.zl2b b/idea.zl2b new file mode 100644 index 0000000..b0f2bfb --- /dev/null +++ b/idea.zl2b @@ -0,0 +1,113 @@ +type :Vec { + f32 :x + f32 :y + f32 :z +} + +type :Color { + i8 :r + i8 :g + i8 :b +} + +type :Player { + str :username + Vec :pos + Color :color +} + +fn :login { + Player + str + + (* do the login here *) +} + +Color :purple {255 255 0} + +fn :main { + i32 :screen_width 800 + i32 :screen_height 450 + + split argv + str :username + str :password + + Player :me { + username + vec {0.0 1.0 2.0} + purple + } + Player() :players { login me password } + + Camera3D :camera { + vec {0.0 1.0 0.0} + i32 45.0 + atom :CAMERA_PERSPECTIVE + vec { + add acc (:me :pos :x) 10.0 + add acc (:me :pos :y) 10.0 + acc (:me :pos :z) + } + vec {acc me :pos} + } + + init_window "zwl client : raylib" screen_width screen_height + set_target_fps 60 + + (* Main game loop *) + while { not window_should_close } { + + if {is_key_down :KEY_RIGHT} { + mut (:me :pos :x) add acc me :pos :x 0.2 + set :player_updated true + } + + if {is_key_down :KEY_LEFT} { + mut (:me :pos :x) sub acc me :pos :x 0.2 + set :player_updated true + } + + if {is_key_down :KEY_DOWN} { + mut (:me :pos :z) add acc me :pos :z 0.2 + set :player_updated true + } + + if {is_key_down :KEY_UP} { + mut (:me :pos :z) sub acc me :pos :z 0.2 + set :player_updated true + } + + sync_camera camera me + + if (player_updated) { + set :players move me + } else { + set :players ping me + } + + begin_drawing + clear_background RAYWHITE + + begin_mode_3d camera + + (* Draw floor *) + draw_grid 30 1.0 + + draw_cube me.pos 0.5 0.5 0.5 me.apperance + + map :player players { + draw_cube player.pos 0.5 0.5 0.5 player.apperance + } + + end_mode_3d + + end_drawing + } + (* Detect window close button or ESC key *) + + set :players logout me + close_window (*Close window and OpenGL context *) +} + +main \ No newline at end of file diff --git a/idea.zl3 b/idea.zl3 index 99beb80..bf419f1 100644 --- a/idea.zl3 +++ b/idea.zl3 @@ -1,3 +1,9 @@ +type Vec { + f32 x; + f32 y; + f32 z; +} + type Color { i8 r; i8 g; @@ -6,7 +12,7 @@ type Color { type Player { str username; - f32[] pos; + Vec pos; Color color; } @@ -25,28 +31,28 @@ void main(int argc, str[] argv) { Player me( username, - [0.0, 1.0, 2.0], + Vec(0.0, 1.0, 2.0), purple ); Player[] players = login(me, password); Camera3D camera( - [0.0, 1.0, 0.0] + Vec(0.0, 1.0, 0.0), 45.0, :CAMERA_PERSPECTIVE, - [ + Vec( me.pos.x + 10.0, me.pos.y + 10.0, me.pos.z - ] - [me.pos] + ), + me.pos ); init_window("zwl client : raylib", screen_width, screen_height); set_target_fps(60) (* Main game loop *) - while ( .not. window_should_close ) { + while ( .not. window_should_close() ) { if (is_key_down(:KEY_RIGHT)) { me.pos.x = me.pos.x + 0.2; diff --git a/idea.zl4 b/idea.zl4 new file mode 100644 index 0000000..10f7ec3 --- /dev/null +++ b/idea.zl4 @@ -0,0 +1,104 @@ +type Vec { + f32[x, y, z]; +} + +type Color { + i8[r, g, b]; +} + +type Player { + str username; + Vec pos; + Color color; +} + +void login(Player p, str password) { + (* do the login here *) +} + +(* Color purple = [255, 255, 0]; *) + +Color purple(r=255, g=255, b=0); + +void main(int argc, str[] argv) { + i32 screen_width = 800; + i32 screen_height = 450; + + str username = argv[0]; + str password = argv[1]; + + Player me( + username=username, + pos=[0.0, 1.0, 2.0], + color=purple + ); + Player[] players = login(me, password); + + Camera3D camera( + up=[0.0, 1.0, 0.0] + fov=45.0, + mode=:CAMERA_PERSPECTIVE, + pos=[ + me.pos.x + 10.0, + me.pos.y + 10.0, + me.pos.z + ] + point_at=me.pos + ); + + init_window("zwl client : raylib", screen_width, screen_height); + set_target_fps(60) + + (* Main game loop *) + while ( .not. window_should_close ) { + + if (is_key_down(:KEY_RIGHT)) { + me.pos.x = me.pos.x + 0.2; + player_updated = true; + } + + if (is_key_down(:KEY_LEFT)) { + me.pos.x = me.pos.x - 0.2; + player_updated = true; + } + + if (is_key_down(:KEY_DOWN)) { + me.pos.z = me.pos.z + 0.2; + player_updated = true; + } + + if (is_key_down(:KEY_UP)) { + me.pos.z = me.pos.z - 0.2; + player_updated = true; + } + + sync_camera(camera, me); + + if (player_updated) { + players = move(me); + } else { + players = ping(me); + } + + begin_drawing(); + clear_background(:RAYWHITE); + + begin_mode_3d(camera); + + (* Draw floor *) + draw_grid(30, 1.0); + + draw_cube(me.pos, 0.5, 0.5, 0.5, me.apperance); + + for (player in players) { + draw_cube(player.pos, 0.5, 0.5, 0.5, player.apperance); + } + + end_mode_3d(); + + end_drawing(); + } + + logout(me); + close_window(); (*Close window and OpenGL context *) +}