import pygame
import random
import sys
pygame.init()
WIDTH = 800
HEIGHT = 600
RED = (255,0,0)
BLUE = (0,0,255)
YELLOW = (255,255,0)
BACKGROUND_COLOR = (139,35,35)
player_size = 40
player_pos = [WIDTH/2, HEIGHT-2*player_size]
enemy_size = 45
enemy_pos = [random.randint(0,WIDTH-enemy_size), 0]
enemy_list = [enemy_pos]
SPEED = 10
screen = pygame.display.set_mode((WIDTH, HEIGHT))
game_over = False
score = 0
########## eklenen ############
ending = False
###############################
clock = pygame.time.Clock()
myFont = pygame.font.SysFont("monospace", 35)
def set_level(score, SPEED):
if score < 20:
SPEED = 5
elif score < 40:
SPEED = 8
elif score < 60:
SPEED = 12
else:
SPEED = 15
return SPEED
# SPEED = score/5 + 1
def drop_enemies(enemy_list):
delay = random.random()
if len(enemy_list) < 10 and delay < 0.1:
x_pos = random.randint(0,WIDTH-enemy_size)
y_pos = 0
enemy_list.append([x_pos, y_pos])
def draw_enemies(enemy_list):
for enemy_pos in enemy_list:
pygame.draw.rect(screen, BLUE, (enemy_pos[0], enemy_pos[1], enemy_size, enemy_size))
def update_enemy_positions(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 collision_check(enemy_list, player_pos):
for enemy_pos in enemy_list:
if detect_collision(enemy_pos, player_pos):
return True
return False
def detect_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
############################################ eklenen ##########################################
def game_end_screen(score):
ending_text = "Oyun Bitti!!!"
score_text = "SCORE:" + str(score)
ending_text_size = myFont.size(ending_text)
score_text_size = myFont.size(score_text)
ending_surface = pygame.Surface((WIDTH/2,HEIGHT/2))
ending_surface.fill(RED)
ending_surface_rect = ending_surface.get_rect()
ending_message = myFont.render(ending_text,False,BLUE)
score_table = myFont.render(score_text,False,BLUE)
ending_message_pos = (ending_surface_rect.width//2 - ending_text_size[0]//2,ending_surface_rect.height//4)
score_table_pos = (ending_surface_rect.width//2 - score_text_size[0]//2,ending_surface_rect.height//4+ending_message_pos[1])
ending_surface.blit(ending_message,ending_message_pos)
ending_surface.blit(score_table,score_table_pos)
return ending_surface
###################################################################################################
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 -= player_size
elif event.key == pygame.K_RIGHT:
x += player_size
player_pos = [x,y]
screen.fill(BACKGROUND_COLOR)
############################################ eklenen ##########################################
if ending:
ending_screen_rect = ending_screen.get_rect()
pos = (WIDTH//2-ending_screen_rect.width//2,HEIGHT//2-ending_screen_rect.height//2)
screen.blit(ending_screen,pos)
else:
score = update_enemy_positions(enemy_list, score)
SPEED = set_level(score, SPEED)
drop_enemies(enemy_list)
draw_enemies(enemy_list)
#################################################################################################
text = "Puan:" + str(score)
label = myFont.render(text, 1, YELLOW)
############################################### degistirildi ####################################
if not ending:
screen.blit(label, (WIDTH-200, HEIGHT-40))
if collision_check(enemy_list, player_pos):
ending = True
ending_screen = game_end_screen(score)
#################################################################################################
pygame.draw.rect(screen, RED, (player_pos[0], player_pos[1], player_size, player_size))
clock.tick(30)
pygame.display.update()bu şekilde deneyebilir misiniz