Skip to content

Mandatory Checklist

  • Evaluate only the official Git repository content.
  • Confirm repository and project identity.
  • Ensure no alias or helper script hides the real program behavior.
  • Do not edit project files during defense unless both sides agree.
  • Treat any segfault or uncontrolled termination as blocking.
  • make succeeds.
  • running make again does not relink unnecessarily.
  • the mandatory executable name is exactly cub3D.
  • if runtime checks are performed, they are done in a real X11 session.
  • NO texture path works.
  • SO texture path works.
  • WE texture path works.
  • EA texture path works.
  • F color works.
  • C color works.
  • the map block is parsed correctly.

Invalid config behavior:

  • unknown key returns a clean error.
  • duplicate key returns a clean error.
  • invalid texture path returns a clean error.
  • wrong extension, not .cub, returns a clean error and exits.
  • the window opens at launch.
  • the maze interior is rendered in the window.
  • hiding, minimizing, or restoring the window keeps display behavior coherent.
  • the red cross closes the window and exits cleanly.
  • ESC exits cleanly.
  • movement keys produce a visible result on screen.
  • F1, F2, and F3 resize the window correctly.
  • spawn orientation matches the map for N, S, E, and W.
  • left arrow rotates left.
  • right arrow rotates right.
  • W or Z, then S, moves forward and backward in a straight line.
  • A or Q, then D, strafes left and right in a straight line.
  • movement and rotation remain playable and smooth.
  • wall texture changes correctly by face orientation (N, S, E, W).
  • changing a texture path in config changes the rendered texture.
  • a non-existent texture path is rejected with an error.
  • floor color F updates correctly when changed.
  • ceiling color C updates correctly when changed.
  • random or extra arguments do not create uncontrolled behavior.
  • malformed usage does not cause a segfault.
  • keyboard mashing does not break runtime unexpectedly.
  • a valid map keeps the program stable.
  • an invalid map is rejected cleanly.
  • no memory leaks on representative mandatory runs.
  • no invalid free or double free on exit paths.
  • file descriptors are clean at exit and only standard streams remain open.

Recommended command:

Terminal window
valgrind --leak-check=full --track-fds=yes ./cub3D <map.cub>

Practical note:

  • MLX/X11 may keep extra library-owned descriptors open, so the real target is “no project-owned FD leak”, not blindly “only 3 FDs” in every environment.
  • Norminette passes for the mandatory scope.
  • no unexpected crash or uncontrolled termination occurs during the full demo flow.
  • mandatory is flawless before discussing bonus.
  • one known-good mandatory map runs end-to-end.
  • input, movement, textures, and exit are all demonstrated in one session.
  • one invalid map case is demonstrated with clean error handling.