From 329c4a022cbeb8386b3ae0f7bd1e1717d7cd9e87 Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 18:46:24 -0400 Subject: [PATCH 1/9] renamed data directory to pocket_friends to avoid conflict --- pocket_friends.py | 4 ++-- {data => pocket_friends}/__init__.py | 0 {data => pocket_friends}/development/FakeGPIO.py | 0 {data => pocket_friends}/development/__init__.py | 0 {data => pocket_friends}/development/button_test.py | 0 {data => pocket_friends}/development/dev_menu.py | 8 ++++---- {data => pocket_friends}/development/menus.py | 0 {data => pocket_friends}/game.py | 2 +- {data => pocket_friends}/gpio_handler.py | 2 +- 9 files changed, 8 insertions(+), 8 deletions(-) rename {data => pocket_friends}/__init__.py (100%) rename {data => pocket_friends}/development/FakeGPIO.py (100%) rename {data => pocket_friends}/development/__init__.py (100%) rename {data => pocket_friends}/development/button_test.py (100%) rename {data => pocket_friends}/development/dev_menu.py (95%) rename {data => pocket_friends}/development/menus.py (100%) rename {data => pocket_friends}/game.py (99%) rename {data => pocket_friends}/gpio_handler.py (97%) diff --git a/pocket_friends.py b/pocket_friends.py index 3ee8203..6b123d7 100644 --- a/pocket_friends.py +++ b/pocket_friends.py @@ -3,8 +3,8 @@ Launch script for Pocket Friends. """ import pygame import sys -from data.game import main as game_main -from data.development.dev_menu import main as dev_menu_main +from pocket_friends.game import main as game_main +from pocket_friends.development.dev_menu import main as dev_menu_main enable_dev = False diff --git a/data/__init__.py b/pocket_friends/__init__.py similarity index 100% rename from data/__init__.py rename to pocket_friends/__init__.py diff --git a/data/development/FakeGPIO.py b/pocket_friends/development/FakeGPIO.py similarity index 100% rename from data/development/FakeGPIO.py rename to pocket_friends/development/FakeGPIO.py diff --git a/data/development/__init__.py b/pocket_friends/development/__init__.py similarity index 100% rename from data/development/__init__.py rename to pocket_friends/development/__init__.py diff --git a/data/development/button_test.py b/pocket_friends/development/button_test.py similarity index 100% rename from data/development/button_test.py rename to pocket_friends/development/button_test.py diff --git a/data/development/dev_menu.py b/pocket_friends/development/dev_menu.py similarity index 95% rename from data/development/dev_menu.py rename to pocket_friends/development/dev_menu.py index 916f663..3c9b35b 100644 --- a/data/development/dev_menu.py +++ b/pocket_friends/development/dev_menu.py @@ -1,7 +1,7 @@ """ Development menu for the game on Raspberry Pi. NOTE: THIS DOES NOTHING ON A COMPUTER! """ -import data.game +import pocket_friends.game import importlib.util import os import pygame @@ -16,7 +16,7 @@ try: importlib.util.find_spec('RPi.GPIO') import RPi.GPIO as GPIO except ImportError: - import data.development.FakeGPIO as GPIO + import pocket_friends.development.FakeGPIO as GPIO # Global variable to keep track of the current menu. menu = 'main' @@ -43,7 +43,7 @@ def start_game(): Cleans the GPIO and starts the game. """ GPIOHandler.teardown() - data.game.main() + pocket_friends.game.main() pygame.quit() GPIOHandler.setup() @@ -95,7 +95,7 @@ def main(): # The following defines all of the options in the various different menus. - main_menu = Menu('Pocket Friends Dev Menu {0}\nGame Version {1}'.format(dev_version, data.game.version)) + main_menu = Menu('Pocket Friends Dev Menu {0}\nGame Version {1}'.format(dev_version, pocket_friends.game.version)) main_menu.add_option(Menu.Option('Start Game', start_game)) main_menu.add_option(Menu.Option('Button Test', run_button_test)) main_menu.add_option(Menu.Option('Restart Dev Menu', quit_with_error)) diff --git a/data/development/menus.py b/pocket_friends/development/menus.py similarity index 100% rename from data/development/menus.py rename to pocket_friends/development/menus.py diff --git a/data/game.py b/pocket_friends/game.py similarity index 99% rename from data/game.py rename to pocket_friends/game.py index b45bbba..ca1614b 100644 --- a/data/game.py +++ b/pocket_friends/game.py @@ -108,7 +108,7 @@ try: importlib.util.find_spec('RPi.GPIO') import RPi.GPIO as GPIO except ImportError: - import data.development.FakeGPIO as GPIO + import pocket_friends.development.FakeGPIO as GPIO def game(): diff --git a/data/gpio_handler.py b/pocket_friends/gpio_handler.py similarity index 97% rename from data/gpio_handler.py rename to pocket_friends/gpio_handler.py index 185df5a..f8cd603 100644 --- a/data/gpio_handler.py +++ b/pocket_friends/gpio_handler.py @@ -8,7 +8,7 @@ try: importlib.util.find_spec('RPi.GPIO') import RPi.GPIO as GPIO except ImportError: - import data.development.FakeGPIO as GPIO + import pocket_friends.development.FakeGPIO as GPIO class Constants: From 4e7e37177bca1d402432c3ea6c26f4f23db27895 Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 20:08:15 -0400 Subject: [PATCH 2/9] changed project file structure to better fit python standards --- pocket_friends.py | 25 --------- pocket_friends/__init__.py | 2 +- pocket_friends/__main__.py | 31 +++++++++++ pocket_friends/development/FakeGPIO.py | 2 +- pocket_friends/development/button_test.py | 2 +- pocket_friends/development/dev_menu.py | 12 ++--- pocket_friends/game_files/__init__.py | 0 pocket_friends/{ => game_files}/game.py | 50 +++++++++--------- pocket_friends/hardware/__init__.py | 0 pocket_friends/{ => hardware}/gpio_handler.py | 0 .../resources}/fonts/5Pts5.ttf | Bin .../resources}/images/bg.png | Bin .../resources}/images/clock_selector.png | Bin .../resources}/images/debug/invalid.png | Bin .../images/egg_images/blue/blue.png | Bin .../images/egg_images/dev_egg/dev_egg_0.png | Bin .../images/egg_images/dev_egg/dev_egg_1.png | Bin .../images/egg_images/green/green.png | Bin .../images/egg_images/indigo/indigo.png | Bin .../images/egg_images/orange/orange.png | Bin .../images/egg_images/rainbow/rainbow.png | Bin .../resources}/images/egg_images/red/red.png | Bin .../images/egg_images/violet/violet.png | Bin .../images/egg_images/white/white.png | Bin .../images/egg_images/yellow/yellow.png | Bin .../resources}/images/icon.png | Bin .../resources}/images/promotional.png | Bin .../resources}/images/title.png | Bin 28 files changed, 65 insertions(+), 59 deletions(-) delete mode 100644 pocket_friends.py create mode 100644 pocket_friends/__main__.py create mode 100644 pocket_friends/game_files/__init__.py rename pocket_friends/{ => game_files}/game.py (89%) create mode 100644 pocket_friends/hardware/__init__.py rename pocket_friends/{ => hardware}/gpio_handler.py (100%) rename {resources => pocket_friends/resources}/fonts/5Pts5.ttf (100%) rename {resources => pocket_friends/resources}/images/bg.png (100%) rename {resources => pocket_friends/resources}/images/clock_selector.png (100%) rename {resources => pocket_friends/resources}/images/debug/invalid.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/blue/blue.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/dev_egg/dev_egg_0.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/dev_egg/dev_egg_1.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/green/green.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/indigo/indigo.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/orange/orange.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/rainbow/rainbow.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/red/red.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/violet/violet.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/white/white.png (100%) rename {resources => pocket_friends/resources}/images/egg_images/yellow/yellow.png (100%) rename {resources => pocket_friends/resources}/images/icon.png (100%) rename {resources => pocket_friends/resources}/images/promotional.png (100%) rename {resources => pocket_friends/resources}/images/title.png (100%) diff --git a/pocket_friends.py b/pocket_friends.py deleted file mode 100644 index 6b123d7..0000000 --- a/pocket_friends.py +++ /dev/null @@ -1,25 +0,0 @@ -""" -Launch script for Pocket Friends. -""" -import pygame -import sys -from pocket_friends.game import main as game_main -from pocket_friends.development.dev_menu import main as dev_menu_main - -enable_dev = False - -if __name__ == '__main__': - - # enable dev mode if --dev argument is passed - if len(sys.argv) > 0: - for args in sys.argv: - if args == '--dev': - enable_dev = True - - if not enable_dev: - game_main() - else: - dev_menu_main() - - pygame.quit() - sys.exit() diff --git a/pocket_friends/__init__.py b/pocket_friends/__init__.py index 975cbfa..498af1e 100644 --- a/pocket_friends/__init__.py +++ b/pocket_friends/__init__.py @@ -1 +1 @@ -"""Imports classes for running the game.""" +"""Imports classes for running the hardware.""" diff --git a/pocket_friends/__main__.py b/pocket_friends/__main__.py new file mode 100644 index 0000000..387d89b --- /dev/null +++ b/pocket_friends/__main__.py @@ -0,0 +1,31 @@ +""" +Launch script for Pocket Friends. +""" +import pygame +import sys +from pocket_friends.game_files.game import main as game_main +from pocket_friends.development.dev_menu import main as dev_menu_main + + +def main(): + enable_dev = False + + if __name__ == '__main__': + + # enable dev mode if --dev argument is passed + if len(sys.argv) > 0: + for args in sys.argv: + if args == '--dev': + enable_dev = True + + if not enable_dev: + game_main() + else: + dev_menu_main() + + pygame.quit() + sys.exit() + + +if __name__ == "__main__": + main() diff --git a/pocket_friends/development/FakeGPIO.py b/pocket_friends/development/FakeGPIO.py index c974005..23a82c6 100644 --- a/pocket_friends/development/FakeGPIO.py +++ b/pocket_friends/development/FakeGPIO.py @@ -1,6 +1,6 @@ """ Module used to fake the RPi.GPIO module so that -the game can be run without the actual hardware. +the hardware can be run without the actual hardware. """ # Constants used by RPi.GPIO diff --git a/pocket_friends/development/button_test.py b/pocket_friends/development/button_test.py index b89813b..159627b 100644 --- a/pocket_friends/development/button_test.py +++ b/pocket_friends/development/button_test.py @@ -2,7 +2,7 @@ Module to test the GPIO input on the Raspberry Pi. """ from collections import deque -from ..gpio_handler import Constants, GPIOHandler +from pocket_friends.hardware.gpio_handler import Constants, GPIOHandler def button_test(): diff --git a/pocket_friends/development/dev_menu.py b/pocket_friends/development/dev_menu.py index 3c9b35b..8f638d7 100644 --- a/pocket_friends/development/dev_menu.py +++ b/pocket_friends/development/dev_menu.py @@ -1,14 +1,14 @@ """ -Development menu for the game on Raspberry Pi. NOTE: THIS DOES NOTHING ON A COMPUTER! +Development menu for the hardware on Raspberry Pi. NOTE: THIS DOES NOTHING ON A COMPUTER! """ -import pocket_friends.game +import pocket_friends.game_files.game import importlib.util import os import pygame import time from .button_test import button_test from .menus import Menu -from ..gpio_handler import GPIOHandler, Constants +from pocket_friends.hardware.gpio_handler import GPIOHandler, Constants dev_version = '0.0.1' @@ -40,10 +40,10 @@ def clear_screen(): def start_game(): """ - Cleans the GPIO and starts the game. + Cleans the GPIO and starts the hardware. """ GPIOHandler.teardown() - pocket_friends.game.main() + pocket_friends.game_files.game.main() pygame.quit() GPIOHandler.setup() @@ -95,7 +95,7 @@ def main(): # The following defines all of the options in the various different menus. - main_menu = Menu('Pocket Friends Dev Menu {0}\nGame Version {1}'.format(dev_version, pocket_friends.game.version)) + main_menu = Menu('Pocket Friends Dev Menu {0}\nGame Version {1}'.format(dev_version, pocket_friends.game_files.game.version)) main_menu.add_option(Menu.Option('Start Game', start_game)) main_menu.add_option(Menu.Option('Button Test', run_button_test)) main_menu.add_option(Menu.Option('Restart Dev Menu', quit_with_error)) diff --git a/pocket_friends/game_files/__init__.py b/pocket_friends/game_files/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pocket_friends/game.py b/pocket_friends/game_files/game.py similarity index 89% rename from pocket_friends/game.py rename to pocket_friends/game_files/game.py index ca1614b..a897ad7 100644 --- a/pocket_friends/game.py +++ b/pocket_friends/game_files/game.py @@ -1,5 +1,5 @@ """ -Main file for the entire game. Controls everything except for GPIO input. +Main file for the entire hardware. Controls everything except for GPIO input. """ from collections import deque import importlib.util @@ -7,7 +7,7 @@ import json import os import pygame from pygame.locals import * -from .gpio_handler import Constants, GPIOHandler +from pocket_friends.hardware.gpio_handler import Constants, GPIOHandler version = '0.0.1' game_fps = 16 @@ -15,7 +15,7 @@ game_fps = 16 class FileHandler: """ - Class that handles the game attributes and save files. + Class that handles the hardware attributes and save files. """ def __init__(self): @@ -69,7 +69,7 @@ class SelectionEgg(pygame.sprite.Sprite): def __init__(self, egg_color): pygame.sprite.Sprite.__init__(self) - image_directory = 'resources/images/egg_images/{0}'.format(egg_color) + image_directory = 'pocket_friends/resources/images/egg_images/{0}'.format(egg_color) # Load the egg from the given color and get the bounding rectangle for the image. self.images = [] @@ -113,14 +113,14 @@ except ImportError: def game(): """ - Starts the game. + Starts the hardware. """ pygame.init() # Hide the cursor for the Pi display. pygame.mouse.set_visible(False) - # The game is normally rendered at 80 pixels and upscaled from there. If changing displays, change the + # The hardware is normally rendered at 80 pixels and upscaled from there. If changing displays, change the # screen_size to reflect what the resolution of the new display is. rendered_size = 80 screen_size = 800 @@ -133,10 +133,10 @@ def game(): clock = pygame.time.Clock() - # Font used for small text in the game. Bigger text is usually image files. - small_font = pygame.font.Font('resources/fonts/5Pts5.ttf', 10) + # Font used for small text in the hardware. Bigger text is usually image files. + small_font = pygame.font.Font('pocket_friends/resources/fonts/5Pts5.ttf', 10) - # Default game state when the game first starts. + # Default hardware state when the hardware first starts. game_state = 'title' running = True file_handler = FileHandler() @@ -147,7 +147,7 @@ def game(): # Start the GPIO handler to take in buttons from the RPi HAT. GPIOHandler.setup() - # Dev code used to exit the game. Default Down, Down, Up, Up, Down, Down, Up, Up, A, A, B + # Dev code used to exit the hardware. Default Down, Down, Up, Up, Down, Down, Up, Up, A, A, B dev_code = deque() for button in [Constants.buttons.get('j_d'), Constants.buttons.get('j_d'), Constants.buttons.get('j_u'), Constants.buttons.get('j_u'), Constants.buttons.get('j_d'), Constants.buttons.get('j_d'), @@ -177,9 +177,9 @@ def game(): def draw_bg(): """ - Draws the main game background image onto a given surface. + Draws the main hardware background image onto a given surface. """ - bg_image = pygame.image.load('resources/images/bg.png').convert() + bg_image = pygame.image.load('pocket_friends/resources/images/bg.png').convert() surface.blit(bg_image, (0, 0)) def log_button(pressed_button): @@ -226,7 +226,7 @@ def game(): def keyboard_handler(): """ - Simulates key presses to GPIO button presses. Also handles quitting the game. + Simulates key presses to GPIO button presses. Also handles quitting the hardware. """ nonlocal running @@ -254,10 +254,10 @@ def game(): def pre_handler(): """ - Runs at the beginning of each loop, handles drawing the background, controlling game speed, and + Runs at the beginning of each loop, handles drawing the background, controlling hardware speed, and controlling the GPIO button inputs and keyboard handler """ - # Regulate the speed of the game. + # Regulate the speed of the hardware. clock.tick(game_fps) # Handle all inputs for both debugging and real GPIO button presses. @@ -274,11 +274,11 @@ def game(): pre_handler() # Draw the title image in the middle of the screen. - title_image = pygame.image.load('resources/images/title.png').convert_alpha() + title_image = pygame.image.load('pocket_friends/resources/images/title.png').convert_alpha() surface.blit(title_image, (0, 0)) draw() - # Show the title for 1 second then move on to the initialization phase of the game. + # Show the title for 1 second then move on to the initialization phase of the hardware. pygame.time.wait(1000) game_state = 'init' @@ -294,8 +294,8 @@ def game(): # Read the save file. file_handler.read_save() - # Determines if it is a new game or not by looking at the evolution stage. If it is -1, the egg has - # not been created yet, and the game sends you to the egg selection screen. If not, the game sends + # Determines if it is a new hardware or not by looking at the evolution stage. If it is -1, the egg has + # not been created yet, and the hardware sends you to the egg selection screen. If not, the hardware sends # you to the playground. if file_handler.attributes['evolution_stage'] == -1: game_state = 'egg_select' @@ -419,7 +419,7 @@ def game(): submenu = 'egg_info' # Draws the cursor on screen. - cursor = pygame.image.load('resources/images/clock_selector.png').convert_alpha() + cursor = pygame.image.load('pocket_friends/resources/images/clock_selector.png').convert_alpha() surface.blit(cursor, get_cursor_coords(selected)) draw() @@ -430,7 +430,7 @@ def game(): for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == Constants.buttons.get('a'): - # Go to an invalid game state if continuing. + # Go to an invalid hardware state if continuing. game_state = None if event.key == Constants.buttons.get('b'): # Go back to the egg selection screen. @@ -446,17 +446,17 @@ def game(): game_state = None else: - # Error screen. This appears when an invalid game state has been selected. + # Error screen. This appears when an invalid hardware state has been selected. all_sprites.empty() - frames_passed = 0 # Counter for frames, helps ensure the game isnt frozen. + frames_passed = 0 # Counter for frames, helps ensure the hardware isnt frozen. while running and game_state != 'title': pre_handler() # Draw the error screen - error_screen = pygame.image.load('resources/images/debug/invalid.png').convert_alpha() + error_screen = pygame.image.load('pocket_friends/resources/images/debug/invalid.png').convert_alpha() surface.blit(error_screen, (0, -8)) # Counts the frames passed. Resets every second. @@ -479,7 +479,7 @@ def game(): def main(): """ - Calls the game() function to start the game. + Calls the hardware() function to start the hardware. """ game() diff --git a/pocket_friends/hardware/__init__.py b/pocket_friends/hardware/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pocket_friends/gpio_handler.py b/pocket_friends/hardware/gpio_handler.py similarity index 100% rename from pocket_friends/gpio_handler.py rename to pocket_friends/hardware/gpio_handler.py diff --git a/resources/fonts/5Pts5.ttf b/pocket_friends/resources/fonts/5Pts5.ttf similarity index 100% rename from resources/fonts/5Pts5.ttf rename to pocket_friends/resources/fonts/5Pts5.ttf diff --git a/resources/images/bg.png b/pocket_friends/resources/images/bg.png similarity index 100% rename from resources/images/bg.png rename to pocket_friends/resources/images/bg.png diff --git a/resources/images/clock_selector.png b/pocket_friends/resources/images/clock_selector.png similarity index 100% rename from resources/images/clock_selector.png rename to pocket_friends/resources/images/clock_selector.png diff --git a/resources/images/debug/invalid.png b/pocket_friends/resources/images/debug/invalid.png similarity index 100% rename from resources/images/debug/invalid.png rename to pocket_friends/resources/images/debug/invalid.png diff --git a/resources/images/egg_images/blue/blue.png b/pocket_friends/resources/images/egg_images/blue/blue.png similarity index 100% rename from resources/images/egg_images/blue/blue.png rename to pocket_friends/resources/images/egg_images/blue/blue.png diff --git a/resources/images/egg_images/dev_egg/dev_egg_0.png b/pocket_friends/resources/images/egg_images/dev_egg/dev_egg_0.png similarity index 100% rename from resources/images/egg_images/dev_egg/dev_egg_0.png rename to pocket_friends/resources/images/egg_images/dev_egg/dev_egg_0.png diff --git a/resources/images/egg_images/dev_egg/dev_egg_1.png b/pocket_friends/resources/images/egg_images/dev_egg/dev_egg_1.png similarity index 100% rename from resources/images/egg_images/dev_egg/dev_egg_1.png rename to pocket_friends/resources/images/egg_images/dev_egg/dev_egg_1.png diff --git a/resources/images/egg_images/green/green.png b/pocket_friends/resources/images/egg_images/green/green.png similarity index 100% rename from resources/images/egg_images/green/green.png rename to pocket_friends/resources/images/egg_images/green/green.png diff --git a/resources/images/egg_images/indigo/indigo.png b/pocket_friends/resources/images/egg_images/indigo/indigo.png similarity index 100% rename from resources/images/egg_images/indigo/indigo.png rename to pocket_friends/resources/images/egg_images/indigo/indigo.png diff --git a/resources/images/egg_images/orange/orange.png b/pocket_friends/resources/images/egg_images/orange/orange.png similarity index 100% rename from resources/images/egg_images/orange/orange.png rename to pocket_friends/resources/images/egg_images/orange/orange.png diff --git a/resources/images/egg_images/rainbow/rainbow.png b/pocket_friends/resources/images/egg_images/rainbow/rainbow.png similarity index 100% rename from resources/images/egg_images/rainbow/rainbow.png rename to pocket_friends/resources/images/egg_images/rainbow/rainbow.png diff --git a/resources/images/egg_images/red/red.png b/pocket_friends/resources/images/egg_images/red/red.png similarity index 100% rename from resources/images/egg_images/red/red.png rename to pocket_friends/resources/images/egg_images/red/red.png diff --git a/resources/images/egg_images/violet/violet.png b/pocket_friends/resources/images/egg_images/violet/violet.png similarity index 100% rename from resources/images/egg_images/violet/violet.png rename to pocket_friends/resources/images/egg_images/violet/violet.png diff --git a/resources/images/egg_images/white/white.png b/pocket_friends/resources/images/egg_images/white/white.png similarity index 100% rename from resources/images/egg_images/white/white.png rename to pocket_friends/resources/images/egg_images/white/white.png diff --git a/resources/images/egg_images/yellow/yellow.png b/pocket_friends/resources/images/egg_images/yellow/yellow.png similarity index 100% rename from resources/images/egg_images/yellow/yellow.png rename to pocket_friends/resources/images/egg_images/yellow/yellow.png diff --git a/resources/images/icon.png b/pocket_friends/resources/images/icon.png similarity index 100% rename from resources/images/icon.png rename to pocket_friends/resources/images/icon.png diff --git a/resources/images/promotional.png b/pocket_friends/resources/images/promotional.png similarity index 100% rename from resources/images/promotional.png rename to pocket_friends/resources/images/promotional.png diff --git a/resources/images/title.png b/pocket_friends/resources/images/title.png similarity index 100% rename from resources/images/title.png rename to pocket_friends/resources/images/title.png From af7a4f0a8020bcb8f98375eb4582112543fc2a36 Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 21:42:33 -0400 Subject: [PATCH 3/9] changed some imports, blanked out all __init__.py files --- .gitignore | 6 ++--- pocket_friends/__init__.py | 1 - pocket_friends/__main__.py | 30 +++++++++-------------- pocket_friends/development/__init__.py | 1 - pocket_friends/development/button_test.py | 2 +- pocket_friends/development/dev_menu.py | 2 +- pocket_friends/game_files/game.py | 4 +-- 7 files changed, 19 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index f21358b..2fa2403 100644 --- a/.gitignore +++ b/.gitignore @@ -128,8 +128,8 @@ dmypy.json # Pyre type checker .pyre/ -# Save file -/save.json - # pocket-friends compile script /compile.bat + +# save file +/pocket_friends/save.json diff --git a/pocket_friends/__init__.py b/pocket_friends/__init__.py index 498af1e..e69de29 100644 --- a/pocket_friends/__init__.py +++ b/pocket_friends/__init__.py @@ -1 +0,0 @@ -"""Imports classes for running the hardware.""" diff --git a/pocket_friends/__main__.py b/pocket_friends/__main__.py index 387d89b..8c2d29f 100644 --- a/pocket_friends/__main__.py +++ b/pocket_friends/__main__.py @@ -7,25 +7,19 @@ from pocket_friends.game_files.game import main as game_main from pocket_friends.development.dev_menu import main as dev_menu_main -def main(): +if __name__ == "__main__": enable_dev = False - if __name__ == '__main__': + # enable dev mode if --dev argument is passed + if len(sys.argv) > 0: + for args in sys.argv: + if args == '--dev': + enable_dev = True - # enable dev mode if --dev argument is passed - if len(sys.argv) > 0: - for args in sys.argv: - if args == '--dev': - enable_dev = True + if not enable_dev: + game_main() + else: + dev_menu_main() - if not enable_dev: - game_main() - else: - dev_menu_main() - - pygame.quit() - sys.exit() - - -if __name__ == "__main__": - main() + pygame.quit() + sys.exit() diff --git a/pocket_friends/development/__init__.py b/pocket_friends/development/__init__.py index 2b19ec2..e69de29 100644 --- a/pocket_friends/development/__init__.py +++ b/pocket_friends/development/__init__.py @@ -1 +0,0 @@ -"""Initializes all classes needed for the development environment, and faking GPIO inputs.""" diff --git a/pocket_friends/development/button_test.py b/pocket_friends/development/button_test.py index 159627b..f9c7ee5 100644 --- a/pocket_friends/development/button_test.py +++ b/pocket_friends/development/button_test.py @@ -2,7 +2,7 @@ Module to test the GPIO input on the Raspberry Pi. """ from collections import deque -from pocket_friends.hardware.gpio_handler import Constants, GPIOHandler +from ..hardware.gpio_handler import Constants, GPIOHandler def button_test(): diff --git a/pocket_friends/development/dev_menu.py b/pocket_friends/development/dev_menu.py index 8f638d7..10911d2 100644 --- a/pocket_friends/development/dev_menu.py +++ b/pocket_friends/development/dev_menu.py @@ -8,7 +8,7 @@ import pygame import time from .button_test import button_test from .menus import Menu -from pocket_friends.hardware.gpio_handler import GPIOHandler, Constants +from ..hardware.gpio_handler import GPIOHandler, Constants dev_version = '0.0.1' diff --git a/pocket_friends/game_files/game.py b/pocket_friends/game_files/game.py index a897ad7..b5713ea 100644 --- a/pocket_friends/game_files/game.py +++ b/pocket_friends/game_files/game.py @@ -7,7 +7,7 @@ import json import os import pygame from pygame.locals import * -from pocket_friends.hardware.gpio_handler import Constants, GPIOHandler +from ..hardware.gpio_handler import Constants, GPIOHandler version = '0.0.1' game_fps = 16 @@ -33,7 +33,7 @@ class FileHandler: """ Writes attributes of class to "save.json" file. """ - with open('save.json', 'w') as save_file: + with open('pocket_friends/save.json', 'w') as save_file: json.dump(self.attributes, save_file) save_file.close() From 721cb1c3ab3393b90f63567e92eabb2252039226 Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 22:17:22 -0400 Subject: [PATCH 4/9] moved version tag to pocket_friends __init__.py --- pocket_friends/__init__.py | 1 + pocket_friends/__main__.py | 3 ++- pocket_friends/development/dev_menu.py | 5 ++--- pocket_friends/game_files/game.py | 18 +++++++++--------- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pocket_friends/__init__.py b/pocket_friends/__init__.py index e69de29..b8023d8 100644 --- a/pocket_friends/__init__.py +++ b/pocket_friends/__init__.py @@ -0,0 +1 @@ +__version__ = '0.0.1' diff --git a/pocket_friends/__main__.py b/pocket_friends/__main__.py index 8c2d29f..60a496c 100644 --- a/pocket_friends/__main__.py +++ b/pocket_friends/__main__.py @@ -6,8 +6,9 @@ import sys from pocket_friends.game_files.game import main as game_main from pocket_friends.development.dev_menu import main as dev_menu_main +__version__ = '0.0.1' -if __name__ == "__main__": +if __name__ == '__main__': enable_dev = False # enable dev mode if --dev argument is passed diff --git a/pocket_friends/development/dev_menu.py b/pocket_friends/development/dev_menu.py index 10911d2..0f89705 100644 --- a/pocket_friends/development/dev_menu.py +++ b/pocket_friends/development/dev_menu.py @@ -10,8 +10,6 @@ from .button_test import button_test from .menus import Menu from ..hardware.gpio_handler import GPIOHandler, Constants -dev_version = '0.0.1' - try: importlib.util.find_spec('RPi.GPIO') import RPi.GPIO as GPIO @@ -95,7 +93,8 @@ def main(): # The following defines all of the options in the various different menus. - main_menu = Menu('Pocket Friends Dev Menu {0}\nGame Version {1}'.format(dev_version, pocket_friends.game_files.game.version)) + main_menu = Menu( + 'Pocket Friends Dev Menu {0}\nGame Version {1}'.format(dev_version, pocket_friends.game_files.game.version)) main_menu.add_option(Menu.Option('Start Game', start_game)) main_menu.add_option(Menu.Option('Button Test', run_button_test)) main_menu.add_option(Menu.Option('Restart Dev Menu', quit_with_error)) diff --git a/pocket_friends/game_files/game.py b/pocket_friends/game_files/game.py index b5713ea..f3f1465 100644 --- a/pocket_friends/game_files/game.py +++ b/pocket_friends/game_files/game.py @@ -9,8 +9,8 @@ import pygame from pygame.locals import * from ..hardware.gpio_handler import Constants, GPIOHandler -version = '0.0.1' game_fps = 16 +script_dir = os.path.dirname(__file__) class FileHandler: @@ -33,7 +33,7 @@ class FileHandler: """ Writes attributes of class to "save.json" file. """ - with open('pocket_friends/save.json', 'w') as save_file: + with open(script_dir + '/save.json', 'w') as save_file: json.dump(self.attributes, save_file) save_file.close() @@ -43,7 +43,7 @@ class FileHandler: """ # Open up the save file and read it into self.attributes. try: - with open('save.json', 'r') as save_file: + with open(script_dir + '/save.json', 'r') as save_file: self.attributes = json.load(save_file) save_file.close() @@ -69,7 +69,7 @@ class SelectionEgg(pygame.sprite.Sprite): def __init__(self, egg_color): pygame.sprite.Sprite.__init__(self) - image_directory = 'pocket_friends/resources/images/egg_images/{0}'.format(egg_color) + image_directory = script_dir + '/resources/images/egg_images/{0}'.format(egg_color) # Load the egg from the given color and get the bounding rectangle for the image. self.images = [] @@ -134,7 +134,7 @@ def game(): clock = pygame.time.Clock() # Font used for small text in the hardware. Bigger text is usually image files. - small_font = pygame.font.Font('pocket_friends/resources/fonts/5Pts5.ttf', 10) + small_font = pygame.font.Font(script_dir + '/resources/fonts/5Pts5.ttf', 10) # Default hardware state when the hardware first starts. game_state = 'title' @@ -179,7 +179,7 @@ def game(): """ Draws the main hardware background image onto a given surface. """ - bg_image = pygame.image.load('pocket_friends/resources/images/bg.png').convert() + bg_image = pygame.image.load(script_dir + '/resources/images/bg.png').convert() surface.blit(bg_image, (0, 0)) def log_button(pressed_button): @@ -274,7 +274,7 @@ def game(): pre_handler() # Draw the title image in the middle of the screen. - title_image = pygame.image.load('pocket_friends/resources/images/title.png').convert_alpha() + title_image = pygame.image.load(script_dir + '/resources/images/title.png').convert_alpha() surface.blit(title_image, (0, 0)) draw() @@ -419,7 +419,7 @@ def game(): submenu = 'egg_info' # Draws the cursor on screen. - cursor = pygame.image.load('pocket_friends/resources/images/clock_selector.png').convert_alpha() + cursor = pygame.image.load(script_dir + '/resources/images/clock_selector.png').convert_alpha() surface.blit(cursor, get_cursor_coords(selected)) draw() @@ -456,7 +456,7 @@ def game(): pre_handler() # Draw the error screen - error_screen = pygame.image.load('pocket_friends/resources/images/debug/invalid.png').convert_alpha() + error_screen = pygame.image.load(script_dir + '/resources/images/debug/invalid.png').convert_alpha() surface.blit(error_screen, (0, -8)) # Counts the frames passed. Resets every second. From 0d344a79951dc95e1808fd3c8c4b578c92cc0a3d Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 22:17:57 -0400 Subject: [PATCH 5/9] moved resources folder inside of game folder --- .gitignore | 2 +- .../{ => game_files}/resources/fonts/5Pts5.ttf | Bin .../{ => game_files}/resources/images/bg.png | Bin .../resources/images/clock_selector.png | Bin .../resources/images/debug/invalid.png | Bin .../resources/images/egg_images/blue/blue.png | Bin .../images/egg_images/dev_egg/dev_egg_0.png | Bin .../images/egg_images/dev_egg/dev_egg_1.png | Bin .../resources/images/egg_images/green/green.png | Bin .../resources/images/egg_images/indigo/indigo.png | Bin .../resources/images/egg_images/orange/orange.png | Bin .../resources/images/egg_images/rainbow/rainbow.png | Bin .../resources/images/egg_images/red/red.png | Bin .../resources/images/egg_images/violet/violet.png | Bin .../resources/images/egg_images/white/white.png | Bin .../resources/images/egg_images/yellow/yellow.png | Bin .../{ => game_files}/resources/images/icon.png | Bin .../resources/images/promotional.png | Bin .../{ => game_files}/resources/images/title.png | Bin 19 files changed, 1 insertion(+), 1 deletion(-) rename pocket_friends/{ => game_files}/resources/fonts/5Pts5.ttf (100%) rename pocket_friends/{ => game_files}/resources/images/bg.png (100%) rename pocket_friends/{ => game_files}/resources/images/clock_selector.png (100%) rename pocket_friends/{ => game_files}/resources/images/debug/invalid.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/blue/blue.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/dev_egg/dev_egg_0.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/dev_egg/dev_egg_1.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/green/green.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/indigo/indigo.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/orange/orange.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/rainbow/rainbow.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/red/red.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/violet/violet.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/white/white.png (100%) rename pocket_friends/{ => game_files}/resources/images/egg_images/yellow/yellow.png (100%) rename pocket_friends/{ => game_files}/resources/images/icon.png (100%) rename pocket_friends/{ => game_files}/resources/images/promotional.png (100%) rename pocket_friends/{ => game_files}/resources/images/title.png (100%) diff --git a/.gitignore b/.gitignore index 2fa2403..965b584 100644 --- a/.gitignore +++ b/.gitignore @@ -132,4 +132,4 @@ dmypy.json /compile.bat # save file -/pocket_friends/save.json +/pocket_friends/game_files/save.json diff --git a/pocket_friends/resources/fonts/5Pts5.ttf b/pocket_friends/game_files/resources/fonts/5Pts5.ttf similarity index 100% rename from pocket_friends/resources/fonts/5Pts5.ttf rename to pocket_friends/game_files/resources/fonts/5Pts5.ttf diff --git a/pocket_friends/resources/images/bg.png b/pocket_friends/game_files/resources/images/bg.png similarity index 100% rename from pocket_friends/resources/images/bg.png rename to pocket_friends/game_files/resources/images/bg.png diff --git a/pocket_friends/resources/images/clock_selector.png b/pocket_friends/game_files/resources/images/clock_selector.png similarity index 100% rename from pocket_friends/resources/images/clock_selector.png rename to pocket_friends/game_files/resources/images/clock_selector.png diff --git a/pocket_friends/resources/images/debug/invalid.png b/pocket_friends/game_files/resources/images/debug/invalid.png similarity index 100% rename from pocket_friends/resources/images/debug/invalid.png rename to pocket_friends/game_files/resources/images/debug/invalid.png diff --git a/pocket_friends/resources/images/egg_images/blue/blue.png b/pocket_friends/game_files/resources/images/egg_images/blue/blue.png similarity index 100% rename from pocket_friends/resources/images/egg_images/blue/blue.png rename to pocket_friends/game_files/resources/images/egg_images/blue/blue.png diff --git a/pocket_friends/resources/images/egg_images/dev_egg/dev_egg_0.png b/pocket_friends/game_files/resources/images/egg_images/dev_egg/dev_egg_0.png similarity index 100% rename from pocket_friends/resources/images/egg_images/dev_egg/dev_egg_0.png rename to pocket_friends/game_files/resources/images/egg_images/dev_egg/dev_egg_0.png diff --git a/pocket_friends/resources/images/egg_images/dev_egg/dev_egg_1.png b/pocket_friends/game_files/resources/images/egg_images/dev_egg/dev_egg_1.png similarity index 100% rename from pocket_friends/resources/images/egg_images/dev_egg/dev_egg_1.png rename to pocket_friends/game_files/resources/images/egg_images/dev_egg/dev_egg_1.png diff --git a/pocket_friends/resources/images/egg_images/green/green.png b/pocket_friends/game_files/resources/images/egg_images/green/green.png similarity index 100% rename from pocket_friends/resources/images/egg_images/green/green.png rename to pocket_friends/game_files/resources/images/egg_images/green/green.png diff --git a/pocket_friends/resources/images/egg_images/indigo/indigo.png b/pocket_friends/game_files/resources/images/egg_images/indigo/indigo.png similarity index 100% rename from pocket_friends/resources/images/egg_images/indigo/indigo.png rename to pocket_friends/game_files/resources/images/egg_images/indigo/indigo.png diff --git a/pocket_friends/resources/images/egg_images/orange/orange.png b/pocket_friends/game_files/resources/images/egg_images/orange/orange.png similarity index 100% rename from pocket_friends/resources/images/egg_images/orange/orange.png rename to pocket_friends/game_files/resources/images/egg_images/orange/orange.png diff --git a/pocket_friends/resources/images/egg_images/rainbow/rainbow.png b/pocket_friends/game_files/resources/images/egg_images/rainbow/rainbow.png similarity index 100% rename from pocket_friends/resources/images/egg_images/rainbow/rainbow.png rename to pocket_friends/game_files/resources/images/egg_images/rainbow/rainbow.png diff --git a/pocket_friends/resources/images/egg_images/red/red.png b/pocket_friends/game_files/resources/images/egg_images/red/red.png similarity index 100% rename from pocket_friends/resources/images/egg_images/red/red.png rename to pocket_friends/game_files/resources/images/egg_images/red/red.png diff --git a/pocket_friends/resources/images/egg_images/violet/violet.png b/pocket_friends/game_files/resources/images/egg_images/violet/violet.png similarity index 100% rename from pocket_friends/resources/images/egg_images/violet/violet.png rename to pocket_friends/game_files/resources/images/egg_images/violet/violet.png diff --git a/pocket_friends/resources/images/egg_images/white/white.png b/pocket_friends/game_files/resources/images/egg_images/white/white.png similarity index 100% rename from pocket_friends/resources/images/egg_images/white/white.png rename to pocket_friends/game_files/resources/images/egg_images/white/white.png diff --git a/pocket_friends/resources/images/egg_images/yellow/yellow.png b/pocket_friends/game_files/resources/images/egg_images/yellow/yellow.png similarity index 100% rename from pocket_friends/resources/images/egg_images/yellow/yellow.png rename to pocket_friends/game_files/resources/images/egg_images/yellow/yellow.png diff --git a/pocket_friends/resources/images/icon.png b/pocket_friends/game_files/resources/images/icon.png similarity index 100% rename from pocket_friends/resources/images/icon.png rename to pocket_friends/game_files/resources/images/icon.png diff --git a/pocket_friends/resources/images/promotional.png b/pocket_friends/game_files/resources/images/promotional.png similarity index 100% rename from pocket_friends/resources/images/promotional.png rename to pocket_friends/game_files/resources/images/promotional.png diff --git a/pocket_friends/resources/images/title.png b/pocket_friends/game_files/resources/images/title.png similarity index 100% rename from pocket_friends/resources/images/title.png rename to pocket_friends/game_files/resources/images/title.png From a29ed2094f1c3c967143eda9148b25deb4ff2906 Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 22:18:11 -0400 Subject: [PATCH 6/9] added setup.py and MANIFEST.in --- MANIFEST.in | 1 + setup.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 MANIFEST.in create mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..f10dc56 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +recursive-include pocket_friends * \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..bb178df --- /dev/null +++ b/setup.py @@ -0,0 +1,26 @@ +import setuptools +import pocket_friends + +with open('requirements.txt') as fh: + required = fh.read().splitlines() + +with open('README.md', 'r') as fh: + long_description = fh.read() + +setuptools.setup( + name='Pocket Friends', + version=pocket_friends.__version__, + author='Nicholas Dyer', + description='A virtual friend for you to take care of and have fun with!', + license='GNU GPL-3.0', + long_description=long_description, + long_description_content_type='text/markdown', + url='https://github.com/nickedyer/pocket-friends', + packages=setuptools.find_packages(), + # https://pypi.org/classifiers/ + classifiers=[ + ], + install_requires=required, + python_requires='>=3.6', + include_package_data=True, +) From 0b30950ff855a97dde41e9ae7df898e5f172d723 Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 22:30:12 -0400 Subject: [PATCH 7/9] save file now stored in home directory --- pocket_friends/game_files/game.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pocket_friends/game_files/game.py b/pocket_friends/game_files/game.py index f3f1465..d272e74 100644 --- a/pocket_friends/game_files/game.py +++ b/pocket_friends/game_files/game.py @@ -8,9 +8,20 @@ import os import pygame from pygame.locals import * from ..hardware.gpio_handler import Constants, GPIOHandler +from pathlib import Path +# FPS for the entire game to run at. game_fps = 16 + +# Gets the directory of the script for importing and the save directory script_dir = os.path.dirname(__file__) +save_dir = os.path.join(Path.home(), '.pocket_friends') + +# Tries to make the save directory. Does nothing if it already exists. +try: + os.mkdir(save_dir) +except FileExistsError: + pass class FileHandler: @@ -33,7 +44,7 @@ class FileHandler: """ Writes attributes of class to "save.json" file. """ - with open(script_dir + '/save.json', 'w') as save_file: + with open(save_dir + '/save.json', 'w') as save_file: json.dump(self.attributes, save_file) save_file.close() @@ -43,7 +54,7 @@ class FileHandler: """ # Open up the save file and read it into self.attributes. try: - with open(script_dir + '/save.json', 'r') as save_file: + with open(save_dir + '/save.json', 'r') as save_file: self.attributes = json.load(save_file) save_file.close() From 067b24b87c907ac8857032ff6502c5cfa84815d7 Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 22:38:34 -0400 Subject: [PATCH 8/9] updated README.md, changed version to "dev_0.0.1" --- README.md | 21 ++++++++++++++++++++- pocket_friends/__init__.py | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8f969e4..106cfb2 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,23 @@ Pocket Friends is a game where you raise your own little pocket friend! These pocket friends, called bloops, are great little companions to have! You can feed them, play with them, and watch them grow up! ~~You can download the latest release of Pocket Friends on the [releases page.](https://github.com/nickedyer/pocket-friends/releases)~~ -There are currently no releases of the game. +There are currently no releases of the game. To install the current version on GitHub, follow the instructions below. + +--- + +## Installing From Source + +Since this game is made in Python, it is fairly easy to set up and install as long as you have Python installed. +Ensure you also have pip installed, as it is required to install Pocket Friends as well. + +### You must have Python 3.6 or greater to install Pocket Friends. + +Once you have Python installed, getting Pocket Friends installed is easy; just install it using pip and you're ready to go! + +`pip install git+https://github.com/nickedyer/pocket-friends.git` + +Now that the game is installed, just run it like you would any other Python program. + +`python -m pocket_friends` + +...and that's it! You now have the latest dev build of Pocket Friends installed on your system! \ No newline at end of file diff --git a/pocket_friends/__init__.py b/pocket_friends/__init__.py index b8023d8..f0ccdbb 100644 --- a/pocket_friends/__init__.py +++ b/pocket_friends/__init__.py @@ -1 +1 @@ -__version__ = '0.0.1' +__version__ = 'dev_0.0.1' From 00d435f8d0f4e62aa4164e52c4f6f09fd72a248e Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Sat, 29 May 2021 22:40:41 -0400 Subject: [PATCH 9/9] title of window now displays version --- pocket_friends/development/dev_menu.py | 3 +-- pocket_friends/game_files/game.py | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pocket_friends/development/dev_menu.py b/pocket_friends/development/dev_menu.py index 0f89705..24e2fe4 100644 --- a/pocket_friends/development/dev_menu.py +++ b/pocket_friends/development/dev_menu.py @@ -93,8 +93,7 @@ def main(): # The following defines all of the options in the various different menus. - main_menu = Menu( - 'Pocket Friends Dev Menu {0}\nGame Version {1}'.format(dev_version, pocket_friends.game_files.game.version)) + main_menu = Menu('Pocket Friends Dev Menu') main_menu.add_option(Menu.Option('Start Game', start_game)) main_menu.add_option(Menu.Option('Button Test', run_button_test)) main_menu.add_option(Menu.Option('Restart Dev Menu', quit_with_error)) diff --git a/pocket_friends/game_files/game.py b/pocket_friends/game_files/game.py index d272e74..d720e57 100644 --- a/pocket_friends/game_files/game.py +++ b/pocket_friends/game_files/game.py @@ -5,10 +5,11 @@ from collections import deque import importlib.util import json import os +from pathlib import Path +import pocket_friends import pygame from pygame.locals import * from ..hardware.gpio_handler import Constants, GPIOHandler -from pathlib import Path # FPS for the entire game to run at. game_fps = 16 @@ -140,7 +141,7 @@ def game(): surface = pygame.Surface((rendered_size, rendered_size)) # Only really useful for PCs. Does nothing on the Raspberry Pi. - pygame.display.set_caption('Pocket Friends') + pygame.display.set_caption('Pocket Friends {0}'.format(pocket_friends.__version__)) clock = pygame.time.Clock()