Skip to content

Instantly share code, notes, and snippets.

@donno2048
Last active September 23, 2022 13:49
Show Gist options
  • Save donno2048/fcda66673377d374a6695ea2c48f3cf7 to your computer and use it in GitHub Desktop.
Save donno2048/fcda66673377d374a6695ea2c48f3cf7 to your computer and use it in GitHub Desktop.
Very simple game
from os import environ
environ['PYGAME_HIDE_SUPPORT_PROMPT'] = '1'
from pygame import Rect, init, K_LEFT, K_RIGHT, K_UP, K_DOWN, K_RETURN, K_ESCAPE, K_r, K_p, QUIT
from pygame.event import get
from pygame.font import Font
from pygame.key import get_pressed
from pygame.display import set_mode, flip
from pygame.draw import rect
from pygame.time import delay
from random import randint, choice
# from pygame.mixer import init as m_init, music
# m_init()
# music.load("bg.mp3")
# music.play(-1, 0)
init()
screen = set_mode((800, 600))
player = Rect(0, 0, 50, 50)
enemies = []
enemies_speed = []
font = Font(None, 36)
highscore = 0
game_over = True
def add_enemy():
global enemies, enemies_speed
enemy = Rect(0, 0, 50, 50)
if player.left > 100:
enemy.x = randint(0, player.left - 100)
if enemy.right < 700:
enemy.x = choice([enemy.x, randint(enemy.right + 50, 750)])
else:
enemy.x = randint(player.right + 50, 750)
if player.top > 100:
enemy.y = randint(0, player.top - 100)
if enemy.bottom < 500:
enemy.y = choice([enemy.y, randint(enemy.bottom + 50, 550)])
else:
enemy.y = randint(player.bottom + 50, 550)
enemies.append(enemy)
enemies_speed.append((choice([-1, 1]) * randint(1, 5), choice([-1, 1]) * randint(1, 5)))
def main_menu():
global player, enemies, enemies_speed
screen.blit(font.render(f"Press ENTER to {'play' if game_over else 'continue'}", 1, (0, 0, 255)), (100, 100))
screen.blit(font.render("Press ESC to exit", 1, (0, 0, 255)), (120, 200))
screen.blit(font.render("Score: " + str(len(enemies)), 1, (0, 0, 255)), (140, 300))
screen.blit(font.render("Highscore: " + str(highscore), 1, (0, 0, 255)), (160, 400))
flip()
if game_over:
player = Rect(0, 0, 50, 50)
enemies = []
enemies_speed = []
while True:
for e in get():
if e.type == QUIT:
exit()
keys = get_pressed()
if keys[K_RETURN]:
play()
break
if keys[K_ESCAPE]:
exit()
def play():
global player, enemies, enemies_speed, highscore, game_over
running, counter, game_over = True, 0, True
while running:
for e in get():
if e.type == QUIT:
exit()
keys = get_pressed()
if keys[K_LEFT]: player.x -= 5
if keys[K_RIGHT]: player.x += 5
if keys[K_UP]: player.y -= 5
if keys[K_DOWN]: player.y += 5
if keys[K_r]:
player = Rect(0, 0, 50, 50)
enemies = []
enemies_speed = []
if keys[K_p]:
running = False
game_over = False
if keys[K_ESCAPE]:
exit()
if player.bottom > 600: player.y = 0
if player.top < 0: player.y = 600 - player.height
if player.right > 800: player.x = 0
if player.left < 0: player.x = 800 - player.width
screen.fill((0, 0, 0))
for i in range(len(enemies)):
enemies[i] = enemies[i].move(enemies_speed[i])
if (enemies[i].left < 0 or enemies[i].right > 800) and (enemies[i].top < 0 or enemies[i].bottom > 600):
enemies_speed[i] = (-enemies_speed[i][0], -enemies_speed[i][1])
elif enemies[i].left < 0 or enemies[i].right > 800:
enemies_speed[i] = (-enemies_speed[i][0], enemies_speed[i][1])
elif enemies[i].top < 0 or enemies[i].bottom > 600:
enemies_speed[i] = (enemies_speed[i][0], -enemies_speed[i][1])
rect(screen, (255, 0, 0), enemies[i])
rect(screen, (0, 255, 0), player)
counter = (counter + 1) % 60
if not counter: add_enemy()
for i in range(len(enemies)):
if enemies[i].colliderect(player):
running = False
screen.blit(font.render("Score: " + str(len(enemies)), 1, (0, 0, 255)), (0, 0))
flip()
delay((20 + 1000 * (not running)) * game_over)
highscore = max(highscore, len(enemies))
while True:
main_menu()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment