Skip to content

Latest commit

ย 

History

History
54 lines (41 loc) ยท 2.84 KB

File metadata and controls

54 lines (41 loc) ยท 2.84 KB

TypeSokoban

ไธญๆ–‡ | English | ๆ—ฅๆœฌ่ชž

์ด ํ”„๋กœ์ ํŠธ๋Š” ์˜ค์ง TypeScript์˜ ํƒ€์ž… ์‹œ์Šคํ…œ๋งŒ์œผ๋กœ ๊ตฌํ˜„๋œ "์†Œ์ฝ”๋ฐ˜" ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ JavaScript ๋กœ์ง์ด ์ „ํ˜€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ๋ชจ๋“  ๊ฒŒ์ž„ ๋กœ์ง, ๋งต ๋ Œ๋”๋ง, ์ŠนํŒจ ํŒ์ •์€ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์˜ ํƒ€์ž… ๊ฒ€์‚ฌ ์ค‘์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ๊ธฐํ˜ธ ์„ค๋ช…

๊ธฐํ˜ธ ์˜๋ฏธ
๐Ÿ‘พ ์ฃผ์ธ๊ณต (Player)
๐Ÿ‘ฝ ๋ชฉํ‘œ ์ง€์  ์œ„์˜ ์ฃผ์ธ๊ณต (Player on Target)
๐Ÿ˜ƒ ์ƒ์ž (Box)
๐Ÿ˜Ž ๋ชฉํ‘œ ์ง€์  ์œ„์˜ ์ƒ์ž (Box on Target)
๐Ÿ•ถ๏ธ ๋ชฉํ‘œ ์ง€์  (Target)
๐ŸŽ‡ ๋ฒฝ (Wall)
๐ŸŒ‘ ๋ฐ”๋‹ฅ (Floor)

๊ฒŒ์ž„ ๋ฐฉ๋ฒ•

๊ฒŒ์ž„์€ TypeScript์˜ ์†์„ฑ ์ ‘๊ทผ(Dot Notation)์„ ํ†ตํ•ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. src/index.ts์—์„œ ์—ฐ์†์ ์ธ ๋งˆ์นจํ‘œ ์—ฐ์‚ฐ์œผ๋กœ ์ฃผ์ธ๊ณต์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ์Šคํ…Œ์ด์ง€ ์„ ํƒ: .stage1๋ถ€ํ„ฐ .stage100๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ด๋™ ์ œ์–ด:
    • .w: ์œ„๋กœ ์ด๋™
    • .s: ์•„๋ž˜๋กœ ์ด๋™
    • .a: ์™ผ์ชฝ์œผ๋กœ ์ด๋™
    • .d: ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
  3. ํ™”๋ฉด ํ™•์ธ: ์ด๋™ ๋ช…๋ น ๋’ค์— .over๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด IDE์˜ ํƒ€์ž… ํžŒํŠธ(Hover)์— ํ˜„์žฌ ๋งต์˜ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  4. ํด๋ฆฌ์–ด ํŒ์ •: ์Šคํ…Œ์ด์ง€ ๋‚ด์˜ ๋ชจ๋“  ์ƒ์ž๊ฐ€ ๋ชฉํ‘œ ์ง€์ ์œผ๋กœ ์˜ฎ๊ฒจ์ง€๋ฉด(์ฆ‰, ๋งต์— ๋” ์ด์ƒ ๐Ÿ˜ƒ ๊ธฐํ˜ธ๊ฐ€ ๋‚จ์ง€ ์•Š์œผ๋ฉด), ํƒ€์ž… ์‹œ์Šคํ…œ์—์„œ .GameClear.WoW.MuchFun์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

TypeGame
  .stage1      // 1์Šคํ…Œ์ด์ง€ ์ž…์žฅ
  .s.d.d.over  // ์•„๋ž˜๋กœ ํ•œ ์นธ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‘ ์นธ ์ด๋™ ํ›„ ๋งต ํ™•์ธ

ํ•ต์‹ฌ ๊ตฌํ˜„ ์›๋ฆฌ

1. ์ƒํƒœ ๋จธ์‹  (src/TypeGame.ts)

๊ฒŒ์ž„์˜ ํ•ต์‹ฌ ๋กœ์ง์€ Step ํƒ€์ž…์— ์บก์Аํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋™ ๋ฐฉํ–ฅ์˜ ์•ž๋’ค ๋‘ ์นธ ์ƒํƒœ(prev2, prev1, next1, next2)์— ๋”ฐ๋ผ ํ˜„์žฌ ์นธ์ด ๋‹ค์Œ ํ„ด์— ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

2. ์ขŒํ‘œ ๋ณ€ํ™˜ (src/utils.ts)

๋กœ์ง์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด "์™ผ์ชฝ ์ด๋™" ํŒ๋‹จ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„, ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ์ด๋™์˜ ๊ฒฝ์šฐ MatrixRotateAndScale ํƒ€์ž…์„ ํ†ตํ•ด 2์ฐจ์› ๋ฐฐ์—ด(ํ–‰๋ ฌ)์„ ํšŒ์ „/์ „์น˜์‹œ์ผœ ์™ผ์ชฝ ์ด๋™ ๋ฌธ์ œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ ๋’ค, ๋‹ค์‹œ ์›๋ž˜ ์œ„์น˜๋กœ ํšŒ์ „์‹œํ‚ต๋‹ˆ๋‹ค.

3. ์žฌ๊ท€์  ๋ Œ๋”๋ง (src/utils.ts)

  • Join: ํŠœํ”Œ ํƒ€์ž…์˜ ํ•œ ํ–‰ ๊ธฐํ˜ธ๋“ค์„ ํ•˜๋‚˜์˜ ๊ธด ๋ฌธ์ž์—ด๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • Render: 2์ฐจ์› ๋ฐฐ์—ด์„ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ IDE์˜ ํƒ€์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ์ค„ ๋ฌธ์ž์—ด๋กœ ๋งต์ด ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • VSCode ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • TypeScript ๋ฒ„์ „ 4.1 ์ด์ƒ(Template Literal Types ์ง€์›)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • src/index.ts์—์„œ .over ์†์„ฑ์— ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ Œ๋”๋ง๋œ ๊ฒŒ์ž„ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.