Giter Site home page Giter Site logo

raycasting_cub3d's Introduction

raycasting_cub3d's People

Watchers

 avatar

raycasting_cub3d's Issues

Mandatory part - cub3D

ν”„λ‘œκ·Έλž¨ 이름 : cub3D

μ œμΆœν•  파일 : μ œμž‘μ— ν•„μš”ν•œ λͺ¨λ“  νŒŒμΌλ“€

Makefile κ·œμΉ™ : all, clean, fclean, re, bonus

인자 : *.cub ν˜•μ‹μ˜ 맡

μ‚¬μš©κ°€λŠ₯ν•œμ™ΈλΆ€ ν•¨μˆ˜ : open, close, read, write, printf, malloc, free, perror, strerror, exitmath 라이브러리 λ‚΄μ˜ λͺ¨λ“  ν•¨μˆ˜λ“€ (-lm man man 3 math)MinilibX 라이브러리 λ‚΄μ˜ λͺ¨λ“  ν•¨μˆ˜λ“€

직접 λ§Œλ“  libft : μ‚¬μš© κ°€λŠ₯

μ„€λͺ… : μ—¬λŸ¬λΆ„μ€ 미둜 λ‚΄λΆ€μ˜ 1인칭 λ·°λ₯Ό "ν˜„μ‹€μ μΈ" 3D κ·Έλž˜ν”½μœΌλ‘œ ν‘œν˜„ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν‘œν˜„μ€ μ•žμ„œ λ§ν•œ Ray-Casting 원리λ₯Ό 톡해 μƒμ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.


μ œμ•½μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • λ°˜λ“œμ‹œ miniLibXλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. (μš΄μ˜μ²΄μ œμ—μ„œ 이용 κ°€λŠ₯ν•œ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ κ³Όμ œμ—μ„œ μ œκ³΅λ˜λŠ” μ†ŒμŠ€ 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€) λ§Œμ•½ μ œκ³΅λ°›μ€ μ†ŒμŠ€λ₯Ό μ΄μš©ν•΄ μž‘μ—…ν•˜κΈ°λ‘œ ν–ˆλ‹€λ©΄, Libftμ˜Β κ³΅ν†΅ 지침 (Common Instructions) κ³Ό 같은 κ·œμΉ™μ„ 따라야 ν•©λ‹ˆλ‹€.

  • μž‘μ—… μ°½ κ΄€λ¦¬λŠ” λΆ€λ“œλŸ½κ²Œ λ™μž‘ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€. (μ°½ μ΅œμ†Œν™”, λ‹€λ₯Έ 창으둜 μ „ν™˜ λ“±μ˜ λ™μž‘)

  • 벽이 μ–΄λŠ μͺ½ (동, μ„œ, 남, 뢁) 을 ν–₯ν•˜κ³  μžˆλŠ”μ§€μ— 따라 μ„œλ‘œ λ‹€λ₯Έ λ²½ ν…μŠ€μ³ (ν…μŠ€μ³λŠ” 직접 골라 μ‚¬μš©ν•˜μ„Έμš”) λ₯Ό μ‚¬μš©ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.

  • μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œκ·Έλž¨μ€ λ²½ λŒ€μ‹  μ•„μ΄ν…œ (μŠ€ν”„λΌμ΄νŠΈ) 을 ν‘œμ‹œν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œκ·Έλž¨μ€ λ°”λ‹₯κ³Ό 천μž₯의 색을 μ„œλ‘œ λ‹€λ₯΄κ²Œ μ„€μ •ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • μ–Έμ  κ°€ Deepthoughtκ°€ μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œμ νŠΈλ₯Ό ν‰κ°€ν•˜κ²Œ 될 날을 λŒ€λΉ„ν•˜μ—¬, μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œκ·Έλž¨μ€ 두 번째 μΈμžκ°€ "--save" 일 λ•Œ 첫 번째둜 λ Œλ”λ§λœ 이미지λ₯Ό bmp ν˜•μ‹μœΌλ‘œ μ €μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • 두 번째 μΈμžκ°€ 없을 경우, ν”„λ‘œκ·Έλž¨μ€ λ‹€μŒ κ·œμΉ™μ„ μ€€μˆ˜ν•˜λ©΄μ„œ ν™”λ©΄ 창에 μ˜μƒμ„ ν‘œμ‹œν•©λ‹ˆλ‹€.

    • ν‚€λ³΄λ“œμ˜ μ™Όμͺ½κ³Ό 였λ₯Έμͺ½ ν™”μ‚΄ν‘œ ν‚€λŠ” μΉ΄λ©”λΌμ˜ μ‹œμ μ„ νšŒμ „μ‹œν‚¬ 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. (μ™Όμͺ½ 및 였λ₯Έμͺ½ 보기)

    • W, A, S, D ν‚€λŠ” 맡 λ‚΄λΆ€μ—μ„œ 카메라λ₯Ό μ΄λ™μ‹œν‚¬ 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. (μΊλ¦­ν„°μ˜ 이동)

    • ESCλ₯Ό λˆ„λ₯΄λ©΄ 창이 λ‹«νžˆκ³  ν”„λ‘œκ·Έλž¨μ΄ μ •μƒμ μœΌλ‘œ μ’…λ£Œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

    • μ°½ 상단 ν‘œμ‹œμ€„μ— μžˆλŠ” 빨간색 μ‹­μžκ°€λ₯Ό ν΄λ¦­ν•˜λ©΄ 창이 λ‹«νžˆκ³  ν”„λ‘œκ·Έλž¨μ΄ μ •μƒμ μœΌλ‘œ μ’…λ£Œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

    • 지도에 ν‘œμ‹œλœ ν™”λ©΄ 크기가 λ””μŠ€ν”Œλ ˆμ΄ 해상도보닀 크면, ν˜„μž¬ λ””μŠ€ν”Œλ ˆμ΄μ˜ 해상도에 따라 μœˆλ„μš° 크기가 섀정될 κ²ƒμž…λ‹ˆλ‹€.

    • minilibX의 이미지λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 적극 ꢌμž₯ν•©λ‹ˆλ‹€.

  • μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œκ·Έλž¨μ€ λ¨Όμ € .cub ν™•μž₯자λ₯Ό 가진 지도 νŒŒμΌμ„ 첫 번째 인자둜 받아와야 ν•©λ‹ˆλ‹€.

    • μ§€λ„λŠ” 4개의 문자둜만 κ΅¬μ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. (빈 곡간인 경우 0, 벽인 경우 1, μ•„μ΄ν…œμ€ 2, ν”Œλ ˆμ΄μ–΄μ˜ μ‹œμž‘ μœ„μΉ˜μ™€ 그에 λ”°λ₯Έ μ‹œμ μ€ N, S, E, W)

    • κ°„λ‹¨ν•˜κ³  μœ νš¨ν•œ 맡의 μ˜ˆμ‹œμž…λ‹ˆλ‹€ :

      111111
      100101
      102001
      1100N1
      111111
    • μ§€λ„λŠ” 벽으둜 λ‘˜λŸ¬μŒ“μ—¬ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 그렇지 μ•Šλ‹€λ©΄ ν”„λ‘œκ·Έλž¨μ€ 였λ₯˜λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

    • 지도 λ‚΄μš©μ„ μ œμ™Έν•˜κ³ λŠ”, 각각의 μš”μ†Œλ“€μ€ ν•˜λ‚˜ ν˜Ήμ€ κ·Έ μ΄μƒμ˜ 빈 μ€„λ‘œ 뢄리될 수 μžˆμŠ΅λ‹ˆλ‹€.

    • 지도 λ‚΄μš©μ΄ 항상 맨 λ§ˆμ§€λ§‰μ— μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 점을 μ œμ™Έν•˜λ©΄, λ‹€λ₯Έ μš”μ†Œλ“€μ€ μ–΄λ–€ μˆœμ„œλ‘œλ“  파일 내뢀에 μ €μž₯λ˜μ–΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

    • 지도λ₯Ό μ œμ™Έν•˜κ³ , μš”μ†Œμ—μ„œ 각 μœ ν˜•μ˜ μ •λ³΄λŠ” ν•˜λ‚˜ μ΄μƒμ˜ 곡백으둜 ꡬ뢄될 수 μžˆμŠ΅λ‹ˆλ‹€.

    • μ§€λ„λŠ” 파일 λ‚΄μ—μ„œ λ³΄μ΄λŠ” κ²ƒμ²˜λŸΌ 뢈러 올 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 곡백은 μ§€λ„μ˜ μœ νš¨ν•œ 뢀뢄이며, μ²˜λ¦¬λŠ” μ—¬λŸ¬λΆ„μ˜ λͺ«μž…λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ€ κ·œμΉ™λŒ€λ‘œ λ§Œλ“€μ–΄μ§„ λͺ¨λ“  μ’…λ₯˜μ˜ 지도λ₯Ό μ œλŒ€λ‘œ 뢈러올 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • 각 μš”μ†Œ (지도 μ œμ™Έ) 의 첫 번째 μ •λ³΄λŠ” (ν•˜λ‚˜ λ˜λŠ” λ‘κ°œμ˜ 문자둜 κ΅¬μ„±λœ) μœ ν˜• μ‹λ³„μžμ΄λ©°, 각 객체에 λŒ€ν•œ λͺ¨λ“  ꡬ체적인 μ •λ³΄λŠ” λ‹€μŒκ³Ό 같은 μ—„κ²©ν•œ κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€ :

    • 해상도 :

      R 1920 1080
      • μœ ν˜• μ‹λ³„μž : R
      • x λ Œλ” 크기
      • y λ Œλ” 크기
    • 뢁μͺ½ λ²½ ν…μŠ€μ³ :

      NO ./path_to_the_north_texture
      • μœ ν˜• μ‹λ³„μž : NO
      • 뢁μͺ½ λ²½ ν…μŠ€μ³κ°€ λ‹΄κ²¨μžˆλŠ” 경둜
    • 남μͺ½ λ²½ ν…μŠ€μ³ :

      SO ./path_to_the_south_texture
      • μœ ν˜• μ‹λ³„μž : SO
      • 남μͺ½ λ²½ ν…μŠ€μ³κ°€ λ‹΄κ²¨μžˆλŠ” 경둜
    • μ„œμͺ½ λ²½ ν…μŠ€μ³ :

      WE ./path_to_the_west_texture
      • μœ ν˜• μ‹λ³„μž : WE
      • μ„œμͺ½ λ²½ ν…μŠ€μ³κ°€ λ‹΄κ²¨μžˆλŠ” 경둜
    • 동μͺ½ λ²½ ν…μŠ€μ³ :

      EA ./path_to_the_east_texture
      • μœ ν˜• μ‹λ³„μž : EA
      • 동μͺ½ λ²½ ν…μŠ€μ³κ°€ λ‹΄κ²¨μžˆλŠ” 경둜
    • μ•„μ΄ν…œ ν…μŠ€μ³ :

      S ./path_to_the_sprite_texture
      • μœ ν˜• μ‹λ³„μž : S
      • μ•„μ΄ν…œ ν…μŠ€μ³κ°€ λ‹΄κ²¨μžˆλŠ” 경둜
    • λ°”λ‹₯ 색상 :

      F 220,100,0
      • μœ ν˜• μ‹λ³„μž : F
      • [0, 255] μ‚¬μ΄μ˜ RGB 색상 : 0, 255, 255
    • 천μž₯ 색상 :

      C 225,30,0
      • μœ ν˜• μ‹λ³„μž : C
      • [0, 255] μ‚¬μ΄μ˜ RGB 색상 : 0, 255, 255
  • ν•„μˆ˜ κ΅¬ν˜„ νŒŒνŠΈμ—μ„œ μ‚¬μš©ν•  κ°„λ‹¨ν•œ .cub 파일의 예:

    R 1920 1080
    NO ./path_to_the_north_texture
    SO ./path_to_the_south_texture
    WE ./path_to_the_west_texture
    EA ./path_to_the_east_texture

    S ./path_to_the_sprite_texture
    F 220,100,0
    C 225,30,0

    	1111111111111111111111111
    	1000000000110000000000001
    	1011000001110000002000001
    	1001000000000000000000001
    

    111111111011000001110000000000001
    100000000011000001110111111111111
    11110111111111011100000010001
    11110111111111011101010010001
    11000000110101011100000010001
    10002000000000001100000010001
    10000000000000001101010010001
    11000001110101011111011110N0111
    11110111 1110101 101111010001
    11111111 1111111 111111111111

  • 맡 νŒŒμΌμ—μ„œ 잘λͺ»λœ ꡬ성이 λ°œκ²¬λ˜μ—ˆμ„ 경우, ν”„λ‘œκ·Έλž¨μ„ μ˜¬λ°”λ₯΄κ²Œ μ’…λ£Œν•˜κ³  "Error\n" 을 λ°˜ν™˜ν•œ ν›„, μ—¬λŸ¬λΆ„μ΄ μ •ν•œ λͺ…μ‹œμ  였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.