def __init__(self): # permite centrar la ventana a la pantalla usando SDL environ['SDL_VIDEO_CENTERED'] = '1' pygame.init() # Inicializa el mixer pygame.mixer.pre_init(44100, -16, 2, 5000) # asigna cuantos pixeles avanza en X e Y self.bgsound = 0 # ejecuta la ventana self.size = self.width, self.height = 540, 512 self.screen = pygame.display.set_mode(self.size) pygame.draw.line(self.screen, (255,255,255), (448, 0), (448, 512), 2) # nombre del titulo de la ventana pygame.display.set_caption("Arkathon Maker") # Botones y sus posiciones self.up = Boton(pygame.image.load(BUTTON_UP_PATH)) self.down = Boton(pygame.image.load(BUTTON_DOWN_PATH)) self.mas = Boton(pygame.image.load(BUTTON_MAS_PATH)) self.screen.blit(self.up.sprite, self.up.sprite.get_rect(center=(BUTTON_UP_POS))) self.screen.blit(self.down.sprite, self.down.sprite.get_rect(center=(BUTTON_DOWN_POS))) self.screen.blit(self.mas.sprite, self.mas.sprite.get_rect(center=(BUTTON_MAS_POS))) self.contadorListaBloques = 0 self.listaBloques = [] self.elBloque = Bloque() self.elBloque.setBloque(pygame.image.load(LIST_BLOCKS[self.contadorListaBloques])) self.listaBloques.append(self.elBloque) self.bloqueSeleccionado = False self.bloquesColicionados = False self.fondo = pygame.image.load(BACKGROUND_PATH) self.fondorect = self.fondo.get_rect() # fps self.clock = pygame.time.Clock() pygame.mouse.set_visible(1)
class ArkathonMaker(object): def __init__(self): # permite centrar la ventana a la pantalla usando SDL environ['SDL_VIDEO_CENTERED'] = '1' pygame.init() # Inicializa el mixer pygame.mixer.pre_init(44100, -16, 2, 5000) # asigna cuantos pixeles avanza en X e Y self.bgsound = 0 # ejecuta la ventana self.size = self.width, self.height = 540, 512 self.screen = pygame.display.set_mode(self.size) pygame.draw.line(self.screen, (255,255,255), (448, 0), (448, 512), 2) # nombre del titulo de la ventana pygame.display.set_caption("Arkathon Maker") # Botones y sus posiciones self.up = Boton(pygame.image.load(BUTTON_UP_PATH)) self.down = Boton(pygame.image.load(BUTTON_DOWN_PATH)) self.mas = Boton(pygame.image.load(BUTTON_MAS_PATH)) self.screen.blit(self.up.sprite, self.up.sprite.get_rect(center=(BUTTON_UP_POS))) self.screen.blit(self.down.sprite, self.down.sprite.get_rect(center=(BUTTON_DOWN_POS))) self.screen.blit(self.mas.sprite, self.mas.sprite.get_rect(center=(BUTTON_MAS_POS))) self.contadorListaBloques = 0 self.listaBloques = [] self.elBloque = Bloque() self.elBloque.setBloque(pygame.image.load(LIST_BLOCKS[self.contadorListaBloques])) self.listaBloques.append(self.elBloque) self.bloqueSeleccionado = False self.bloquesColicionados = False self.fondo = pygame.image.load(BACKGROUND_PATH) self.fondorect = self.fondo.get_rect() # fps self.clock = pygame.time.Clock() pygame.mouse.set_visible(1) def Maker(self): # Da valores iniciales a los contadores bgsound = 0 while True: self.clock.tick(160) for event in pygame.event.get(): if event.type == pygame.QUIT: exit() x, y = pygame.mouse.get_pos() if event.type == pygame.MOUSEBUTTONDOWN: # Si se presiona el boton agregar if self.mas.sprite.get_rect(center=(BUTTON_MAS_POS)).collidepoint(x, y): self.mas.downPush = True elif self.up.sprite.get_rect(center=(BUTTON_UP_POS)).collidepoint(x, y): self.up.downPush = True elif self.down.sprite.get_rect(center=(BUTTON_DOWN_POS)).collidepoint(x, y): self.down.downPush = True if event.button == RIGHT_CLICK: if self.bloqueSeleccionado and not self.bloquesColicionados: self.bloqueSeleccionado = False if event.type == pygame.MOUSEBUTTONUP: # Si se suelta el boton agregar if self.mas.sprite.get_rect(center=(BUTTON_MAS_POS)).collidepoint(x, y): if self.mas.downPush == True: self.mas.downPush = False self.mas.upPush = True elif self.up.sprite.get_rect(center=(BUTTON_UP_POS)).collidepoint(x, y): if self.up.downPush == True: self.up.downPush = False self.up.upPush = True elif self.down.sprite.get_rect(center=(BUTTON_DOWN_POS)).collidepoint(x, y): if self.down.downPush == True: self.down.downPush = False self.down.upPush = True # Solo una llamada al metodo nuevo bloque if self.mas.upPush == True: self.mas.restablecerEstados() self.nuevoBloque() elif self.up.upPush == True: self.up.restablecerEstados() self.elBloque.setBloque(pygame.image.load(self.anteriorBloque())) elif self.down.upPush == True: self.down.restablecerEstados() self.elBloque.setBloque(pygame.image.load(self.siguienteBloque())) if self.bloqueSeleccionado: self.elBloque.setX(x) self.elBloque.setY(y) # dibuja el fondo self.screen.fill((0, 0, 0)) self.screen.blit(self.fondo, self.fondorect) # tratamiento de bloques for b in self.listaBloques: if event.type == pygame.MOUSEBUTTONDOWN: if event.button == LEFT_CLICK: if b.rect.collidepoint(x, y): self.focoBloque(b) self.bloqueSeleccionado = True if self.elBloque.rect.colliderect(b.rect): if self.elBloque != b: self.elBloque.cambiarADE() self.bloquesColicionados = True else: self.elBloque.volverBloque() self.bloquesColicionados = False self.screen.blit(b.getBloque(), b.getBloque().get_rect(center=(b.getX(), b.getY()))) self.mouseOver(x, y) self.displayFonts(x, y) pygame.display.flip() def displayFonts(self, x, y): if pygame.font: font = pygame.font.Font(FONT_PATH, 20) arkathonLogo = font.render('arkathon maker!', 0, (255, 0, 0)) fontX = font.render('x ' + str(x), 0, (255, 0, 0)) fontY = font.render('y ' + str(y), 0, (255, 0, 0)) self.screen.blit(arkathonLogo, (150, 0)) self.screen.blit(fontX, (10, 20)) self.screen.blit(fontY, (130, 20)) def mouseOver(self, x, y): """Genera una especie de mouse over. :parameter: - x: Posicion x del mouse - y: Posicion y del mouse """ if self.up.sprite.get_rect(center=(BUTTON_UP_POS)).collidepoint(x, y): self.up.sprite = pygame.image.load(BUTTON_UP_RED_PATH) self.screen.blit(self.up.sprite, self.up.sprite.get_rect(center=(BUTTON_UP_POS))) else: self.up.sprite = pygame.image.load(BUTTON_UP_PATH) self.screen.blit(self.up.sprite, self.up.sprite.get_rect(center=(BUTTON_UP_POS))) if self.down.sprite.get_rect(center=(BUTTON_DOWN_POS)).collidepoint(x, y): self.down.sprite = pygame.image.load(BUTTON_DOWN_RED_PATH) self.screen.blit(self.down.sprite, self.down.sprite.get_rect(center=(BUTTON_DOWN_POS))) else: self.down.sprite = pygame.image.load(BUTTON_DOWN_PATH) self.screen.blit(self.down.sprite, self.down.sprite.get_rect(center=(BUTTON_DOWN_POS))) if self.mas.sprite.get_rect(center=(BUTTON_MAS_POS)).collidepoint(x, y): self.mas.sprite = pygame.image.load(BUTTON_MAS_RED_PATH) self.screen.blit(self.mas.sprite, self.mas.sprite.get_rect(center=(BUTTON_MAS_POS))) else: self.mas.sprite = pygame.image.load(BUTTON_MAS_PATH) self.screen.blit(self.mas.sprite, self.mas.sprite.get_rect(center=(BUTTON_MAS_POS))) def nuevoBloque(self): self.elBloque = Bloque() self.elBloque.setBloque(pygame.image.load(self.siguienteBloque())) self.listaBloques.append(self.elBloque) def siguienteBloque(self): if self.contadorListaBloques == len(LIST_BLOCKS) - 1: self.contadorListaBloques = 0 else: self.contadorListaBloques += 1 return LIST_BLOCKS[self.contadorListaBloques] def anteriorBloque(self): if self.contadorListaBloques == 0: self.contadorListaBloques = len(LIST_BLOCKS) - 1 else: self.contadorListaBloques -= 1 return LIST_BLOCKS[self.contadorListaBloques] def focoBloque(self, bloque): self.elBloque = bloque