Проект "Смайлики"

Гра полягає у тому, що потрібно клацнути на зображенні, яке відрізняється від решти.

Кожного разу після правильного клацання ігрове поле оновлюється, зображення перемішуються:

Інтерфейс

У PyQt можна розробити основу інтерфейсу: поле з 9 кнопками pushButton, що розміщені сіткою. Варто надати цим написам імена pushButton_1-pushButton_9.

Також слід задати властивість ширини та висоти iconSize рівними, наприклад 75 пікселів, а властивість text - очистити.


Список зображень

Для забезпечення ігрового сценарію створимо список gra, в якому елементами будуть змінні s1 та s2, котрі містять назви зображень, наприклад так:

s1="smile1.bmp"
s2="smile2.bmp"
gra=[]
for i in range(8):
    gra.append(s1)
gra.append(s2)

Таким чином, у списку gra міститься 8 записів s1 та один запис s2. Цей список можна перемішати:

import random
random.shuffle(gra)


Підключення інтерфейсу

На етапі опису класу class MyWindowClass доцільно створити список кнопок форми, у які завантажуватимуться зображення з gra:

global labs 

labs=[self.pushButton_1,self.pushButton_2,self.pushButton_3,self.pushButton_4,self.pushButton_5,self.pushButton_6,self.pushButton_7,self.pushButton_8,self.pushButton_9]

Тоді у циклі заповнити написи форми (список labs) зображеннями (gra), підганяючи їхні розміри:

for n in range(9):
        pixmap = QPixmap(gra[n])
        labs[n].setIcon(QtGui.QIcon(pixmap))

Не забудьте імпортувати модуль для роботи із зображеннями на початку проекту:

from PyQt4.QtGui import *

Поведінка написів

Так само, як і в проекті "Хрестики-нулики" можна задати однакову поведінку для усіх кнопок, скориставшись функцією self.sender(), щоб дізнатись, який саме напис клацнули.

Створюємо обробники події для кожного кнопки:

for n in range(9):

                labs[n].clicked.connect(self.check) 

Метод check передусім перевіряє, який об'єкт запустив цю подію, визначає номер кнопки.

За цим номером можна перевірити вміст ігрового списку gra. Якщо під цим номером міститься елемент s2 (який зустрічається лише 1 раз), то це означає, що клацнули на правильному зображенні:

    def check(self):

        sending_button = self.sender()

        n=int(sending_button.objectName()[-1])-1

        if gra[n]==s2:

            print("sad")

        else:

            print("happy")


Завдання

1) Доповнити проект так, щоб після клацання правильного зображення відбувалось перемішування елементів та можна було продовжити гру

2) Рахувати бали гравця: кожне правильне клацання додає бал, неправильне - віднімає

3) Забезпечити зміну зображень на різних етапах гри

4) Доповнити проект таймером - щоб зображення перемішувались з певною періодичністю

5) Доповнити проект збільшенням сітки ігрових зображень (3х3, 4х4, 5х5 і т.д. зі зменшенням розміру кожного зображення)

Остання зміна: понеділок 13 травня 2019 12:19