๐ธ ์ฝ๋ฉ์คํ๋ฉ ๋ค์ด๊ฐ๊ธฐ์ Part 8-1 — ํ๋ ·์ค๋ ฅ๋ณ ๋ฐฐ์ฐ๋ ์์ ๋ก๋๋งต: ๋ช ๋ น์ด ์ ๋ฆฌ & ์ค์ ์์ ํธ
์ด ๋ฌธ์๋ Part 8 “ํ๋ ·์ค๋ ฅ๋ณ ๋ก๋๋งต”์์ ์ ์ํ ํ๋ฆ์ ๋ช ๋ น์ด์ ์งง์ ์์ ๋ก ์ ๋ฆฌํ ๋ณต์ตํธ์ด์์. “๋ฌด์์ ๋จผ์ , ์ ๊ทธ๋ ๊ฒ?”์ ์ง์คํ๋ฉด์๋, ์ค์ ๋ก ์์ด ๊ฐ๋ ์ฝ๋๋ก ๊ฐ๊ฐ์ ํ์ธํฉ๋๋ค.
1️⃣ ๋ก๋๋งต ๊ธฐ์ค — ํ๋ & ์ค๋ ฅ 2์ถ
| ์ถ | ๊ตฌ๋ถ | ํต์ฌ ๋ชฉํ |
|---|---|---|
| ํ๋ | ์ด๋ฑ ์ ํ๋ · ์ด๋ฑ ๊ณ ํ๋ · ์ค๋ฑ | ํํ → ๋ ผ๋ฆฌ → ๊ตฌ์กฐ |
| ์ค๋ ฅ | ์ ๋ฌธ · ๊ธฐ์ด · ์์ฉ · ํ๋ก์ ํธ | ํจํด ์ตํ๊ธฐ → ํฉ์น๊ธฐ → ์์ฑํ๊ธฐ |
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️⃣ ํต์ฌ ๋ช ๋ น ํจํด — ๋จ๊ณ๋ณ ์ฒดํฌ
| ๋จ๊ณ | ํต์ฌ ํจํด | Python | JavaScript | Scratch/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)”์ ๋ฆฌ๋ฌ์ ์์ง ๋ง์ธ์. ์ค๋์ ๋ฒํผ ํ๋, ๋ด์ผ์ ์์ ๊ฒ์, ๋ชจ๋ ๋ ํ๋ก์ ํธ๊ฐ ๋ฉ๋๋ค. ๐


