/42_cub3D

A simplified RayCaster implementation using miniLibX, part of the 42 school curriculum. The project includes features like window management, map interpretation, player movement, and rendering with distinct wall textures for each cardinal direction.

Primary LanguageC

Cub3D 100/100

My first RayCaster with miniLibX 🔫

In this repository, you'll find a detailed description of what this project entails, instructions on how to test it, and soon, a comprehensive theoretical breakdown of its construction. Our aim is to provide a clear and thorough overview, making it easy for you to navigate, explore, or contribute to this project. Scroll down for more in-depth details and relevant information.

Table of Contents



Overview

This project is a simplified implementation of a RayCaster, adhering to the cub3D project curriculum of 42 school. This was carried out following the rules described in the subject version 10 released 2023.

Mandatory Features

  1. Must use the miniLibX.
  2. Window management (e.g., changing to another window, minimizing, etc).
  3. Implement close the window and quit the program cleanly (ESC and ✖️)
  4. Read, interpret and validate the map from a .cub file.
  5. Ensure that the map consists of only 6 possible characters (0, 1, N, S, E and W).
  6. Handle identifiers and all yours specific information on map.
  7. Display different wall textures for each cardinal direction (NO, SO, EA, WE).
  8. Define distinct colors for the floor and ceiling.
  9. Handle player movement within the field of view (A, W, S and D).
  10. Implement rotation of the field of view(⬅️ and ➡️).
  11. Display the type of any errors in the program on stdout.
  12. Apply raycaster engine calculations.

Compilation and Execution

make
./cub3d assets/maps/valid/valid1.cub

Theoretical Explanation

soon

Contributors

I would like to extend my deepest gratitude to the @pin3dev for the remarkable partnership.