From ed03b40325841958b2409474345a2af11929479e Mon Sep 17 00:00:00 2001 From: Jean-Marie 'Histausse' Mineau Date: Sat, 30 May 2026 18:45:26 +0200 Subject: [PATCH] package project --- .python-version | 1 + __pycache__/Action.cpython-314.pyc | Bin 0 -> 7517 bytes __pycache__/Bouton.cpython-314.pyc | Bin 0 -> 6847 bytes __pycache__/Commande.cpython-314.pyc | Bin 0 -> 5561 bytes __pycache__/ConstanteTouche.cpython-314.pyc | Bin 0 -> 613 bytes __pycache__/Cube.cpython-314.pyc | Bin 0 -> 7897 bytes __pycache__/Cube1x1.cpython-314.pyc | Bin 0 -> 28217 bytes __pycache__/CubeGetteur.cpython-314.pyc | Bin 0 -> 10971 bytes __pycache__/InterfaceBoutons.cpython-314.pyc | Bin 0 -> 3575 bytes __pycache__/Solveur.cpython-314.pyc | Bin 0 -> 36320 bytes main.py | 53 ------------------ pyproject.toml | 21 +++++++ Action.py => src/isn_s_cube/Action.py | 0 Bouton.py => src/isn_s_cube/Bouton.py | 0 Commande.py => src/isn_s_cube/Commande.py | 6 +- .../isn_s_cube/ConstanteTouche.py | 0 Cube.py => src/isn_s_cube/Cube.py | 12 ++-- Cube1x1.py => src/isn_s_cube/Cube1x1.py | 0 .../isn_s_cube/CubeGetteur.py | 0 .../isn_s_cube/InterfaceBoutons.py | 9 ++- Solveur.py => src/isn_s_cube/Solveur.py | 0 src/isn_s_cube/__init__.py | 25 +++++++++ {img => src/isn_s_cube/img}/B1.png | Bin {img => src/isn_s_cube/img}/B2.png | Bin uv.lock | 29 ++++++++++ 25 files changed, 91 insertions(+), 65 deletions(-) create mode 100644 .python-version create mode 100644 __pycache__/Action.cpython-314.pyc create mode 100644 __pycache__/Bouton.cpython-314.pyc create mode 100644 __pycache__/Commande.cpython-314.pyc create mode 100644 __pycache__/ConstanteTouche.cpython-314.pyc create mode 100644 __pycache__/Cube.cpython-314.pyc create mode 100644 __pycache__/Cube1x1.cpython-314.pyc create mode 100644 __pycache__/CubeGetteur.cpython-314.pyc create mode 100644 __pycache__/InterfaceBoutons.cpython-314.pyc create mode 100644 __pycache__/Solveur.cpython-314.pyc delete mode 100644 main.py create mode 100644 pyproject.toml rename Action.py => src/isn_s_cube/Action.py (100%) rename Bouton.py => src/isn_s_cube/Bouton.py (100%) rename Commande.py => src/isn_s_cube/Commande.py (95%) rename ConstanteTouche.py => src/isn_s_cube/ConstanteTouche.py (100%) rename Cube.py => src/isn_s_cube/Cube.py (94%) rename Cube1x1.py => src/isn_s_cube/Cube1x1.py (100%) rename CubeGetteur.py => src/isn_s_cube/CubeGetteur.py (100%) rename InterfaceBoutons.py => src/isn_s_cube/InterfaceBoutons.py (91%) rename Solveur.py => src/isn_s_cube/Solveur.py (100%) create mode 100644 src/isn_s_cube/__init__.py rename {img => src/isn_s_cube/img}/B1.png (100%) rename {img => src/isn_s_cube/img}/B2.png (100%) create mode 100644 uv.lock diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..24ee5b1 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/__pycache__/Action.cpython-314.pyc b/__pycache__/Action.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e4bbb55e99b03d124cbed0c7e4b5f2af15ba76c1 GIT binary patch literal 7517 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 literal 0 HcmV?d00001 diff --git a/__pycache__/Bouton.cpython-314.pyc b/__pycache__/Bouton.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce11508e813d9140d233483980660aa9338a2405 GIT binary patch literal 6847 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 literal 0 HcmV?d00001 diff --git a/__pycache__/Commande.cpython-314.pyc b/__pycache__/Commande.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d318bc5c46c2da482d617549c0f34170f4fd3f54 GIT binary patch literal 5561 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 KBkY2%0&D;w>`Na2 literal 0 HcmV?d00001 diff --git a/__pycache__/Cube1x1.cpython-314.pyc b/__pycache__/Cube1x1.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..497833c8227ba051daac61274bfdf7f6962b1626 GIT binary patch literal 28217 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 literal 0 HcmV?d00001 diff --git a/__pycache__/InterfaceBoutons.cpython-314.pyc b/__pycache__/InterfaceBoutons.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d7d40e03b4d69a54e1f8a94a026077f15a36ae4 GIT binary patch literal 3575 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py deleted file mode 100644 index 0467fb0..0000000 --- a/main.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python3 -#coding: utf-8 - -''' -Created on 5 mai 2017 - -Copyright 2017 Jean-Marie Mineau, Maxime Keller -This file is part of "ISN's Cube". - - "ISN's Cube" is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - "ISN's Cube" is distributed in the hope that it will be useful and - recreative, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with "ISN's Cube". If not, see . - -@author: , Maxime Keller - - https://www.python.org/ (c'est le language, donc important) - Module principale du programme de Rubicks cube. -''' - -import this # (c'est important aussi) -import pygame -from Cube import Cube -from InterfaceBoutons import InterfaceBoutons - -if __name__ == "__main__": - - pygame.init() - - surfaceCube = pygame.Surface((500, 500)) - screen = pygame.display.set_mode((700, 700)) - pygame.display.set_caption("ISN's Cube") - - cube = Cube(surfaceCube) - interfaceBoutons = InterfaceBoutons(screen, cube) - - while True: - surfaceCube.fill((255,255,255)) - screen.fill((255,255,255)) - cube.run() - screen.blit(surfaceCube, (100,100)) - interfaceBoutons.run() - pygame.display.flip() - pygame.time.wait(25) - diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..f50e234 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,21 @@ +[project] +name = "isn-s-cube" +version = "0.1.0" +description = "A 3D Rubik's Cube with a solver. It's a french A-level Project." +readme = "README.md" +requires-python = ">=3.13" +authors = [ + {name = "Jean-Marie Mineau", email = "isn-cube-1UJE@jean-marie.mineau.eu"}, + {name = "Maxime Keller"}, +] +license = "GPL-3.0-or-later" +dependencies = [ + "pygame==2.6.1", +] + +[project.scripts] +isn-s-cube = "isn_s_cube:main" + +[build-system] +requires = ["uv_build>=0.11.15,<0.12.0"] +build-backend = "uv_build" diff --git a/Action.py b/src/isn_s_cube/Action.py similarity index 100% rename from Action.py rename to src/isn_s_cube/Action.py diff --git a/Bouton.py b/src/isn_s_cube/Bouton.py similarity index 100% rename from Bouton.py rename to src/isn_s_cube/Bouton.py diff --git a/Commande.py b/src/isn_s_cube/Commande.py similarity index 95% rename from Commande.py rename to src/isn_s_cube/Commande.py index b4169e8..f0dd4b7 100644 --- a/Commande.py +++ b/src/isn_s_cube/Commande.py @@ -22,8 +22,8 @@ This file is part of "ISN's Cube". """ import pygame from pygame.locals import * -from ConstanteTouche import * -from Action import Action +from .ConstanteTouche import * +from .Action import Action #pygame.init() @@ -101,4 +101,4 @@ class Commande: # self.orientation[2] = 45 # elif event.key == K_LEFT : # self.orientation[2] = 45 - # self.orientation[0] = 45 \ No newline at end of file + # self.orientation[0] = 45 diff --git a/ConstanteTouche.py b/src/isn_s_cube/ConstanteTouche.py similarity index 100% rename from ConstanteTouche.py rename to src/isn_s_cube/ConstanteTouche.py diff --git a/Cube.py b/src/isn_s_cube/Cube.py similarity index 94% rename from Cube.py rename to src/isn_s_cube/Cube.py index c60839e..414e4ca 100644 --- a/Cube.py +++ b/src/isn_s_cube/Cube.py @@ -25,11 +25,11 @@ This file is part of "ISN's Cube". import pygame from operator import itemgetter from random import choice -from Cube1x1 import Cubie3D -from Action import Action -from CubeGetteur import CubeGetteur -from Commande import Commande -from Solveur import Solver +from .Cube1x1 import Cubie3D +from .Action import Action +from .CubeGetteur import CubeGetteur +from .Commande import Commande +from .Solveur import Solver ROUGE, ORANGE, JAUNE, BLANC, VERT, BLEU = (255,0,0), (255,130,20), (255,255,20), (255,255,255), (0,255,0), (0,0,255) @@ -183,4 +183,4 @@ if __name__ == "__main__": pygame.image.save(screen,"./img/pasDeTrie.png") prendreImage = False - \ No newline at end of file + diff --git a/Cube1x1.py b/src/isn_s_cube/Cube1x1.py similarity index 100% rename from Cube1x1.py rename to src/isn_s_cube/Cube1x1.py diff --git a/CubeGetteur.py b/src/isn_s_cube/CubeGetteur.py similarity index 100% rename from CubeGetteur.py rename to src/isn_s_cube/CubeGetteur.py diff --git a/InterfaceBoutons.py b/src/isn_s_cube/InterfaceBoutons.py similarity index 91% rename from InterfaceBoutons.py rename to src/isn_s_cube/InterfaceBoutons.py index b788d6d..41b23af 100644 --- a/InterfaceBoutons.py +++ b/src/isn_s_cube/InterfaceBoutons.py @@ -24,7 +24,10 @@ Interface de boutons fait à la va vite. """ import pygame -from Bouton import Boutons +from .Bouton import Boutons + +from pathlib import Path +IMG_FOLDER = Path(__file__).parent / "img" def addAction(cube, action): @@ -32,8 +35,8 @@ def addAction(cube, action): cube.action.actions.append(action) -CARACTS_BOUTONS = [[(100,30), "img/B1.png", addAction, ["ALEA"]], - [(400,30), "img/B2.png", addAction, ["SOLVE"]], +CARACTS_BOUTONS = [[(100,30), IMG_FOLDER / "B1.png", addAction, ["ALEA"]], + [(400,30), IMG_FOLDER / "B2.png", addAction, ["SOLVE"]], [(100,600), None, addAction, ["B CW"]], [(500,600), None, addAction, ["B ACW"]], [(200,600), None, addAction, ["AV CW"]], diff --git a/Solveur.py b/src/isn_s_cube/Solveur.py similarity index 100% rename from Solveur.py rename to src/isn_s_cube/Solveur.py diff --git a/src/isn_s_cube/__init__.py b/src/isn_s_cube/__init__.py new file mode 100644 index 0000000..e7d74ae --- /dev/null +++ b/src/isn_s_cube/__init__.py @@ -0,0 +1,25 @@ +import pygame +from .Cube import Cube +from .InterfaceBoutons import InterfaceBoutons + + +def main() -> None: + import this # (c'est important aussi) + + pygame.init() + + surfaceCube = pygame.Surface((500, 500)) + screen = pygame.display.set_mode((700, 700)) + pygame.display.set_caption("ISN's Cube") + + cube = Cube(surfaceCube) + interfaceBoutons = InterfaceBoutons(screen, cube) + + while True: + surfaceCube.fill((255, 255, 255)) + screen.fill((255, 255, 255)) + cube.run() + screen.blit(surfaceCube, (100, 100)) + interfaceBoutons.run() + pygame.display.flip() + pygame.time.wait(25) diff --git a/img/B1.png b/src/isn_s_cube/img/B1.png similarity index 100% rename from img/B1.png rename to src/isn_s_cube/img/B1.png diff --git a/img/B2.png b/src/isn_s_cube/img/B2.png similarity index 100% rename from img/B2.png rename to src/isn_s_cube/img/B2.png diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..a55f020 --- /dev/null +++ b/uv.lock @@ -0,0 +1,29 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[[package]] +name = "isn-s-cube" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "pygame" }, +] + +[package.metadata] +requires-dist = [{ name = "pygame", specifier = "==2.6.1" }] + +[[package]] +name = "pygame" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/cc/08bba60f00541f62aaa252ce0cfbd60aebd04616c0b9574f755b583e45ae/pygame-2.6.1.tar.gz", hash = "sha256:56fb02ead529cee00d415c3e007f75e0780c655909aaa8e8bf616ee09c9feb1f", size = 14808125, upload-time = "2024-09-29T13:41:34.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/91/718acf3e2a9d08a6ddcc96bd02a6f63c99ee7ba14afeaff2a51c987df0b9/pygame-2.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae6039f3a55d800db80e8010f387557b528d34d534435e0871326804df2a62f2", size = 13090765, upload-time = "2024-09-29T14:27:02.377Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c6/9cb315de851a7682d9c7568a41ea042ee98d668cb8deadc1dafcab6116f0/pygame-2.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2a3a1288e2e9b1e5834e425bedd5ba01a3cd4902b5c2bff8ed4a740ccfe98171", size = 12381704, upload-time = "2024-09-29T14:27:10.228Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8f/617a1196e31ae3b46be6949fbaa95b8c93ce15e0544266198c2266cc1b4d/pygame-2.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27eb17e3dc9640e4b4683074f1890e2e879827447770470c2aba9f125f74510b", size = 13581091, upload-time = "2024-09-29T11:30:27.653Z" }, + { url = "https://files.pythonhosted.org/packages/3b/87/2851a564e40a2dad353f1c6e143465d445dab18a95281f9ea458b94f3608/pygame-2.6.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c1623180e70a03c4a734deb9bac50fc9c82942ae84a3a220779062128e75f3b", size = 14273844, upload-time = "2024-09-29T11:40:04.138Z" }, + { url = "https://files.pythonhosted.org/packages/85/b5/aa23aa2e70bcba42c989c02e7228273c30f3b44b9b264abb93eaeff43ad7/pygame-2.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef07c0103d79492c21fced9ad68c11c32efa6801ca1920ebfd0f15fb46c78b1c", size = 13951197, upload-time = "2024-09-29T11:40:06.785Z" }, + { url = "https://files.pythonhosted.org/packages/a6/06/29e939b34d3f1354738c7d201c51c250ad7abefefaf6f8332d962ff67c4b/pygame-2.6.1-cp313-cp313-win32.whl", hash = "sha256:3acd8c009317190c2bfd81db681ecef47d5eb108c2151d09596d9c7ea9df5c0e", size = 10249309, upload-time = "2024-09-29T11:10:23.329Z" }, + { url = "https://files.pythonhosted.org/packages/7e/11/17f7f319ca91824b86557e9303e3b7a71991ef17fd45286bf47d7f0a38e6/pygame-2.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:813af4fba5d0b2cb8e58f5d95f7910295c34067dcc290d34f1be59c48bd1ea6a", size = 10620084, upload-time = "2024-09-29T11:48:51.587Z" }, +]