Evilnapsis

Programming, Hacking and More

Python

SpaceAgain v1: Juego de Nave y Disparos con Pygame

Esta es la primera demo o version de este juego de disparos SpaceAgain, en la cual podremos controlar nuestra nave, disparar y matar enemigos.

Se esta desarrollando en Python y Pygame y posiblemente lo pasemos mas a delante a Unity.

El motivo de desarrollar el juego SpaceAgain es ir mostrandoles paso a paso el desarrollo de un proyecto de juego y compartirles el codigo fuente y assets.

Para que ustedes puedan modifcar sigustan el juego y sacar sus propias versiones para disfrutarlas o monetizarlas.

Inicialmente el juego cuenta con 4 elementos:

  • Imagen de fondo
  • Nave (Jugador Principal En la parte de Abajo)
  • Enemigos (Los enemigos Salen o Caen de la parte de arriba)
  • Balas – Las ballas las dispara la Nave o el jugador y estan van de Abajo hacia arriba

El proposito del juego es destruir las naves enemigas, las cuales van apareciendo y van hacia la nave principal y el objetivo es destruirlas y llegar al mayor puntaje posible.

Los controles de teclado son: las fechas Izquiera y Derecha para moverse hacia los lados y la tecla ESPACIO para disparar.

El codigo es el siguiente.

import pygame
import sys
import random
pygame.init()
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))
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 = []
enemy = enemy_img.get_rect()
enemy_speed = 10
enemies_array = []
clock = pygame.time.Clock()
keys = {"left": False, "right": False}
points =0
losts =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)
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
if random.randint(0,100)<5:
enemy= enemy_img.get_rect()
enemy.x=random.randint(0, width – enemy.width)
enemies_array.append(enemy.copy())
for ene in enemies_array:
ene.y +=enemy_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)
points+=1
for ene in enemies_array:
if player.colliderect(ene):
pygame.quit()
sys.exit()
label = myfont.render(f"Puntos: {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)
pygame.display.flip()
clock.tick(30)

Para ejecutar el juego es necesario tener instalado el modulo Pygame, para instalarlo se usa el comando.

pip install pygame

Y para ejecutarlo vamos a usar

py space-again-v1.0.py

Y listo ya podremos juegar el jueguito.

Link para descargar: https://www.dropbox.com/scl/fo/enc25q3jkgfc4wqry0ouw/ABq_3P0uCfde1wBTl5kSioM?rlkey=yoswtwftw9ru2wpe0yxzaq91w&st=xj5re2y0&dl=0

Agustin Ramos

Desarrollador de Software

Leave a Reply