Clone of ancient game Wolfenstein 3D by idTech written in Ada with Raylib bindings.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

100 linhas
2.2KB

  1. with raylib;
  2. use raylib;
  3. procedure xhampion is
  4. type monster_index is (
  5. afrit,
  6. brown_chaos_serpent,
  7. centaur,
  8. dark_bishop,
  9. death_wyvern,
  10. ettin,
  11. green_chaos_serpent,
  12. maulotaur,
  13. pig,
  14. reiver,
  15. stalker,
  16. wendigo
  17. );
  18. view : aliased camera_3d := (
  19. position => (0.0, 0.0, 0.0),
  20. target => (0.0, 0.0, 1.0),
  21. up => (0.0, 1.0, 0.0),
  22. field_of_view => 90.0,
  23. projection => camera_perspective
  24. );
  25. model_count : natural := 2;
  26. model_array : array (0 .. 1) of model;
  27. texture_count : natural := 2;
  28. texture_array : array (0 .. 1) of texture;
  29. movement : vector_3d := (0.0, 0.0, 0.0);
  30. rotation : vector_3d := (0.0, 0.0, 0.0);
  31. dd : vector_2d := (0.0, 0.0);
  32. begin
  33. open_window (1800, 900, "Xhampion" & character'val (0));
  34. disable_cursor;
  35. set_target_fps (60);
  36. set_trace_log_level (log_none);
  37. model_array (0) := load_model ("./sprite/wall.obj" & character'val (0));
  38. model_array (1) := load_model ("./sprite/meme.obj" & character'val (0));
  39. texture_array (0) := load_texture ("./sprite/hand.png" & character'val (0));
  40. gameplay: loop
  41. exit when window_should_close;
  42. --~update_camera (view'access, camera_first_person);
  43. if is_key_pressed (key_w) then movement.x := movement.x + 1.0;
  44. elsif is_key_pressed (key_s) then movement.x := movement.x - 1.0;
  45. elsif is_key_pressed (key_a) then movement.y := movement.y - 1.0;
  46. elsif is_key_pressed (key_d) then movement.y := movement.y + 1.0;
  47. end if;
  48. dd := get_mouse_delta;
  49. rotation.x := dd.x;
  50. update_camera_pro (view'access, movement, rotation, 1.0);
  51. --~update_camera_pro (view'access, (0.0, 0.0, 0.0), rotation, 1.0);
  52. --~update_camera_pro (view'access, movement, (0.0, 0.0, 0.0), 1.0);
  53. begin_drawing;
  54. clear_background (sky_blue);
  55. begin_mode_3d (view);
  56. for i in 0 .. 40
  57. loop
  58. for j in 0 .. 40
  59. loop
  60. draw_model (model_array (0), (float (i) * (-4.0), -10.0, float (j) * (-4.0)), 2.0, white);
  61. draw_model (model_array (1), (float (i) * (-4.0), -10.0, float (j) * (-4.0)), 2.0, white);
  62. end loop;
  63. end loop;
  64. end_mode_3d;
  65. draw_texture (texture_array (0), (get_screen_width - 960) / 2, get_screen_height - 600, white);
  66. draw_fps (0, 0);
  67. end_drawing;
  68. end loop gameplay;
  69. close_window;
  70. end xhampion;