generated from dvorakmortonxd/pygame-template
108 lines
No EOL
6.6 KiB
Python
108 lines
No EOL
6.6 KiB
Python
#!/usr/bin/env python3
|
|
import pygame, levels # Imports the pygame library and our own levels.py we made for the code to be more readable, obviously
|
|
|
|
window_fps = 60 # the frames per second, this decides how fast the main loop runs per second
|
|
|
|
def main(fps=window_fps): # the main function
|
|
pygame.init() # initializes pygame
|
|
pygame.mixer.init()
|
|
pygame.mixer.music.load('theme.wav')
|
|
pygame.mixer.music.play(-1,0,2000)
|
|
blip = pygame.mixer.Sound('blip.wav')
|
|
tick = 0
|
|
screen_width = 912 # the screen width
|
|
screen_height = 576 # the screen height
|
|
# THE SCREEN IS 19:12 RATIO
|
|
title = "The Larvae" # the title of the window obviously
|
|
lastclickpos = [0, 0] # last position that was clicked, this changes every time you click somewhere on the game window
|
|
screen = pygame.display.set_mode((screen_width, screen_height)) # this initializes the display with the screen_width and screen_height variables
|
|
pygame.display.set_caption(title) # this actually sets the title of the window from the title variable
|
|
basicfont = pygame.font.Font('KiwiSoda.ttf', 50) # this sets a basic font for now, we can change this to anything later on
|
|
bigfont = pygame.font.Font('KiwiSoda.ttf', 80)
|
|
sysfont = pygame.font.SysFont('', 30)
|
|
slightly_smaller_than_bigfont = pygame.font.Font('KiwiSoda.ttf', 70)
|
|
smallfont = pygame.font.Font('KiwiSoda.ttf', 30)
|
|
clock = pygame.time.Clock() # this is used to control the fps of the game if you scroll down the code a bit
|
|
click = False # variable I use to check if u clicked with the mouse when calling level function from levels.
|
|
sheet = pygame.image.load("sprites.png") # the sprite sheet which we then use to load specific sprites from
|
|
level = 1 # the level variable, this also gets changed during the "gameplay"
|
|
running = True # this variable starts the game loop
|
|
while running: # game loop
|
|
levels.oldpx, levels.oldpy = levels.playerx, levels.playery
|
|
screen.fill((0, 0, 0)) # fills the screen with black, so the sprites loaded previously dont overlap and this clears the last frame every "tick"
|
|
for event in pygame.event.get(): # this checks for stuff like key presses and mouse clicks
|
|
if event.type == pygame.QUIT: # what happens when you click the X button on the window
|
|
running = False # poof
|
|
if event.type == pygame.KEYDOWN: # what happens when you press down a key
|
|
if event.key == pygame.K_SLASH:
|
|
levels.dialognum = 13
|
|
pygame.mixer.music.stop()
|
|
level = 2
|
|
if event.key == pygame.K_SPACE:
|
|
if level == 3:
|
|
tickd = 0
|
|
level = 4
|
|
|
|
if level > 3:
|
|
if event.key == pygame.K_w:
|
|
levels.playerYc = -3
|
|
if event.key == pygame.K_a:
|
|
levels.playerXc = -3
|
|
if event.key == pygame.K_s:
|
|
levels.playerYc = +3
|
|
if event.key == pygame.K_d:
|
|
levels.playerXc = +3
|
|
|
|
if event.key == pygame.K_h:
|
|
if levels.dialognum == 9:
|
|
levels.tickd = 0
|
|
levels.dialognum = 10
|
|
if event.key == pygame.K_SPACE:
|
|
if levels.dialognum == 11:
|
|
levels.tickd = 0
|
|
levels.dialognum = 12
|
|
if event.type == pygame.KEYUP:
|
|
if level > 3:
|
|
if event.key == pygame.K_w:
|
|
playerYc = 0
|
|
if event.key == pygame.K_a:
|
|
playerXc = 0
|
|
if event.key == pygame.K_s:
|
|
playerYc = 0
|
|
if event.key == pygame.K_d:
|
|
playerXc = 0
|
|
if event.type == pygame.MOUSEBUTTONDOWN: # what happens when you press down a mouse button
|
|
click = True # sets the click variable to True so level function in levels.py can see
|
|
print(pygame.mouse.get_pos()) # prints out where the mouse is during the click for debugging purposes
|
|
lastclickpos = pygame.mouse.get_pos() # sets the variable to the position you last clicked
|
|
if event.type == pygame.MOUSEBUTTONUP: # what happens when you release a mouse button
|
|
click = False # sets the click variable to False so level function in levels.py can see again
|
|
if level == 0:
|
|
running = False
|
|
if level == 1: # what happens when the level variable is equal to 1
|
|
level = levels.level1(screen, sheet, screen_width, screen_height, lastclickpos, basicfont, pygame.mouse, click, bigfont, level, tick, slightly_smaller_than_bigfont, pygame.mixer.music) # runs the level1 function from levels.py
|
|
if level == 2:
|
|
level = levels.level2(blip, screen, sheet, screen_width, screen_height, lastclickpos, basicfont, pygame.mouse, click, bigfont, level, tick, slightly_smaller_than_bigfont, pygame.mixer.music)
|
|
if level == 3:
|
|
level = levels.level3(blip, screen, sheet, screen_width, screen_height, lastclickpos, basicfont, pygame.mouse, click, bigfont, level, tick, slightly_smaller_than_bigfont, pygame.mixer.music)
|
|
if level == 4:
|
|
level = levels.level4(blip, screen, sheet, screen_width, screen_height, lastclickpos, basicfont, pygame.mouse, click, bigfont, level, tick, slightly_smaller_than_bigfont, pygame.mixer.music)
|
|
fps_text = sysfont.render(str(int(clock.get_fps())), True, (0, 255, 0)) # defines a thing that renders your fps in the top left corner
|
|
#screen.blit(fps_text, (5, 5)) # this actually renders "ftp_text" on the screen at the position (5, 5) which is the top left corner
|
|
if 180 > levels.playerx:
|
|
levels.playerx = 180
|
|
if 615 < levels.playerx:
|
|
levels.playerx = 615
|
|
if 165 > levels.playery:
|
|
levels.playery = 165
|
|
if 275 < levels.playery:
|
|
levels.playery = 275
|
|
levels.playerx += levels.playerXc
|
|
levels.playery += levels.playerYc
|
|
|
|
|
|
pygame.display.flip() # this updates the display so it displays all the new stuff we added
|
|
clock.tick(fps) # this makes sure the game loop runs at the fps we set it to before
|
|
pygame.quit() #this quits our game when the game loop somehow ends, for example by pressing escape or the X button on the window
|
|
if __name__ == "__main__": # this just makes sure that this only runs when you launch it and not when you import it as a module like we imported levels.py at the top
|
|
main() # this actually runs our stuff |