๐Ÿšธ ์ฝ”๋”ฉ์Šคํƒ€๋žฉ ๋“ค์–ด๊ฐ€๊ธฐ์ „ Part 8-1 — ํ•™๋…„·์‹ค๋ ฅ๋ณ„ ๋ฐฐ์šฐ๋Š” ์ˆœ์„œ ๋กœ๋“œ๋งต: ๋ช…๋ น์–ด ์ •๋ฆฌ

๐Ÿšธ ์ฝ”๋”ฉ์Šคํƒ€๋žฉ ๋“ค์–ด๊ฐ€๊ธฐ์ „ Part 8-1 — ํ•™๋…„·์‹ค๋ ฅ๋ณ„ ๋ฐฐ์šฐ๋Š” ์ˆœ์„œ ๋กœ๋“œ๋งต: ๋ช…๋ น์–ด ์ •๋ฆฌ & ์‹ค์ „ ์˜ˆ์ œํŽธ

๐Ÿšธ ์ฝ”๋”ฉ์Šคํƒ€๋žฉ ๋“ค์–ด๊ฐ€๊ธฐ์ „ Part 8-1 — ํ•™๋…„·์‹ค๋ ฅ๋ณ„ ๋ฐฐ์šฐ๋Š” ์ˆœ์„œ ๋กœ๋“œ๋งต: ๋ช…๋ น์–ด ์ •๋ฆฌ & ์‹ค์ „ ์˜ˆ์ œํŽธ

์ด ๋ฌธ์„œ๋Š” Part 8 “ํ•™๋…„·์‹ค๋ ฅ๋ณ„ ๋กœ๋“œ๋งต”์—์„œ ์ œ์‹œํ•œ ํ๋ฆ„์„ ๋ช…๋ น์–ด์™€ ์งง์€ ์˜ˆ์ œ๋กœ ์ •๋ฆฌํ•œ ๋ณต์ŠตํŽธ์ด์—์š”. “๋ฌด์—‡์„ ๋จผ์ €, ์™œ ๊ทธ๋ ‡๊ฒŒ?”์— ์ง‘์ค‘ํ•˜๋ฉด์„œ๋„, ์‹ค์ œ๋กœ ์†์ด ๊ฐ€๋Š” ์ฝ”๋“œ๋กœ ๊ฐ๊ฐ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

1️⃣ ๋กœ๋“œ๋งต ๊ธฐ์ค€ — ํ•™๋…„ & ์‹ค๋ ฅ 2์ถ•

์ถ•๊ตฌ๋ถ„ํ•ต์‹ฌ ๋ชฉํ‘œ
ํ•™๋…„์ดˆ๋“ฑ ์ €ํ•™๋…„ · ์ดˆ๋“ฑ ๊ณ ํ•™๋…„ · ์ค‘๋“ฑํ‘œํ˜„ → ๋…ผ๋ฆฌ → ๊ตฌ์กฐ
์‹ค๋ ฅ์ž…๋ฌธ · ๊ธฐ์ดˆ · ์‘์šฉ · ํ”„๋กœ์ ํŠธํŒจํ„ด ์ตํžˆ๊ธฐ → ํ•ฉ์น˜๊ธฐ → ์™„์„ฑํ•˜๊ธฐ
๐Ÿ’ก ์›์น™: ์‹œ๊ฐ(HTML·CSS·Scratch)๋กœ “๋ณด๋Š” ๋ฒ•”์„ ๋จผ์ € ์ตํžˆ๊ณ , Python/JavaScript๋กœ “์ƒ๊ฐ์„ ์›€์ง์ด๋Š” ๋ฒ•”์„ ์ด์–ด ๊ฐ‘๋‹ˆ๋‹ค.

2️⃣ ์ถ”์ฒœ ์ˆœ์„œ — ํ•™๋…„·์ˆ˜์ค€๋ณ„ ๋น ๋ฅธ ์ง€๋„

์ดˆ๋“ฑ ์ €ํ•™๋…„ (์ž…๋ฌธ)

ScratchHTML

๋ธ”๋ก์œผ๋กœ ๋ฐ˜๋ณต/์กฐ๊ฑด ๊ฐ๊ฐ์„ ๋งŒ๋“ค๊ณ , ์ œ๋ชฉ·๋ฌธ๋‹จ·์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ํ™”๋ฉด ๊ตฌ์กฐ๋ฅผ ์ตํ˜€์š”.

// Scratch ๊ฐ๊ฐ → HTML ๊ตฌ์กฐ
<h1>๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ</h1>
<ul><li>๊ฐ•์•„์ง€</li><li>ํ”ผ์ž</li></ul>

์ดˆ๋“ฑ ๊ณ ํ•™๋…„ (๊ธฐ์ดˆ)

PythonJavaScript

๋ณ€์ˆ˜·์กฐ๊ฑด·๋ฐ˜๋ณต์œผ๋กœ ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ/๋ฐ˜์‘์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

# Python
x = int(input("๋‚˜์ด? "))
print("ํ‹ฐ์ผ“:", "์ฒญ์†Œ๋…„" if x < 19 else "์ผ๋ฐ˜")

์ค‘๋“ฑ (์‘์šฉ~ํ”„๋กœ์ ํŠธ)

JavaScriptCanvasPython

๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ/์บ”๋ฒ„์Šค, ํŒŒ์ผ ๋‚˜๋ˆ„๊ธฐ, ๊ฐ„๋‹จ ๋กœ์ง ํ…Œ์ŠคํŠธ๊นŒ์ง€.

<button id="b">0</button>
<script>let n=0; b.onclick=()=>b.textContent=++n;</script>

3️⃣ ํ•ต์‹ฌ ๋ช…๋ น ํŒจํ„ด — ๋‹จ๊ณ„๋ณ„ ์ฒดํฌ

๋‹จ๊ณ„ํ•ต์‹ฌ ํŒจํ„ดPythonJavaScriptScratch/HTML·CSS
์ž…๋ฌธ์ถœ๋ ฅ/์ž…๋ ฅ print / input console.log / prompt [๋งํ•˜๊ธฐ]/HTML ํ…์ŠคํŠธ
๊ธฐ์ดˆ์กฐ๊ฑด/๋ฐ˜๋ณต/ํ•จ์ˆ˜ if / for / def if / for / function [๋งŒ์•ฝ][๋ฐ˜๋ณต]/๋‚˜๋งŒ์˜ ๋ธ”๋ก
์‘์šฉ์ด๋ฒคํŠธ/์ƒํƒœ ์ž…์ถœ๋ ฅ ๋ฃจํ”„, ๋ฆฌ์ŠคํŠธ/๋”•์…”๋„ˆ๋ฆฌ addEventListener, DOM/Canvas [ํ‚ค ๋ˆŒ๋ €์„ ๋•Œ]/๋ณ€์ˆ˜
ํ”„๋กœ์ ํŠธํŒŒ์ผ ๋ถ„๋ฆฌ/์ €์žฅ import, ์˜ˆ์™ธ module, localStorage ์Šคํ…Œ์ด์ง€/์Šคํ”„๋ผ์ดํŠธ ๊ตฌ์„ฑ

4️⃣ ๊ฐ™์€ ์ฃผ์ œ, ๋‹ค๋ฅธ ๋‚œ์ด๋„ — “์ ์ˆ˜ ๋”ํ•˜๊ธฐ”

์ž…๋ฌธ (JS DOM)

<button id="btn">0</button>
<script>
let s=0; btn.onclick=()=>{ s++; btn.textContent=s; };
</script>

์‘์šฉ (JS + ์ €์žฅ)

<button id="btn">0</button>
<script>
let s = Number(localStorage.getItem("score")||0);
btn.textContent = s;
btn.onclick=()=>{ s++; btn.textContent=s; localStorage.setItem("score",s); };
</script>

Scratch: ๋ฒ„ํŠผ ์Šคํ”„๋ผ์ดํŠธ ํด๋ฆญ → [์ ์ˆ˜ 1 ๋”ํ•˜๊ธฐ] → [์ ์ˆ˜ ๋งํ•˜๊ธฐ]

5️⃣ ๋ฐ˜์‘ํ˜• ์˜ˆ์ œ — “ํ‚ค๋ณด๋“œ๋กœ ์ด๋™”

๊ธฐ์ดˆ (๊ฐœ๋…/Python)

x=0
key=input("์™ผ/์˜ค: ")
if key=="์˜ค": x+=1
if key=="์™ผ": x-=1
print("x=",x)

์‘์šฉ (JS DOM)

<div id="p" style="position:relative;width:40px;height:40px;background:#93c5fd"></div>
<script>
let x=0; document.addEventListener("keydown",e=>{
  if(e.key==="ArrowRight") x+=5;
  if(e.key==="ArrowLeft")  x-=5;
  p.style.left = x+"px";
});
</script>

6️⃣ ์„ค๊ณ„ ์Šต๊ด€ — ์–ด๋ฆฐ์ด์‹ ๋กœ๋“œ๋งต ๋ฌธ์žฅ

  • ๋ณด์—ฌ์ค˜ (HTML·CSS) → ์ œ๋ชฉ/๋ฒ„ํŠผ์„ ๋งŒ๋“ ๋‹ค.
  • ๊ธฐ์–ตํ•ด (๋ณ€์ˆ˜) → ์ ์ˆ˜/์œ„์น˜/์‹œ๊ฐ„์„ ๋ณ€์ˆ˜์— ๋‘”๋‹ค.
  • ๋ฐ˜์‘ํ•ด (์ด๋ฒคํŠธ) → ํด๋ฆญ/ํ‚ค ์ž…๋ ฅ์— ๋ฐ˜์‘ํ•œ๋‹ค.
  • ๋ฐ˜๋ณตํ•ด (๋ฃจํ”„) → ๊ณ„์† ์›€์ง์ด๊ณ , ์‹œ๊ฐ„์ด ํ๋ฅด๊ฒŒ ํ•œ๋‹ค.
  • ๋ถ„๋ฆฌํ•ด (ํ•จ์ˆ˜/ํŒŒ์ผ) → ์‹œ์ž‘/๊ฒŒ์ž„/์ข…๋ฃŒ๋ฅผ ๋‚˜๋ˆ  ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ํ•œ๋‹ค.

7️⃣ ๋‹จ๊ณ„๋ณ„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๋‹จ๊ณ„ํ†ต๊ณผ ๊ธฐ์ค€(์˜ˆ)
์ž…๋ฌธ์ฝ˜์†”/ํ™”๋ฉด์— ๊ธ€์ž๋ฅผ ๋‚ด๋ณด๋‚ธ๋‹ค(์ถœ๋ ฅ), ์งˆ๋ฌธ์„ ๋ฐ›๋Š”๋‹ค(์ž…๋ ฅ).
๊ธฐ์ดˆ์กฐ๊ฑด/๋ฐ˜๋ณต/ํ•จ์ˆ˜๋กœ ๊ฐ„๋‹จํ•œ ๊ทœ์น™์„ ๋งŒ๋“ ๋‹ค.
์‘์šฉ์ด๋ฒคํŠธ๋กœ ์ธํ„ฐ๋ž™์…˜์„ ๋งŒ๋“ค๊ณ  ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
ํ”„๋กœ์ ํŠธํŒŒ์ผ์„ ๋‚˜๋ˆ„๊ณ  ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

8️⃣ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ ์„ธํŠธ(ํ•™๋…„·์‹ค๋ ฅ ๋งค์นญ)

① ํด๋ฆญ๋Ÿฌ(Clicker) — ์ดˆ๋“ฑ ์ „ํ•™๋…„ ๊ฐ€๋Šฅ

<button id="b">0</button>
<script>let n=0; b.onclick=()=>b.textContent=++n;</script>

์‘์šฉ: ์ €์žฅ/ํƒ€์ด๋จธ/๋žญํ‚น ์ถ”๊ฐ€

② ๋ฏธ๋กœํƒˆ์ถœ — ์ดˆ๋“ฑ ๊ณ ํ•™๋…„~์ค‘๋“ฑ

<canvas id="c" width="360" height="240" style="border:1px solid #e5e7eb"></canvas>
<script>
const cv=c.getContext("2d"); let x=20,y=20;
document.addEventListener("keydown",e=>{
  if(e.key==="ArrowUp")y-=5; if(e.key==="ArrowDown")y+=5;
  if(e.key==="ArrowLeft")x-=5; if(e.key==="ArrowRight")x+=5;
  cv.clearRect(0,0,360,240); cv.fillRect(x,y,10,10);
});
</script>

์‘์šฉ: ์ถฉ๋Œ/๊ณจ์ธ์ง€์ /ํƒ€์ด๋จธ

9️⃣ ์—๋Ÿฌ๋Š” ์„ฑ์žฅ ์ง€๋„ — ๋””๋ฒ„๊น… ๋ฌธ์žฅ 4๊ฐœ

  • “์–ธ์ œ๋ถ€ํ„ฐ ์•ˆ ๋์ง€?” → ๋ฌธ์ œ ์žฌํ˜„
  • “์–ด๋””๊ฐ€ ์‹ค์ œ๋กœ ์‹คํ–‰๋์ง€?” → print / console.log ์ฐ๊ธฐ
  • “ํ•œ ์ค„์— ์ผ์„ ๋ช‡ ๊ฐœ ํ•˜๋‹ˆ?” → ์ค„ ๋‚˜๋ˆ„๊ธฐ
  • “๊ฐ™์€ ์ผ์„ ๋ฐ˜๋ณตํ•˜๋‹ˆ?” → ํ•จ์ˆ˜/๋ฐ˜๋ณต์œผ๋กœ ๋ฌถ๊ธฐ

๐Ÿ”Ÿ ๊ฒฐ๋ก  — ๋กœ๋“œ๋งต์€ ‘์ˆœ์„œ’๊ฐ€ ์•„๋‹ˆ๋ผ ‘์†๋„’

ํ•™๋…„๊ณผ ์‹ค๋ ฅ์— ๋”ฐ๋ผ ์†๋„๋งŒ ๋‹ค๋ฅผ ๋ฟ, ํŒจํ„ด์€ ๊ฐ™์Šต๋‹ˆ๋‹ค. “๋ณด์—ฌ์ค˜(HTML·CSS) → ๋ฐ˜์‘ํ•ด(JS/Scratch) → ์ƒ๊ฐํ•ด(Python/JS)”์˜ ๋ฆฌ๋“ฌ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. ์˜ค๋Š˜์€ ๋ฒ„ํŠผ ํ•˜๋‚˜, ๋‚ด์ผ์€ ์ž‘์€ ๊ฒŒ์ž„, ๋ชจ๋ ˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿš€

© ์ฝ”๋”ฉ์Šคํƒ€๋žฉ · ๋“ค์–ด๊ฐ€๊ธฐ์ „ Part 8-1 — ํ•™๋…„·์‹ค๋ ฅ๋ณ„ ๋กœ๋“œ๋งต: ๋ช…๋ น์–ด ์ •๋ฆฌ & ์‹ค์ „ ์˜ˆ์ œํŽธ

๐Ÿ“ฐ ์ตœ์‹  ๊ธ€

#์ฝ”๋”ฉ์Šคํƒ€๋žฉ #Part8์ •๋ฆฌ #ํ•™๋…„๋ณ„๋กœ๋“œ๋งต #์ฝ”๋”ฉ๊ต์œก #Python #JavaScript #HTML #CSS #Scratch #DOM #Canvas #์ฝ”๋Ÿฌ์ฑŒ๋ฆฐ์ง€

๋‹ค์Œ ์ด์ „