我有一个程序有15
问题,第二个程序有 15 个其他问题。
我希望将这些问题、答案选项和答案放在一个程序中。
或者更确切地说,游戏中将保留 15 个问题,只需1
从两个中随机选择问题,
第二个问题也从两个中随机选择,等等。
每个问题都有不同的答案。
第一个程序的代码:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import webbrowser
import random
class WindowGroup(QWidget):
def __init__(self):
super().__init__()
self.setObjectName('windowgroup')
self.list_questions = [
'<h1 style="color: rgb(185, 255, 0);">Що мають на увазі кажучи: "пройшов вогонь, воду і мідні труби"?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Який материк найбільший?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Куди вказує червона стрілка компаса?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Який пігмент забарвлює листя в зелений колір?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Який препарат марно намагалися отримати середньовічні алхіміки?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Як правильно кликати гусака?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Якій кухні належить блюдо "форшмак"?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Яку рослину називають «живим світлофором»?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Що є туманністю Андромеди?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Назвіть офіційну мову Шрі-Ланки:</h1>',
'<h1 style="color: rgb(185, 255, 0);">Столицею якої країни є місто Богота?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Які літальні апарати конструював Отто Ліліенталь?</h1>',
'<h1 style="color: rgb(185, 255, 0);">У якому столітті в Китаї почали добувати залізо?</h1>',
'<h1 style="color: rgb(185, 255, 0);">У якій мові програмування немає засобів роботи з файлами?</h1>',
'<h1 style="color: rgb(185, 255, 0);">У яких тварин офіційно реєструвалися сонячні удари, подібні до людських?</h1>',
]
self.quantity_questions = len(self.list_questions)
self.list_buttons = [
['A: Навчання', 'В: Самогон', 'C: Стаж', 'D: Досвід'],
['A: Північна Америка', 'В: Південна Америка', 'C: Африка', 'D: Євразія'],
['A: Північ', 'В: Схід', 'C: Захід', 'D: Південь'],
['A: Каротин', 'В: Антоціан', 'C: Хлорофіл', 'D: Танін'],
['A: Настоянку мудрості', 'В: Засіб від лупи', 'C: Еліксир життя', 'D: Напій сміливості'],
['A: Киць-киць', 'В: Гуль-гуль', 'C: Тега-тега', 'D: Курчат-курчат'],
['A: Єврейській', 'В: Грузинській', 'C: Китайській', 'D: Індійській'],
['A: Акаліфа', 'В: Медуниця', 'C: Маранта', 'D: Кротон'],
['A: Метеорит', 'В: Зірка', "С: Сузір'я", 'D: Галактика'],
['A: Урду', 'В: Сінгальский', 'C: Бенгальський', 'D: Брахми'],
['A: Чилі', 'В: Перу' ,'C: Аргентина', 'D: Колумбія'],
['A: Вертольоти', 'В: Дирижаблі', 'C: Літаки-біплани', 'D: Планери'],
['A: 4 вік до н.е', 'В: 2 вік', 'C: 3 вік', 'D: 5 вік до н.е.'],
['A: PHP', 'В: Delphi', 'C: C++', 'D: JavaScript'],
['A: У собак', 'В: У кішок', 'C: У свиней', 'D: У кроликів']
]
self.list_yes_buttons = [
'D: Досвід',
'D: Євразія',
'D: Південь',
'C: Хлорофіл',
'C: Еліксир життя',
'C: Тега-тега',
'A: Єврейській',
'В: Медуниця',
'D: Галактика',
'В: Сінгальский',
'D: Колумбія',
'D: Планери',
'D: 5 вік до н.е.',
'D: JavaScript',
'D: У кроликів'
]
self.current_question = 0
self.label = QLabel(self.list_questions[self.current_question])
self.radioGroupBox = QGroupBox('')
self.radioGroup = QButtonGroup()
self.rbtn_1 = QPushButton('A: Навчання')
self.rbtn_1.setFixedSize(740, 49)
self.rbtn_2 = QPushButton('В: Самогон')
self.rbtn_2.setFixedSize(740, 49)
self.rbtn_3 = QPushButton('C: Стаж')
self.rbtn_3.setFixedSize(740, 49)
self.rbtn_4 = QPushButton('D: Досвід')
self.rbtn_4.setFixedSize(740, 49)
self.radioGroup.addButton(self.rbtn_1)
self.radioGroup.addButton(self.rbtn_2)
self.radioGroup.addButton(self.rbtn_3)
self.radioGroup.addButton(self.rbtn_4)
self.hint_5050 = QPushButton(self)
self.hint_5050.setIcon(QIcon('5050_normal.png'))
self.hint_5050.setIconSize(QSize(105, 90))
self.hint_5050.setFixedSize(120, 100)
self.hint_audience = QPushButton(self)
self.hint_audience.setIcon(QIcon('audience_normal.png'))
self.hint_audience.setIconSize(QSize(105, 90))
self.hint_audience.setFixedSize(120, 100)
self.hint_expert = QPushButton(self)
self.hint_expert.setIcon(QIcon('expert_normal.png'))
self.hint_expert.setIconSize(QSize(105, 90))
self.hint_expert.setFixedSize(120, 100)
self.hint_switch = QPushButton(self)
self.hint_switch.setIcon(QIcon('switch_2_normal.png'))
self.hint_switch.setIconSize(QSize(105, 90))
self.hint_switch.setFixedSize(120, 100)
layout_ans1 = QHBoxLayout()
layout_ans2 = QVBoxLayout()
layout_ans3 = QVBoxLayout()
layout_ans2.addWidget(self.rbtn_1)
layout_ans2.addWidget(self.rbtn_2)
layout_ans3.addWidget(self.rbtn_3)
layout_ans3.addWidget(self.rbtn_4)
layout_ans1.addLayout(layout_ans2)
layout_ans1.addLayout(layout_ans3)
self.radioGroupBox.setLayout(layout_ans1)
layout = QVBoxLayout(self)
layout.addWidget(self.label, alignment=Qt.AlignCenter)
layout.addWidget(self.radioGroupBox)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.centralWidget = QWidget()
self.centralWidget.setObjectName('centralWidget')
self.setCentralWidget(self.centralWidget)
self.dict_audience_img = {
"A": "audience_A.png",
"B": "audience_B.png",
"C": "audience_C.png",
"D": "audience_D.png",
}
self.num = 3
self.question = QLabel('<h1 style="color: rgb(250, 55, 55);">Правила гри')
self.rules = QLabel('''Гра "Хто хоче стати мільйонером?"
\
Ви повинні правильно відповісти на низку питань \
з кількома варіантами відповідей, щоб заробити 3.000.000 грн. \
Всього 15 питань, кожне питання коштує певної суми грошей, \
учасники не мають жодних тимчасових обмежень для надання \
відповіді. Учасник також отримуює 4 види підказок, щоб допомогти собі, \
якщо вони застрягли на конкретному питанні.
\
Більше ознайомитися з правилами можна, натиснувши на кнопку.
\
Хай щастить!''')
self.rules.setStyleSheet("""
font: bold;
color: rgb(185, 255, 0);
""")
self.rules.setFixedSize(1010,450)
self.rules.setObjectName('rules')
self.rules.setWordWrap(True)
self.button_rules = QPushButton('Правила')
self.button_rules.clicked.connect(lambda: webbrowser.open('https://ru.wwbm.com/rules'))
self.button_rules.setFixedSize(300,50)
self.button_start = QPushButton('Почати', clicked=self._start)
self.button_start.setFixedSize(300,50)
self.layout = QVBoxLayout(self.centralWidget)
self.lineH1 = QHBoxLayout()
lineH2 = QHBoxLayout()
lineH3 = QHBoxLayout()
self.lineH1.addWidget(self.question, alignment=Qt.AlignHCenter)
lineH2.addWidget(self.rules)
lineH3.addWidget(self.button_rules, alignment=Qt.AlignCenter)
lineH3.addWidget(self.button_start, alignment=Qt.AlignCenter)
self.layout.addLayout(self.lineH1)
self.layout.addWidget(self.rules, alignment=Qt.AlignHCenter)
self.layout.addLayout(lineH3)
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_timer)
self.windowGroup = WindowGroup()
self.windowGroup.rbtn_1.clicked.connect(self.on_clicked)
self.windowGroup.rbtn_2.clicked.connect(self.on_clicked)
self.windowGroup.rbtn_3.clicked.connect(self.on_clicked)
self.windowGroup.rbtn_4.clicked.connect(self.on_clicked)
self.list_rbtn = [
self.windowGroup.rbtn_1,
self.windowGroup.rbtn_2,
self.windowGroup.rbtn_3,
self.windowGroup.rbtn_4,
]
self.correct_answer = '<h1 style="color: #4E9F3D;">Це вірна відповідь!</h1>'
self.wrong_answer = '<h1 style="color: #DA0037;">Це НЕ вірна відповідь!</h1>'
self.windowGroup.hint_5050.clicked.connect(self.clicked_5050)
self.windowGroup.hint_audience.clicked.connect(self.clicked_audience)
def on_clicked(self):
self.windowGroup.setEnabled(False)
sender = self.sender()
self.sender_click = sender
if sender.text() in self.windowGroup.list_yes_buttons:
sender.setStyleSheet("background-color: green;")
self.windowGroup.label.setText(
f'{self.windowGroup.list_questions[self.windowGroup.current_question]} \
{self.correct_answer}'
)
else:
sender.setStyleSheet("background-color: red;")
self.windowGroup.label.setText(
f'{self.windowGroup.list_questions[self.windowGroup.current_question]} \
{self.wrong_answer}'
)
self.windowGroup.current_question = self.windowGroup.quantity_questions
self.num = 3
self.windowGroup.label.setAlignment(Qt.AlignCenter)
QTimer.singleShot(3000, self.third)
def set_stylesheet(self):
self.setStyleSheet("""
QLabel, QPushButton {
font-size: 20pt;
}
#rules {
background-color: #ccffbd;
}
#windowgroup > QLabel {
font-size: 11pt;
}
#windowgroup > QGroupBox {
background-color: #a44500;
font-size: 20pt;
width: 620px; height: 49px;
}
QPushButton {
background-color: #D98C00;
font-size: 34px;
}
QPushButton:hover {
background-color: #0082fc;
border: 2px solid #FFA6D5;
}
#centralWidget {
background-image: url(first.jpg);
}
#window_audience {
backround-image: url(first.jpg);
}
""")
def update_timer(self):
self.question.setText(f'<h1 style="color: rgb(250, 55, 55);">{self.num}</h1>')
if self.num == 0:
self.timer.stop()
self.set_stylesheet()
self.question.setPixmap(QPixmap("million.png"))
self.num = 3
self.rules.hide()
self.button_start.hide()
self.button_rules.hide()
self.layout.addWidget(self.windowGroup, alignment=Qt.AlignHCenter)
self.lineH1.insertStretch(0)
self.lineH1.insertWidget(1, self.windowGroup.hint_5050)
self.lineH1.insertStretch(2)
self.lineH1.insertWidget(3, self.windowGroup.hint_audience)
self.lineH1.insertStretch(4)
self.lineH1.insertStretch(-1)
self.lineH1.insertWidget(-1, self.windowGroup.hint_expert)
self.lineH1.insertStretch(-1)
self.lineH1.insertWidget(-1, self.windowGroup.hint_switch)
self.lineH1.insertStretch(-1)
return
self.num -= 1
def _start(self):
self.timer.start(1000)
def third(self):
self.windowGroup.setEnabled(True)
self.windowGroup.hint_5050.setEnabled(False)
if self.windowGroup.current_question + 1 < self.windowGroup.quantity_questions:
self.windowGroup.current_question += 1
self.windowGroup.label.setText(
self.windowGroup.list_questions[self.windowGroup.current_question])
self.windowGroup.rbtn_1.setText(
self.windowGroup.list_buttons[self.windowGroup.current_question][0])
self.windowGroup.rbtn_2.setText(
self.windowGroup.list_buttons[self.windowGroup.current_question][2])
self.windowGroup.rbtn_3.setText(
self.windowGroup.list_buttons[self.windowGroup.current_question][1])
self.windowGroup.rbtn_4.setText(
self.windowGroup.list_buttons[self.windowGroup.current_question][3])
self.set_stylesheet()
else:
self.windowGroup.label.setText(
'<h1 style="color: #FFDD93;">Гру закінчено, дякуємо за участь!</h1>'
)
self.windowGroup.setEnabled(False)
self.sender_click.setStyleSheet(
"background-color: #D98C00; width: 780px; height: 49px;")
self.set_stylesheet()
for rbtn in self.list_rbtn:
rbtn.setEnabled(True)
rbtn.setStyleSheet("""
QPushButton {
background-color: #D98C00;
width: 620px; height: 49px;
}
QPushButton:hover {
background-color: #0082fc;
border: 2px solid #FFA6D5;
}
""")
self.windowGroup.label.setAlignment(Qt.AlignCenter)
def clicked_5050(self):
self.windowGroup.hint_5050.setEnabled(False)
current_question = self.windowGroup.current_question
list_yes_buttons = self.windowGroup.list_yes_buttons[current_question]
list_5050 = [list_yes_buttons,]
not_buttons = self.windowGroup.list_buttons[current_question]
not_buttons.remove(list_yes_buttons)
not_buttons = random.choices(not_buttons)
list_5050.append(not_buttons[0])
for rbtn in self.list_rbtn:
if rbtn.text() in list_5050:
pass
else:
rbtn.setEnabled(False)
def clicked_audience(self):
self.windowGroup.hint_audience.setEnabled(False)
litter_yes = self.windowGroup.list_yes_buttons[
self.windowGroup.current_question][0]
img = self.dict_audience_img[litter_yes]
self.audience_messageBox(img)
def audience_messageBox(self, img):
window_audience = QMessageBox(self)
window_audience.setWindowIcon(QIcon("audience_normal.png"))
window_audience.setWindowTitle('Допомога зали')
window_audience.setIconPixmap(
QPixmap(img).scaled(700, 700, Qt.KeepAspectRatio)
)
window_audience.exec_()
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
app.setStyleSheet("""
QLabel {
font-size: 20pt;
}
QPushButton {
font-size: 20pt;
background-color: #ff8000;
}
#centralWidget {
background-image: url(first.jpg);
}
#centeralMessage {
backround-image: url(first.jpg);
}
""")
w = MainWindow()
w.setWindowTitle('Million')
w.resize(1700, 770)
w.move(125, 110)
w.show()
sys.exit(app.exec_())
第二个程序代码:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import webbrowser
import random
import time
class WindowGroup(QWidget):
def __init__(self):
super().__init__()
self.setObjectName('windowgroup')
self.list_questions = [
'<h1 style="color: rgb(185, 255, 0);">Як прізвище першого Президента України?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Як називають людину, що вважає за краще проводити вільний час дома?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Скільки лап у павука?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Хто на питання лорда Баскервіля "Що це"? відповіB: "Вівсянка, сер"?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Хто винайшов електричну лампочку?</h1>',
'<h1 style="color: rgb(185, 255, 0);">У автомобілів який з цих країн міжнародний реєстраційний знак PL?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Який режисер зняв фільм "Політ над гніздом зозулі"?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Що виділяють бугорки на язиці кішки, коли вона умивається?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Якого троянського царевича убив Ахіл?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Яка столиця Іраку?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Столицею якої країни є місто Антананаріву?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Як називається кругла за формою картина або рельєф?</h1>',
'<h1 style="color: rgb(185, 255, 0);">Знаменита українська фехтувальниця?</h1>',
'<h1 style="color: rgb(185, 255, 0);">У якій мові програмування немає засобів роботи з файлами?</h1>',
'<h1 style="color: rgb(185, 255, 0);">На якій відстані людина може відчути запах скунса?</h1>'
]
self.quantity_questions = len(self.list_questions)
self.list_buttons = [
['A: Ющенко', 'B: Кравчук', 'C: Кравченко', 'D: Кучма'],
['A: Домосід', 'B: Квартирний злодій', 'C: Домочадець', 'D: Домовий'],
['A: 4', 'B: 8', 'C: 3', 'D: 6'],
['A: Беломор', 'B: Блэкмор', 'C: Бэррімор', 'D: Берліоз'],
['A: Томас Едісон', 'B: Олександр Белл', 'C: Сер Джозеф Суон', 'D: Карл Бенц'],
['A: Польща', 'B: Нікарагуа', 'C: Нідерланди', 'D: Новій Зеландії'],
['A: Милош Форман', 'B: Роман Поланскі', 'C: Кшиштоф Кеслевский', 'D: Анджей Вайда'],
['A: Кадаревін', 'B: Кератин', 'C: Альбумін', 'D: Лецитін'],
['A: Гектор', 'B: Одісей', 'C: Паріс', 'D: Еней'],
['A: Аддис-Абеба', 'B: Багдад', 'C: Кабул', 'D: Тегеран'],
['A: Мадагаскар', 'B: Марокко', 'C: Мозамбік', 'D: Ангола'],
['A: Картуш', 'B: Тондо', 'C: Рондо', 'D: Плафон'],
['A: Ольга Харлан', 'B: Олеся Стефанко', 'C: Людмила Мілевич', 'D: Вікторія Сюмар'],
['A: JavaScript', 'B: PHP', 'C: C++', 'D: Delphi'],
['A: 2 км', 'B: 1,5 км', 'C: 1 км', 'D: 500 м'],
]
self.list_yes_buttons = [
'B: Кравчук',
'A: Домосід',
'B: 8',
'C: Бэррімор',
'A: Томас Едісон',
'A: Польща',
'A: Милош Форман',
'B: Кератин',
'A: Гектор',
'B: Багдад',
'A: Мадагаскар',
'B: Тондо',
'A: Ольга Харлан',
'A: JavaScript',
'B: 1,5 км',
]
self.current_question = 0
self.label = QLabel(self.list_questions[self.current_question])
self.radioGroupBox = QGroupBox('')
self.radioGroup = QButtonGroup()
self.rbtn_1 = QPushButton('A: Ющенко')
self.rbtn_1.setFixedSize(740, 49)
self.rbtn_2 = QPushButton('C: Кравченко')
self.rbtn_2.setFixedSize(740, 49)
self.rbtn_3 = QPushButton('B: Кравчук')
self.rbtn_3.setFixedSize(740, 49)
self.rbtn_4 = QPushButton('D: Кучма')
self.rbtn_4.setFixedSize(740, 49)
我不能输入更多,因为这是不可能的,但一切都和上一个程序完全一样
这两个程序只有问题、答案选项和答案不同,而且它们的代码都是一样的!!!
文件: