๐ŸŽฎ์šด์„ํ”ผํ•˜๊ธฐ ์บ”๋ฒ„์Šค ๋ฏธ๋‹ˆ๊ฒŒ์ž„::ํด๋ก ์ฝ”๋”ฉ

1
post-thumbnail
post-custom-banner

1. Facts (์‚ฌ์‹ค, ๊ฐ๊ด€) -- ๊ตฌ์กฐ ๋ถ„์„

  1. ๋ณ€์ˆ˜ ์„ ์–ธ
    • ์บ”๋ฒ„์Šค๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ ํ•„์š”ํ•œ canvas, ctx๊ฐ์ฒด ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธ
    • ๊ฒŒ์ž„์˜ ์ƒํƒœ 3๊ฐ€์ง€(WAIT, RUN, GAMEOVER)
    • ์šฐ์ฃผ์„  : ์šฐ์ฃผ์„ ์ด๋ฏธ์ง€, ์œ„์น˜, ์šฐ์ฃผ์„ ์˜์—ญ ํฌ๊ธฐ, ๊ฐ๋„
    • ์šด์„ : ์šด์„๋“ค ์ง‘ํ•ฉ์ฒด, ์ƒ‰์ƒ, ๊ฐฏ์ˆ˜
    • ํ‚ค ๋ˆŒ๋ฆผ ์ƒํƒœ
    • ๊ฒฝ๊ณผ ์‹œ๊ฐ„
  2. window์— ์ด๋ฒคํŠธ ๊ฑธ๊ธฐ
    • onload
      canvas ์—˜๋ฆฌ๋ฉ˜ํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ, getContext,
      ์šฐ์ฃผ์„  ์ด๋ฏธ์ง€ ์ฝ์–ด์˜ค๊ธฐ,
      setInterval 30ms ๊ฐ„๊ฒฉ์œผ๋กœ runGameํ•จ์ˆ˜ ๊ณ„์† ํ˜ธ์ถœ.
    • onkeydown
      keyPressed[ํ‚ค์ฝ”๋“œ ๋ฐ›์•„์„œ] ๋ฐฐ์—ด์˜ ํ•ด๋‹นํ•˜๋Š” ๊ณณ์— true๊ฐ’ ์ฃผ๊ธฐ
    • onkeyup
      keyPressed[ํ‚ค์ฝ”๋“œ] false๊ฐ’ ์ฃผ๊ธฐ
  3. ํŽ‘์…˜
    • startGameํŽ‘์…˜
      ์šด์„๋ฐฐ์—ด ์ดˆ๊ธฐํ™”,
      ์šด์„ ๊ฐฏ์ˆ˜๋งŒํผ ์šด์„์˜ ์ขŒํ‘œ, ์†๋„, ์ƒ‰์ƒ์„ ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑ,
      ์šฐ์ฃผ์„  ์œ„์น˜๋ฅผ ํ™”๋ฉด ๊ฐ€์šด๋ฐ๋กœ,
      ์‹œ์ž‘์‹œ๊ฐ„ ์กฐ์‚ฌํ•ด๋‘๊ธฐ
    • getTimeํŽ‘์…˜
      ํ˜„์žฌ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ
      (์‹œ์Šคํ…œ ๋‚ ์งœ ๊ฐ์ฒด๋กœ ๊ฐ€์ ธ์™€์„œ โžก ์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ โžก ๊ฐ์ฒด ๊ฐ€์ ธ์˜จ๊ฑฐ ์‚ญ์ œ โžก ๋ณ€ํ™˜ํ•œ ์‹œ๊ฐ„ ๋‚ด๋ณด๋‚ด๊ธฐ)
    • runGameํŽ‘์…˜
      *์ƒํƒœ์— ๋”ฐ๋ผ ๋ถ„๊ธฐํ•œ๋‹ค
      WAIT์ƒํƒœ : keyPressed[13]์œผ๋กœ Enterํ‚ค ๋ˆ„๋ฅด๋Š”์ง€๋งŒ ๊ฒ€์‚ฌ.
      Enterํ‚ค ๋ˆ„๋ฅด๊ณ  ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋“œ ์™„๋ฃŒ๋˜๋ฉด
      startGame()ํ•จ์ˆ˜ ํ˜ธ์ถœํ•ด์„œ ๊ฒŒ์ž„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ƒํƒœstate๋ฅผ RUN์œผ๋กœ ๋ฐ”๊ฟˆ
      GAMEOVER์ƒํƒœ : WAIT์™€ ๋ฌถ์Œ(GAMEOVER ์ƒํƒœ๋Š” Enterํ‚ค๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ๋ฉด์—์„œ๋Š” WAIT ์ƒํƒœ์™€ ๊ฐ™๊ณ  ์šด์„๊ณผ ์šฐ์ฃผ์„ ์„ ํ‘œ์‹œํ•œ๋‹ค๋Š” ๋ฉด์—์„œ๋Š” RUN ์ƒํƒœ์™€ ๊ฐ™๋‹ค.)
      RUN์ƒํƒœ : ๋ˆŒ๋Ÿฌ์ง„ ํ‚ค์— ๋”ฐ๋ผ ์šฐ์ฃผ์„ ์˜ ์ขŒํ‘œ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ๋ฐฉํ–ฅ๋ณ„๋กœ ์šฐ์ฃผ์„  ํšŒ์ „ ๊ฐ๋„๋ฅผ angle์— ๋Œ€์ž….
      ๊ฒฝ๊ณผ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ณ ,
      ์šด์„ ์ด๋™ ์‹œํ‚ด(ํ™”๋ฉด ๊ฐ€์žฅ์ž๋ฆฌ์— ๋‹ฟ์œผ๋ฉด ๋ฐ˜๋Œ€ํŽธ์œผ๋กœ ์ด๋™, ์ถฉ๋Œ ๊ฒ€์‚ฌ ๋ฐ ์ถฉ๋Œ ์‹œ GAMEOVER์ƒํƒœ๋กœ ์ „ํ™˜)
      case์— ๋”ฐ๋ผ ๋ถ„๊ธฐ ํ›„ draw( )๊ทธ๋ฆฌ๊ธฐ ํ˜ธ์ถœ
    • drawTextํŽ‘์…˜
      ๋ฌธ์ž์—ด ์ถœ๋ ฅ ํ•จ์ˆ˜
    • drawํŽ‘์…˜
      *์ƒํƒœ์— ๋”ฐ๋ผ ๋ถ„๊ธฐํ•œ๋‹ค
      ํ™”๋ฉด ๋ฆฌ์…‹ํ•˜๊ธฐ ์œ„ํ•œ clearRect ํ›„ ๋ถ„๊ธฐswitchใ„ฑใ„ฑ
      WAIT์ƒํƒœ : drawText๋กœ ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•๋งŒ ์ถœ๋ ฅํ•˜๋ฉด ๋จ
      RUN์ƒํƒœ : ์šด์„(๋ฐฐ์—ด ์ˆœํšŒํ•˜๋ฉด์„œ ์› ๊ทธ๋ฆฌ๊ณ  ์šด์„ ์ƒ‰์ƒ๋Œ€๋กœ ์ƒ‰ ์ฑ„์šฐ๊ธฐ),
      ์šฐ์ฃผ์„  ๊ทธ๋ฆผ(ํšŒ์ „ ์ค‘์‹ฌ์ ์ด ์šฐ์ฃผ์„ ์˜ ๊ฐ€์šด๋ฐ ๋ถ€๋ถ„์ด๋ฏ€๋กœ ์ด๋™, ํšŒ์ „, ์ด๋™ ๋ณ€ํ™˜์„ ์ˆœ์„œ๋Œ€๋กœ),
      ํ˜„์žฌ์‹œ๊ฐ„ ์ถœ๋ ฅ(GAMEOVER์ผ๋•Œ๋Š” ๋ฌธ์ž์—ด ํ‘œ์‹œ, GAMEOVER์•„๋‹๋•Œ๋Š” ๊ฒฝ๊ณผ์‹œ๊ฐ„ ๊ฐฑ์‹ ),
      ๊ฒฝ๊ณผ์‹œ๊ฐ„ ํ‘œ์‹œ(GAMEOVER์ผ๋•Œ๋Š” ๋ฌธ์ž์—ด๊ณผ ํ˜„์žฌ์‹œ๊ฐ„์ด ํ•จ๊ป˜ ๋ณด์—ฌ์ง€๊ฒŒ ๋จ. ์•„๋‹๋•Œ๋Š” ๊ฒฝ๊ณผ์‹œ๊ฐ„๋งŒ ๋ณด์—ฌ์ง)
      GAMEOVER์ƒํƒœ : RUN์™€ ๋ฌถ์Œ(GAMEOVER ์ƒํƒœ๋Š” Enterํ‚ค๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ๋ฉด์—์„œ๋Š” WAIT ์ƒํƒœ์™€ ๊ฐ™๊ณ  ์šด์„๊ณผ ์šฐ์ฃผ์„ ์„ ํ‘œ์‹œํ•œ๋‹ค๋Š” ๋ฉด์—์„œ๋Š” RUN ์ƒํƒœ์™€ ๊ฐ™๋‹ค.)

2. Feelings (๋Š๋‚Œ, ์ฃผ๊ด€)

์ƒ๊ฐ๋ณด๋‹ค ํ• ๋งŒํ•˜๋‹ค...!์‹ถ์œผ๋ฉด์„œ๋„ ์Šค์Šค๋กœ ์ฝ”๋“œ ์งœ๋ณด๋ ค๊ณ ํ•˜๋ฉด ์–ด๋ ค์šธ๊ฑฐ๊ฐ™๋‹ค,,,,,....๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค๐Ÿฅบ

3. Findings (๋ฐฐ์šด ์ )

๋ฐฐ์šด ์ ์ด๋ผ๊ธฐ๋ณด๋‹ค ๋ชจ๋ฅด๊ฒ ๋Š” ๋ถ€๋ถ„๋“ค์„ ์ฐพ์•˜๋‹ค.
โœ” ๋ฐฐ์—ด ์„ ์–ธํ•  ๋•Œ []๋ž‘ new Array()๋ถ€๋ถ„ ๋‹ค์‹œ ๊ณต๋ถ€
โœ” constructor๋ž‘ prototype ๊ฐœ๋…์ •๋ฆฌ ๋‹ค์‹œ
โœ” this ๋‹ค์‹œ
โœ” () => {}์™€ function() {} ์ฐจ์ด์  ๋‹ค์‹œ. ํŠนํžˆ this ๋‹ฌ๋ผ์ง€๋Š”๊ฑฐ

4. Reference

5-2-5. Space ๊ฒŒ์ž„

profile
์ž๊ธฐ๊ณ„๋ฐœ์ผ์ง€. ๋””์ž์ธ+ํผ๋ธ”์งฌ๋ฐฅ 1๋…„4๊ฐœ์›”๋œ ์ดˆ๋ณด์ž์ž…๋‹ˆ๋‹ค.. ์—ฌ๊ธด ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๋งŒ ๊ณ„์‹œ๋„น
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€