Skip to content

TiagoDev88/cub3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CUB3D

🧊 cub3D - Projeto Raycasting da Escola 42


About 💡

Este projeto é uma introdução à técnica de Raycasting em gráficos 3D, inspirada nos primeiros jogos First-Person Shooter (FPS) como Wolfenstein 3D. O objetivo principal é renderizar uma visão 3D de um labirinto a partir de um mapa 2D, utilizando a biblioteca MiniLibX para a janela, gráficos e eventos.


🌟 Funcionalidades Implementadas

  • Renderização 3D: O núcleo do projeto é o algoritmo de Raycasting que projeta o mapa 2D do labirinto em uma visão 3D para o jogador.
  • Controles de Movimento: O jogador pode mover-se para a frente, para trás, e virar (rotação) à esquerda e à direita.
  • Detecção de Colisão: Implementamos a colisão de paredes, impedindo que o jogador atravesse os limites do labirinto.
  • Gestão de Texturas: As texturas são aplicadas às paredes (Norte, Sul, Leste, Oeste) e às cores do chão e do teto são definidas (Flat).
  • Parsing do Mapa: Leitura e validação do ficheiro de configuração do mapa (.cub), garantindo que o mapa é válido (fechado, caracteres válidos, etc.).

💻 Como Compilar e Executar

Pré-requisitos

O projeto é construído usando a biblioteca MiniLibX. Certifique-se de que a biblioteca está instalada e configurada no seu ambiente 42 (geralmente já está).

1. Compilação

Navegue até o diretório raiz do projeto e execute o comando make:

Instructions

1. Clone the repository

git clone https://github.com/TiagoDev88/cub3D.git

2. Compile

make

Isso criará o executável principal chamado cub3D.

3. Run

./cub3D <caminho/para/ficheiro.cub>

Exemplo:

./cub3D maps/basic.cub

🗺️ Formato do Ficheiro de Mapa (.cub)

O ficheiro de mapa deve incluir informações de configuração e o layout do labirinto.

1. Configurações (Cores e Texturas)

Chave Descrição Exemplo
NO Textura para a parede Norte NO ./textures/north.xpm
SO Textura para a parede Sul SO ./textures/south.xpm
WE Textura para a parede Oeste WE ./textures/west.xpm
EA Textura para a parede Leste EA ./textures/east.xpm
F Cor do Chão (RGB) F 220,100,0
C Cor do Teto (RGB) C 225,30,0

2. Mapa do Labirinto

O mapa deve ser definido por:

  • '1': Parede
  • '0': Espaço Vazio
  • 'N', 'S', 'E', 'W': Posição e Orientação Inicial do Jogador
  • Espaços: Podem ser usados para criar margens ou separar o mapa da configuração.

Regras de Validação:

  1. Deve haver exatamente uma posição inicial do jogador (N, S, E, ou W).
  2. O mapa deve ser fechado/rodeado por paredes '1'.
  3. Apenas caracteres válidos ('0', '1', 'N', 'S', 'E', 'W', e espaço) são permitidos no mapa.

🕹️ Controles do Jogo

Tecla Ação
W Mover para a Frente
S Mover para Trás
A Mover para a Esquerda (Strafe)
D Mover para a Direita (Strafe)
Setas Esquerda / Direita Rodar a Câmara / Virar
ESC Sair do Jogo

🛠️ Tecnologias Utilizadas

C
MiniLibX (biblioteca gráfica)


Author 👤

42 login: tfilipe- / GitHub: @TiagoDev88

42 login: edfreder / GitHub: @EdgarFir

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors