add more ideas

This commit is contained in:
zongor 2024-12-07 20:41:02 -05:00
parent 68ab786d8a
commit be7a3e731b
5 changed files with 337 additions and 9 deletions

105
idea.zl0b Normal file
View File

@ -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

View File

@ -96,8 +96,8 @@ fn :main {
draw_cube [acc me :pos] 0.5 0.5 0.5 [acc me :apperance] draw_cube [acc me :pos] 0.5 0.5 0.5 [acc me :apperance]
map players { map :player players {
draw_cube [acc @this :pos] 0.5 0.5 0.5 [acc @this apperance] draw_cube [acc player :pos] 0.5 0.5 0.5 [acc player apperance]
} }
end_mode_3d end_mode_3d

113
idea.zl2b Normal file
View File

@ -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

View File

@ -1,3 +1,9 @@
type Vec {
f32 x;
f32 y;
f32 z;
}
type Color { type Color {
i8 r; i8 r;
i8 g; i8 g;
@ -6,7 +12,7 @@ type Color {
type Player { type Player {
str username; str username;
f32[] pos; Vec pos;
Color color; Color color;
} }
@ -25,28 +31,28 @@ void main(int argc, str[] argv) {
Player me( Player me(
username, username,
[0.0, 1.0, 2.0], Vec(0.0, 1.0, 2.0),
purple purple
); );
Player[] players = login(me, password); Player[] players = login(me, password);
Camera3D camera( Camera3D camera(
[0.0, 1.0, 0.0] Vec(0.0, 1.0, 0.0),
45.0, 45.0,
:CAMERA_PERSPECTIVE, :CAMERA_PERSPECTIVE,
[ Vec(
me.pos.x + 10.0, me.pos.x + 10.0,
me.pos.y + 10.0, me.pos.y + 10.0,
me.pos.z me.pos.z
] ),
[me.pos] me.pos
); );
init_window("zwl client : raylib", screen_width, screen_height); init_window("zwl client : raylib", screen_width, screen_height);
set_target_fps(60) set_target_fps(60)
(* Main game loop *) (* Main game loop *)
while ( .not. window_should_close ) { while ( .not. window_should_close() ) {
if (is_key_down(:KEY_RIGHT)) { if (is_key_down(:KEY_RIGHT)) {
me.pos.x = me.pos.x + 0.2; me.pos.x = me.pos.x + 0.2;

104
idea.zl4 Normal file
View File

@ -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 *)
}