Python Forum
[PyQt] computerScore counter not found
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyQt] computerScore counter not found
#1
It's weird, I can't locate the mistake. If the player wins the round counter is ok, if the computer wins the score is not changing. Sad

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont, QPixmap
from PyQt5.QtCore import QTimer
from random import randint

textFont = QFont('Helvetica', 12)
computerScore = 0
playerScore = 0

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Rock Paper Scissors Game')
        self.setFixedSize(570,370) 
        self.UI()

    def UI(self):
        # Computer & Player Score
        self.scoreComputer = QLabel('Computer score ', self)
        self.scoreComputer.move(30,20)
        self.scoreComputer.setFont(textFont)

        self.scorePlayer = QLabel('Player score ', self)
        self.scorePlayer.move(400,20)
        self.scorePlayer.setFont(textFont)

        # Computer & Player Images
        self.imageComputer = QLabel(self)
        self.imageComputer.setPixmap(QPixmap('RockPaperScissors\images\paper.png'))
        self.imageComputer.move(10,100)

        self.imagePlayer = QLabel(self)
        self.imagePlayer.setPixmap(QPixmap('RockPaperScissors\images\paper.png'))
        self.imagePlayer.move(350,100)

        # VS images
        self.imageVS = QLabel(self)
        self.imageVS.setPixmap(QPixmap('RockPaperScissors\images\game.png'))
        self.imageVS.move(240,130)

        # Buttons
        self.btnStart = QPushButton('Start', self)
        self.btnStart.move(150, 330)
        self.btnStart.clicked.connect(self.start)
        self.btnStop = QPushButton('Stop', self)
        self.btnStop.move(235, 330)
        self.btnStop.clicked.connect(self.stop)

        self.btnNewGame = QPushButton('New Game', self)
        self.btnNewGame.move(320, 330)
        self.btnNewGame.clicked.connect(self.newGame)

        # Timer
        self.timer = QTimer(self)
        self.timer.setInterval(100)
        self.timer.timeout.connect(self.playGame)

        self.show()

    def start(self):
        self.timer.start()

    def playGame(self):
        self.rndComputer = randint(1,3)
        if self.rndComputer == 1:
            self.imageComputer.setPixmap(QPixmap('RockPaperScissors\\images\\rock.png'))
        elif self.rndComputer == 2:
            self.imageComputer.setPixmap(QPixmap('RockPaperScissors\\images\\paper.png'))
        else:
            self.imageComputer.setPixmap(QPixmap('RockPaperScissors\\images\\scissors.png'))
            
        self.rndPlayer = randint(1,3)
        if self.rndPlayer == 1:
            self.imagePlayer.setPixmap(QPixmap('RockPaperScissors\\images\\rock.png'))
        elif self.rndPlayer == 2:
            self.imagePlayer.setPixmap(QPixmap('RockPaperScissors\\images\\paper.png'))
        else:
            self.imagePlayer.setPixmap(QPixmap('RockPaperScissors\\images\\scissors.png'))
            
    def gameLogic(self):
        global computerScore
        global playerScore

        if self.rndComputer == 1 and self.rndPlayer == 1:
            mbox = QMessageBox.information(self, 'Result','Draw Game')
        elif self.rndComputer == 1 and self.rndPlayer == 2:
            mbox = QMessageBox.information(self, 'Result','You Won')
            playerScore += 1
            self.scorePlayer.setText('Your score {}'.format(playerScore))
        elif self.rndComputer == 1 and self.rndPlayer == 3:
            mbox = QMessageBox.information(self, 'Result','Computer Won')
            computerScore += 1
            self.scoreComputer.setText('Computer score {}'.format(computerScore))
        elif self.rndComputer == 2 and self.rndPlayer == 1:
            mbox = QMessageBox.information(self, 'Result','Computer Won')
            computerScore += 1
            self.scoreComputer.setText('Computer score {}'.format(computerScore))
        elif self.rndComputer == 2 and self.rndPlayer == 2:
            mbox = QMessageBox.information(self, 'Result','Draw Game')
        elif self.rndComputer == 2 and self.rndPlayer == 3:
            mbox = QMessageBox.information(self, 'Result','You Won')
            playerScore += 1
            self.scorePlayer.setText('Your score {}'.format(playerScore))
        elif self.rndComputer == 3 and self.rndPlayer == 1:
            mbox = QMessageBox.information(self, 'Result','You Won')
            playerScore += 1
            self.scorePlayer.setText('Your score {}'.format(playerScore))
        elif self.rndComputer == 3 and self.rndPlayer == 2:
            mbox = QMessageBox.information(self, 'Result','Computer Won')
            computerScore += 1
            self.scoreComputer.setText('Computer score {}'.format(computerScore))
        elif self.rndComputer == 3 and self.rndPlayer == 3:
            mbox = QMessageBox.information(self, 'Result','Draw Game')

        if computerScore == 3 or playerScore == 3:
            mbox = QMessageBox.information(self, 'Info','Game Over. Computer Score is {}, Player Score is {}'.format(computerScore,playerScore))
            self.btnStart.setEnabled(False)
            self.btnStop.setEnabled(False)


    def stop(self):

        self.timer.stop()
        self.gameLogic()
    
    def newGame(self):
        global computerScore
        global playerScore

        computerScore = 0
        playerScore = 0
        self.btnStart.setEnabled(True)
        self.btnStop.setEnabled(True)
        self.start()
        
        


def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())


if __name__ == '__main__':
    main()
Reply


Messages In This Thread
computerScore counter not found - by Maryan - Nov-16-2020, 12:43 AM
RE: computerScore counter not found - by deanhystad - Nov-16-2020, 02:53 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020