Clone of ancient game Wolfenstein 3D by idTech written in Ada with Raylib bindings.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

97 lignes
2.0KB

  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. if is_key_pressed (key_w) then movement.x := movement.x + 0.1;
  43. elsif is_key_pressed (key_s) then movement.x := movement.x - 0.1;
  44. elsif is_key_pressed (key_a) then movement.y := movement.y - 0.1;
  45. elsif is_key_pressed (key_d) then movement.y := movement.y + 0.1;
  46. end if;
  47. dd := get_mouse_delta;
  48. rotation.x := dd.x;
  49. update_camera_pro (view'access, movement, rotation, 1.0);
  50. begin_drawing;
  51. clear_background (sky_blue);
  52. begin_mode_3d (view);
  53. for i in 0 .. 40
  54. loop
  55. for j in 0 .. 40
  56. loop
  57. draw_model (model_array (0), (float (i) * (-4.0), -1.0, float (j) * (-4.0)), 2.0, white);
  58. draw_model (model_array (1), (float (i) * (-4.0), -1.0, float (j) * (-4.0)), 2.0, white);
  59. end loop;
  60. end loop;
  61. end_mode_3d;
  62. draw_texture (texture_array (0), (get_screen_width - 960) / 2, get_screen_height - 600, white);
  63. draw_fps (0, 0);
  64. end_drawing;
  65. end loop gameplay;
  66. close_window;
  67. end xhampion;