From 38270eabba87aa21e060b3630533e18ff7313c5f Mon Sep 17 00:00:00 2001 From: markojozsef Date: Mon, 19 Oct 2026 18:31:06 +0200 Subject: [PATCH] Pyinstaller :< --- .github/workflows/build.yml | 30 ++++++++++++++ doc/AIHasznalat.md | 3 ++ src/assets.py | 78 +++++++++++++++++++++---------------- 3 files changed, 77 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..83d8e36 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,30 @@ +name: Build Windows EXE + +on: [push] + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.14' # Match your local python version + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install arcade pygame pyinstaller + + - name: Build with PyInstaller + run: | + pyinstaller --onefile --noconsole --add-data "res;res" src/main.py + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: Windows-Game-EXE + path: dist/main.exe diff --git a/doc/AIHasznalat.md b/doc/AIHasznalat.md index 36093d3..43a1839 100644 --- a/doc/AIHasznalat.md +++ b/doc/AIHasznalat.md @@ -5,6 +5,9 @@ Teljesen AI-generált szakaszokat egy `# !!! CHATGPT !!!` komment jelzi ## AI generálta komponensek: +### assets.py +* minden + ### main.py * Game diff --git a/src/assets.py b/src/assets.py index 19fe327..00bad5a 100644 --- a/src/assets.py +++ b/src/assets.py @@ -1,44 +1,54 @@ +import os +import sys import arcade import pygame pygame.mixer.init() +def resource_path(relative_path): + """Get absolute path to resource, works for dev and for PyInstaller builds.""" + try: + base_path = sys._MEIPASS + except Exception: + base_path = os.path.abspath(".") + return os.path.join(base_path, relative_path) + sprites = { - "cursor" : arcade.load_texture("res/sprite/handcursor.png"), - "title" : arcade.load_texture("res/sprite/title.png"), - "test_bbg" : arcade.load_texture("res/sprite/test_bbg.png"), - "kefka" : arcade.load_texture("res/sprite/kefka.png"), - "dwagon" : arcade.load_texture("res/sprite/dwagon.png"), - "dwagon_low" : arcade.load_texture("res/sprite/dwagon_low.png"), - "dwagon_dead" : arcade.load_texture("res/sprite/dwagon_dead.png"), - "zombie" : arcade.load_texture("res/sprite/zombie.png"), - "zombie_low" : arcade.load_texture("res/sprite/zombie_low.png"), - "zombie_dead" : arcade.load_texture("res/sprite/zombie_dead.png"), - "skeleton" : arcade.load_texture("res/sprite/skeleton.png"), - "skeleton_low" : arcade.load_texture("res/sprite/skeleton_low.png"), - "skeleton_dead" : arcade.load_texture("res/sprite/skeleton_dead.png"), - "witch" : arcade.load_texture("res/sprite/witch.png"), - "witch_low" : arcade.load_texture("res/sprite/witch_low.png"), - "witch_dead" : arcade.load_texture("res/sprite/witch_dead.png"), - "herojoe" : arcade.load_texture("res/sprite/herojoe.png"), - "herojoe_low" : arcade.load_texture("res/sprite/herojoe_low.png"), - "herojoe_dead" : arcade.load_texture("res/sprite/herojoe_dead.png"), - "heroinejane" : arcade.load_texture("res/sprite/heroinejane.png"), - "heroinejane_low" : arcade.load_texture("res/sprite/heroinejane_low.png"), - "heroinejane_dead" : arcade.load_texture("res/sprite/heroinejane_dead.png"), - "font" : arcade.load_spritesheet("res/sprite/font.png"), - "panel" : arcade.load_spritesheet("res/sprite/panel.png"), - "podium" : arcade.load_spritesheet("res/sprite/podium.png"), - "balthasar" : arcade.load_spritesheet("res/sprite/balthasar.png"), - "overworld" : arcade.load_spritesheet("res/sprite/overworld_sheet.png"), + "cursor" : arcade.load_texture(resource_path("res/sprite/handcursor.png")), + "title" : arcade.load_texture(resource_path("res/sprite/title.png")), + "test_bbg" : arcade.load_texture(resource_path("res/sprite/test_bbg.png")), + "kefka" : arcade.load_texture(resource_path("res/sprite/kefka.png")), + "dwagon" : arcade.load_texture(resource_path("res/sprite/dwagon.png")), + "dwagon_low" : arcade.load_texture(resource_path("res/sprite/dwagon_low.png")), + "dwagon_dead" : arcade.load_texture(resource_path("res/sprite/dwagon_dead.png")), + "zombie" : arcade.load_texture(resource_path("res/sprite/zombie.png")), + "zombie_low" : arcade.load_texture(resource_path("res/sprite/zombie_low.png")), + "zombie_dead" : arcade.load_texture(resource_path("res/sprite/zombie_dead.png")), + "skeleton" : arcade.load_texture(resource_path("res/sprite/skeleton.png")), + "skeleton_low" : arcade.load_texture(resource_path("res/sprite/skeleton_low.png")), + "skeleton_dead" : arcade.load_texture(resource_path("res/sprite/skeleton_dead.png")), + "witch" : arcade.load_texture(resource_path("res/sprite/witch.png")), + "witch_low" : arcade.load_texture(resource_path("res/sprite/witch_low.png")), + "witch_dead" : arcade.load_texture(resource_path("res/sprite/witch_dead.png")), + "herojoe" : arcade.load_texture(resource_path("res/sprite/herojoe.png")), + "herojoe_low" : arcade.load_texture(resource_path("res/sprite/herojoe_low.png")), + "herojoe_dead" : arcade.load_texture(resource_path("res/sprite/herojoe_dead.png")), + "heroinejane" : arcade.load_texture(resource_path("res/sprite/heroinejane.png")), + "heroinejane_low" : arcade.load_texture(resource_path("res/sprite/heroinejane_low.png")), + "heroinejane_dead" : arcade.load_texture(resource_path("res/sprite/heroinejane_dead.png")), + "font" : arcade.load_spritesheet(resource_path("res/sprite/font.png")), + "panel" : arcade.load_spritesheet(resource_path("res/sprite/panel.png")), + "podium" : arcade.load_spritesheet(resource_path("res/sprite/podium.png")), + "balthasar" : arcade.load_spritesheet(resource_path("res/sprite/balthasar.png")), + "overworld" : arcade.load_spritesheet(resource_path("res/sprite/overworld_sheet.png")), } sounds = { - "mus_hatred" : pygame.mixer.Sound("res/mus/hatred.wav"), - "mus_getrickrolled" : pygame.mixer.Sound("res/mus/getrickrolled.wav"), - "mus_decisive" : pygame.mixer.Sound("res/mus/decisive.wav"), - "mus_fnafsux" : pygame.mixer.Sound("res/mus/fnafsux.wav"), - "mus_finale" : pygame.mixer.Sound("res/mus/finale.wav"), - "mus_credits" : pygame.mixer.Sound("res/mus/credits.wav"), - "sfx_encounter" : pygame.mixer.Sound("res/sfx/encounter.wav"), + "mus_hatred" : pygame.mixer.Sound(resource_path("res/mus/hatred.wav")), + "mus_getrickrolled" : pygame.mixer.Sound(resource_path("res/mus/getrickrolled.wav")), + "mus_decisive" : pygame.mixer.Sound(resource_path("res/mus/decisive.wav")), + "mus_fnafsux" : pygame.mixer.Sound(resource_path("res/mus/fnafsux.wav")), + "mus_finale" : pygame.mixer.Sound(resource_path("res/mus/finale.wav")), + "mus_credits" : pygame.mixer.Sound(resource_path("res/mus/credits.wav")), + "sfx_encounter" : pygame.mixer.Sound(resource_path("res/sfx/encounter.wav")), }