add more ideas
This commit is contained in:
		
							parent
							
								
									68ab786d8a
								
							
						
					
					
						commit
						be7a3e731b
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										4
									
								
								idea.zl2
								
								
								
								
							
							
						
						
									
										4
									
								
								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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										20
									
								
								idea.zl3
								
								
								
								
							
							
						
						
									
										20
									
								
								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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 *)
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue