# -*- coding: utf-8 -*- import pygame, sys, random import pygame.locals as GAME_GLOBALS import pygame.event as GAME_EVENTS import pygame.time as GAME_TIME pygame.init() clock = pygame.time.Clock() title_image = pygame.image.load("recursos/titulo.jpg")#imagenes game_over_image = pygame.image.load("recursos/Fin_juego.jpg") windowWidth = 400#tamaño de la ventana windowHeight = 600 surface = pygame.display.set_mode((windowWidth, windowHeight)) # ventana principal para nuestro juego pygame.display.set_caption('¡Déjate caer!') # Definimos las variables para las pulsaciones de las teclas leftDown = False#teclado fechas rightDown = False # Definimos las variables que afectarán a nustra partida gameStarted = False#variable comienzo gameEnded = False gamePlatforms = []#cuantas plataformas platformSpeed = 3#velocidad de generar plataformas platformDelay = 2000 #numero de varibles lastPlatform = 0#ultima plataforma platformsDroppedThrough = -1 dropping = False # Establecemos los contadores a cero gameBeganAt = 0 timer = 0 # Creamos un diccionario con todos los atributos del personaje principal player = { "x" : windowWidth / 2, "y" : 0, "height" : 20, "width" : 20, "vy" : 5 } # Comenzamos a definir las funciones que formarán parte de nuestro juego def drawPlayer(): pygame.draw.rect(surface, (255,128,0), (player["x"], player["y"], player["width"], player["height"])) #figura def movePlayer(): global platformsDroppedThrough, dropping leftOfPlayerOnPlatform = True rightOfPlayerOnPlatform = True if surface.get_at((int(player["x"]), int(player["y"] + player["height"]))) == (0,0,0,255): leftOfPlayerOnPlatform = False if surface.get_at((int(player["x"] + player["width"]), int(player["y"] + player["height"]))) == (0,0,0,255): rightOfPlayerOnPlatform = False if leftOfPlayerOnPlatform is False and rightOfPlayerOnPlatform is False and (player["y"] + player["height"]) + player["vy"] < windowHeight: player["y"] += player["vy"] if dropping is False: dropping = True platformsDroppedThrough += 1 else : foundPlatformTop = False yOffset = 0 dropping = False while foundPlatformTop is False: if surface.get_at((player["x"], (player["y"] + player["height"]) - yOffset )) == (0,0,0,255): player["y"] -= yOffset foundPlatformTop = True elif (player["y"] + player["height"]) - yOffset > 0: yOffset += 1 else : gameOver() break if leftDown is True: if player["x"] > 0 and player["x"] - 5 > 0: player["x"] -= 5 elif player["x"] > 0 and player["x"] - 5 < 0: player["x"] = 0 if rightDown is True: if player["x"] + player["width"] < windowWidth and (player["x"] + player["width"]) + 5 < windowWidth: player["x"] += 5 elif player["x"] + player["width"] < windowWidth and (player["x"] + player["width"]) + 5 > windowWidth: player["x"] = windowWidth - player["width"] def createPlatform(): global lastPlatform, platformDelay platformY = windowHeight gapPosition = random.randint(0, windowWidth - 40) gamePlatforms.append({"pos" : [0, platformY], "gap" : gapPosition}) lastPlatform = GAME_TIME.get_ticks() if platformDelay > 800: platformDelay -= 50 def movePlatforms(): # print("Platforms") for idx, platform in enumerate(gamePlatforms): platform["pos"][1] -= platformSpeed if platform["pos"][1] < -10: gamePlatforms.pop(idx) def drawPlatforms(): for platform in gamePlatforms: pygame.draw.rect(surface, (255,255,255), (platform["pos"][0], platform["pos"][1], windowWidth, 10)) pygame.draw.rect(surface, (0,0,0), (platform["gap"], platform["pos"][1], 40, 10) ) def gameOver(): global gameStarted, gameEnded platformSpeed = 0 gameStarted = False gameEnded = True def restartGame(): global gamePlatforms, player, gameBeganAt, platformsDroppedThrough, platformDelay gamePlatforms = [] player["x"] = windowWidth / 2 player["y"] = 0 gameBeganAt = GAME_TIME.get_ticks() platformsDroppedThrough = -1 platformDelay = 2000 def quitGame(): pygame.quit() sys.exit() # 'main' loop while True: surface.fill((0,0,0)) for event in GAME_EVENTS.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: leftDown = True if event.key == pygame.K_RIGHT: rightDown = True if event.key == pygame.K_ESCAPE: quitGame() if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT: leftDown = False if event.key == pygame.K_RIGHT: rightDown = False if event.key == pygame.K_SPACE: if gameStarted == False: restartGame() gameStarted = True if event.type == GAME_GLOBALS.QUIT: quitGame() if gameStarted is True: # Play game timer = GAME_TIME.get_ticks() - gameBeganAt movePlatforms() drawPlatforms() movePlayer() drawPlayer() elif gameEnded is True: # Draw game over screen surface.blit(game_over_image, (0, 150)) else : # Welcome Screen surface.blit(title_image, (0, 150)) if GAME_TIME.get_ticks() - lastPlatform > platformDelay: createPlatform() clock.tick(60) pygame.display.update()
martes, 4 de diciembre de 2018
pygame juego
Suscribirse a:
Entradas (Atom)