Last active
June 7, 2017 18:27
-
-
Save T31337/26ea459d46fa3b01fdc10d5b98fb7a4d to your computer and use it in GitHub Desktop.
Graphical Number Guessing Game Written Python Using Qt5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import sys,random | |
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton,QLabel | |
from PyQt5.QtGui import QIcon | |
from PyQt5.QtCore import pyqtSlot | |
from PyQt5 import QtWidgets | |
from PyQt5.QtWidgets import * | |
class App(QWidget): | |
def __init__(self): | |
super().__init__() | |
#VARIABLES# | |
self.count=0 #How Many Times Did We Push The Button? | |
self.wasRight=0 #How Many Guesses Were Correct? | |
self.maxNum = 100 | |
self.minNum = 1 | |
self.generated=0 #how many numbers did we generate so far? | |
## | |
self.title = 'PsyGame' | |
self.left = 100 | |
self.top = 100 | |
self.width = 320 | |
self.height = 200 | |
self.initUI() | |
def showMessage(self,text,icon=1): | |
msg = QMessageBox() | |
msg.setText(text) | |
msg.setIcon(icon) | |
msg.exec_() | |
def correct(self): | |
if not self.wasRight >= self.generated: | |
#ok, we are not cheating | |
self.wasRight += 1 | |
self.lblCorrect.setText('Correct: {0}\r\nGenerated: {1}'.format(self.wasRight,self.count)) | |
self.btnCorrect.setEnabled(False) | |
else: | |
self.showMessage("Nice Try Cheater",2) | |
def initUI(self): | |
#WINDOW LOGIC | |
self.setWindowTitle(self.title) | |
self.setGeometry(self.left, self.top, self.width, self.height) | |
#WINDOW OBJECTS | |
##SpinBox Seems To 'Disable' After Clicking A Button? | |
self.number1 = QSpinBox(self) | |
self.number2 = QSpinBox(self) | |
self.number1.setRange(self.minNum,self.maxNum) | |
self.number2.setRange(self.minNum,self.maxNum) | |
self.number1.setValue(self.minNum) | |
self.number2.setValue(self.maxNum) | |
self.number2.move(38,70) | |
self.number1.move(38,30) | |
## | |
self.lblNumber = QLabel('',self) | |
self.lblNumber.setFixedWidth(70) | |
self.lblNumber.setFixedHeight(70) | |
self.lblNumber.move(100,145) | |
# | |
self.lblCorrect = QLabel('Correct: {0}\r\nGenerated: {1}'.format(self.wasRight,self.count),self) | |
self.lblCorrect.move(20,10) | |
self.lblCorrect.setFixedWidth(300) | |
self.lblCorrect.setFixedHeight(200) | |
# | |
btnGenerate = QPushButton('Go!', self) | |
btnGenerate.setToolTip('Generate A New Number') | |
btnGenerate.move(100,70) | |
self.btnCorrect = QPushButton('I Got It Right! :)',self) | |
#Connect The Buttons To Functions | |
btnGenerate.clicked.connect(self.generate) | |
self.btnCorrect.clicked.connect(self.correct) | |
self.show() | |
@pyqtSlot() | |
def generate(self): | |
print('PyQt5 button click') | |
#Enable The Correct Button! | |
self.btnCorrect.setEnabled(True) | |
self.count+=1 | |
self.generated+=1 | |
num1 = self.number1.value() | |
num2 = self.number2.value() | |
if num1 < num2: | |
self.number = random.randint(num1,num2) | |
else: | |
self.showMessage("Error:\r\nPlease Be Sure Minimum Is Less Than Maximum And They Are Not The Same Number",3) | |
print('Number: ',self.number) | |
self.lblNumber.setText(str(self.number)) | |
print('Button Clicked %s Times' %self.count) | |
print('Numbers Generated: %s' %self.count) | |
self.lblCorrect.setText('Correct: {0}\r\nGenerated: {1}'.format(self.wasRight,self.count)) | |
if __name__ == '__main__': | |
app = QApplication(sys.argv) | |
ex = App() | |
sys.exit(app.exec_()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Implemented Improved Basic Cheat Checking