# GameAgain v1.2 # En esta version vamos a incluir la aparicion de monedas del juego las cuales igual que los enemigos van a aparecer aleatoriamente pero estas le daran puntos al jugador # import pygame import sys import random import os pygame.init() ############ SONIDOS pygame.mixer.init() shoot = pygame.mixer.Sound(os.path.join("sounds", 'shoot.wav')) explosion = pygame.mixer.Sound(os.path.join("sounds", 'explosion.wav')) coin_sound = pygame.mixer.Sound(os.path.join("sounds", 'coin.wav')) ########### width, height = 540,960 myfont = pygame.font.SysFont("monospace", 15) screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("Disparando ...") player_img= pygame.image.load("space/ship.webp") player_img=pygame.transform.scale(player_img,(80,80)) bullet_img= pygame.image.load("space/shot.png") bullet_img=pygame.transform.scale(bullet_img,(40,40)) ### ROTAR LA IMAGEN DEL DISPARO bullet_img = pygame.transform.rotate(bullet_img, 90) #bullet_img = bullet_img.get_rect(center=rect.center) enemy_img= pygame.image.load("space/enemy.png") enemy_img=pygame.transform.scale(enemy_img,(64,36)) #definimos las monedas coin_img= pygame.image.load("space/gold-coin.png") coin_img=pygame.transform.scale(coin_img,(25,25)) background_img= pygame.image.load("space/bg-space.png") background_img=pygame.transform.scale(background_img,(width,height)) player = player_img.get_rect() player.topleft = (width//2 - player.width//2, height - player.height - 10) player_speed = 15 bullet = bullet_img.get_rect() bullet_speed=20 bullets_array = [] # Monedas coin = coin_img.get_rect() coin_speed=15 coins_array = [] enemy = enemy_img.get_rect() enemy_speed = 10 enemies_array = [] clock = pygame.time.Clock() keys = {"left": False, "right": False} points =0 losts =0 coins =0 score =0 while True: print("Enemigos: ", len(enemies_array), "Balas : ",len(bullets_array)) for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key==pygame.K_LEFT: keys["left"]=True elif event.key==pygame.K_RIGHT: keys["right"]=True elif event.key==pygame.K_SPACE: bullet = bullet_img.get_rect() bul = {"rect":pygame.Rect( player.x+ player.width//2 - bullet.width//2, player.y, bullet.width, bullet.height ), "image":bullet_img } bullets_array.append(bul) pygame.mixer.Sound.play(shoot) if event.type==pygame.KEYUP: if event.key==pygame.K_LEFT: keys["left"]=False if event.key == pygame.K_RIGHT: keys["right"]=False if keys["left"] and player.left>0: player.x-=player_speed if keys["right"] and player.right < width: player.x+=player_speed for b in bullets_array: b["rect"].y-=bullet_speed # Aparecer enemigos aleatoriamente if random.randint(0,100)<5: enemy= enemy_img.get_rect() enemy.x=random.randint(0, width - enemy.width) enemies_array.append(enemy.copy()) # aparecer monedas aleatoriamente if random.randint(0,200)<2: coin= coin_img.get_rect() coin.x=random.randint(0, width - coin.width) coins_array.append(coin.copy()) for ene in enemies_array: ene.y +=enemy_speed for c in coins_array: c.y +=coin_speed if ene.y > height + 50: losts+=1 enemies_array.remove(ene) print("Perdiste: " , points) #pygame.quit() #sys.exit() for b in bullets_array: for ene in enemies_array: if ene.colliderect(b["rect"]): bullets_array.remove(b) enemies_array.remove(ene) score+=1 points+=1 pygame.mixer.Sound.play(explosion) for ene in enemies_array: if player.colliderect(ene): pygame.quit() sys.exit() for c in coins_array: if player.colliderect(c): coins_array.remove(c) score+=10 coins+=1 pygame.mixer.Sound.play(coin_sound) label = myfont.render(f"Score: {score} - Monedas : {coins} - Kills: {points} - Perdidos: {losts} ", 1, (255,255,255)) screen.blit(background_img,(0,0)) screen.blit(label, (0, 0)) screen.blit(player_img,player) for b in bullets_array: screen.blit(b["image"],b["rect"].topleft) for ene in enemies_array: screen.blit(enemy_img,ene) for c in coins_array: screen.blit(coin_img,c) pygame.display.flip() clock.tick(30)