Home | Code/Games | About me |
---|
an endless game were you dodge incoming bullets
The code:
import pygame from sys import exit from random import randint pygame.init() window_size = [800, 400] screen = pygame.display.set_mode(window_size, 0, 32) pygame.display.set_caption("bullet dodger") icon = pygame.image.load('data/gun.png') pygame.display.set_icon(icon) start_sfx = pygame.mixer.Sound('data/start.wav') shoot_sfx = pygame.mixer.Sound('data/shoot.wav') jump_sfx = pygame.mixer.Sound('data/jump.wav') death_sfx = pygame.mixer.Sound('data/death.wav') background_img = pygame.image.load('data/background.png') ground_img = pygame.image.load('data/ground.png') font = pygame.font.Font('data/Pixeltype.ttf', 50) def menu(): game_name = font.render('bullet dodger', False, (20, 20, 20)) game_name_rect = game_name.get_rect(center = (400, 50)) instructions = font.render('press any button to start', False, (20, 20, 20)) instructions_rect = instructions.get_rect(center = (400, 350)) while 1: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() if event.type == pygame.KEYDOWN: time = int(pygame.time.get_ticks() / 1000) start_sfx.play() game(time) screen.fill((230, 230, 230)) player_img_scaled = pygame.image.load('data\player_resized.png') player_img_scaled_rect = player_img_scaled.get_rect(center = (400, 200)) screen.blit(player_img_scaled, player_img_scaled_rect) screen.blit(game_name, game_name_rect) screen.blit(instructions, instructions_rect) pygame.display.update() def game(start_time = 0): player_img = pygame.image.load('data/player.png') player_rect = player_img.get_rect(midbottom = (50, 300)) gun_img = pygame.image.load('data/gun.png') gun_rect = gun_img.get_rect(bottomright = (800, 300)) bullet_img = pygame.image.load('data/bullet.png') bullet_rect = bullet_img.get_rect(topleft = gun_rect.topright) score = 0 score_text = font.render(f'score: {score}', False, (20, 20, 20)) score_rect = score_text.get_rect(center = (400, 50)) gravity = 0 can_jump = False running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() if (event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE and can_jump) or (event.type == pygame.KEYDOWN and event.key == pygame.K_UP and can_jump): gravity = -7.5 jump_sfx.play() can_jump = False score = int(pygame.time.get_ticks() / 1000) - start_time score_text = font.render(f'score: {score}', False, (20, 20, 20)) gravity += 0.25 player_rect.y += gravity if player_rect.bottom >= 300: player_rect.bottom = 300; gravity = 0; can_jump = True screen.blit(background_img, (0,0)) screen.blit(ground_img, (0, 300)) screen.blit(player_img, player_rect) screen.blit(score_text, score_rect) bullet_rect.x -= 2.25 + (score / 10) screen.blit(bullet_img, bullet_rect) if bullet_rect.x <= 0: places_list = [[800, 300], [800, 300], [800, 250]] place = places_list[randint(0, 2)] gun_rect.bottomright = place bullet_rect.topleft = gun_rect.topright shoot_sfx.play() if bullet_rect.colliderect(player_rect): death_sfx.play(); dead(score) screen.blit(gun_img, gun_rect) pygame.display.update() else: menu() def dead(score): death_text = font.render(f'score: {score}', False, (20, 20, 20)) death_text_rect = death_text.get_rect(center = (400, 50)) instructions = font.render('press any button to restart', False, (20, 20, 20)) instructions_rect = instructions.get_rect(center = (400, 350)) while 1: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() if event.type == pygame.KEYDOWN: time = int(pygame.time.get_ticks() / 1000) start_sfx.play() game(time) screen.fill((230, 230, 230)) player_img_scaled = pygame.image.load('data\player_resized_dead.png') player_img_scaled_rect = player_img_scaled.get_rect(center = (400, 200)) screen.blit(player_img_scaled, player_img_scaled_rect) screen.blit(death_text, death_text_rect) screen.blit(instructions, instructions_rect) pygame.display.update() menu()