Skip to content

Instantly share code, notes, and snippets.

@evilnapsis
Created July 23, 2024 13:39
Show Gist options
  • Save evilnapsis/abcc2e14789aff0212bf386257c72028 to your computer and use it in GitHub Desktop.
Save evilnapsis/abcc2e14789aff0212bf386257c72028 to your computer and use it in GitHub Desktop.
Juego de Naves y Disparos en Pygame v1.2
# 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment