소연의_개발일지
article thumbnail

설명 예정

 

 

 

코드

import sys
from random import randint
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
# from PyQt5.QtWid



class MainWindow(QDialog):
    def __init__(self):
        super().__init__()
        self.setup_ui()

    def setup_ui(self):
        main_layout = QVBoxLayout() #메인 레이아웃
        user_choose_layout = QHBoxLayout() #버튼 담길 레이아웃

        #타이틀 지정
        title = QLabel("허접한 가위바위보")
        title_font = title.font()
        # title_font.setPointSize(25)
        title_font = QFont("나눔고딕코딩", 25, QFont.Bold)
        title.setFont(title_font)
        title.setAlignment(Qt.AlignCenter)

        # 이미지 불러오기 및 이미지 사이즈 강제조정
        rock_image = QPixmap('주먹.png')
        rock_image = rock_image.scaled(50,50,Qt.IgnoreAspectRatio)
        scissor_image = QPixmap('가위.png')
        scissor_image = scissor_image.scaled(50, 50, Qt.IgnoreAspectRatio)
        paper_image = QPixmap('보.png')
        paper_image = paper_image.scaled(50, 50, Qt.IgnoreAspectRatio)

        # 가위바위보 버튼 , 종료 버튼
        self.scissor_btn = QPushButton('가위')
        self.rock_btn = QPushButton('바위')
        self.paper_btn = QPushButton('보')
        quit_btn = QPushButton("종료하기", self)

        #버튼 이름 숨기기
        # self.scissor_btn.setProperty("orgtext", scissor_btn)
        # self.scissor_btn.setText("가위")

        #종료버튼 눌렀을 때 종료하기
        quit_btn.clicked.connect(self.close)

        #버튼에 이미지 넣기 및 버튼 사이즈 조정
        self.scissor_btn.setIcon(QIcon(scissor_image))
        self.scissor_btn.setIconSize(QSize(70, 70))
        self.rock_btn.setIcon(QIcon(rock_image))
        self.rock_btn.setIconSize(QSize(70, 70))
        self.paper_btn.setIcon(QIcon(paper_image))
        self.paper_btn.setIconSize(QSize(70, 70))


        #버튼 누르면 이벤트
        self.scissor_btn.clicked.connect(self.game_play)
        self.rock_btn.clicked.connect(self.game_play)
        self.paper_btn.clicked.connect(self.game_play)

        #화면 나올 창
        # self.image = QLabel()

        #레이아웃 담아주기
        user_choose_layout.addWidget(self.rock_btn)
        user_choose_layout.addWidget(self.paper_btn)
        user_choose_layout.addWidget(self.scissor_btn)
        main_layout.addWidget(title)
        # main_layout.addWidget(image)
        main_layout.addLayout(user_choose_layout)
        main_layout.addWidget(quit_btn)

        self.setWindowTitle("가위바위보게임")
        self.setLayout(main_layout)
        self.show()

    def game_play(self):
        # global com_guess
        random_num = randint(1, 3)
        print(random_num)
        if random_num == 1:
            com_guess = '가위'
        elif random_num == 2:
            com_guess = '바위'
        if random_num == 3:
            com_guess = '보'

        reply = QMessageBox() #응답이 받아질 메세지박스
        reply.setWindowTitle('결과는!') #메세지박스 상단 텍스트

        sender = self.sender() #눌린 버튼을 가져옴
        btn_name = sender.text() #눌린 버튼의 이름을 가져옴

        if (random_num == 1 and btn_name == '가위') or \
                (random_num == 2 and btn_name == '바위') or \
                (random_num == 3 and btn_name == '보'):
            # draw_img = QPixmap('yelled_pingu.jpg')
            # draw_img.
            reply.setIconPixmap(QPixmap('yelled_pingu.jpg'))
            reply.setText(f"비겼습니다! 컴퓨터는 {com_guess}를 냈습니다.")
            reply.exec_()

        elif (random_num == 1 and btn_name == '바위') or \
                (random_num == 2 and btn_name == '보') or \
                (random_num == 3 and btn_name == '가위'):
            reply.setIconPixmap(QPixmap('smile_pingu.jpg'))
            reply.setText(f"이겼습니다! 컴퓨터는 {com_guess}를 냈습니다.")
            reply.exec_()
        else:
            reply.setIconPixmap(QPixmap('angry_pingu2.png'))
            reply.setText(f"졌습니다! 컴퓨터는 {com_guess}를 냈습니다.")
            reply.exec_()

    def closeEvent(self, event):
        # 종료 대화상자 표시
        reply = QMessageBox.question(self, '종료확인', '종료하시겠습니까?',
                                     QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            # '예' 버튼을 클릭하면 종료
            event.accept()
        else:
            # '아니오' 버튼을 클릭하면 이벤트 무시
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MainWindow()
    # MainWindow.show()
    sys.exit(app.exec_())

 

 

실행화면

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!