diff --git a/README.md b/README.md index d3c8f2b..e3f1233 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,6 @@ You control the people to your liking, just be aware, it can turn against you! Here I will list all the external resources I will use, most likely, fonts. I make most of my assets by my own. Alright so I think its fair to state I stole some code from my last minijam project at https://git.dvorakmortonxd.dev/dvorakmortonxd/revival-inc , however I dont know if this counts as external resource since, I am literally the one who wrote it. -FONT: https://fontenddev.com/fonts/kiwi-soda/ \ No newline at end of file +FONT: https://fontenddev.com/fonts/kiwi-soda/ +MENU THEME: you may not believe it but it is an edited (paulstretched) version of https://freesound.org/people/justin3am/sounds/403106/ +BLIP SOUND EFFECT: https://freesound.org/people/danieldouch/sounds/466556/ \ No newline at end of file diff --git a/blip.wav b/blip.wav new file mode 100644 index 0000000..17a53db Binary files /dev/null and b/blip.wav differ diff --git a/levels.py b/levels.py index aadbee4..f2a8ba4 100644 --- a/levels.py +++ b/levels.py @@ -1,8 +1,18 @@ from render import load_sprite # this makes it so our function for rendering sprites from sprites.png is available in here import pygame - -def level1(screen, sheet, screen_width, screen_height, lastclickpos, basicfont, mouse, click, big_text, level, tick, slightfont): # the function for our first level, ignore the unused variables here, you can use them when you edit it - screen.blit(load_sprite(sheet, 0, 0, 56, 35, 912, 576), (0, 0)) # this renders a button I made in the sprites.png, its purely for visual purposes so it doesnt matter where you click rn +tickd = 0 +dialognum = 0 +DIALOGTEXT = "UNDEFINED" +def level1(screen, sheet, screen_width, screen_height, lastclickpos, basicfont, mouse, click, big_text, level, tick, slightfont, pygamemixer): # the function for our first level, ignore the unused variables here, you can use them when you edit it + global tickd + tickd += 1 + screen.blit(load_sprite(sheet, 0, 0, 57, 36, 912, 576), (0, 0)) # this renders a button I made in the sprites.png, its purely for visual purposes so it doesnt matter where you click rn + if tickd in range(100,110) or tickd in range(120,130) or tickd in range(300,310) or tickd in range(320,330): + overlay = pygame.Surface(screen.get_size(), pygame.SRCALPHA) + overlay.fill((255, 255, 255, 18)) + screen.blit(overlay, (0, 0)) + elif tickd > 450: + tickd = 0 mainmenu_text = slightfont.render("THE DESTROYER OF CITIES", True, (210, 210, 210)) playb_collision = pygame.Rect(315, 200, 285, 105) exitb_collision = pygame.Rect(315, 350, 285, 105) @@ -10,6 +20,8 @@ def level1(screen, sheet, screen_width, screen_height, lastclickpos, basicfont, screen.blit(load_sprite(sheet, 57, 7, 19, 7, 285, 105), (315, 200)) play_text = basicfont.render("Play", True, (0,0,0)) if click: + tickd = 0 + pygamemixer.stop() level = 2 else: screen.blit(load_sprite(sheet, 57, 0, 19, 7, 285, 105), (315, 200)) @@ -28,6 +40,67 @@ def level1(screen, sheet, screen_width, screen_height, lastclickpos, basicfont, screen.blit(exit_text, (414, 380)) screen.blit(mainmenu_text, (45, 65)) return level # this returns the change we made to the level so that it updates in main.py -def level2(screen, sheet, lastclickpos, basicfont, mouse, click, level): # function for level 2 - print("ur done") # prints out "ur done" +def level2(blip, screen, sheet, screen_width, screen_height, lastclickpos, basicfont, mouse, click, big_text, level, tick, slightfont, pygamemixer): # the function for our first level, ignore the unused variables here, you can use them when you edit it + global tickd, dialognum, DIALOGTEXT + if dialognum != 9: + tickd += 1 + if tickd == 59: + pygame.mixer.Sound.play(blip) + if tickd in range(60,501): + if tickd < 315: + transparency = (tickd-60, tickd-60, tickd-60) + else: + transparency = (255,255,255) + if dialognum == 0: + DIALOGTEXT = "Where am I..." + if dialognum == 1: + DIALOGTEXT = "What am I doing here?!" + if dialognum == 2: + DIALOGTEXT = "Why can't I remember anything?" + if dialognum == 3: + DIALOGTEXT = ". . ." + if dialognum == 4: + DIALOGTEXT = "Wait." + if dialognum == 5: + DIALOGTEXT = "Those aren't my hands." + if dialognum == 6: + DIALOGTEXT = ". . ." + if dialognum == 7: + DIALOGTEXT = "" + screen.blit(load_sprite(sheet, 0, 37, 57,36, 912, 576), (0,0)) + screen.blit(load_sprite(sheet,57,15,8,25, 80, 250), (660, 290)) + screen.blit(load_sprite(sheet, 65, 14, 54, 12, 162, 36), (720, 295)) + if dialognum == 8: + DIALOGTEXT = "Oh..." + screen.blit(load_sprite(sheet, 0, 37, 57,36, 912, 576), (0,0)) + screen.blit(load_sprite(sheet,57,15,8,25, 80, 250), (660, 290)) + screen.blit(load_sprite(sheet, 65, 14, 54, 12, 162, 36), (720, 295)) + dialog_square = pygame.surface.Surface((800, 68), pygame.SRCALPHA) + dialog_square.fill((0, 0, 0)) + screen.blit(dialog_square, (56, 500)) + if dialognum == 9: + DIALOGTEXT = "Press to hide your parasite" + screen.blit(load_sprite(sheet, 0, 37, 57,36, 912, 576), (0,0)) + screen.blit(load_sprite(sheet,57,15,8,25, 80, 250), (660, 290)) + screen.blit(load_sprite(sheet, 65, 14, 54, 12, 162, 36), (720, 295)) + dialog_square = pygame.surface.Surface((800, 68), pygame.SRCALPHA) + dialog_square.fill((0, 0, 0)) + screen.blit(dialog_square, (56, 500)) + dialog = basicfont.render(DIALOGTEXT, True, transparency) + if len(DIALOGTEXT) < 16: + DX = 456-len(DIALOGTEXT)*9 + else: + DX = 456-len(DIALOGTEXT)*10 + if dialognum < 7: + DY = 230 + else: + DY = 510 + screen.blit(dialog, (DX,DY)) + if tickd > 500: + dialognum += 1 + if dialognum > 6: + screen.blit(load_sprite(sheet, 0, 37, 57, 36, 912, 576), (0, 0)) + if dialognum != 7: + pygame.mixer.Sound.play(blip) + tickd = 60 return level # returns the current level set \ No newline at end of file diff --git a/main.py b/main.py index fc2e046..8855d28 100644 --- a/main.py +++ b/main.py @@ -4,17 +4,22 @@ import pygame, levels # Imports the pygame library and our own levels.py we made 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() # initalizes pygame + 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 Destroyer of Cities" # 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 initalizes the display with the screen_width and screen_height variables + 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 @@ -28,8 +33,11 @@ def main(fps=window_fps): # the main function 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_ESCAPE: # what happens when you press escape - running = False # poof + if event.key == pygame.K_ESCAPE: + levels.dialognum += 1 + if event.key == pygame.K_h: + if levels.dialognum == 9: + levels.dialognum = 10 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 @@ -39,14 +47,14 @@ def main(fps=window_fps): # the main function 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) # runs the level1 function from levels.py + 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: - pass + 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) # THE REASON WE CALL IT LIKE THIS INSTEAD OF NORMALLY IS SO WE CAN CHANGE THE LEVEL VARIABLE elif level == 2: # what happens when the level variable is equal to 2 ofc level = levels.level2(screen, sheet, lastclickpos, basicfont, pygame.mouse, click, level) # runs the level2 function from levels.py - fps_text = basicfont.render(str(int(clock.get_fps())), True, (0, 255, 0)) # defines a thing that renders your fps in the top left corner + 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 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 diff --git a/sprites.png b/sprites.png index 6043094..445ecb5 100644 Binary files a/sprites.png and b/sprites.png differ diff --git a/sprites.pxo b/sprites.pxo index eff6434..8f2b5a9 100644 Binary files a/sprites.pxo and b/sprites.pxo differ diff --git a/theme.wav b/theme.wav new file mode 100644 index 0000000..fb2862b Binary files /dev/null and b/theme.wav differ