def printLabel(self): # Pixeles impresos en el Board que representan la letra S self.__pixels[10:20,880+self.generalOffset:920+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[10:30,880+self.generalOffset:890+self.generalOffset, :] = np.zeros((20,10,3), dtype="uint8") self.__pixels[30:40,880+self.generalOffset:920+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[40:60,910+self.generalOffset:920+self.generalOffset, :] = np.zeros((20,10,3), dtype="uint8") self.__pixels[50:60,880+self.generalOffset:920+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") # Pixeles impresos en el Board que representan la letra C self.__pixels[10:20,930+self.generalOffset:970+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[10:60,930+self.generalOffset:940+self.generalOffset, :] = np.zeros((50,10,3), dtype="uint8") self.__pixels[50:60,930+self.generalOffset:970+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") # Pixeles impresos en el Board que representan la letra O self.__pixels[10:20,980+self.generalOffset:1020+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[10:60,980+self.generalOffset:990+self.generalOffset, :] = np.zeros((50,10,3), dtype="uint8") self.__pixels[50:60,980+self.generalOffset:1020+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[10:60,1010+self.generalOffset:1020+self.generalOffset, :] = np.zeros((50,10,3), dtype="uint8") # Pixeles impresos en el Board que representan la letra R self.__pixels[10:20,1030+self.generalOffset:1070+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[10:60,1030+self.generalOffset:1040+self.generalOffset, :] = np.zeros((50,10,3), dtype="uint8") self.__pixels[30:40,1030+self.generalOffset:1070+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[10:40,1060+self.generalOffset:1070+self.generalOffset, :] = np.zeros((30,10,3), dtype="uint8") self.__pixels[40:60,1050+self.generalOffset:1060+self.generalOffset, :] = np.zeros((20,10,3), dtype="uint8") # Pixeles impresos en el Board que representan la letra E self.__pixels[10:20,1080+self.generalOffset:1120+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[10:60,1080+self.generalOffset:1090+self.generalOffset, :] = np.zeros((50,10,3), dtype="uint8") self.__pixels[30:40,1080+self.generalOffset:1120+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") self.__pixels[50:60,1080+self.generalOffset:1120+self.generalOffset, :] = np.zeros((10,40,3), dtype="uint8") # Pixeles impresos en el Board que representan el simbolo : self.__pixels[20:30,1130+self.generalOffset:1140+self.generalOffset, :] = np.zeros((10,10,3), dtype="uint8") self.__pixels[40:50,1130+self.generalOffset:1140+self.generalOffset, :] = np.zeros((10,10,3), dtype="uint8") # Pixeles impresos en el Board que representan el simbolo : self.__pixels[730:740,0:1350, :] = np.zeros((10,1350,3), dtype="uint8") # Panel inicial con los colores que indican la dirección para obtener puntos obj = Object(1000,1080,100,140,Color.getBlue(10,10),"BLUE") obj.genMatrix() obj2 = Object(1000,1080,100,140,Color.getGreen(10,10),"GREEN") obj2.genMatrix() obj3 = Object(1000,1040,100,200,Color.getRed(10,10),"RED") obj3.genMatrix() self.__pixels[150:230, 1050:1090, :] = obj.matrix self.__pixels[150:230, 1250:1290, :] = obj2.matrix self.__pixels[100:140, 1120:1220, :] = obj3.matrix
def startGame(self): # Inicialización de arreglo de objetos data = [] # Creación de evento para control de la generación de objetos event = Event() # Definición de proceso en segundo plano para conteo de tiempo processObjects = Process(target=self.newObject, args=(event, ), name="Creating process") # Inicio de proceso processObjects.start() # While infinito que da inicio al juego while True: # Verifica el estado del juego mediante la lectura de la cámara self.moveControls() # Si hay un evento identificado, se crea un nuevo objeto if event.is_set(): event.clear() element = np.random.randint(3) if element == 0: obj = Object(270, 310, 0, 40, Color.getBlue(self.pixelSize, self.pixelSize), "BLUE") elif element == 1: obj = Object( 580, 620, 0, 40, Color.getGreen(self.pixelSize, self.pixelSize), "GREEN") else: obj = Object(890, 930, 0, 40, Color.getRed(self.pixelSize, self.pixelSize), "RED") # Creación del objeto obj.genMatrix() # Adición al arreglo general (lista) data.append(obj) # Copia de la matriz referencia matrix = np.copy(self.board.pixels) if len(data) > 0: # Impresión de objetos en la pantalla for num, printableObject in enumerate(data): # Trae coordenadas del objeto initialX, finalX, initialY, finalY, color, name = printableObject.position( ) # Obtiene matriz de posición matrix[initialY:finalY, initialX:finalX, :] = printableObject.matrix # Desplaza objeto printableObject.move() # Revisa si el objeto esta en la franja para puntuar y es interceptado por el estado correspondiente de juego if (finalY + 1 > 740 and finalY + 1 < 780 and self.check(name)): # Si es interceptado suma un punto self.score += 1 # Verifica si el usuario gano y termina el juego con la pantalla de ganador if self.score == 20: processObjects.terminate() self.cam.release() cv2.destroyAllWindows() im = cv2.imread("winner.png") cv2.imshow("WINNER", im) if cv2.waitKey(0): self.mixer.music.stop() cv2.destroyAllWindows() self.cam.release() exit() data.pop(num) # Verifica si el usuario no logro atinar al cuadro y le suma un punto negativo if (finalY + 1 > 780): self.__negativePoint += 1 # Elimina el objeto en la parte inferior de la pantalla data.pop(num) # Si el usuario suma 5 puntos negativos pierde if (self.__negativePoint == 5): processObjects.terminate() cv2.destroyAllWindows() im = cv2.imread("loser.jpg") cv2.imshow("PERDISTE", im) if cv2.waitKey(0): self.mixer.music.stop() cv2.destroyAllWindows() self.cam.release() exit() # Tecla para salirse del juego if cv2.waitKey(33) == ord('q'): self.mixer.music.stop() processObjects.terminate() break matrix = self.board.printScore(matrix, self.score) cv2.imshow(self.__boardName, matrix) self.cam.release() cv2.destroyAllWindows()