Clone of ancient game Wolfenstein 3D by idTech written in Ada with Raylib bindings.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

97 Zeilen
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;