βΌ κ°λ° νκ²½: Python 3.x
βΌ μ μΆλ¬Ό
β’ .py μμ€ μ½λ (assn4_model.py, assn4_app.py)
β’ νλ‘κ·Έλ¨μ μμ€ μ½λμ μ±μ μμ μ΄ν΄λ₯Ό λκΈ° μν μ£Όμμ λ°λμ λΆμ¬μ£ΌμΈμ.
β’ λ³΄κ³ μ νμΌ (.docx, .hwp λλ .pdf; assn4.docx, assn4.hwp λλ assn4.pdf)
β’ λ³΄κ³ μλ AssnReadMe.pdfλ₯Ό μ°Έμ‘°νμ¬ μμ±νμλ©΄ λ©λλ€.
β’ λͺ
μ μμ½ (Honor code): νμ§μ λ€μμ μμ½μ κΈ°μ
νμ¬ μ μΆν΄ μ£ΌμΈμ: βλλ μ΄ νλ‘
κ·Έλλ° κ³Όμ λ₯Ό λ€λ₯Έ μ¬λμ λΆμ μ ν λμ μμ΄ μμνμμ΅λλ€.β λ³΄κ³ μ νμ§μ λͺ
μ
μμ½μ΄ κΈ°μ
λμ΄ μμ§ μμ κ³Όμ λ μ μΆλμ§ μμ κ²μΌλ‘ μ²λ¦¬λ©λλ€.
β’ μμ±ν μμ€ μ½λμ λ³΄κ³ μ νμΌμ PLMSλ₯Ό ν΅ν΄ μ μΆν΄ μ£ΌμΈμ.
βΌ μ£Όμ μ¬ν
⒠ꡬ문 μ€λ₯(Syntax Error)κ° λ°μνκ±°λ μ€νμ΄ λμ§ μλ κ³Όμ λ 0μ μΌλ‘ μ±μ λ©λλ€.
β’ μ μΆ κΈ°νλ³΄λ€ ν루 λ¦κ² μ μΆλ κ³Όμ λ μ΅μ’
20%, μ΄ν λ¦κ² μ μΆλ κ³Όμ λ μ΅μ’
40%
κ°μ λ©λλ€. μ μΆ κΈ°νλ³΄λ€ μ¬ν μ΄μ λ¦μΌλ©΄ μ μΆ λ°μ§ μμ΅λλ€ (0μ μ²λ¦¬). λ¦μ μ
μΆμ PLMSμ κΈ°λ‘λ μ΅μ’
μμ μΌμλ₯Ό κΈ°μ€μΌλ‘ κ°μ ν©λλ€.
β’ κ° λ¬Έμ μ μ ν 쑰건과 μꡬ μ¬νμ λ°λμ μ§μΌ μ£ΌμκΈ° λ°λλλ€.
β’ μ΄λ² κ³Όμ λ μΆκ° κΈ°λ₯ ꡬνκ³Ό κ΄λ ¨λ μΆκ° μ μκ° λ°λ‘ μμ΅λλ€.
β’ λ³΄κ³ μ μμ± μ, μ°Έκ³ λ§ν¬λ ν¬ν¨ν΄μ£ΌμΈμ. λΆμ νμ μ λ° μ 0μ μ²λ¦¬λ©λλ€.
β’ λΆμ νμμ κ΄ν κ·μ μ POSTECH μ μμ»΄ν¨ν°κ³΅νλΆ νλΆμμνμ βPOSTECH μ μμ»΄ν¨ν°κ³΅
νλΆ λΆμ νμ μ μβλ₯Ό λ°λ¦
λλ€ (PLMSμ λ³Έ κ³Όλͺ© 곡μ§μ¬νμ λ±λ‘λ κΈ μ€, μ λͺ©μ΄
[document about cheating]μΈ κΈμ 첨λΆλμ΄ μλ disciplinary.pdfλ₯Ό μ°Έμ‘°ν κ².)
2
βΌ Problem: μ§λ’°μ°ΎκΈ°
(λͺ©μ )
(1) Python tkinter λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©νμ¬ GUI νλ‘κ·Έλλ°μ μ΅νλλ€.
(2) ν΄λμ€ μ μ λ° μΈμ€ν΄μ€ μμ±μ μ΅νλλ€.
(3) ν΄λμ€ μμ λ° λ©μλ μ€λ² λΌμ΄λ©μ μ΅νλλ€.
(μ€λͺ
)
μ§λ’° μ°ΎκΈ°λ κΈ°μ΅λ ₯κ³Ό μΆλ¦¬λ ₯μ μνλ κ°λ¨ν κ²μμΌλ‘, μ§λ’°λ₯Ό νΌν΄ λͺ¨λ λΉ μΉΈμ μ°Ύλ κ²μ΄
μ΄ κ²μμ λͺ©νμ
λλ€. 보λμ κ° μΉΈμλ μ§λ’°κ° μλ μΉΈκ³Ό μλ μΉΈμΌλ‘ μ΄λ£¨μ΄μ§λ©°, νλ μ΄μ΄λ
λ§μ°μ€ ν΄λ¦μ ν΅ν΄μ 보λμ μνΈμμ©νλ©° μ§λ’°κ° μλ ꡬμλ§ λ°νμΌ ν©λλ€. μ¬μ©μκ° λ§μ½
μ§λ’°κ° μλ μΉΈμ ν΄λ¦ν κ²½μ°μλ μΈμ ν 8μΉΈ(μμ μ μ€μ¬μΌλ‘ ν 3Γ3 ꡬμ)μ λνμ¬ μ§λ’°μ
κ°μλ₯Ό μ«μλ₯Ό ν΅ν΄μ ννΈλ₯Ό μ€λλ€. μ΄λ₯Ό κΈ°λ°ν μΆλ¦¬λ₯Ό ν΅ν΄μ μ§λ’°κ° μλ λͺ¨λ μΉΈμ λ°νμΌ
ν©λλ€. μλ κ·Έλ¦Όμμ λ³Ό μ μλ―μ΄ νλ λ€λͺ¨ μμ 3μ μμ κ³Ό μΈμ ν 8μΉΈ(λΉ¨κ° λ€λͺ¨ μμ
μμ)μ 3κ°μ μ§λ’°κ° μλ κ²μ λνλ
λλ€.
[κ²μ κ·μΉ]
(1) νλ μ΄μ΄λ λ κ°μ§ λμ(λ§μ°μ€ μ° ν΄λ¦, μ’ ν΄λ¦)μ ν΅ν΄μ 보λμ μνΈ μμ©ν μ
μμ΅λλ€.
(2) νλ μ΄μ΄κ° λ§μ°μ€ μ° ν΄λ¦μ μννμ λ κΈ°λν μ μλ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
A. μ΄λ―Έ λ°νμ§ μΉΈμΈ κ²½μ°, μ무 μΌλ μΌμ΄λμ§ μμ΅λλ€.
B. μμ§ λ°νμ§μ§ μμ μΉΈμΈ κ²½μ°
β»μμ§ κΉλ°μ΄ μλ κ²½μ°, κΉλ°μ ν΅ν΄μ λ§νΉμ ν μ μμ΅λλ€. κΉλ°μ κ²½μ° νλ μ΄μ
λΆμμ μΈ λκ΅¬λ‘ λͺ¨λ μ§λ’°κ° μλ μμΉλ₯Ό κΈ°μ΅νλ κ²μ νλ μ΄μ λΆλ΄μ μ€ μ μκΈ°
λλ¬Έμ νλ μ΄ μμ μ§λ’°λ₯Ό νμνλ λκ΅¬λ‘ μ¬μ©ν μ μμ΅λλ€. (νμν μ μλ
κΉλ°μ κ°μμ μ νμ μμ΅λλ€.)
β»κΉλ°μ΄ μλ κ²½μ°, ν΄λΉ κΉλ°μ μ§μΈ μ μμ΅λλ€.
(3) νλ μ΄μ΄κ° λ§μ°μ€ μ’ ν΄λ¦μ μννμ λ κΈ°λν μ μλ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
A. κΉλ°λ‘ νμλ μΉΈμΈ κ²½μ°, μ무 μΌλ μΌμ΄λμ§ μμ΅λλ€.
B. μ΄λ―Έ λ°νμ§ μΉΈμΈ κ²½μ°, μ무 μΌλ μΌμ΄λμ§ μμ΅λλ€.
C. μμ§ λ°νμ§μ§ μμ μΉΈμΈ κ²½μ°
β»ν΄λΉ μμΉκ° μ§λ’°λΌλ©΄ κ²μμ μ’
λ£λκ³ νλ μ΄μ΄λ ν¨λ°°ν©λλ€.
β»ν΄λΉ μμΉκ° λΉ μΉΈμ΄λΌλ©΄ μΈμ ν 8μΉΈμ μ§λ’°μ μλ₯Ό νμν©λλ€. λ§μ½, μΈμ ν 8μΉΈμ
μ§λ’°μ μκ° 0μΈ κ²½μ°, ν΄λΉ κ³Όμ μ κ° 8 μΉΈμμ λ€μ λ°λ³΅ν©λλ€.
(4) νλ μ΄μ΄κ° μ§λ’°λ₯Ό μ μΈν λͺ¨λ λΉ μΉΈμ λ°νλ€λ©΄, νλ μ΄μ΄λ μΉλ¦¬ν©λλ€.
3
(ꡬν λͺ©ν)
(1) μ΄ 4κ°μ ν΄λμ€λ₯Ό ν΅ν΄μ μ§λ’° μ°ΎκΈ°λ₯Ό ꡬνν©λλ€. ν΄λμ€λ₯Ό ꡬνν λμλ μλμμ
μ μν λ³μ λ° λ©μλλ€μ λ°λμ μ¬μ©νμ¬ νλ‘κ·Έλ¨μ ꡬνν΄μΌ ν©λλ€. μλ λͺ
μλ λ³μ
μ΄λ¦, λ©μλ μ΄λ¦ λ° λ©μλμ 맀κ°λ³μ λ° λ¦¬ν΄ κ°μ λ³κ²½ λΆκ°λ₯ ν©λλ€. μ΄μΈμ νμν
λ³μ λ° λ©μλλ μΆκ°λ‘ μ μν΄μ μ¬μ©ν μ μμΌλ©°, μΆκ°ν λ΄μ©μ λν΄μλ μμ€μ½λμ
λ³΄κ³ μμ μ€λͺ
μ ν¬ν¨νμ¬ μμ±ν΄μΌ ν©λλ€.
A. Panel
μ§λ’° μ°ΎκΈ° κ²μμ κ° μΉΈμ ν΄λΉνλ classμ
λλ€. μλμ μ£Όμ΄μ§ λͺ¨λ λ³μ, ν¨μλ₯Ό
ꡬνν΄μΌ ν©λλ€.
β [λ³μ] isRevealed : ν΄λΉ panelμ΄ λ°νμ§ μνμΈμ§λ₯Ό λνλ΄λ bool type λ³μλ‘,
instanceλ₯Ό μμ± μ λ°λμ Falseλ‘ μ΄κΈ°ν ν©λλ€.
β‘ [λ³μ] hasFlag : ν΄λΉ panelμ΄ flagλ₯Ό 보μ νκ³ μλμ§λ₯Ό λνλ΄λ bool type
λ³μλ‘, instanceλ₯Ό μμ± μ λ°λμ Falseλ‘ μ΄κΈ°ν ν©λλ€.
β’ [ν¨μ] toggleFlag(self) : ν΄λΉ panelμ hasFlagλ₯Ό toggleν©λλ€. μ¦, νμ¬
hasFlagκ° TrueλΌλ©΄ μ€ν ν Falseκ° λκ³ , FalseλΌλ©΄ μ€ν ν Trueκ° λ©λλ€.
β£ [ν¨μ] unveil(self) : ν΄λΉ panelμ λ°νμ§ μνλ‘ λ³κ²½λ©λλ€.
* Hint: isRevealedμ κ°μ΄ Trueκ° λμ΄μΌ ν©λλ€.
B. EmptyPanel
μ§λ’°κ° μ‘΄μ¬νμ§ μλ μΉΈμ μλ―Ένλ classλ‘ Panelμ μμν΄μΌ ν©λλ€. μλμ μ£Όμ΄μ§
λͺ¨λ ν¨μλ₯Ό ꡬνν΄μΌ ν©λλ€.
β [λ³μ] numOfNearMines: ν΄λΉ panelκ³Ό μΈμ ν mineμ μλ₯Ό μ μ₯νλ num type
λ³μλ‘, instanceλ₯Ό μμ± μ λ°λμ 0μΌλ‘ μ΄κΈ°ν ν©λλ€.
4
β‘ [ν¨μ] addNumOfNearMines(self): ν΄λΉ panelμ numOfNearMinesμ κ°μ 1 μ¦κ°
μν΅λλ€.
β’ [ν¨μ] unveil(self): λΆλͺ¨μΈ Panelμ unveilμ μννκ³ , μ΄λ μΈμ ν mineμ μλ₯Ό
returnν©λλ€.
C. MinePanel
μ§λ’°κ° μ‘΄μ¬νλ μΉΈμ μλ―Ένλ classλ‘ Panelμ μμν΄μΌ ν©λλ€. μλμ μ£Όμ΄μ§ λͺ¨λ
ν¨μλ₯Ό ꡬνν΄μΌ ν©λλ€.
β [ν¨μ] unveil(self): λΆλͺ¨μΈ Panelμ unveilμ μννκ³ , -1μ returnν©λλ€.
D. Board
μ§λ’° μ°ΎκΈ° κ²μμ μ¬μ©λλ λͺ¨λ κΈ°λ₯μ ν¬ν¨νλ classμ
λλ€. μ¬κΈ°μλ μμ λ§λ
Panel classλ€μ νμ©νμ¬ μλμ μ£Όμ΄μ§ λͺ¨λ ν¨μλ₯Ό ꡬνν΄μΌ ν©λλ€.
β [λ³μ] panels : 2μ°¨μ 리μ€νΈλ‘ Panel instanceλ₯Ό μ μ₯ν©λλ€. μ΄λ reset ν¨μκ°
νΈμΆλ λλ§λ€ μ΄κΈ°νλ©λλ€. (λ°λΌμ, instance μμ± μμ λ°λμ νΉμ κ°μΌλ‘
μ΄κΈ°νν νμλ μμ΅λλ€.)
β‘ [ν¨μ] reset(self, numMine, height, width): Boardλ₯Ό μ΄κΈ°νν©λλ€. μ΄ κ³Όμ μμ
panelsμ heightν¬κΈ°λ§νΌμ νκ³Ό widthλ§νΌμ μ΄μ κ°μ§λ 2μ°¨μ 리μ€νΈλ₯Ό
μμ±ν©λλ€. λν, numMineμΌλ‘ μ£Όμ΄μ§ μ«μλ§νΌ mineμ randomν μμΉμ
λΆν¬μν΅λλ€. Mineμ΄ μμΉν κ³³μλ MinePanelμ΄ λ€μ΄κ°κ³ , Mineμ΄ μλ μμΉμλ
EmptyPanelμ΄ λ€μ΄κ°λλ‘ ν©λλ€. λ§μ§λ§μΌλ‘, κ° EmptyPanelμλ μΈμ ν Panelμ
μμΉν Mineμ μλ§νΌ numOfNearMinesκ° λ€μ΄κ°λλ‘ ν©λλ€. μ΄λ, EmptyPanel μ
λ³μμΈ numOfNearMines λ³μμ μ§μ μ κ·Όνμ¬ κ°μ λ³κ²½ν΄μλ μλκ³ ,
addNumOfNearMines ν¨μλ§μ μ΄μ©νμ¬ κ΅¬ννλλ‘ ν©λλ€.
(ν΄λΉ μ§λ’° μ°ΎκΈ° κ²μμμλ Boardμ μ¬μ΄μ¦μ μ§λ’°μ κ°μκ° λμ΄λμ λ°λΌμ
μ λμ μΌλ‘ λ³νν μ μμ΅λλ€. μ΄ ν¨μλ κ·Έ μν©λ§λ€ Boardλ₯Ό Randomνκ² μ΄κΈ°ν
λ μ¬μ©ν μ μμ΅λλ€.)
β’ [ν¨μ] getNumOfRevealedPanels(self): νμ¬ boardμ λ°νμ Έ μλ Panelμ κ°μλ₯Ό
returnν©λλ€.
β£ [ν¨μ] unveil(self, y, x): panelsμ yν xμ΄μ μμΉν Panelμ λ°νλλ€. λ§μ½,
λ°νλΈ Panelμ΄ μ§λ’°λΌλ©΄, -1μ returnν©λλ€. κ·Έλ μ§ μλ€λ©΄, μ무κ²λ returnνμ§
μμ΅λλ€. λν, λ§μ½ λ°νλΈ Panelμ numOfNearMinesμ κ°μ΄ 0μ΄λΌλ©΄, μΈμ ν 8μΉΈ
μ€μ μ§λ’°κ° μλ μΉΈμ λν΄μ μ΄ κ³Όμ μ λ°λ³΅ν©λλ€. λ§μ½ κΉλ°μ΄ μ‘΄μ¬νλ μΉΈμλ
λ°λ³΅λμκ³ , ν΄λΉ μΉΈμ΄ μ§λ’°κ° μλ κ²½μ° ν΄λΉ μΉΈμ κΉλ°μ μ κ±°νκ³ , λ°ν λ
λλ€.
κ·Έλ μ§ μκ³ μ§λ’°κ° μλ κ²½μ° κΉλ°μ μ μ§ν©λλ€.
* Hint: μλ κ·Έλ¦Όμμ μ μ μλ―μ΄ ν λ²μ yν xμ΄μ Panelμ λ°νλ νμκ°
μΌλ§λ λ§μ Panelμ λ°νκ² λ μ§λ μ μ μμ΅λλ€. λ°λΌμ, λ³λμ μλ£
5
ꡬ쑰(stack λ±)μ μ΄μ©νμ¬ μ°¨λ‘λλ‘ λ°νλ΄κ±°λ μ¬κ· ν¨μλ₯Ό νμ©νμ¬ μ΄ λ¬Έμ λ₯Ό
ν΄κ²°ν μ μμ΅λλ€.
(ν΄λΉ ν¨μλ Boardμ νΉμ ꡬμ(yν xμ΄)μ μ ννμμ λμ κ²°κ³Όλ₯Ό panelsμ
λ°μνλ κΈ°λ₯μ ν©λλ€. λ°λΌμ, GUIμμλ ν΄λΉ ꡬμμ μ ν μ μ΄ ν¨μλ₯Ό
νΈμΆνκ³ , panelsμ μ΅μ’
κ²°κ³Όλ₯Ό κ·Έλλ‘ νλ©΄μ 보μ¬μ£ΌκΈ°λ§ νλ©΄ λ©λλ€.)
β€ [ν¨μ] toggleFlag(self, y, x): panelsμ yν xμ΄μ μμΉν Panelμ flagλ₯Ό
toggleν©λλ€. μ¦, νμ¬ flagκ° μ‘΄μ¬νλ€λ©΄ μ€ν ν μμ΄μ§κ³ , μλ€λ©΄ μ€ν ν
μ‘΄μ¬νκ² λ©λλ€.
β₯ [ν¨μ] checkReveal(self, y, x): panelsμ yν xμ΄μ μμΉν Panelμ΄ λ°νμ Έ μλμ§
νμΈν©λλ€. λ°νμ Έ μλ€λ©΄ Trueλ₯Ό returnνκ³ , κ·Έλ μ§ μλ€λ©΄ Falseλ₯Ό
returnν©λλ€.
β¦ [ν¨μ] checkFlag(self, y, x): panelsμ yν xμ΄μ μμΉν Panelμ flagκ° μλμ§
νμΈν©λλ€. flagκ° μλ€λ©΄, Trueλ₯Ό returnνκ³ , κ·Έλ μ§ μλ€λ©΄ Falseλ₯Ό
returnν©λλ€.
β§ [ν¨μ] checkMine(self, y, x): panelsμ yν xμ΄μ μμΉν Panelμ mineμ΄ μλμ§
νμΈν©λλ€. mineμ΄ μλ€λ©΄, Trueλ₯Ό returnνκ³ , κ·Έλ μ§ μλ€λ©΄ Falseλ₯Ό
returnν©λλ€.
β¨ [ν¨μ] getNumOfNearMines(self, y, x): panelsμ yν xμ΄μ μμΉν Panelμ μΈμ ν
mineμ μλ₯Ό returnν©λλ€. μ΄λ ν΄λΉ Panelμ΄ EmptyPanelμμ κ°μ μΌλ‘ ν©λλ€.
E. App
GUI ꡬν μ½λλ₯Ό λ΄λΉν©λλ€. μ 체 GUIλ₯Ό κ°μΈλ Frameλ₯Ό μμνκ³ , κ° widgetμ
Boardμ μ‘΄μ¬νλ ν¨μλ₯Ό μ μ νκ² μ¬μ©νμ¬ κ΅¬νν©λλ€. μ½κ² ꡬννκΈ° μν΄μλ
boardκ° λ³κ²½λ λλ§λ€ μ 체 νμ λ€μ 그리λ κ²λ μ’μ λ°©λ²μ΄ λ μ μμ΅λλ€.
λ³λλ‘ μ μνλ methodλ μκ³ , μμ¨μ μΌλ‘ ν΄λΉ classλ₯Ό μ μ ν μ±μ μλ (2)μμ
μ μνλ GUI μꡬ μ¬νμ λ§μ‘±μμΌμΌ ν©λλ€. (μΆκ°ν λ³μ λ° λ©μλμ λν μ€λͺ
μ
6
λ°λμ μ£Όμ λ° λ³΄κ³ μμ μΆκ°ν΄μΌ ν©λλ€.)
(2) ν΄λΉ μμ€ν
μμ μꡬνλ GUIλ λ€μκ³Ό κ°μ΅λλ€.
A. μ 체λ Header λΆλΆκ³Ό Body λΆλΆμΌλ‘ λλ©λλ€.
B. Header λΆλΆμλ μ΄κΈ°ν λ²νΌμ΄ μ‘΄μ¬νλ©°, κ°λ‘ λ°©ν₯μμ μ€μμ μμΉν©λλ€.
β μ’ ν΄λ¦ μμ Body λΆλΆμ λͺ¨λ λ΄μ©μ΄ μ΄κΈ°ν ν©λλ€.
β‘ νμ μμλ μλ λͺ¨μμ΄ νκΈ°λκ³ , ν¨λ°° μμλ ν΄κ³¨, μ±κ³΅ μμλ μ κΈλΌμ€λ₯Ό λ
μΊλ¦ν°κ° λ
ΈμΆλ©λλ€.
C. Body λΆλΆμλ λ²νΌμΌλ‘ μ΄λ£¨μ΄μ§ μ§λ’° μ°ΎκΈ° 보λκ° μ£Όμ΄μ§λλ€. (μ²μ ν¬κΈ°λ
10Γ10μΌλ‘ κ³ μ ν©λλ€.)
β κ° λ²νΌμ ν΄λ¦μ΄ κ°λ₯ν΄μΌ νκ³ , μ΄λ―Έ λλ¬λ λΆλΆμ μκ°μ μΌλ‘ λͺ
ννκ² κ΅¬λΆμ΄
κ°μΌ ν©λλ€.
β‘ λ°νμ§ λΉ μΉΈ μ€μμ μΈκ·Ό μ§λ’°μ μκ° 0μΈ μΉΈμ 0μ νκΈ°νμ§ μκ³ , λΉμ λ‘λλ€.
β’ μ’ ν΄λ¦ μμ ν΄λΉ μμΉμ ν΄λΉνλ κ°μ΄ λ°νμ§λλ€(μ«μ, λΉμΉΈ, νν μ€ νλ).
μ΄λ―Έ λ°νμ‘κ±°λ κΉλ°μ΄ μ‘΄μ¬νλ κ²½μ° μ무 μΌλ μΌμ΄λμ§ μμ΅λλ€.
β£ μ° ν΄λ¦ μμ ν΄λΉ μμΉμ κΉλ°μ κ½κ±°λ μ κ±°ν μ μμ΅λλ€. μ΄λ―Έ μλ€λ©΄
μ κ±°νκ³ , μλ€λ©΄ κ½μ μ μλ€. μ΄λ―Έ λ°νμ§ μΉΈμ κ²½μ° μ무 μΌλ μΌμ΄λμ§
μμ΅λλ€.
β€ ν¨λ°°ν κ²½μ° μ‘΄μ¬νλ λͺ¨λ μΉΈμ λ°νλλ€. μλμ λ λ²μ§Έ κ·Έλ¦Όκ³Ό κ°μ΄ λͺ¨λ μΉΈμ΄
λ°νμ ΈμΌ ν©λλ€.
β₯ ꡬνμ νμν μ΄λ―Έμ§ νμΌ(μλ μ¬λ, ν΄κ³¨, μ κΈλΌμ€, νν, κΉλ°)μ imgs ν΄λ
μμ λͺ¨λ μ‘΄μ¬νλ μ΄λ₯Ό μ¬μ©νμκΈ° λ°λλλ€.
β¦ μ΄μΈμ λν
μΌν λμμΈμ νκ° νλͺ©μ λ€μ΄κ°μ§ μμ΅λλ€.
Ex) μΌμͺ½λΆν° νλ μ΄ μ€, ν¨λ°° μ, μ±κ³΅ μμ κ²°κ³Ό
7
D. μλ¨ λμ΄λ λ©λ΄λ₯Ό ν΅ν΄μ Easy, Normal, Hardλ‘ λ°κΏ μ μλλ‘ κ΅¬νν©λλ€.
λμ΄λλ§λ€ μ§λ’°μ κ°μμ 보λμ ν¬κΈ°κ° λ³νλλ‘ ν©λλ€.
β Easy : 10κ°μ μ§λ’°, 10Γ10 board
β‘ Normal : 30κ°μ μ§λ’°, 15Γ15 board
β’ Hard : 50κ°μ μ§λ’°, 20Γ20 board
Ex) μλ¨μ λμ΄λλΌλ λ©λ΄κ° μ‘΄μ¬νκ³ , μΌμͺ½λΆν° ν΄λΉ λμ΄λμ λ°λ₯Έ 보λμ ν¬κΈ°
λ³νλ₯Ό 보μ
λλ€. (Easy, Normal, Hard μ)(μ£Όμ μ¬ν)
(1) λ€μ ν λ² κ°μ‘°νμ§λ§, λμμΈμ μ μμ λ°μλμ§ μμ΅λλ€. κ³Όλν μκ°μ ν¬μνμ§
λ§μκΈ° λ°λλλ€.
(2) ν΄λΉ κ³Όμ μμλ λ κ°μ νμΌ(model.py, app.py)μ΄ μ‘΄μ¬νλ©°, λ κ° λͺ¨λ μ μΆμ ν΄μΌ
ν©λλ€. κ·Έ μ€ app.pyμμλ GUIκ° λμνμ§ μλλΌλ, model.pyμ Board, Panel, EmptyPanel,
MinePanelμ ꡬνλ§μΌλ‘λ μ μλ₯Ό λΆμ¬ν©λλ€.
[μ°Έκ³ ]
(1) Demo λμμ
https://drive.google.com/file/d/1cqOAmF7E-QWR1bSH3zkReoaXHUbBKH5R/view?usp=sharing
(2) GUI μ°Έκ³ μ½λ
ꡬνμ λμμ΄ λ μ μλ GUI codeμ
λλ€. νμ§λ§, μ λ΅μ΄ μλλ νΈνλλ‘ κ΅¬ννμλ©΄
λ©λλ€.
https://github.com/euidong/minesweeper/blob/v0.0.1/gui_test.py
Assignment, CSED101., Problem, Programming, solved, Solving
[SOLVED] Csed101. programming & problem solving programming assignment 4
$25
File Name: Csed101._programming_&_problem_solving_programming_assignment_4.zip
File Size: 593.46 KB
Only logged in customers who have purchased this product may leave a review.
Reviews
There are no reviews yet.