[ Foro de Python ]
Hola! Necesito ayuda con el código de un mini juego, es mi primer año dando programación y tengo que crear un juego con una serie de requisitos mínimos en el código. He conseguido a base de tutoriales y búsquedas por Internet crear este código que funciona perfectamente, sin embargo por mucho que lo he intentado soy incapaz de añadirle ni clases ni la función def main, podría ayudarme alguien?
Código:
import pygame
import sys
import random
from pygame import mixer
pygame.init()
WIDTH = 1200
HEIGHT = 720
screen = pygame.display.set_mode (((WIDTH, HEIGHT)), pygame.FULLSCREEN)
pygame.display.set_caption("Cyberpunk 2020 A New Dawn")
pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
BLUE = (15, 150, 255)
PURPLE = (255, 150, 255)
ORANGE = (255, 155, 50)
MENU_1_IMAGE = pygame.image.load("Fondos/Background_01_720.png")
MENU_2_IMAGE = pygame.image.load("Fondos/Background_02_720.png")
BACKGROUND_IMAGE = pygame.image.load("Fondos/Background_03_720.png")
GAME_OVER_IMAGE = pygame.image.load("Fondos/Background_04_720.png")
PLAYER_IMAGE = pygame.image.load("Sprites/Player_02.png")
ENEMIES_IMAGE = pygame.image.load("Sprites/Enemy_02.png")
mixer.music.load("Sound/Menu_00.mp3")
mixer.music.play(-1)
Move_Sound = pygame.mixer.Sound("Sound/Audio/phaserUp5.ogg")
Collision_Sound = pygame.mixer.Sound("Sound/Audio/laser3.ogg")
Font_1 = pygame.font.Font("Fuentes/BLADRMF_.TTF", 20)
Font_2 = pygame.font.Font("Fuentes/BLADRMF_.TTF", 90)
Font_3 = pygame.font.Font("Fuentes/SwipeRaceDemo.ttf", 20)
Font_4 = pygame.font.Font("Fuentes/Miami.ttf", 25)
Font_5 = pygame.font.Font("Fuentes/Real Miami.ttf", 20)
enemy_size = 50
enemy_pos = [random.randint(0,WIDTH-enemy_size), 0]
enemy_list = [enemy_pos]
player_size = 50
player_pos = [WIDTH/2, 620]
SPEED = 10
clock = pygame.time.Clock()
score = 0
menu_1 = True
menu_2 = True
game_over = False
def difficulty(score, SPEED):
if score < 40:
SPEED = 5
elif score < 80:
SPEED = 10
elif score < 120:
SPEED = 15
else:
SPEED = 20
return SPEED
def draw_enemies(enemy_list):
for enemy_pos in enemy_list:
screen.blit(ENEMIES_IMAGE, (enemy_pos[0], enemy_pos[1], enemy_size, enemy_size))
def drop_enemies(enemy_list):
delay = random.random()
if len(enemy_list) < 8 and delay < 0.075:
x_pos = random.randint(0,WIDTH-enemy_size)
y_pos = 0
enemy_list.append([x_pos, y_pos])
def update_enemies(enemy_list, score):
for idx, enemy_pos in enumerate(enemy_list):
if enemy_pos[1] >= 0 and enemy_pos[1] < HEIGHT:
enemy_pos[1] += SPEED
else:
enemy_list.pop(idx)
score += 1
return score
def get_collision(player_pos, enemy_pos):
p_x = player_pos[0]
p_y = player_pos[1]
e_x = enemy_pos[0]
e_y = enemy_pos[1]
if (e_x >= p_x and e_x < (p_x + player_size)) or (p_x >= e_x and p_x < (e_x + enemy_size)):
if (e_y >= p_y and e_y < (p_y + player_size)) or (p_y >= e_y and p_y < (e_y + enemy_size)):
return True
return False
def collision_check(enemy_list, player_pos):
for enemy_pos in enemy_list:
if get_collision(enemy_pos, player_pos):
return True
return False
while menu_1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
Collision_Sound.play()
menu_1 = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_b:
game_over = True
pygame.quit()
text_1 = "Cyberpunk"
text_2 = "Press a to Play"
text_3 = "Use the Arrow Keys to move"
text_4 = "A Game by Alejandro Patino"
text_5 = "A New Dawn"
text_6 = "Press b to Exit"
render_1 = Font_2.render(text_1, 1, ORANGE)
render_2 = Font_3.render(text_2, 1, PURPLE)
render_3 = Font_3.render(text_3, 1, BLUE)
render_4 = Font_5.render(text_4, 1, PURPLE)
render_5 = Font_3.render(text_5, 1, ORANGE)
render_6 = Font_3.render(text_6, 1, ORANGE)
screen.blit(MENU_1_IMAGE, [0,0])
screen.blit(render_1, [WIDTH -920, HEIGHT -510])
screen.blit(render_2, [WIDTH -835, HEIGHT -200])
screen.blit(render_3, [WIDTH -1005, HEIGHT -170])
screen.blit(render_4, [WIDTH -745, HEIGHT -60])
screen.blit(render_5, [WIDTH -780, HEIGHT -420])
screen.blit(render_6, [WIDTH -835, HEIGHT -140])
pygame.display.flip()
while menu_2:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
Collision_Sound.play()
menu_2 = False
text_1 = "In a near future..."
text_2 = "...the androids have taken over the cities..."
text_3 = "...you can run..."
text_4 = "...but there is no scape."
text_5 = "Press A to Play"
render_1 = Font_4.render(text_1, 1, ORANGE)
render_2 = Font_4.render(text_2, 1, ORANGE)
render_3 = Font_4.render(text_3, 1, ORANGE)
render_4 = Font_4.render(text_4, 1, ORANGE)
render_5 = Font_5.render(text_5, 1, PURPLE)
screen.blit(MENU_2_IMAGE, [0,0])
screen.blit(render_1, [WIDTH -940, HEIGHT -480])
screen.blit(render_2, [WIDTH -950, HEIGHT -440])
screen.blit(render_3, [WIDTH -940, HEIGHT -280])
screen.blit(render_4, [WIDTH -940, HEIGHT -240])
screen.blit(render_5, [WIDTH -220, HEIGHT -100])
pygame.display.flip()
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
x = player_pos[0]
y = player_pos[1]
if event.key == pygame.K_LEFT:
x -= 50
Move_Sound.play()
elif event.key == pygame.K_RIGHT:
x += 50
Move_Sound.play()
player_pos = [x,y]
drop_enemies(enemy_list)
score = update_enemies(enemy_list, score)
SPEED = difficulty(score, SPEED)
text = "Score:" + str(score)
render = Font_3.render(text, 1, PURPLE)
screen.blit(BACKGROUND_IMAGE, [0,0])
screen.blit(render, [WIDTH -1150, HEIGHT -35])
screen.blit(PLAYER_IMAGE, [player_pos, player_pos])
if collision_check(enemy_list, player_pos):
game_over = True
Collision_Sound.play()
break
draw_enemies(enemy_list)
clock.tick(50)
pygame.display.update()
if game_over:
game_over = False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_b:
game_over = True
pygame.quit()
text_1 = "Game Over"
text_2 = "Press B to Exit Game"
text_3 = "Thanks for Playing!"
render_1 = Font_2.render(text_1, 1, PURPLE)
render_2 = Font_3.render(text_2, 1, ORANGE)
render_3 = Font_5.render(text_3, 1, BLUE)
screen.blit(GAME_OVER_IMAGE, [0,0])
screen.blit(render_1, [WIDTH -940, HEIGHT -600])
screen.blit(render_2, [WIDTH -890, HEIGHT -100])
screen.blit(render_3, [WIDTH -715, HEIGHT -510])
pygame.display.flip()
pygame.quit()
sys.exit()
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)