Clone of ancient game Wolfenstein 3D by idTech written in Ada with Raylib bindings.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

97 řádky
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;