コード例 #1
0
ファイル: mancala.py プロジェクト: andreear7/proiectPython
 def b4(self):
     """
         functie apelata in cazul apasarii butonului B4
     """
     if opponent == "calculator" and ("B" in self.text_label.text()
                                      or "calculatorului"
                                      in self.text_label.text()):
         return
     global buttons
     if buttons[0] == " ":
         buttons[0] = "B4"
         self.text_label.setText(" ")
         if game.ver_start("B4", player):
             self.B4Button.setText("0")
         else:
             if game.check_player(player) == 1 or game.check_player_start(
                     player, "B4") == 0:
                 self.set_text_label_err(
                     "Ai inceput de pe o groapa care nu este a ta!")
             elif game.get_points("B4") == 0:
                 self.set_text_label_err(
                     "Groapa nu are niciun punct! Incepe din nou!")
     elif buttons[1] == " ":
         buttons[1] = "B4"
     if buttons[0] != " " and buttons[1] != " ":
         points = self.play()
         if points == -2:
             pass
         if points >= 0 and points <= 6:
             self.B4Button.setText(self.convert_points_to_text(points))
         elif points >= 7:
             self.B4Button.setText(str(points))
コード例 #2
0
ファイル: mancala.py プロジェクト: andreear7/proiectPython
 def update_buttons_calc(self):
     """
         face update la punctele de pe butoanele "apasate" de calculator
     """
     global buttons, player, start, game_over
     time.sleep(1)
     # obtine butoanele, iar pentru fiecare buton seteaza textul corespunzator punctelor
     # cu o mica pauza intre mutari
     buttons_to_update = game.get_buttons_clicked_by_calc()
     for button in buttons_to_update:
         time.sleep(1)
         QApplication.processEvents()
         if game.get_points(button) <= 6 or (button == "A"
                                             or button == "B"):
             self.convert_str_to_button(button).setText(
                 self.convert_points_to_text(game.get_points(button)))
         else:
             self.convert_str_to_button(button).setText(
                 str(game.get_points(button)))
     time.sleep(1)
     buttons = game.get_buttons_calculator()
     # se apeleaza functia de play pentru a se continua jocul
     self.play()
コード例 #3
0
ファイル: mancala.py プロジェクト: andreear7/proiectPython
 def a1(self):
     """
         functie apelata in cazul apasarii butonului A1,
         actualizeaza variabila "buttons" care tine evidenta mutarilor
         si mai apoi actualizeaza si punctele de pe buton
     """
     # daca e randul calculatorului nu se intampla nimic
     if opponent == "calculator" and ("B" in self.text_label.text()
                                      or "calculatorului"
                                      in self.text_label.text()):
         return
     global buttons
     # daca e primul buton apasat se verifica daca este un inceput de mutare si daca este corect
     if buttons[0] == " ":
         buttons[0] = "A1"
         self.text_label.setText(" ")
         if game.ver_start("A1", player):
             self.A1Button.setText("0")
         else:
             if game.check_player(player) == 1 or game.check_player_start(
                     player, "A1") == 0:
                 self.set_text_label_err(
                     "Ai inceput de pe o groapa care nu este a ta!")
             elif game.get_points("A1") == 0:
                 self.set_text_label_err(
                     "Groapa nu are niciun punct! Incepe din nou!")
     # daca este al 2-lea buton apasat se actualizeaza variabila buttons, se apeleaza functia play
     # pentru a updata punctajul si pentru a afla punctele corespunzatoare butonului A1 si se
     # actualizeaza punctele de pe buton
     elif buttons[1] == " ":
         buttons[1] = "A1"
     if buttons[0] != " " and buttons[1] != " ":
         points = self.play()
         # daca sunt pana in 6 puncte in textul de pe buton vor aparea si bulinele, altfel nu, din
         # motive vizuale
         if points == -2:
             pass
         if points >= 0 and points <= 6:
             self.A1Button.setText(self.convert_points_to_text(points))
         elif points >= 7:
             self.A1Button.setText(str(points))
コード例 #4
0
ファイル: mancala.py プロジェクト: andreear7/proiectPython
 def play(self):
     """
         functia comunica cu "game.py" pentru a actualiza in interfata punctele jucatorilor si pentru
         a-i informa starea jocului si rezultatul mutarilor
         returneaza: numarul de puncte pentru butonul apasat daca mutarea e corecta, -1 in caz contrar
                     -2 daca jocul s-a terminat
     """
     self.text_label.setStyleSheet(
         "font: bold; font-size:14px; color:black")
     self.text_label.setText("")
     ok = 1
     global buttons, player, start, game_over
     # apeleaza functia update_points din game.py pentru a afla care e rezultatul mutarii
     # rezultatul are 2 componente
     if opponent == "om" or (opponent == "calculator" and player == 0):
         result = game.update_points(buttons[0], buttons[1], player)
     elif opponent == "calculator" and player == 1:
         result = game.get_result_calc()
     print("result e ", result[0], result[1])
     # 0,0 semnifica faptul ca utilizatorul a apasat gresit( pe partea celuilalt) sau
     # oponentul a incercat sa-si mute piesele lui cand nu era randul sau
     if result[0] == 0 and result[1] == 0:
         self.text_label.setStyleSheet(
             "font: bold; font-size:16px; color:red")
         self.text_label.setText("Nu este randul tau!")
         buttons[0] = " "
         buttons[1] = " "
         ok = 0
         QApplication.processEvents()
     # 0,1 sau 4,2 semnifica o mutare gresita din punct de vedere a regulilor jocului
     if (result[0] == 0 and result[1] == 1) or (result[0] == 4
                                                and result[1] == 2):
         self.text_label.setStyleSheet(
             "font: bold; font-size:16px; color:red")
         self.text_label.setText(
             "Nu ai mutat conform regulilor! Te rog sa refaci ultima mutare!"
         )
         buttons[1] = " "
         QApplication.processEvents()
         ok = 0
     # 2,0 semnifica incercarea de inceput de la o groapa fara puncte
     if result[0] == 2 and result[1] == 0:
         self.text_label.setStyleSheet(
             "font: bold; font-size:16px; color:red")
         self.text_label.setText(
             "Groapa nu are niciun punct! Te rog sa refaci ultima mutare!")
         buttons[0] = " "
         buttons[1] = " "
         ok = 0
         QApplication.processEvents()
     # daca utilizatorul a mutat corect, ok a ramas 1
     if ok == 1:
         button2 = buttons[1]
     # rezultatul cu 1 pe prima pozitie semnifica mutari corecte
     # 1,0 semnifica faptul ca randul playerului curent s-a terminar, asa ca se va actualiza playerul
     # si se va afisa acest lucru in text_label
     if result[0] == 1 and result[1] == 0:
         if player == 1:
             player = 0
             nume = "A"
         else:
             player = 1
             nume = "B"
         self.text_label.setStyleSheet(
             "font: bold; font-size:16px; color:black")
         self.text_label.setText("Este randul lui " + nume)
         # se va actualiza si in partea de joc playerul
         game.set_player(player)
         QApplication.processEvents()
         # daca utilizatorul joaca cu calculatorul, se actualizeaza intai punctele ultimului buton
         # apasat, iar mai apoi se apeleaza functia pentru mutarea calculatorului
         if opponent == "calculator" and nume == "B":
             if game.get_points(buttons[1]) <= 6 or (buttons[1] == "A"
                                                     or buttons[1] == "B"):
                 self.convert_str_to_button(buttons[1]).setText(
                     self.convert_points_to_text(game.get_points(
                         buttons[1])))
             else:
                 self.convert_str_to_button(buttons[1]).setText(
                     str(game.get_points(buttons[1])))
             QApplication.processEvents()
             game.move_calculator()
             # se face update la textul butoanelor "apasate" de calculator
             self.update_buttons_calc()
         buttons[0] = " "
         buttons[1] = " "
     # 1,1 semnifica exceptia 1- ultima piatra a ajuns in groapa playerului curent
     # se actualizeaza textul afisat in functie de oponent, iar daca oponentul e calculatorul
     # se apeleaza functia pentru mutarea lui si se actualizeaza punctele
     if result[0] == 1 and result[1] == 1:
         self.text_label.setStyleSheet(
             "font: bold; font-size:16px; color:black")
         if opponent == "calculator" and player == 1:
             self.text_label.setText(
                 "Ultima piatra a ajuns in banca calculatorului, va muta din nou!"
             )
             buttons[0] = " "
             if game.get_points(buttons[1]) <= 6 or (buttons[1] == "A"
                                                     or buttons[1] == "B"):
                 self.convert_str_to_button(buttons[1]).setText(
                     self.convert_points_to_text(game.get_points(
                         buttons[1])))
             else:
                 self.convert_str_to_button(buttons[1]).setText(
                     str(game.get_points(buttons[1])))
             buttons[1] = " "
             QApplication.processEvents()
             game.move_calculator()
             self.update_buttons_calc()
         else:
             self.text_label.setText(
                 "Ultima piatra a ajuns in banca ta, poti muta din nou!")
             buttons[0] = " "
             buttons[1] = " "
     QApplication.processEvents()
     # 1,2 semnifica exceptia 2
     # se schimba playerul curent in ambele fisiere si se actualizeaza punctele conform dictionarului
     # de puncte din game.py
     if result[0] == 1 and result[1] == 2:
         self.text_label.setStyleSheet(
             "font: bold; font-size:16px; color:black")
         if player == 1:
             player = 0
             nume = "A"
             points_b = game.get_points("B")
             self.BButton.setText(self.convert_points_to_text(points_b))
         else:
             player = 1
             nume = "B"
             points_a = game.get_points("A")
             self.AButton.setText(self.convert_points_to_text(points_a))
         if opponent == "calculator" and nume == "A":
             self.text_label.setText(
                 "Calculatorul aduna toate pietrele din groapa opusa+ultima piatra. Urmeaza randul tau!"
             )
             time.sleep(1)
             buttons[0] = " "
             buttons[1] = " "
             # butonul opus ultimului buton apasat are 0 puncte
             ex2b = game.get_exc2_buttons()
             self.convert_str_to_button(ex2b[1]).setText("0")
             game.set_player(player)
             QApplication.processEvents()
         else:
             self.text_label.setText(
                 "Aduni toate pietrele din groapa opusa+ultima piatra. Urmeaza randul lui "
                 + nume)
             time.sleep(1)
             buttons[0] = " "
             if game.get_points(buttons[1]) <= 6 or (buttons[1] == "A"
                                                     or buttons[1] == "B"):
                 self.convert_str_to_button(buttons[1]).setText(
                     self.convert_points_to_text(game.get_points(
                         buttons[1])))
             else:
                 self.convert_str_to_button(buttons[1]).setText(
                     str(game.get_points(buttons[1])))
             buttons[1] = " "
             ex2b = game.get_exc2_buttons()
             self.convert_str_to_button(ex2b[1]).setText("0")
             game.set_player(player)
             QApplication.processEvents()
             # daca oponentul este calculatorul, se apeleaza functia game.move_calculator() pentru
             # mutarea acestuia si apoi se actualizeaza punctele din butoanele "apasate" de el
             if opponent == "calculator" and nume == "B":
                 game.move_calculator()
                 self.update_buttons_calc()
     # 1,3 semnifica o mutare corecta fara exceptii si in curs de derulare
     # se actualizeaza numarul de pietre care mai trebuie plasate in gropi/banca si se afiseaza
     if result[0] == 1 and result[1] == 3:
         self.text_label.setStyleSheet(
             "font: bold; font-size:16px; color:black")
         value = game.get_value()
         if value != 1:
             self.text_label.setText("Mai ai in mana " + str(value) +
                                     " pietre!")
         else:
             self.text_label.setText("Mai ai in mana o piatra!")
         buttons[0] = buttons[1]
         buttons[1] = " "
     # jocul s-a terminat, deci se vor bloca butoanele, se vor updata punctele din banci, gropile
     # vor avea toate 0 puncte si se va afisa castigatorul
     if result[0] == 3:
         game_over = 1
         if result[1] != 2:
             if result[1] == 0:
                 nume = "A"
             else:
                 nume = "B"
             self.text_label.setStyleSheet(
                 "font: bold; font-size:20px; color:green")
             self.text_label.setText(
                 "Jocul s-a terminat! Castigatorul este " + nume + "!")
         else:
             self.text_label.setStyleSheet(
                 "font: bold; font-size:20px; color:green")
             self.text_label.setText("Jocul s-a terminat! Este remiza!")
         self.block_buttons()
         a = game.get_points("A")
         b = game.get_points("B")
         print(a, b, "puncte")
         self.AButton.setText(str(a))
         self.BButton.setText(str(b))
         self.set_zero()
         QApplication.processEvents()
         return -2
     # daca mutarea a fost corecta se vor returna punctele butonului apasat
     if ok == 1:
         return game.get_points(button2)
     else:
         # altfel, -1
         return -1