야구게임
# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5 import QtGui, QtCore
import random
class App(QWidget):
def __init__(self):
super(App, self).__init__()
self.setWindowTitle('Window!!!')
self.setGeometry(100, 100, 400, 400)
# move(가로, 세로), resize(가로, 세로)
self.makeQuiz()
self.addTitle()
self.addInput()
self.addResult()
self.addButtons()
def addTitle(self):
self.label = QLabel('야구 게임!!!', self)
self.label.resize(400, 80)
self.label.setAlignment(Qt.AlignCenter)
#글자 크기 변경
font = QtGui.QFont()
font.setPointSize(30)
self.label.setFont(font)
def addInput(self):
#입력 :
self.input_title = QLabel('번호 3자리 : ', self)
self.input_title.move(30,100)
self.input = QLineEdit(self)
self.input.move(100, 100)
def addResult(self):
self.result = QTextEdit(self)
self.result.move(30, 160)
self.result.resize(340,300)
self.result.setReadOnly(True)
def addButtons(self):
self.btn_reset = QPushButton(self)
self.btn_reset.setText('초기화')
self.btn_reset.resize(340, 50)
self.btn_reset.move(30, 550)
self.btn_reset.clicked.connect(self.reset)
self.btn_confirm = QPushButton(self)
self.btn_confirm.setText('입력')
self.btn_confirm.resize(80, 40)
self.btn_confirm.move(240, 93)
self.btn_confirm.clicked.connect(self.getUserInput)
def getUserInput(self):
#사용자 입력 값이 숫자가 아니면 알림을 준다.
if(not self.input.text().isnumeric()) :
QMessageBox.about(self, '알림', '숫자를 입력하세요!!!')
self.input.setText('')
return
if(not len(self.input.text()) == 3) :
QMessageBox.about(self, '알림', '3자리 숫자를 입력하세요!!!')
self.input.setText('')
return
self.checkRule()
def keyPressEvent(self, event) :
print(event.key())
if event.key() == QtCore.Qt.Key_Return:
self.getUserInput()
def makeQuiz(self):
number = [0,1,2,3,4,5,6,7,8,9]
random.shuffle(number)
#FIXME 이 앞자리에 있을 수 있음!!!
self.quizNum = number[:3]
print(self.quizNum)
#사용자 입력값이 야구 게임룰에 의해 어떤 결과인지 보여주는 함수
def checkRule(self):
first = self.input.text()[0]
second = self.input.text()[1]
third = self.input.text()[2]
first = int(first)
second = int(second)
third = int(third)
#자리와 숫자가 같다 S, 숫자가 같다 B, 같은 숫자가 없다 O
#ball 찾는다 in quizNum
ballCount = 0
strikeCount = 0
if(first in self.quizNum) :
ballCount += 1
if(second in self.quizNum) :
ballCount += 1
if(third in self.quizNum) :
ballCount += 1
#s 찾는다.
if(first == self.quizNum[0]) :
strikeCount += 1
ballCount -= 1
if(second == self.quizNum[1]) :
strikeCount += 1
ballCount -= 1
if(third == self.quizNum[2]) :
strikeCount += 1
ballCount -= 1
if(strikeCount == 3) :
QMessageBox.about(self, '!!!WOW!!!', '정답을 맞추셨습니다.')
self.reset()
elif(ballCount > 0 or strikeCount > 0):
self.result.append('결과는 {}S, {}B 입니다.'.format(strikeCount,ballCount))
else :
self.result.append('Out 입니다.')
self.result.repaint()
self.input.setText('')
self.input.repaint()
def reset(self):
self.makeQuiz()
self.result.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = App()
window.show()
sys.exit(app.exec_())
Last updated