๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

python

ํŒŒ์ด์ฌ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์‹ค์ „ํŽธ chapter 1

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=285102792 

 

[์ „์ž์ฑ…] ํŒŒ์ด์ฌ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์‹ค์ „ํŽธ

ใ€ŠํŒŒ์ด์ฌ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์ž…๋ฌธํŽธใ€‹์˜ ํ›„ํŽธ์œผ๋กœ, ์•ก์…˜ ๊ฒŒ์ž„, ์ŠˆํŒ… ๊ฒŒ์ž„, ์œ ์‚ฌ 3D ์˜์ƒ ํ‘œํ˜„์„ ํ™œ์šฉํ•œ 3D ์นด ๋ ˆ์ด์‹ฑ ๊ฒŒ์ž„ ๋“ฑ ์ „ํŽธ๋ณด๋‹ค ์ข€ ๋” ๋‚œ์ด๋„๊ฐ€ ๋†’์€ ๊ฒŒ์ž„์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํŒŒ์ด์ฌ์˜ ๋‹ค์–‘

www.aladin.co.kr

๋‚˜๋ฆ„ ์ „๊ณต์ด๋ผ๊ณ  ๊ธฐ๋ณธํŽธ ๋ง๊ณ  ์‹ค์ „ํŽธ์œผ๋กœ ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ๋‹ค๊ณ  ์ƒ€๋Š”๋ฐ

ํŒŒ์ด์ฌ ๊ณผ๋ชฉ ํ•™์ ์ด ๋„ˆ๋œ๋„ˆ๋œํ•ด์„œ... (์‹ฌ์ง€์–ด ์ด๋งˆ์ €๋„ 1๋…„์ „์ด๋ผ ๊ฐ€๋ฌผ๊ฐ€๋ฌผ...)

ํ•˜๋‹ค๊ฐ€ ์ • ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ๋ฏธ์น˜๊ฒ ์œผ๋ฉด ๊ธฐ๋ณธํŽธ์œผ๋กœ ๋‹ค์‹œ ์‚ด ์˜ˆ์ •์ด๋‹ค...

 

 

1. ํ‚ค ์ž…๋ ฅ

- ์œˆ๋„์šฐ ํ‘œ์‹œํ•˜๊ธฐ

  • tkinter ๋ชจ๋“ˆ ์ž„ํฌํŠธ : import tkinter
  • Tk()๋ช…๋ น์œผ๋กœ ์œˆ๋„์šฐ ๊ฐ์ฒด ์ƒ์„ฑ : root = tkinter.Tk()
  • geometry() ๋ช…๋ น์œผ๋กœ ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ ์ง€์ • : root.geometry("400x200")
  • title() ๋ช…๋ น์œผ๋กœ ์œˆ๋„์šฐ ํƒ€์ดํ‹€ ์ง€์ • : root.title("Hello World!")
  • ๋ผ๋ฒจ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ : label = tkinter.Label(root, text="์ฑ•ํ„ฐ 1", font=("Times New Roman", 20))
  • โ”” Label() ๋ช…๋ น์œผ๋กœ ๋ผ๋ฒจ ์ƒ์„ฑ, root๋Š” ๋ผ๋ฒจ์„ ๋ฐฐ์น˜ํ•  ์œˆ๋„์šฐ, text=๋Š” ํ‘œ์‹œํ•  ๋ฌธ์ž์—ด, font=๋Š” ๊ทธ ๋ฌธ์ž์—ด์˜ ๊ธ€๊ผด
  • โ”” ์œˆ๋„์šฐ์— ๋ผ๋ฒจ์„ ๋ฐฐ์น˜ํ•  ๋•Œ Label()์˜ ์ธ์ˆ˜์ธ root๋ฅผ ์ƒ๋žต ๊ฐ€๋Šฅ
  • place() ๋ช…๋ น์œผ๋กœ ์ธ์ˆ˜ x=, y=๋ฅผ ์‚ฌ์šฉํ•ด ๋ผ๋ฒจ์„ ๋ฐฐ์น˜ํ•  ์œ„์น˜ ์ง€์ • : label.place(x=80, y=60)
  • โ”” ์›์ (0, 0) ๊ธฐ์ค€์€ ์™ผ์ชฝ ์œ„ ๋ชจ์„œ๋ฆฌ
  • mainloop() ๋ช…๋ น์œผ๋กœ ์œˆ๋„์šฐ ํ‘œ์‹œ : root.mainloop()
import tkinter

root = tkinter.Tk()
root.geometry("400x200")
root.title("Hello World!")
label = tkinter.Label(root, text="chapter 1", font=("Times New Roman", 20))
label.place(x=80, y=60)
root.mainloop()

 

 

 

- GUI : ๊ทธ๋ž˜ํ”ผ์ปฌ ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค(Graphical User Interface)

์ปดํฌ๋„ŒํŠธ ๋ช…๋ น ์‚ฌ์šฉ ์˜ˆ์‹œ
๋ผ๋ฒจ Label() label = tkinter.Label(text=๋ฌธ์ž์—ด, font = ํฐํŠธ)
๋ฒ„ํŠผ Button() button = tkinter.Button(text=๋ฌธ์ž์—ด)
1ํ–‰ ํ…์ŠคํŠธ ์ž…๋ ฅ ํ•„๋“œ Entry() entry = tkinter.Entry(width = ํญ)
๋‹ค์ค‘ ํ…์ŠคํŠธ ์ž…๋ ฅ ํ•„๋“œ Text() text = tkinter.Text()
์ฒดํฌ ๋ฒ„ํŠผ (์ฒดํฌ ๋ฐ•์Šค) CheckButton() cbtn = tkinter.Checkbutton(text=๋ฌธ์ž์—ด)
์บ”๋ฒ„์Šค Canvas() canvas = tkinter.Canvas(width = ํญ, height = ๋†’์ด)

 

- bind() ๋ช…๋ น์œผ๋กœ ํ‚ค ์ž…๋ ฅ ์ˆ˜ํ–‰

 

ํ•จ์ˆ˜ key_down(e) 

๋”๋ณด๊ธฐ

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌํ•˜๋Š” ๊ฐ’์„ ์ธ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.

ํŒŒ์ด์ฌ์—์„œ๋Š” ์ธ์ˆ˜๋ฅผ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š์•„๋„ ์ธ์ˆ˜๊ฐ€ ์ž์‹ ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์ทจํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์ง€์›ํ•˜๋Š” ์–ธ์–ด์—์„œ๋Š” ์ด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ทจํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ง€์›ํ•˜๋Š”๋ฐ ํŒŒ์ด์ฌ์€ ์กฐ๊ธˆ ๋…ํŠนํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. 

๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ํŒŒ์ด์ฌ์€ ์ธ์ž๋ฅผ ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ธ์ž์˜ ์ˆœ์„œ๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”์šฑ์ด ํ•จ์ˆ˜์—์„œ ์–ด๋–ค ์ธ์ž๋ฅผ ๋ฐ›์„์ง€ ์ด๋ฆ„๊ณผ ๊ฐฏ์ˆ˜๋ฅผ ์ •ํ•˜์ง€ ์•Š๊ณ ์„œ๋„ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ถœ์ฒ˜ : https://engineer-mole.tistory.com/97

 

์ด๋Ÿฐ ๊ธ€์€ ์‚ฌ์‹ค ๋ด๋„๋ด๋„ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ„๋‹ค.... ๋‚˜์œ ๋จธ๋ฆฌ๋ฅผ ํƒ“ํ•˜์ž.

- ํŒŒ์ด์ฌ์—์„œ๋Š” def๋กœ ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.

๋”๋ณด๊ธฐ

* ํ•จ์ˆ˜ ์ •์˜

 

def ํ•จ์ˆ˜๋ช… :

     ์ฒ˜๋ฆฌ

- ํ‚ค ์ž…๋ ฅ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜์ด๋ฏ€๋กœ def key_down(e):๋กœ ์ž‘์„ฑํ•˜๊ณ  ์ธ์ˆ˜ e๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„๋‚ธ๋‹ค.

- ๋ณ€์ˆ˜ key_c์— keycode ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ณ  label1์— ํ•ด๋‹น ๊ฐ’์„ ํ‘œ์‹œํ•œ๋‹ค.

- ๋งˆ์ฐฌ๊ฐ€์ง€, ๋ณ€์ˆ˜ key_s์— keysym ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ณ  label2์— ํ•ด๋‹น ๊ฐ’์„ ํ‘œ์‹œํ•œ๋‹ค.

 

bind()๋ช…๋ น์€ <KeyPress>์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

- <KeyPress>๋Š” ๊ทธ๋ƒฅ ๋ง๊ทธ๋Œ€๋กœ... ํ‚ค๋ฅผ ๋ˆ„๋ฅธ ์ด๋ฒคํŠธ 

 

๋ฐ”๋กœ ์œ„ ์˜ˆ์ œ์™€ ๋‹ฌ๋ฆฌ ์ด ์˜ˆ์ œ์—์„œ๋Š” ๋ผ๋ฒจ์˜ ์ปดํฌ๋„ŒํŠธ ์ค‘ font ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด๋ฅผ ๋Œ€์ž…ํ•œ๋‹ค.

 

import tkinter

def key_down(e):
    key_c = e.keycode
    label1["text"] = "keycode " + str(key_c)
    key_s = e.keysym
    label2["text"] = "keysym " + str(key_s)

root = tkinter.Tk()
root.geometry("400x200")
root.title("ํ‚ค ์ž…๋ ฅ")
root.bind("<KeyPress>", key_down)
fnt = ("Times New Roman", 30)
label1 = tkinter.Label(text="keycode", font = fnt)
label1.place(x = 0, y = 0)
label2 = tkinter.Label(text="keysym", font = fnt)
label2.place(x = 0, y = 80)
root.mainloop()

 

์ด๊ฑด ์บก์ณํ•˜๋ ค๊ณ  ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋‹ˆ๊นŒ ์ด๋ ‡๊ฒŒ ๋˜๋Š” ๋ชจ์–‘... win+shift+sํ‚ค๋ฅผ ๋ˆŒ๋ €๋Š”๋ฐ _L์€ ๋ญ”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.

 

์ฑ…์—์„œ๋Š” ํ‚ค ๊ฐ’์ด keycode์™€ keysym ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ,

keycode๋Š” ์œˆ๋„์šฐ์™€ ๋งฅ์—์„œ์˜ ๊ฐ’์ด ๋‹ฌ๋ผ์„œ keysym๊ฐ’์„ ๋ฐ›์•„์„œ ํ‚ค ์ž…๋ ฅ์„ ํŒ์ •ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค...

์ข€ ํ†ต์ผํ•  ๊ฒƒ์ด์ง€ ๋–ผ์ž‰... 

 

์ด ์™ธ์—๋„ bind() ๋ช…๋ น์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ๋“ค

  • <KeyPress> / <Key> : ํ‚ค ๋ˆ„๋ฆ„
  • <KeyRelease> : ํ‚ค๋ฅผ ๋ˆŒ๋ €๋‹ค ๋—Œ
  • <Motion> : ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ ์ด๋™
  • <ButtonPress> / <Button> : ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ ํด๋ฆญ
  • <ButtonRelease> : ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ๋—Œ

 

 

2. ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ

import tkinter
import datetime

def time_now():
    d = datetime.datetime.now()
    t = "{0}:{1}:{2}".format(d.hour, d.minute, d.second)
    label["text"] = t
    root.after(1000, time_now)

root = tkinter.Tk()
root.geometry("400x100")
root.title("๊ฐ„์ด ๊ณ„์‚ฐ")
label = tkinter.Label(font = ("Times New Roman", 60))
label.pack()
time_now()
root.mainloop()

 

 

- ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์–ป์–ด์™€ after() ๋ช…๋ น์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰

import datetime

def time_now():
    d = datetime.datetime.now()
    t = "{0}:{1}:{2}".format(d.hour, d.minute, d.second)
    label["text"] = t
    root.after(1000, time_now)
    
# ์ค‘๋žต...

time_now()

์œ„ ์˜ˆ์ œ์—์„œ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

 

datetime ๋ชจ๋“ˆ์„ importํ•˜๊ณ ,

datetime.now() ๋ช…๋ น์œผ๋กœ ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์–ป์–ด ๋ณ€์ˆ˜ d์— ๋Œ€์ž…ํ•œ๋‹ค.

5๋ฒˆ ํ–‰์˜ d.hour๋กœ ์‹œ๊ฐ„, d.minute๋กœ ๋ถ„, d.second๋กœ ์ดˆ๋ฅผ ์–ป์–ด์™”๋Š”๋ฐ

์–‘๋ ฅ์œผ๋กœ ๋…„, ์›”, ์ผ์€ ๊ฐ๊ฐ d.year, d.month, d.day๋กœ ์“ฐ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰ ๊ณผ์ •์€ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ–ˆ๋‹ค. (์ฝ”๋“œ๊ฐ€ ๊ฐ„๋‹จํ•˜๋‹ˆ๊นŒ...)

 

๋จผ์ € ๋งจ ๋งˆ์ง€๋ง‰์˜ time_now() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด

time_now ์•ˆ์— ์žˆ๋Š” ์ฝ”๋“œ์ค‘ d, t, label ~์„ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ํ˜„์žฌ ์‹œ๊ฐ์„ ์–ป์€ ํ›„, ๋ผ๋ฒจ์„ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ ์ฝ”๋“œ์ธ root.after(1000, time_now)๊ฐ€ ์ฒ˜๋ฆฌ๋ ํ…๋ฐ, ์ด ๋•Œ 1000์€ ๋‹จ์œ„๊ฐ€ ms์ด๋ฏ€๋กœ 1์ดˆ๋ฅผ ๋œปํ•œ๋‹ค.

๋”ฐ๋ผ์„œ 1์ดˆ ๋’ค ๋‹ค์‹œ time_now ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ์คŒ์œผ๋กœ์จ 1์ดˆ๊ฐ€ ์ง€๋‚ ๋•Œ ๋งˆ๋‹ค ํ˜„์žฌ ์‹œ๊ฐ์„ ํ‘œ์‹œํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ after()๋ช…๋ น์€ ์ด ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ์‹คํ–‰์‹œ์ผœ์„œ ๊ณ„์†ํ•ด์„œ ์‹œ๊ฐ„์ด ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

- format() ๋ช…๋ น

 

t = "{0}:{1}:{2}".format(d.hour, d.minute, d.second)

format() ๋ช…๋ น์œผ๋กœ ๋ฌธ์ž์—ด์˜ {}๋ฅผ ์ธ์ˆ˜๊ฐ’์œผ๋กœ ์น˜ํ™˜ํ•œ๋‹ค.

{} ์ˆœ์„œ๋Œ€๋กœ ์ธ์ˆ˜๊ฐ’์„ ์น˜ํ™˜ํ•˜๊ณ  ์‹ถ์œผ๋ฉด {} ์•ˆ์˜ ์ˆซ์ž๊ฐ’์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๋ฐ...

๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ๋„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑด๊ฐ€?

 

์—ฌ๊ธฐ์„œ๋„ ์ˆœ์„œ๋Œ€๋กœ ์น˜ํ™˜ํ•˜๋ ค๋Š” ๊ฑฐ๋‹ˆ๊นŒ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•œ๋“ฏ... ๊ทผ๋ฐ ๊ธ€ ์ข€ ์ˆ˜์ •ํ•˜๊ณ  ๋” ์ผ๋‹ค๊ณ  ๋ฒŒ์จ 30๋ถ„์ด ํ›Œ์ฉ ์ง€๋‚œ๊ฒŒ... ์ฉ&nbsp;

 

 

3. ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜

- ์ด๋ฏธ์ง€ ๊ทธ๋ฆฌ๊ธฐ

 

  tkinter ๋ชจ๋“ˆ์—์„œ๋Š” canvas๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ด๋ฏธ์ง€๋‚˜ ๋„ํ˜•์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

  • Canvas() ๋ช…๋ น์œผ๋กœ ์บ”๋ฒ„์Šค ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑ
  • pack()์œผ๋กœ ์บ”๋ฒ„์Šค๋ฅผ ๋ฐฐ์น˜ (์œˆ๋„์šฐ ์•ˆ์— GUI๋ฅผ ์Œ“๊ณ  ๋ฐฐ์น˜ํ•จ์œผ๋กœ์จ ์บ”๋ฒ„์Šค ํฌ๊ธฐ์— ๋งž์ถฐ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •)
  • tkinter.PhotoImage(file="")๋กœ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ (์ด ๋•Œ file์€ ์ธ์ˆ˜)
  • create_image(x์ขŒํ‘œ, y์ขŒํ‘œ, ์ธ์ˆ˜ = ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋”ฉํ•  ๋ณ€์ˆ˜)๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆผ
  • โ”” img_bg๊ฐ€ ๋ณ€์ˆ˜, image๋Š” ์ธ์ˆ˜
  • โ”” ์ด ๋•Œ create_image ๋ช…๋ น์œผ๋กœ ์ง€์ •ํ•œ ์ขŒํ‘œ๋Š” ํ™”๋ฉด์˜ ์ค‘์‹ฌ
import tkinter

root = tkinter.Tk()
root.title("Canvas์— ํ™”๋ฉด ๊ทธ๋ฆฌ๊ธฐ")
canvas = tkinter.Canvas(width = 480, height = 300)
canvas.pack()
img_bg = tkinter.PhotoImage(file = "park.png")
canvas.create_image(240, 150, image = img_bg)
root.mainloop()

์ฐธ๊ณ ๋กœ ์ด๋ฏธ์ง€๋“ค์€ ์ฑ…์—์„œ ์•ˆ๋‚ดํ•˜๋Š” ๊นƒํ—™ ์ฃผ์†Œ์—์„œ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

- ๋ฐฐ๊ฒฝ ์Šคํฌ๋กคํ•˜๊ธฐ

 

์œ„ ์ฝ”๋“œ์—์„œ ๋ฐฐ๊ฒฝ์„ ์Šคํฌ๋กค ํ•  ํ•จ์ˆ˜๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋ฒˆ์—๋„ after() ๋ช…๋ น์ด ์“ฐ์˜€๋Š”๋ฐ, after() ๋ช…๋ น์œผ๋กœ 50ms๋งˆ๋‹ค ๊ณ„์†ํ•ด์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ๋ฐฐ๊ฒฝ์ด ์Šคํฌ๋กค๋˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

 

์ฐธ๊ณ ๋กœ ๋ณ€์ˆ˜ x๋ฅผ scroll_bg() ํ•จ์ˆ˜์˜ ์™ธ๋ถ€์—์„œ ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—,

ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋Š” global x ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด์•ผ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

(x = 0์„ scroll_bg ์•ˆ์—์„œ ์„ ์–ธํ•˜๋ฉด after ๋ช…๋ น์„ ๊ฑฐ์ณ๋„ ๊ณ„์† x = 0์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์•ˆ์—์„œ ์„ ์–ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด for๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๊ธฐ๋„...? ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๋ฒˆ ์‹œ๋„ํ•ด๋ดค๋Š”๋ฐ ์•ˆ๋ผ์„œ ์ผ๋‹จ ์ด ๋ฐฉ๋ฒ•์„ ์ตํ˜€๋‘๊ธฐ๋กœ... )

 

 

- tag ์ธ์ˆ˜

 

ํŒŒ์ด์ฌ์—์„œ๋Š” ์บ”๋ฒ„์Šค์— ์ด๋ฏธ์ง€๋‚˜ ๋„ํ˜•์ด ๊ณ„์†ํ•ด์„œ ๋ง๊ทธ๋ ค์ง€๋ฉด SW ๋™์ž‘์ด ์ด์ƒํ•ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ๋ฐœ์ƒํ•œ๋‹ค. 

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ ค์กŒ๋˜ ๊ทธ๋ฆผ์€ delete() ๋ช…๋ น์œผ๋กœ ์‚ญ์ œํ•œ ๋’ค, ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ฆฌ๊ณ , ์‚ญ์ œํ•˜๊ณ , ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ด๋Š” ์•„๋ž˜ ์ฝ”๋“œ์˜ 9~11๋ฒˆ ํ–‰์—์„œ ์ˆ˜ํ–‰๋œ๋‹ค.

 

create_image() ๋ช…๋ น ์ธ์ˆ˜์ธ tag๋กœ ํ‘œ์‹œํ•  ์ด๋ฏธ์ง€์˜ ํƒœ๊ทธ๋ช…์„ ์ •ํ•˜๊ณ , delete() ๋ช…๋ น์˜ ์ธ์ˆ˜๋กœ ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ด ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ ํ™•์žฅ ๋ชจ๋“ˆ์ธ Pygame์„ ์ด์šฉํ•ด ์ด๋Ÿฌํ•œ ๊ณผ์ •์—†์ด ๊ทธ๋ƒฅ ๋ง๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

import tkinter

x = 0 # ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ๊ด€๋ฆฌํ•ด์ค„ ๋ณ€์ˆ˜ x ์„ ์–ธ
def scroll_bg(): # ํ•จ์ˆ˜ ์ •์˜
    global x # ์ง€์—ญ๋ณ€์ˆ˜ x๋ฅผ ์Šคํฌ๋กค ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰
    x = x + 1 # x๊ฐ’์ด 1์”ฉ ์ฆ๊ฐ€
    if x == 480 : # x๊ฐ€ 480์ด ๋˜๋ฉด
        x = 0 # x์— 0์„ ๋Œ€์ž…
    # ์ฆ‰ x๋Š” if ๊ตฌ๋ฌธ์— ์˜ํ•ด 0~479 ์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๋€Œ๋ฉฐ 480์ด ๋˜๋ฉด 0์œผ๋กœ ๋Œ์•„๊ฐ.
    canvas.delete("BG") # ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œ
    canvas.create_image(x - 240, 150, image = img_bg, tag = "BG") # ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ๊ทธ๋ฆฌ๊ธฐ(์™ผ์ชฝ)
    canvas.create_image(x + 240, 150, image = img_bg, tag = "BG") # ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ๊ทธ๋ฆฌ๊ธฐ(์˜ค๋ฅธ์ชฝ)
    # ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋œ๋‹ค๋ฉด ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ฐ ํ–‰์„ ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋ณด๋ฉด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
    root.after (50, scroll_bg)

root = tkinter.Tk()
root.title("Canvas์— ํ™”๋ฉด ๊ทธ๋ฆฌ๊ธฐ")
canvas = tkinter.Canvas(width = 480, height = 300)
canvas.pack()
img_bg = tkinter.PhotoImage(file = "park.png")
canvas.create_image(240, 150, image = img_bg)

scroll_bg() # scroll_bg ํ•จ์ˆ˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

root.mainloop()

 

์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ–‰์„ ์ฃผ์„์ฒ˜๋ฆฌํ–ˆ์„ ๋•Œ, ์ฆ‰ ์™ผ์ชฝ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ–‰๋งŒ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ์„ ๋•Œ์˜ ๋ชจ์Šต

์ž˜ ํ˜๋Ÿฌ๊ฐ€๋Š” ์ค‘....  

 

์ด์ œ ์Šคํฌ๋กค๋˜๋Š” ๋ฐฐ๊ฒฝ์— ๋”ฐ๋ผ ์›€์ง์ด๋Š” ๊ฐœ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ดค๋‹ค.

 

 

- ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ

 

import tkinter

x = 0 # ์Šคํฌ๋กค ์œ„์น˜ ๊ด€๋ฆฌ ๋ณ€์ˆ˜
ani = 0 # ๊ฐœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ณ€์ˆ˜

def animation() : 
    global x, ani # ์ „์—ญ๋ณ€์ˆ˜ x, ani ์„ ์–ธ
    x = x + 4 
    if x == 480 :
        x = 0
	# ๋ฐฐ๊ฒฝ ์Šคํฌ๋กค ์ฝ”๋“œ
    canvas.delete("BG")
    canvas.create_image(x-240, 150, image = img_bg, tag = "BG")
    canvas.create_image(x+240, 150, image = img_bg, tag = "BG")
    # ๊ฐœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฝ”๋“œ
    ani = (ani + 1) % 4 # ani์˜ ๊ฐ’์„ 4๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€์ธ 0~3 ๋ฒ”์œ„์—์„œ ๋ณ€๊ฒฝ
    canvas.create_image(240, 200, image = img_dog[ani], tag = "BG") # ๊ฐœ ์ด๋ฏธ์ง€ ๊ทธ๋ฆฌ๊ธฐ
    root.after(200, animation) # 200ms ํ›„ ํ•จ์ˆ˜ ์žฌ์‹คํ–‰ => ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋จ

root = tkinter.Tk()
root.title("์• ๋‹ˆ๋ฉ”์ด์…˜")
canvas = tkinter.Canvas(width = 480, height = 300)
canvas.pack()
img_bg = tkinter.PhotoImage(file = "park.png") 
img_dog = [ # img_dog ๋ฆฌ์ŠคํŠธ์— ๊ฐœ ์ด๋ฏธ์ง€ 4์žฅ ๋กœ๋”ฉ
    tkinter.PhotoImage(file="dog0.png"),
    tkinter.PhotoImage(file="dog1.png"),
    tkinter.PhotoImage(file="dog2.png"),
    tkinter.PhotoImage(file="dog3.png")
]
animation()
root.mainloop()

 

img_dog ๋ฆฌ์ŠคํŠธ์— ์ด๋ฏธ์ง€๋“ค์„ ๋‹ด์•„ animation() ํ•จ์ˆ˜์—์„œ ๋ถˆ๋Ÿฌ์™€์„œ ์ด๋ฅผ ani๋ผ๋Š” ๋ณ€์ˆ˜์— ์ง€์ •ํ–ˆ๋Š”๋ฐ,

์ด ๋•Œ ani = (ani + 1) % 4 ์— ๋”ฐ๋ผ after() ๋ช…๋ น์ด ์‹คํ–‰๋  ๋•Œ ๋งˆ๋‹ค ๊ฐœ๊ฐ€ ์›€์ง์ด๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์ด๋‹ค.

%๋Š” ๋‚˜๋ˆ—์…ˆ์˜ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ani = (ani + 1) % 4์— ์ฒ˜์Œ ์„ ์–ธ๋œ ani์˜ ๊ฐ’ 0์ด ๋“ค์–ด๊ฐ€๋ฉด

(0+1) % 4 = 1์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  after ๋ช…๋ น์ด ์‹คํ–‰๋˜๊ณ  ani์˜ ๊ฐ’ 1์ด ๋“ค์–ด๊ฐ€๋ฉด

(1+1) % 4 = 2๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  after ๋ช…๋ น์ด ์‹คํ–‰๋˜๊ณ  ani์˜ ๊ฐ’ 2๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ๊ทธ ๋‹ค์Œ์˜ ani ๊ฐ’์€ 3์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ ๋‹ค์Œ์€ ๋‹ค์‹œ 0์ด ๋˜๊ณ , 1์ด ๋˜๊ณ , 2๊ฐ€ ๋˜๊ณ  ... ์ตœ์ข…์ ์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

    x = x + 4
    if x == 480 :
        x = 0

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด %๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ”๋กœ ์œ„์˜ 3์ค„์งœ๋ฆฌ ์ฝ”๋“œ๋ฅผ

 

x = (x + 4) % 480

์ด์™€ ๊ฐ™์ด ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

๋šœ๋ฒ…๋šœ๋ฒ…

 

4. 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•œ ๋งต ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

- ๋ฆฌ์ŠคํŠธ

  • 1์ฐจ์› ๋ฆฌ์ŠคํŠธ : data[n] (0 ~ n-1๊นŒ์ง€ n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๋•Œ 0 ~ n-1๊นŒ์ง€์˜ ์ˆซ์ž๋Š” ์ธ๋ฑ์Šค)
  • 2์ฐจ์› ๋ฆฌ์ŠคํŠธ : data[n][m]

- 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ๋งต ํ‘œ์‹œํ•˜๊ธฐ

import tkinter

root = tkinter.Tk()
root.title("๋งต ๋ฐ์ดํ„ฐ")
canvas = tkinter.Canvas(width = 336, height = 240) # ์บ”๋ฒ„์Šค ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ
canvas.pack() # ์บ”๋ฒ„์Šค ๋ฐฐ์น˜
img = [ # ๋ฆฌ์ŠคํŠธ์— ์ด๋ฏธ์ง€ ๋กœ๋”ฉ
    tkinter.PhotoImage(file="chip0.png"),
    tkinter.PhotoImage(file="chip1.png"),
    tkinter.PhotoImage(file="chip2.png"),
    tkinter.PhotoImage(file="chip3.png")
]
map_data = [ # 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ๋งต ๋ฐ์ดํ„ฐ ์ •์˜
    [0, 1, 0, 2, 2, 2, 2],
    [3, 0 ,0 ,0 ,2 ,2 ,2],
    [3, 0, 0, 1, 0, 0, 0],
    [3, 3, 0, 0, 0, 0, 1],
    [3, 3, 3, 3, 0, 0, 0]
]
for y in range(5)  # for๋ฌธ์œผ๋กœ y ๊ฐ’์€ 0~4์—์„œ 1์”ฉ ์ฆ๊ฐ€๋ฅผ ๋ฐ˜๋ณต
    for x in range(7) : # for๋ฌธ์œผ๋กœ x ๊ฐ’์€ 0~6์—์„œ 1์”ฉ ์ฆ๊ฐ€๋ฅผ ๋ฐ˜๋ณต
        n = map_data[y][x] # ๋ณ€์ˆ˜ n์— ๋ฆฌ์ŠคํŠธ ๊ฐ’ ๋Œ€์ž…
        canvas.create_image(x * 48 + 24, y * 48 + 24, image = img[n]) # ๋งต ์นฉ ๊ทธ๋ฆฌ๊ธฐ
root.mainloop() # ์œˆ๋„์šฐ ํ‘œ์‹œ

 

map_data ๋ผ๋Š” 2์ฐจ์› ๋ฆฌ์ŠคํŠธ์— ๋งต ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•ด ์ด๋ฅผ ์ด์ค‘ for๋ฌธ์„ ์ด์šฉํ•ด map_data[y][x]์˜ ๊ฐ’์„ ๋ณ€์ˆ˜ n์— ๋„ฃ์–ด ๊ทธ n ๊ฐ’์˜ ๋งต์นฉ์„ ํ‘œ์‹œํ•œ๋‹ค. 

 

๊ฒฐ๊ณผ ํ™”๋ฉด

 

์ด ๋•Œ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋Š”๋ฐ,

๋งต ์นฉ์„ ํ‘œ์‹œํ•˜๋Š” ์ขŒํ‘œ๊ฐ€ x * 48 + 24, y * 48 + 24์ธ๋ฐ

์™œ 24๊ฐ€ ๋”ํ•ด์ ธ์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์—ˆ๋‹ค.

์›์ ์€ ์™ผ์ชฝ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ธฐ์ค€์ด ์•„๋‹ˆ์—ˆ๋‚˜?

๊ฐ€๋กœ 48ํ”ฝ์…€, ์„ธ๋กœ 48ํ”ฝ์…€์ธ๋ฐ ์™œ 24๋ฅผ ๋”ํ•ด์•ผ๋งŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ธ๊ฐ€?

 

์ขŒํ‘œ๋ฅผ x * 48, y * 48 + 24๋กœ ์„ค์ •ํ–ˆ์„ ๋•Œ

 

์›์ ์ด ์™ผ์ชฝ ๋ชจ์„œ๋ฆฌ์˜€๋˜ ๊ฒƒ์€ ์œˆ๋„์šฐ์—์„œ์˜ ์ขŒํ‘œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ์œˆ๋„์šฐ ์•ˆ์˜ ์บ”๋ฒ„์Šค๊ณ ,

์œ„์—์„œ create_image() ๋ช…๋ น์œผ๋กœ ์ง€์ •ํ•œ ์ขŒํ‘œ๊ฐ€ ํ™”๋ฉด์˜ ์ค‘์‹ฌ์ด ๋œ๋‹ค๊ณ  ํ–ˆ์œผ๋‹ˆ,

48ํ”ฝ์…€์˜ ๋ฐ˜์ธ 24ํ”ฝ์…€์„ ์ค‘์‹ฌ์œผ๋กœ ์žก์•„์•ผ๋งŒ

๋งจ ์ฒ˜์Œ x, y์— 0์ด ์ž…๋ ฅ๋  ๋•Œ๋„

์ค‘์‹ฌ์„ (24, 24)๋กœ ํ•˜์—ฌ (0, 0)๋ถ€ํ„ฐ ์ฑ„์›Œ์ ธ ์ƒ๊ฐํ•œ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

5. ๋ฐ”๋‹ฅ๊ณผ ๋ฒฝ ํŒ์ •

- ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ ์‚ฌ์šฉ

 

๋ฐ”๋กœ ์œ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๋งต์„ ํ† ๋Œ€๋กœ ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ์˜ ์œ„์น˜์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์ถœ๋ ฅ์„ ํ•ด๋ณด๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

 

import tkinter

def mouse_click(e) : # ํ•จ์ˆ˜ ์ •์˜
    px = e.x # px์— ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ x ์ขŒํ‘œ ๋Œ€์ž…
    py = e.y # py์— ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ y ์ขŒํ‘œ ๋Œ€์ž…
    print("๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ ์ขŒํ‘œ : ({}, {})".format(px, py)) # px์™€ py ๊ฐ’ ์ถœ๋ ฅ
    mx = int(px / 48) # mx์— px / 48์˜ ์ •์ˆ˜ ๊ฐ’ ๋Œ€์ž… 
    my = int(py / 48) # my์— py / 48์˜ ์ •์ˆ˜ ๊ฐ’ ๋Œ€์ž…
    if 0 <= mx and mx <= 6 and 0 <= my and my <= 4 : # mx์™€ my๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฒ”์œ„ ์•ˆ์ด๋ฉด
        n = map_data[my][mx] # n์— ๋งต ์นฉ ๋ฒˆํ˜ธ ๋Œ€์ž…
        print("์—ฌ๊ธฐ์— ์žˆ๋Š” ๋งต ์นฉ์€ " + CHIP_NAME[n]) # ๋งต ์นฉ ์ด๋ฆ„ ์ถœ๋ ฅ

root = tkinter.Tk()
root.title("๋งต ๋ฐ์ดํ„ฐ")
canvas = tkinter.Canvas(width = 336, height = 240)
canvas.pack()
canvas.bind("<Button>", mouse_click) # ๋งˆ์šฐ์Šค๋กœ ์บ”๋ฒ„์Šค ํด๋ฆญ ์‹œ ์‹คํ–‰ํ•  ํ•จ์ˆ˜ ์ง€์ •
CHIP_NAME = ["ํ’€", "๊ฝƒ", "์ˆฒ", "๋ฐ”๋‹ค"] # ๋งต ์นฉ ์ด๋ฆ„์„ ๋ฆฌ์ŠคํŠธ๋กœ ์ •์˜

img = [
    tkinter.PhotoImage(file="chip0.png"),
    tkinter.PhotoImage(file="chip1.png"),
    tkinter.PhotoImage(file="chip2.png"),
    tkinter.PhotoImage(file="chip3.png")
]
map_data = [
    [0, 1, 0, 2, 2, 2, 2],
    [3, 0 ,0 ,0 ,2 ,2 ,2],
    [3, 0, 0, 1, 0, 0, 0],
    [3, 3, 0, 0, 0, 0, 1],
    [3, 3, 3, 3, 0, 0, 0]
]
for y in range(5) :
    for x in range(7) :
        n = map_data[y][x]
        canvas.create_image(x * 48 + 24, y * 48 + 24, image = img[map_data[y][x]])
root.mainloop()

 

px = e.x, py = e.y๋กœ ํฌ์ธํ„ฐ์˜ (x, y)์ขŒํ‘œ๋ฅผ ์–ป๊ณ  ์ด๋ฅผ 48๋กœ ๋‚˜๋ˆ„๋Š” ์ด์œ ๋Š” 48๋กœ ๋‚˜๋ˆ ์•ผ map_data์— ์žˆ๋Š” ๋งต ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

mx์™€ my๋ฅผ int() ๋ช…๋ น์œผ๋กœ ์†Œ์ˆ˜์  ์ดํ•˜๋ฅผ ๋ฒ„๋ ค์ฃผ๋Š” ์ด์œ ๋Š”

๋‚ด๊ฐ€ ํด๋ฆญํ•œ ์œ„์น˜๊ฐ€ 48๋กœ ๋”ฑ ๋‚˜๋ˆ  ๋–จ์–ด์ง€์ง€ ์•Š๋Š” (74, 100)์ธ ๊ฒฝ์šฐ ์†Œ์ˆ˜์ ์ด ๋‚˜์˜ค๊ณ ,

๊ทธ๋Ÿฐ ์ธ๋ฑ์Šค๋Š” ์ „ํ˜€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

์กฐ๊ธˆ๋งŒ ๊ธธ๊ฒŒ ๋ˆŒ๋Ÿฌ๋„ ๋‘๋ฒˆ ์ถœ๋ ฅ์ด ๋œ๋‹ค..^^;;...&nbsp;

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ”๋‹ค ๋ถ€๋ถ„์€ ๋ชป๋“ค์–ด๊ฐ€๊ฒŒ ์ด๋™์„ ์ œํ•œํ•˜๊ณ ,

ํ’€, ์ˆฒ, ๊ฝƒ์€ ๋ฐ”๋‹ฅ์œผ๋กœ ์ทจ๊ธ‰ํ•ด ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๊ฐ€ ๊ทธ ๊ณณ์„ ๊ฑธ์–ด๋‹ค๋‹ˆ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.