Description
– GUI Programming –
μ£Όμ μ¬ν
β« ν΄λμ€λ .h νμΌκ³Ό .cpp νμΌμ λλ μ ꡬνν΄μΌ ν©λλ€.
β« λ¬Έμ μ λ°λ‘ λͺ
μλμ΄ μμ§ μμλ ν΄λμ€μ μμ±μ (constructor), μλ©Έμ (destructor)λ νμμ μΌλ‘ ꡬνλμ΄μΌ ν©λλ€.
β« λ¬Έλ² μ¬μ©μ μ μ½μ μμ΅λλ€.
β« λ¬Έμ μ ꡬν μꡬ μ¬νμ κΌΌκΌΌν μ½μ΄ 보μκΈ° λ°λλλ€.
κ°μ μ¬ν
β« μ μΆ κΈ°ν λ€μ λ (6μ 12μΌ) μ μΆ μ 20% κ°μ , μ΄ν λ€ (6μ 13μΌ) μ μΆ μ 40% κ°μ
βΌ μ΄ μ΄νμ μ μΆν κ²½μ° 0μ μ²λ¦¬
β« μ»΄νμΌμ΄ λμ§ μμΌλ©΄ 0μ μ²λ¦¬
β« μ μΆ λ°©λ² μλ° μ κ°μ
μ μΆ λ°©λ²
β« κ°μ΄ μ 곡λ Qt Creator μ€μΉ λ°©λ²μ μ°Έκ³ ν΄ μ£Όμμμ€. ν΄λΉ μ€μΉ λ°©λ²λλ‘ μ€μΉλ Qt Creator μμμ μ»΄νμΌ λ° μ±μ μ΄ μ§νλ κ²μ
λλ€.
β« Qt Creatorμ νλ‘μ νΈ ν΄λλ₯Ό κ·Έλλ‘ μμΆνμ¬ μ μΆν΄ μ£Όμμμ€. νλ‘μ νΈ ν΄λ λ΄λΆ μ .pro νμΌμ΄ λ°λμ ν¬ν¨λμ΄ μμ΄μΌ ν©λλ€.
β« Qt Creatorμ νλ‘μ νΈ ν΄λμ λ ν¬νΈλ₯Ό κ°μ΄ μμΆνμ¬ βνλ².zipβμ ννλ‘ μ μΆν΄ μ£Όμ μμ€. μμΆλ λ ν¬νΈμ μ΄λ¦ μμ βνλ².pdfβμ ννλ‘ μ€μ ν΄ μ£ΌμκΈ° λ°λλλ€.
κ³΅ν΅ μ±μ κΈ°μ€
1. νλ‘κ·Έλ¨ κΈ°λ₯
β« νλ‘κ·Έλ¨μ΄ μꡬ μ¬νμ λͺ¨λ λ§μ‘±νλ©΄μ μ¬λ°λ₯΄κ² μ€νλλκ°?
2. νλ‘κ·Έλ¨ μ€κ³ λ° κ΅¬ν
β« μꡬ μ¬νμ λ§μ‘±νκΈ° μν λ³μ λ° μκ³ λ¦¬μ¦ μ€κ³κ° μ λμλκ°?
β« λ¬Έμ μμ μ μλ μΈλΆ 쑰건μ λͺ¨λ λ§μ‘±νμλκ°?
β« μ€κ³λ λ΄μ©μ΄ μꡬλ μΈμ΄λ₯Ό μ΄μ©νμ¬ μ μ ν ꡬνλμλκ°?
3. νλ‘κ·Έλ¨ κ°λ
μ±
β« νλ‘κ·Έλ¨μ΄ μ½κΈ° μ½κ³ μ΄ν΄νκΈ° μ½κ² μμ±λμλκ°?
β« λ³μλͺ
μ΄ λ¬΄μμ μλ―Ένλμ§ μ΄ν΄νκΈ° μ¬μ΄κ°?
β« νλ‘κ·Έλ¨μ μμ€ μ½λλ₯Ό μ΄ν΄νκΈ° μ½λλ‘ μ£Όμμ μ λΆμλκ°?
4. λ³΄κ³ μ κ΅¬μ± λ° λ΄μ©, μμ
β« λ³΄κ³ μλ μ μ ν λ΄μ©μΌλ‘ μ΄ν΄νκΈ° μ½κ³ 보기 μ’κ² μ μμ±λμλκ°?
β« λ³΄κ³ μμ μμμ μ λ°λλκ°?
λ€λ₯Έ μ¬λμ νλ‘κ·Έλ¨ νΉμ μΈν°λ·μ μλ νλ‘κ·Έλ¨μ 볡μ¬(copy)νκ±°λ κ°λ¨ν μμ ν΄μ μ μΆνλ©΄ νμ μ 무쑰건 βFβκ° λ©λλ€. μ΄λ¬ν λΆμ νμκ° λ°κ²¬λλ©΄ ν κ³Όμμ μ ν κΈ°μ€μ λ°λΌ μΆκ°μ μΈ λΆμ΄μ΅μ΄ μμ μ μμ΅λλ€.
2048 Puzzle Game
1. κ³Όμ κ°μ
μ΄λ² κ³Όμ μμλ C++ GUI κ°λ° νλ μμν¬μΈ Qt frameworkλ₯Ό μ΄μ©νμ¬ 2048 νΌμ¦ κ²μμ μ
μν΄ λ³Έλ€. Qt Creator κ°λ° νκ²½μ ν΅ν΄ 2048 νΌμ¦κ²μμ μ μνμ¬ GUI μ μ κ²½νμ μλ κ²μ λͺ©νλ‘ νλ€.
2. κ³Όμ μ€λͺ
2.1 μ£Όμ μ¬ν
ꡬν μꡬ μ¬νμ μ€λͺ
νκΈ°μ μμ, μ΄λ² κ³Όμ λ₯Ό ꡬνν¨μ μμ΄μ λ°λμ μ§μΌμΌ ν μ¬νλ€μ
λͺ
μνλ€.
β« GUI ꡬν μ½λμ κ²μ λ΄λΆ λ‘μ§ κ΅¬ν μ½λλ λ°λμ λΆλ¦¬νμ¬ κ΅¬ννλ€. μ΄λ κ²μ λ΄ λΆ λ‘μ§ κ΅¬ν μ½λμ GUI ꡬν μ½λλ₯Ό λΆλ¦¬ν¨μΌλ‘μ¨ κ° κ°μ²΄λ€μ λ
립μ±μ λμ΄κ³ ꡬν μ νΈμμ±μ λμ΄κΈ° μν¨μ΄λ€. κ°μ₯ μμ ν΄λμ .pro νμΌκ³Ό main.cpp ν¨μκ° μμΉνλ λ‘ νκ³ GUI ꡬν μ½λλ ui ν΄λμ μμΉνλλ‘, κ²μ λ΄λΆ λ‘μ§ κ΅¬ν μ½λλ game ν΄ λμ μμΉνλλ‘ νλ€.
β« Designer UI (.ui νμΌ)λ₯Ό ν΅ν GUI ꡬνμ κΈμ§νλ€. GUI ꡬνμ νμν μΈλΆ ꡬν μ¬ν λ€ (λΈλ‘μ ν¬κΈ°, κ²μνμ ν¬κΈ° λ±)μ λ¬Έμ μμ μ£Όμ΄μ§λ―λ‘ μ΄λ₯Ό κ°μ§κ³ μ½λλ₯Ό ν΅ν΄ GUIλ₯Ό ꡬννλλ‘ νλ€.
2.2 κ²μ μ§ν
μ΄λ² μΉμ
μμλ κ³Όμ μ κ²μμ΄ μ§νλλ κ³Όμ μ μμ νλ€. μΈλΆμ μΈ κ΅¬ν μꡬ μ¬νμ λ€μ
μΉμ
μμ μμ νλ€. ꡬν μ΄μ μ https://www.mathsisfun.com/games/2048.html μμ κ²μμ ν΄λ³΄ λ©° κ²μμ μ λ°μ μΈ νλ¦μ νμ
νλ κ²μ μΆμ²νλ€.
2.2.1 κ²μ μμ
νλ‘κ·Έλ¨μ μ€ννλ©΄ λ€μκ³Ό κ°μ΄ λλ€ν κ²μνμ΄ λνλλ€.
4 x 4 격μ ννμ κ²μν λ΄λΆ λλ€ν 2κ΅°λ°μ μ«μ 2 λΈλ‘μ΄ λ±μ₯νλ κ²μΌλ‘ κ²μμ΄ μμλ
λ€. μ 체 λ μ΄μμμ λ€μ λ€ κ°μ μμλ€λ‘ ꡬμ±λλ€.
1. κ²μν: 4 x 4 격μ ννμ 곡κ°μΌλ‘, νΌμ¦ κ²μμ λΈλ‘λ€μ΄ ν©μ³μ§κ³ μ΄λνλ 곡κ°μ΄λ€.
2. μ μ: νμ¬ κ²μνμ μ μκ° νμλλ 곡κ°μ΄λ€. μ μλ₯Ό κ³μ°νλ 곡μμ μΆνμ μ€λͺ
ν λ€.
3. κ²μ μ’
λ£ λ²νΌ: κ²μμ μ€κ°μ μ’
λ£ν μ μλ λ²νΌμ΄λ€. ν΄λΉ λ²νΌμ λλ₯Ό κ²½μ° μ λ§λ‘ κ²μμ μ’
λ£ν κ²μΈμ§ 묻λ νμΈμ°½μ΄ μΆλ ₯λλ€. βYesβ λ²νΌμ λλ₯Ό κ²½μ° νλ‘κ·Έλ¨μ΄ μ’
λ£ λλ©° βNoβ λ²νΌμ λλ₯΄κ±°λ νμΈμ°½μ λ«μ κ²½μ° μ무 μΌλ μΌμ΄λμ§ μλλ€.
4. κ²μν λλ리기 λ²νΌ: ν΄λΉ λ²νΌμ λλ₯Ό κ²½μ° κ²μνμ΄ μ΄μ μ μνλ‘ λλμκ°λ€. ν κ²μ λΉ λλ리기 κΈ°νλ 3λ² μ£Όμ΄μ§λ€.
κ·Έλ¦Ό 2. κ²μ μ’ λ£ λ²νΌμ λλ₯Ό κ²½μ° λνλλ νμΈμ°½
κ·Έλ¦Ό 2λ κ²μ μ’ λ£ λ²νΌμ λλ μ λ λμ€λ νμΈμ°½μ΄λ€. Yesλ₯Ό λλ₯Ό κ²½μ° νλ‘κ·Έλ¨μ΄ κ·Έλλ‘ μ’ λ£λλ©°, Noλ₯Ό λλ₯Ό κ²½μ° μ무 μΌλ μΌμ΄λμ§ μκ³ κ²μμΌλ‘ λλμκ°λ€.
2.2.2 κ²μ μ‘°μ λ° λΈλ‘ μ΄λ
κ²μνμμμ μ‘°μμ ν€λ³΄λ λ°©ν₯ν€λ‘ μ΄λ£¨μ΄μ§λ€. μ¬μ©μκ° λλ₯Έ λ°©ν₯ν€μ λν λ°©ν₯μΌλ‘ λΈ
λ‘λ€μ΄ μ΄λνλ©° (μλ₯Ό λ€μ΄, μΌμͺ½ λ°©ν₯ν€λ₯Ό λλ μ λ μΌμͺ½μΌλ‘μ μ΄λμ΄ κ°λ₯νλ€λ©΄ λΈλ‘λ€μ΄ μΌμͺ½μΌλ‘ μ΄λ), λ°©ν₯ν€λ₯Ό λλ μ λ ν΄λΉ λ°©ν₯μΌλ‘μ μ΄λμ΄ λΆκ°λ₯νλ©΄ κ·Έ μ
λ ₯μ 무μνλ€. λ°© ν₯ν€ μ΄μΈμ μ
λ ₯μ 무μνλλ‘ κ΅¬ννλ€.
λ°©ν₯ν€λ₯Ό λλ μ λ λΈλ‘λ€μ΄ μ΄λνλ κ·μΉμ μμΈν μμ보μ.
1. μ
λ ₯λ λ°©ν₯μ λν΄ λΉ κ³΅κ°μ΄ μ‘΄μ¬νλ©΄ ν΄λΉ λΈλ‘μ κ·Έ λ°©ν₯μΌλ‘ μ΅λν μ΄λνλ€.
2. λΈλ‘μ΄ μ΄λνλ©΄μ λ€λ₯Έ κ°μ κ°λ λΈλ‘κ³Ό λ§λΏμ κ²½μ° λ λΈλ‘μ ν©μ³μ§μ§ μλλ€.
3. λΈλ‘μ΄ μ΄λνλ©΄μ κ°μ κ°μ κ°λ λΈλ‘κ³Ό λ§λΏμ κ²½μ° λ λΈλ‘μ ν©μ³μ§λ€. λν, λΈ λ‘λ€μ ν©μ³μ§ λ ν λ²μ μ΅λ λ κ°κΉμ§λ§ κ·Έ λ³ν©μ κ΄μ¬ν μ μλ€.
μ°μ , μ λ ₯λ λ°©ν₯μ λν΄ λΉ κ³΅κ°μ΄ μ‘΄μ¬νλ©΄ λΈλ‘λ€μ κ·Έ λ°©ν₯μΌλ‘ μ΅λν μ΄λνλ€. κ·Έλ¦Ό 3 μ μ°Έκ³ νλλ‘ νλ€.
κ·Έλ¦Ό 3. (μ’) μ΄λνκΈ° μ κ²μν, (μ°) μΌμͺ½ λ°©ν₯ν€λ₯Ό λλ¬μ λΈλ‘λ€μ΄ μ΄λν κ²μν. 3ν 3μ΄μ λΈλ‘μ μ΄λ ν μλ‘ μμ±λ λΈλ‘μ΄λ€.
λΈλ‘μ΄ μ΄λνλ©΄μ λ€λ₯Έ κ°μ κ°λ λΈλ‘κ³Ό λ§λΏμ κ²½μ° λ λΈλ‘μ ν©μ³μ§μ§ μκ³ μΆ©λνλ€. κ·Έ
λ¦Ό 4λ₯Ό μ°Έκ³ νλλ‘ νλ€.
κ·Έλ¦Ό 4. (μ’) μ΄λνκΈ° μ κ²μν, (μ°) μμͺ½ λ°©ν₯ν€λ₯Ό λλ¬μ λΈλ‘λ€μ΄ μ΄λν κ²μν. (μ°)μ 4ν 2μ΄ λΈλ‘μ μ΄λ ν μλ‘ μμ±λ λΈλ‘μ΄λ€.
λΈλ‘μ΄ μ΄λνλ©΄μ κ°μ κ°μ κ°λ λΈλ‘κ³Ό λ§λΏμ κ²½μ° λ λΈλ‘μ ν©μ³μ§λ€. κ·Έλ¦Ό 5λ₯Ό 보면 1
ν 1μ΄μ λΈλ‘κ³Ό 2ν 1μ΄μ λΈλ‘μ΄ μλλ‘ μ΄λνλ©΄μ ν©μ³μ§ κ²μ νμΈν μ μλ€. λν, λΈλ‘λ€ μ΄ ν©μ³μ§ λ νλμ λ³ν©μ λν΄ μ΅λ λ κ°κΉμ§λ§ κ΄μ¬ν μ μλ€. κ·Έλ¦Ό 5λ₯Ό 보면 2-2-4 λΈλ‘ μ΄ 1μ΄μ λμ¬ μλ κ²μ λ³Ό μ μλ€. μ¬κΈ°μ 2-2-4κ° ν©μ³μ Έμ 8μ΄ λμ€λ κ²μ΄ μλλΌ 4-4κ° λλ κ²μ μ μ μλ€.
κ·Έλ¦Ό 5. (μ’) μ΄λνκΈ° μ κ²μν, (μ°) μλμͺ½ λ°©ν₯ν€λ₯Ό λλ¬μ λΈλ‘λ€μ΄ μ΄λν κ²μν. 1ν 1μ΄ μ λΈλ‘μ μ΄λ ν μλ‘ μμ±λ λΈλ‘μ΄λ€.
λν, 2-2-2κ° κ°λ‘λ‘ μ°λ¬μ μμ λ μΌμͺ½μΌλ‘ μ΄λν κ²½μ° ν©μ³μ Έμ 4-2κ° λλ©°, μ€λ₯Έμͺ½μΌλ‘
μ΄λν κ²½μ° ν©μ³μ Έμ 2-4κ° λλ€. 2-2-2κ° μΈλ‘λ‘ μ°λ¬μ μμ λλ λ§μ°¬κ°μ§λ‘, μμͺ½μΌλ‘ μ΄λ ν κ²½μ° μμμλΆν° 4-2κ° λλ©° μλμͺ½μΌλ‘ μ΄λν κ²½μ° μμμλΆν° 2-4κ° λλ€.
2.2.3 μ μ κ³μ°
λΈλ‘λ€μ΄ ν©μ³μ§ λ κ²μνμ μ μκ° μ¬λΌκ°λ€. ν©μ³μ Έμ μμ±λ λΈλ‘μ κ°λ§νΌ μ μκ° μ¬λΌκ°
λλ‘ κ΅¬ννλ€. μλ₯Ό λ€μ΄, 8 λΈλ‘κ³Ό 8 λΈλ‘μ ν©μ³μ 16 λΈλ‘μ λ§λ€μλ€λ©΄ μ μλ 16μ΄ μ¬λΌκ° λ€. ν λ²μ μ΄λμΌλ‘ μ¬λ¬ κ°μ λ³ν©μ΄ λ°μνλ€λ©΄ λͺ¨λ λ³ν©μ λν΄ μ μκ° μ¬λΌκ°λλ‘ ν΄μΌ νλ€.
2.2.4 μλ‘μ΄ λΈλ‘ μμ±
κ²μνμμ λΈλ‘λ€μ μ΄λν λ€μλ λλ€ν λΉ κ³΅κ°μ μλ‘μ΄ λΈλ‘μ΄ νλ μμ±λλ€. μμ±λλ
μλ‘μ΄ λΈλ‘μ μ ν΄μ§ νλ₯ μ λ°λΌ 2 λλ 4μ κ°μ κ°μ§λ€. μ΄λ² κ³Όμ λ₯Ό ꡬνν λλ 20% νλ₯ λ‘ 4μ κ°μ κ°λ λΈλ‘μ΄ μμ±λλλ‘, 80% νλ₯ λ‘ 2μ κ°μ κ°λ λΈλ‘μ΄ μμ±λλλ‘ κ΅¬ννλ€.
2.2.5 λλ리기 λ²νΌ (Restore)
λλ리기 λ²νΌμ λλ₯΄λ©΄ κ²μνμ΄ μ΄μ μ μνλ‘ λλμκ°λ€. λ²νΌμ λλ₯΄λ©΄ μ λ§ λλ릴 κ²μΈ μ§ λ¬»λ λ©μμ§μ ν¨κ» νμ¬ λ¨μ λλ리기 κΈ°νλ₯Ό μλ €μ£Όλ μ°½μ΄ μΆλ ₯λλ€ (κ·Έλ¦Ό 6).
κ·Έλ¦Ό 6. κ²μ μ§ν μ€ Restore λ²νΌμ λλ μ λ μΆλ ₯λλ λ©μμ§ μ°½
μ΄ μνμμ Yesλ₯Ό λλ₯Ό κ²½μ° μ΄μ μνλ‘ λλμκ°λ©° μ±κ³΅μ μΌλ‘ λλλ €μ‘λ€λ λ©μμ§λ₯Ό μΆ λ ₯νλ€ (κ·Έλ¦Ό 7). Noλ₯Ό λλ₯Ό κ²½μ° μ무 μΌλ λ²μ΄μ§μ§ μλλ€.
κ·Έλ¦Ό 7. κ·Έλ¦Ό 6μμ Yes λ²νΌμ λλ¬ κ²μνμ λλλ¦° λͺ¨μ΅
λλ리기 λ²νΌμ ꡬννκΈ° μν΄μλ μ΄μ κ²μν μνλ₯Ό λ²νΌμ μ μ₯ν΄μΌ νλ€. λ²νΌμ μ μ₯λ
λ κ²μνμ 1κ°λ‘ μ ννλ€. λ€μ λ§νμλ©΄, λλ리기 λ²νΌμ μ¬μ©νμ¬ λ²νΌμ μ μ₯λ κ²μν μ νλ‘ λλλ Έμ κ²½μ° λ μ΄μ λ²νΌμλ μ무 κ²λ λ¨μμμ§ μμ κ²μ΄λ€. κ·Έλ κΈ° λλ¬Έμ λλ리기 λ²νΌμ λ λ² μ°μμΌλ‘ μ¬μ©ν μλ μλ€. κ·Έλ¦¬κ³ κ²μμ΄ μμν μκ°μλ λ²νΌμλ μ무 κ²λ μ μ₯λμ΄ μμ§ μμ κ²μ΄λ€. μ΄λ κ² λλ리기 λ²νΌμ λ λ² μ°μμΌλ‘ μ¬μ©νκ±°λ κ²μμ΄ μμλ μκ°μ λλ리기 λ²νΌμ λλ¬μ λ²νΌμ μ무 κ²λ μμ κ²½μ°μλ κ·Έλ¦Ό 8κ³Ό κ°μ μλ¬ μ°½μ μΆλ ₯ νλ€. μλ¬ μ°½μμ OK λ²νΌμ λλ₯΄λ©΄ λ€μ κ²μμ΄ μ¬κ°λλ€.
κ·Έλ¦Ό 8. λ²νΌμ μ무 κ²λ μ μ₯λμ΄ μμ§ μμ μνμμ Restore λ²νΌμ λλ μ λ
λν, λ μ΄μ λλ리기 κΈ°νκ° λ¨μμμ§ μμ μνμμ Restore λ²νΌμ λλ₯΄λ©΄ κ·Έλ¦Ό 9μ κ°μ μλ¬ λ©μμ§ μ°½μ μΆλ ₯νλ€.
κ·Έλ¦Ό 9. λλ리기 κΈ°νκ° λ¨μ§ μμ μνμμ Restore λ²νΌμ λλ μ λ μΆλ ₯λλ λ©μμ§ μ°½
2.2.6 κ²μ μΉλ¦¬
κ²μμ μ§ννμ¬ 2048 λΈλ‘μ λ§λ€λ©΄ μ μ κ° μΉλ¦¬νλ€. μ‘°κ΅λ κ²μμ νλ©΄μ 2048μ λ§λ€μ§
λͺ»νκΈ°μ 2048μ΄ λ§λ€μ΄μ Έμ κ²μμ΄ μΉλ¦¬νλ μμλ₯Ό 보μ¬μ£Όμ§λ λͺ»νλ€. κ·Έ λμ μ½λλ₯Ό μ΄μ§ λ³κ²½νμ¬ 32κ° μμ±λμμ λ κ²μμ΄ μ’
λ£λλλ‘ μ½λλ₯Ό λ°κΏλμλ€. 보μ¬μ£Όλ μμμμλ 32 λΈ λ‘μ λ§λ€μ΄μ κ²μμ΄ λλμ§λ§ μ€μ ꡬνμμλ 2048 λΈλ‘μ΄ λ§λ€μ΄μ‘μ λ μΉλ¦¬ μ‘°κ±΄μ΄ λ¬μ± λλλ‘ κ΅¬ννλ€. κ·Έλ¦Ό 10μ 보면 μμλ‘ μ€μ λ μΉλ¦¬ μ‘°κ±΄μΈ 32 λΈλ‘μ΄ λ§λ€μ΄μ Έ μλ€. κ·Έλ¦Ό 10 κ³Ό κ°μ΄ μΉλ¦¬ 쑰건μ ν΄λΉνλ λΈλ‘μ΄ μμ±λλ©΄ 1μ΄ λ€μ βCongratulations!β λ©μμ§μ ν¨κ» ν΄ λ¦¬μ΄ μμ μ μ μλ₯Ό μΆλ ₯νλ λ©μμ§ λ°μ€λ₯Ό μΆλ ₯νλ€.
κ·Έλ¦Ό 10. μΉλ¦¬ μ‘°κ±΄μ΄ λ¬μ±λμμ λ μΆλ ₯λλ λ©μμ§ μ°½
2.2.7 κ²μ ν¨λ°° κ·Έ μ΄λ€ λ°©ν₯μΌλ‘λ λΈλ‘λ€μ΄ μ΄λν μ μλ μνκ° λλ©΄ κ²μμμ ν¨λ°°νλ€.
κ·Έλ¦Ό 11. λΈλ‘λ€μ΄ μ΄λ€ λ°©ν₯μΌλ‘λ μ΄λν μ μλ μν. μ΄ μνμ λλ¬ν κ²λ§μΌλ‘λ μ무 μΌ
λ λ²μ΄μ§μ§ μλλ€.
κ·Έλ¦Ό 11μ 보면 λ μ΄μ μ΄λ€ λ°©ν₯μΌλ‘λ μ΄λν μ μλ μνκ° λ κ²μ μ μ μλ€. μ΄ μν
μ λλ¬νμ λλ κ²μ ν¨λ°° λ©μμ§κ° μΆλ ₯λμ§ μμ§λ§, μ΄ μνμμ μ무 λ°©ν₯ν€λ₯Ό λλ₯΄λ©΄ κ·Έλ¦Ό 12μ κ°μ΄ βYou lose…β λ©μμ§μ ν¨κ» ν¨λ°° μμ μ μ μλ₯Ό μΆλ ₯νλ λ©μμ§ λ°μ€λ₯Ό μΆλ ₯νλ€.
κ·Έλ¦Ό 12. κ·Έλ¦Ό 11μ μνμμ λ°©ν₯ν€λ₯Ό λλ μ λ μΆλ ₯λλ λ©μμ§ μ°½
2.3 GUI ꡬν μΈλΆ μ¬ν
2.3.1 νλ‘κ·Έλ¨ λ μ΄μμ
β« νλ‘κ·Έλ¨ μ€ν μ°½
βΌ ν¬κΈ° μ€μ : κ°λ‘ 1300, μΈλ‘ 1000 (resize νμ©)
β« κ²μ ν
βΌ QGridLayoutμΌλ‘ ꡬν
βΌ νλ‘κ·Έλ¨ μ°½ μΌμͺ½μ μμΉ
βΌ ν¬κΈ° μ€μ λ°λ‘ ν νμ μμ (05/23 15μ 10λΆ μμ )
β« μ μ νμ λ μ΄μμ
βΌ QLabelλ‘ κ΅¬ν
βΌ νλ‘κ·Έλ¨ μ°½ μ€λ₯Έμͺ½ μλ¨μ μμΉ
βΌ κΈμ ν¬κΈ° μ ν μμ
β« κ²μ μ’
λ£ λ²νΌ λ° λλ리기 λ²νΌ
βΌ QPushButtonμΌλ‘ ꡬν
βΌ νλ‘κ·Έλ¨ μ°½ μ€λ₯Έμͺ½ νλ¨μ μμΉ
βΌ λ²νΌ ν¬κΈ°: κ°λ‘ 300, μΈλ‘ 200
βΌ ν°νΈ ν¬κΈ°: 20pt
βΌ λ²νΌμ μ‘΄μ¬νλ 문ꡬ: μ’
λ£ λ²νΌ (Exit), λλ리기 λ²νΌ (Restore)
2.3.2 λΈλ‘
β« λΈλ‘μ ν¬κΈ°: κ°λ‘ 250, μΈλ‘ 250
β« λΈλ‘ μ¬μ΄μ κ°κ²©: 10 (void QGridLayout::setSpacing(int spacing);) (05/23 15μ 10λΆ μ μ )
β« QLabel ν΄λμ€λ₯Ό μμλ°μ ꡬν
β« setStyleSheetλ₯Ό μ¬μ©νμ¬ λΈλ‘ μ€νμΌ μ€μ (Widgetμ μ€νμΌμ CSSλ‘ μ€μ ν΄ μ£Όλ
λ©μλ)
βΌ setStyleSheet(βQLabel { background: rgb(rrr, ggg, bbb); color: black; border-style:
solid; font: 70pt; font: bold; }β); (05/23 15μ 10λΆ μμ )
βΌ λΉμ΄ μλ λΈλ‘: rgb(255, 255, 255)
βΌ 2 λΈλ‘: rgb(187, 173, 160)
βΌ 4 λΈλ‘: rgb(237, 224, 200)
βΌ 8 λΈλ‘: rgb(242, 177, 121)
βΌ 16 λΈλ‘: rgb(245, 149, 99)
βΌ 32 λΈλ‘: rgb(246, 126, 95)
βΌ 64 λΈλ‘: rgb(246, 94, 59)
βΌ 128 λΈλ‘: rgb(237, 207, 114)
βΌ 256 λΈλ‘: rgb(237, 204, 97)
βΌ 512 λΈλ‘: rgb(237, 200, 80)
βΌ 1024 λΈλ‘: rgb(237, 197, 63)
βΌ 2048 λΈλ‘: rgb(237, 194, 46)
2.3.3 λ©μμ§ μ°½
β« λ©μμ§ μ°½μ λμΈ λλ QMessageBoxλ₯Ό νμ©ν κ²
β« λ¬Έμ μ λ©μμ§ λ΄μ©μ΄ μ ννκ² λͺ
μλμ΄ μλ κ²μ μ μΈνκ³ λ λ©μμ§ μ°½μ νμλ λ 문ꡬλ μμ λ‘κ² μ€μ κ°λ₯ν¨. ν΄λΉ μν©μ λ§λ λ»μ μ ν μλ§ μμΌλ©΄ OK
2.4 νμ ꡬν νμΌ λ° ν΄λμ€
μ΄λ² μΉμ
μμλ μ΄λ² κ³Όμ μμ νμμ μΌλ‘ ꡬνλμ΄μΌ νλ νμΌ λ° ν΄λμ€λ₯Ό μ€λͺ
νλ€. μ΄λ²
μΉμ
μμ ꡬνμ μꡬνλ ν΄λμ€λ€μ λ°λμ ꡬνλμ΄μΌ νλ©°, μ΄μΈμ μΆκ°μ μΈ ν΄λμ€λ νμΌ μ μμ λ‘κ² κ΅¬νμ΄ κ°λ₯νλ€. λ³΄κ³ μλ₯Ό μμ±ν λ λ³ΈμΈμ΄ μΆκ°λ‘ ꡬνν ν΄λμ€λ νμΌμ΄ μμΌ λ©΄ ν΄λΉ ν΄λμ€ λ° νμΌμ μΆκ°ν μ΄μ λ₯Ό μμ ν΄μΌ νλ€. GUI ꡬν μ½λμ κ²μ λ΄λΆ λ‘μ§ κ΅¬ν μ½λλ₯Ό λΆλ¦¬νμ§ μλ κ²μ κ°μ μ¬νμ΄λ€.
2.4.1 class Block
κ²μ λ΄λΆ λ‘μ§ κ΅¬νμ μ¬μ©λλ Block ν΄λμ€κ° ꡬνλμ΄ μμ΄μΌ νλ€. Block ν΄λμ€λ κ° λΈ
λ‘μ΄ κ°μ§κ³ μλ κ°μ κ΄λ¦¬νλ€.
2.4.2 class Board
κ²μ λ΄λΆ λ‘μ§ κ΅¬νμ μ¬μ©λλ Board ν΄λμ€κ° ꡬνλμ΄ μμ΄μΌ νλ€. Board ν΄λμ€λ Block
λ€λ‘ μ΄λ£¨μ΄μ Έ μλ κ²μνμ κ΄λ¦¬νλ©°, κ²μνμ΄ μ΄λνλ λ‘μ§ λν μ΄ ν΄λμ€μ ꡬνλμ΄ μ μ΄μΌ νλ€.
2.4.3 class Game
κ²μμ μ λ°μ μΌλ‘ κ΄λ¦¬νλ Game ν΄λμ€κ° ꡬνλμ΄ μμ΄μΌ νλ€. κ²μμ μ¬μ©λλ Board ν΄
λμ€λ₯Ό λ©€λ² λ³μλ‘ κ°μ§κ³ μμ΄μΌ νλ©°, κ²μμ μ’
λ£ μ¬λΆλ₯Ό νλ¨νλ λ©μλλ₯Ό ꡬννλ€.
2.4.4 class BlockUi
Blockμ GUI μμ λνλ΄κΈ° μν BlockUi ν΄λμ€κ° ꡬνλμ΄ μμ΄μΌ νλ€. BlockUiλ QLabel ν΄ λμ€λ₯Ό μμλ°λλ‘ νμ¬ κ΅¬ννλ€.
2.4.5 class GameUi
μ 체 λ μ΄μμμ κ΄λ¦¬νλ GameUi ν΄λμ€κ° ꡬνλμ΄ μμ΄μΌ νλ€. QWidgetμ μμλ°λλ‘ ν
μ¬ κ΅¬ννλ€.
2.5 κ²μ μ§ν μν© μ μ₯ μ±μ μ νΈμμ±μ μν΄ κ²μμ΄ μ§νλλ μν©μ βprogress.txtβ νμΌμ μ μ₯νλλ‘ νλ€.
1. κ²μ μμ μ λΈλ‘μ΄ μμ±λλ μμΉ x1ν y1μ΄, x2ν y2μ΄: INITIAL x1 y1 x2 y2
A. 1ν 1μ΄κ³Ό 3ν 2μ΄μ μμ±λμμ κ²½μ° β INITIAL 1 1 3 2
2. μμͺ½/μλμͺ½/μ€λ₯Έμͺ½/μΌμͺ½μ λλ₯Ό κ²½μ°: UP/DOWN/RIGHT/LEFT
3. μ΄λ ν n λΈλ‘μ΄ μμ±λλ μμΉ xν yμ΄: GENERATE x y n A. μ΄λ ν 4 λΈλ‘μ΄ 2ν 1μ΄μ μμ±λμμ κ²½μ° β GENERATE 2 1 4
4. xν yμ΄μμ n λΈλ‘μΌλ‘μ λ³ν©μ΄ λ°μν κ²½μ°: MERGE x y n A. 2κ°μ 4 λΈλ‘μ΄ 2ν 2μ΄μμ 8 λΈλ‘μΌλ‘ ν©μ³μ§ κ²½μ° β MERGE 2 2 8
5. λλ리기 λ²νΌμ λλ₯΄κ³ κΈ°νκ° nλ² λ¨μ κ²½μ°: RESTORE n A. κΈ°νκ° 2λ² λ¨μ μνμμ λλ리기λ₯Ό λλ₯Ό κ²½μ° β RESTORE 1
6. μ΄λ ν μ μ: SCORE n
A. μ΄λ νμ μ μκ° 72μ μΌ κ²½μ°: SCORE 72
μμ) μ’μλ¨->μ°μλ¨->μ’νλ¨->μ°νλ¨ μμλ‘ μμ§μ
INITIAL 2 4 3 1
LEFT
GENERATE 1 1 2
SCORE 0
DOWN
MERGE 4 1 4
GENERATE 3 2 2
SCORE 4
LEFT
MERGE 3 1 4
GENERATE 2 3 2
SCORE 8
μ²μ λΈλ‘μ΄ μμ±λλ κ²μ κΈ°λ‘ν λλ μ«μκ° μμ νμμ μμ±λ μμΉλ₯Ό μ°μ μ μΌλ‘ κΈ°λ‘ν
κ³ , νμ΄ κ°μ κ²½μ° μ«μκ° μμ μ΄μμ μμ±λ μμΉλ₯Ό μ°μ μ μΌλ‘ κΈ°λ‘νλ€. μλ₯Ό λ€μ΄, κ·Έλ¦Όκ³Ό κ°μ΄ 3ν 1μ΄κ³Ό 2ν 4μ΄μμ 첫 λΈλ‘λ€μ΄ μμ±λμμ κ²½μ° 2ν 4μ΄μ΄ νμ μ«μκ° μμΌλ―λ‘
INITIAL 2 4 3 1λ‘ κΈ°λ‘νλ€.
λ³ν©μ΄ μ¬λ¬ λ² λ°μνμμ κ²½μ° μ«μκ° μμ νμμ λ°μν λ³ν©μ μ°μ μ μΌλ‘ κΈ°λ‘νκ³ , ν μ΄ κ°μ κ²½μ° μ«μκ° μμ μ΄μμ λ°μν λ³ν©μ μ°μ μ μΌλ‘ κΈ°λ‘νλ€. μλ₯Ό λ€μ΄, 2ν 3μ΄μμ λ³ν©μ΄ λ°μνκ³ 2ν 2μ΄μμ λ³ν©μ΄ λ°μνμ κ²½μ°
MERGE 2 2 n MERGE 2 3 nβ
μ μμλ‘ κΈ°λ‘λλ€.
νλμ μ΄λμ λν κΈ°λ‘ μμλ μ΄λ -> λ³ν© -> μμ± -> μ μλ‘ μ νλ€. μλ₯Ό λ€μ΄ μΌμͺ½μΌλ‘
μ΄λν κ²½μ°
LEFT
MERGE … (λ°μν λ³ν© μμλλ‘ μ κΈ°λ‘)
GENERATE … (μ΄λ ν μμ±λ μμΉ κΈ°λ‘)
SCORE … (μ μ κΈ°λ‘)
λ°©ν₯ν€λ₯Ό μ
λ ₯νμμ§λ§ ν΄λΉ λ°©ν₯μΌλ‘μ μ΄λμ΄ λΆκ°λ₯ νμ κ²½μ°μλ λ°©ν₯λ§ κΈ°λ‘νλ€. μλ₯Ό
λ€μ΄ μΌμͺ½κ³Ό μ€λ₯Έμͺ½μ μμλλ‘ λλ λλ° μΌμͺ½μΌλ‘μ μ΄λμ΄ λΆκ°λ₯ν μν©μ΄μλ€κ³ ν΄λ³΄μ. κ·Έ λ΄ λλ
LEFT
RIGHT MERGE …
GENERATE…
SCORE …
λ‘ κΈ°λ‘νλ©΄ λλ€.
μ μμ λ³νκ° λ°μνμ§ μμλ μ΄λ νμλ μ μλ₯Ό κΈ°λ‘ν΄μΌ νλ€. μ μλ₯Ό κΈ°λ‘νμ§ μμλ λλ μν©μ ν΄λΉ λ°©ν₯μΌλ‘μ μ΄λμ΄ λΆκ°λ₯ν κ²½μ°λ°μλ μλ€.
LEFT
GENERATE …
SCORE n
RIGHT
GENERATE …
SCORE n (MERGEκ° λ°μνμ§ μμμ μ μ λ³νκ° μμ΄λ κΈ°λ‘ν΄μΌ ν¨)
RIGHT (μ΄λμ΄ λΆκ°λ₯νκΈ° λλ¬Έμ μ μ κΈ°λ‘ X)
UP MERGE …
GENERATE …
SCORE nβ
————————————–05/27 13μ 55λΆ λ΄μ© μΆκ° ————————————–
Qt Creatorλ₯Ό ν¬ν¨ν λλ€μμ IDEλ νλ‘κ·Έλ¨ λΉλλ₯Ό μμ€ μ½λκ° μμΉν ν΄λκ° μλ λ€λ₯Έ ν΄ λμμ μ§ννλ€.
YOUR_PROJECTλΌλ νλ‘μ νΈλ₯Ό λ§λ€κ³ νλ‘κ·Έλ¨μ λΉλνλ κ²½μ°λ₯Ό Qt Creatorμμ μ΄ν΄λ³΄μ.
root
β YOUR_PROJECT
β build-YOUR_PROJECT-Desktop_Qt_6_5_0_MinGW_64_bit-Debug
β debug
μμ κ°μ ν΄λ κ΅¬μ‘°κ° λ§λ€μ΄μ§κ³ debug ν΄λ λ΄μ νμΌ μ μΆλ ₯μ΄ μ§νλλ€. λ°λΌμ, μ μΆμ μ§νν λ build-… ν΄λλ κ°μ΄ μμΆνμ¬ μ μΆνλλ‘ νλ€.
TIPS
1. Qt 곡μ λ¬Έμ (https://doc.qt.io/)μ λΌμ΄λΈλ¬λ¦¬ μ¬μ©λ²μ λν μ λ¦¬κ° μ λμ΄ μμΌλ―λ‘ ν΄λΉ μ¬μ΄νΈλ₯Ό ν΅ν΄ μ 보λ₯Ό μ»λ κ²μ μΆμ²νλ€.
2. νμΌ μΆκ°λ νμΌ μμ λ₯Ό νκ³ μ»΄νμΌ μλ¬λ₯Ό κ²ͺλλ€λ©΄ Clean & Buildλ₯Ό ν΄λ³΄μ. Cleanμ ν¨μΌλ‘μ¨ μ΄μ μ νλ‘μ νΈλ₯Ό λΉλ©ν λ μμ±λμλ object νμΌμ΄λ λ°μ΄λ리 νμΌλ€μ μμ ν μ μλ€. Cleanμ νκ³ Buildλ₯Ό νκ² λλ©΄ cleanν μνμμ νλ‘μ νΈλ₯Ό λ€μ λΉ λνκ² λλ―λ‘ λ³κ²½λ μνλ‘λΆν° μλ‘μ΄ νλ‘μ νΈλ₯Ό λΉλν μ μκ² λλ€.
3. .pro νμΌμ Qt build systemμΈ qmakeμ μ¬μ©λλ νμΌμ΄λ€. νλ‘μ νΈλ₯Ό μ λλ‘ λΉλν κΈ° μν΄μλ .pro νμΌμ λ³ΈμΈμ΄ μ¬μ©νλ .cpp νμΌλ€κ³Ό .h νμΌλ€μ λͺ μν΄μΌ νλ€. μ λ₯Ό λ€μ΄, λ³ΈμΈμ΄ game/mycode.cppμ game/mycode.hλ₯Ό μΆκ°νλ€λ©΄ .pro νμΌμ SOURCESμ HEADERSμ μΆκ°λ νμΌλ€μ μ μ΄μ€μΌ μ»΄νμΌμ΄ μ§νλλ€.
4. λ μ΄μμμ λ²νΌμ μΆκ°νκ³ ν€λ³΄λ λ°©ν₯ν€λ₯Ό λλ₯΄λ©΄ κ²μνμ λΈλ‘λ€μ΄ μμ§μ΄μ§ μμ μ μλ€. μ΄λ λ²νΌμ μΆκ°νμ λ ν€λ³΄λμ focusκ° λ²νΌ μͺ½μΌλ‘ μ€μ λκΈ° λλ¬Έμ΄λ€. μ΄ λ₯Ό ν΄κ²°νκΈ° μν΄μλ QWidget ν΄λμ€μ focus policy κ΄λ ¨ λ¬Έμλ₯Ό μ½μ΄λ³΄λ κ²μ μΆμ² νλ€.




Reviews
There are no reviews yet.