From 37df2cc6ffca5d5d466e60db0d3a33aa2988cd0a Mon Sep 17 00:00:00 2001 From: bramz Date: Sun, 6 Jan 2019 13:05:53 -0500 Subject: [PATCH 1/4] Start sequence, closes #7 --- pharaoh/__main__.py | 53 ++++++++++++++++++-------------------- pharaoh/engine/game.py | 20 ++++++++++++++ pharaoh/player/identity.py | 27 +++++++++++++++++++ 3 files changed, 72 insertions(+), 28 deletions(-) create mode 100644 pharaoh/engine/game.py create mode 100644 pharaoh/player/identity.py diff --git a/pharaoh/__main__.py b/pharaoh/__main__.py index 0b9c3f6..712f742 100644 --- a/pharaoh/__main__.py +++ b/pharaoh/__main__.py @@ -1,5 +1,7 @@ import pygame, random from pygame.locals import * +from engine.game import start_sequence +import time NAME = 'Pharaoh' @@ -26,7 +28,7 @@ TILESIZE = 20 WIDTH = 30 -HEIGHT = 20 +HEIGHT = 50 gamemap = [[DIRT for w in range(WIDTH)] for h in range(HEIGHT)] position = [0,0] @@ -34,41 +36,36 @@ """ Main Entry """ def init() -> None: pygame.init() - screen = pygame.display.set_mode((WIDTH*TILESIZE, HEIGHT*TILESIZE)) + screen = pygame.display.set_mode((500, 500)) pygame.display.set_caption(NAME) - -# screen.fill((255, 255, 255)) - for rw in range(HEIGHT): - for cl in range(WIDTH): - rnum = random.randint(0,15) - if rnum == 0: - tile = NONE - elif rnum == 1 or rnum == 2: - tile = WATER - elif rnum >= 3 and rnum <= 7: - tile = GRASS - else: - tile = DIRT - - gamemap[rw][cl] = tile - done = False - """ Event Loop """ - while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: - done = True -# elif event.type == KEYDOWN: -# if (event.key) == K_RIGHT: -# position[0] += 1 + pygame.quit() + + start_splash(screen) + start_sequence() + + +def start_splash(screen): + """ Title """ + titlefont = pygame.font.SysFont("comicsansms", 72) + title = titlefont.render("Pharaoh", True, BROWN) + screen.blit(title, (250 - title.get_width() // 2, 200 - title.get_height() // 2)) + + """ Pyramid """ + pygame.draw.polygon(screen, BROWN, ( (25, 400), (250, 250), (475,400), 0)) - for row in range(HEIGHT): - for column in range(WIDTH): - pygame.draw.rect(screen, colors[gamemap[row][column]], (column*TILESIZE, row*TILESIZE,TILESIZE,TILESIZE)) + """ Credits """ + footfont = pygame.font.SysFont("comicsansms", 14) + footer = footfont.render("Created by: Brock Ramsey & Jahan Addison", True, WHITE) + screen.blit(footer, (250 - footer.get_width() // 2, 425 - footer.get_height() // 2)) + + pygame.display.update() + time.sleep(5) - pygame.display.update() if __name__ == '__main__': init() diff --git a/pharaoh/engine/game.py b/pharaoh/engine/game.py new file mode 100644 index 0000000..4624d64 --- /dev/null +++ b/pharaoh/engine/game.py @@ -0,0 +1,20 @@ +import player.identity + +""" Game Handlers """ + +def start_sequence(): + gender = player.identity.receive_gender() + name = player.identity.receive_name() + + global ident + ident = player.identity.establish_ident(gender, name) + + engine_loop() + + +def engine_loop(): + handle_sequences() + + +def handle_sequences(): + print("Welcome, " + ident.name) \ No newline at end of file diff --git a/pharaoh/player/identity.py b/pharaoh/player/identity.py new file mode 100644 index 0000000..f544703 --- /dev/null +++ b/pharaoh/player/identity.py @@ -0,0 +1,27 @@ +""" Player Identity """ + +class Identity: + def __init__(self, gender: str, name: str): + self.gender = gender + self.name = name + + def gender(self) -> str: + return self.gender + + def name(self) -> str: + return self.name + + +def receive_gender() -> str: + gender = input("What is your gender? ") + return gender + + +def receive_name() -> str: + name = input("What is your name? ") + return name + + +def establish_ident(gender: str, name: str) -> Identity: + ident = Identity(gender, name) + return ident From 9aa00abf810a11ecf255e91398064fc7eb212f7c Mon Sep 17 00:00:00 2001 From: bramz Date: Sun, 6 Jan 2019 13:15:16 -0500 Subject: [PATCH 2/4] Use constants for display size --- pharaoh/__main__.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pharaoh/__main__.py b/pharaoh/__main__.py index 712f742..bd1b989 100644 --- a/pharaoh/__main__.py +++ b/pharaoh/__main__.py @@ -27,16 +27,14 @@ """ Map constants """ TILESIZE = 20 -WIDTH = 30 -HEIGHT = 50 - -gamemap = [[DIRT for w in range(WIDTH)] for h in range(HEIGHT)] -position = [0,0] +WIDTH = 500 +HEIGHT = 500 +POSITION = [0,0] """ Main Entry """ def init() -> None: pygame.init() - screen = pygame.display.set_mode((500, 500)) + screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption(NAME) done = False From cc9d6b121ea4db29fd0abadc449483c8e32036d0 Mon Sep 17 00:00:00 2001 From: bramz Date: Sun, 6 Jan 2019 14:42:11 -0500 Subject: [PATCH 3/4] Update input methods --- pharaoh/engine/game.py | 9 ++++---- pharaoh/lib/inputs.py | 42 ++++++++++++++++++++++++++++++++++++++ pharaoh/player/identity.py | 14 +++++++++---- 3 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 pharaoh/lib/inputs.py diff --git a/pharaoh/engine/game.py b/pharaoh/engine/game.py index 4624d64..9c256de 100644 --- a/pharaoh/engine/game.py +++ b/pharaoh/engine/game.py @@ -1,10 +1,11 @@ import player.identity + """ Game Handlers """ -def start_sequence(): - gender = player.identity.receive_gender() - name = player.identity.receive_name() +def start_sequence(screen): + gender = player.identity.receive_gender(screen) + name = player.identity.receive_name(screen) global ident ident = player.identity.establish_ident(gender, name) @@ -17,4 +18,4 @@ def engine_loop(): def handle_sequences(): - print("Welcome, " + ident.name) \ No newline at end of file + print("Welcome, " + ident.name) diff --git a/pharaoh/lib/inputs.py b/pharaoh/lib/inputs.py new file mode 100644 index 0000000..bb0a09b --- /dev/null +++ b/pharaoh/lib/inputs.py @@ -0,0 +1,42 @@ +import pygame +from pygame.locals import * + +""" Input handlers """ + +def get_key(): + while 1: + event = pygame.event.poll() + if event.type == KEYDOWN: + return event.key + else: + pass + + +def input_box(screen, message): + "Print a message in a box in the middle of the screen" + font = pygame.font.Font(None,18) + pygame.draw.rect(screen, (0,0,0), + ((screen.get_width() / 2) - 100, + (screen.get_height() / 2) - 10, + 200,20), 0) + pygame.draw.rect(screen, (255,255,255), + ((screen.get_width() / 2) - 102, + (screen.get_height() / 2) - 12, + 204,24), 1) + if len(message) != 0: + screen.blit(font.render(message, 1, (255,255,255)), + ((screen.get_width() / 2) - 100, (screen.get_height() / 2) - 10)) + pygame.display.update() + + +def parse_keys(): + while 1: + inkey = get_key() + if inkey == K_BACKSPACE: + current_string = current_string[0:-1] + elif inkey == K_RETURN: + break + elif inkey == K_MINUS: + current_string.append("_") + elif inkey <= 127: + current_string.append(chr(inkey)) diff --git a/pharaoh/player/identity.py b/pharaoh/player/identity.py index f544703..b4e0f35 100644 --- a/pharaoh/player/identity.py +++ b/pharaoh/player/identity.py @@ -1,3 +1,7 @@ +from pygame.locals import * +import pygame, string +import lib.inputs + """ Player Identity """ class Identity: @@ -12,13 +16,15 @@ def name(self) -> str: return self.name -def receive_gender() -> str: - gender = input("What is your gender? ") +def receive_gender(screen) -> str: + gender = '' + lib.inputs.input_box(screen, "What is your gender? " + gender) return gender -def receive_name() -> str: - name = input("What is your name? ") +def receive_name(screen) -> str: + name = '' + lib.inputs.input_box(screen, "What is your name? " + name) return name From 42166f7436fb292695a601884da3d0acf4d692d4 Mon Sep 17 00:00:00 2001 From: bramz Date: Sun, 6 Jan 2019 17:22:15 -0500 Subject: [PATCH 4/4] Fix sequence handler --- pharaoh/engine/game.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pharaoh/engine/game.py b/pharaoh/engine/game.py index 9c256de..979ffa9 100644 --- a/pharaoh/engine/game.py +++ b/pharaoh/engine/game.py @@ -4,12 +4,6 @@ """ Game Handlers """ def start_sequence(screen): - gender = player.identity.receive_gender(screen) - name = player.identity.receive_name(screen) - - global ident - ident = player.identity.establish_ident(gender, name) - engine_loop() @@ -18,4 +12,7 @@ def engine_loop(): def handle_sequences(): + gender = player.identity.receive_gender(screen) + name = player.identity.receive_name(screen) + ident = player.identity.establish_ident(gender, name) print("Welcome, " + ident.name)