IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

[WE-JV4] tkBoulderDash - Python3-Tkinter port of the famous game


Sujet :

Projets

  1. #1
    Invité
    Invité(e)
    Par défaut [WE-JV4] tkBoulderDash - Python3-Tkinter port of the famous game
    Bonjour,

    Alors voilà, le projet est fonctionnel, mais pas encore pleinement jouable (manque le score, les animations, etc).

    Si vous avez Python3/Tkinter sur votre bécane, vous pouvez le tester direct : pas besoin d'installer de libs tierces, j'ai tout réécrit de zéro (c'était un peu le but de la manoeuvre, ce WE)

    Eh oui, il n'existe aucune lib Tkinter pour les jeux, alors il faut tout se coltiner à la paluche.

    Il vous suffit de dézipper cette archive : tkBoulderDash.zip

    Puis :

    - sous Windows, double-cliquer sur game.py

    - sous Linux, mettre le fichier game.py en sticky bit exécutable et le lancer direct ou le lancer via une console shell :

    Petite ruse de coyotte : vous pouvez "visiter" le niveau du jeu en entier si vous maintenez le clic souris enfoncé sur l'écran canevas graphique et que vous déplacez la souris.

    Sinon, on déplace bien évidemment le personnage avec les touches fléchées du clavier (comme d'hab', quoi).

    Le niveau 1 compte 20 diamants à récupérer, le décompte est consultable si vous lancez le jeu via console shell.

    Pour se faire un niveau 2 (et plus), rien de plus simple : allez dans data/json/ et regardez comment est écrit le fichier level_1.json.

    Pour le nom de fichier lui-même, la nomenclature est simple : level_nnn.json avec nnn le numéro du niveau à créer.

    Je n'ai pas encore intégré la prise en charge automatique des nouveaux niveaux, mais je m'en occuperais sans doute demain - après une VRAIE nuit de sommeil !

    Allez, Oshiaô les gameurz !

    A domani. Amusez-vous bien !

    @+.
    Dernière modification par LittleWhite ; 01/11/2014 à 17h05.

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    7 014
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2006
    Messages : 7 014
    Points : 9 814
    Points
    9 814
    Par défaut
    J'ai voulu tester, mais j'ai ça au démarrage (windows seven) :

    Traceback (most recent call last):
    File "C:\Users\Florent\Downloads\tkBoulderDash\game.py", line 30, in <module>
    import tkinter as TK
    ImportError: No module named tkinter
    Je ne répondrai à aucune question technique en privé

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par millie Voir le message
    J'ai voulu tester, mais j'ai ça au démarrage (windows seven) :

    Traceback (most recent call last):
    File "C:\Users\Florent\Downloads\tkBoulderDash\game.py", line 30, in <module>
    import tkinter as TK
    ImportError: No module named tkinter
    Bonjour,

    Grand classique du genre : le jeu est pour Python3.

    Vous avez Python2 d'installé, c'est pourquoi ça couine (Python2 => Tkinter, Python3 => tkinter, pas le même nom de module et pas la même organisation non plus).

    Vous pouvez installer Python3 à côté de Python2, cela ne pose aucun problème, même sur windows.

    Pour télécharger installer Python3/Windows : https://www.python.org/downloads/windows/

    N'hésitez pas à me signaler si qq chose ne va pas sous Windows => je n'ai pas encore testé sur cet OS.

    @+.
    Dernière modification par Invité ; 24/08/2014 à 11h58. Motif: faute de frappe

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    7 014
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2006
    Messages : 7 014
    Points : 9 814
    Points
    9 814
    Par défaut
    Ah cool, merci, j'ai pu essayer.

    Quand j'avais refait le boulder dash d'amstrad, je devais être à ce niveau au bout d'un jour.

    Je me permet juste un conseil, ce serait d'agrandir le champs de vision du niveau
    Je ne répondrai à aucune question technique en privé

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par millie Voir le message
    Ah cool, merci, j'ai pu essayer.

    Quand j'avais refait le boulder dash d'amstrad, je devais être à ce niveau au bout d'un jour.

    Je me permet juste un conseil, ce serait d'agrandir le champs de vision du niveau
    Bah, j'avais voulu tester le 16:9ème.

    Le problème, c'est que si je change la taille du canevas, je vais devoir refaire tous les splash-screens.

    J'y ferais peut-être plus tard. Pour le moment, je voudrais au moins finir un jeu à peu près opérationnel d'ici à ce soir.

    @+.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Petit mise à jour avant d'aller manger :

    >>> tkBoulderDash-v0.2.zip <<<

    Toujours pour Python3 et tkinter (et toujours pas de libs tierces supplémentaires).

    ça commence à ressembler un peu à quelque chose.

    on verra ce soir où ça en est.

    @+.

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    7 014
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2006
    Messages : 7 014
    Points : 9 814
    Points
    9 814
    Par défaut
    Cool, les pierres tombent.

    Maintenant que je reteste, le scrolling est encore assez brut de décoffrage.

    Bon courage ^^
    Je ne répondrai à aucune question technique en privé

  8. #8
    Invité
    Invité(e)
    Par défaut
    Allez, encore une petite màj vite fait :

    >>> tkBoulderDash-v0.3.zip <<<

    Le jeu est opérationnel, reste à l'améliorer.

    Je retourne au fond de la mine pour peaufiner le truc.

    @+.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Dernière màj du WE, je suis HS, là.

    >>> tkBoulderDash-v0.4.zip <<<

    J'ai ajouté la gestion automatique des niveaux + un level_2.json pas piqué des vers !

    Je peaufinerai en semaine.

    En tout cas, chouette expérience, ce WE JV4. A refaire la prochaine fois.

    Bonne fin de week-end, amusez-vous bien.

    Je vais voir s'il n'y a pas un service de réanimation dans le coin.

    @+.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Juste une petite bidouille vite fait :

    >>> tkBoulderDash-v0.5.zip <<<

    J'ai agrandi l'écran de 640x360 à 800x450 (aspect ratio 16:9e) et j'ai enlevé le test de débogage qui faisait arrêter la partie dès le 2e diamant récolté : maintenant, vous pouvez jouer des parties entières, du début à la fin.

    @+.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Juste un petit mot vite fait pour vous signaler que l'aventure tkBoulderDash se poursuit désormais sur GitHub :

    >>> https://github.com/tarball69/tkBoulderDash <<<

    Merci de votre visite.

    A bientôt !

    @+.

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    26 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 26 335
    Points : 212 596
    Points
    212 596
    Billets dans le blog
    94
    Par défaut
    La version 0.5 est super fun. Si vous creuser sous un diamant, le diamant tombe, mais pas la pierre qui se trouve au dessus du diamant
    Il y a aussi une autre règle, présente dans mon Boulder Dash de référence, qui est : si deux pierres sont l'une au dessus de l'autre, et que les cases pour les deux pierres sont creusés (les deux à gauche, ou les deux à droite) alors la pierre du dessus roule pour tomber sur le coté.

    J'irai voir le code, si j'ai le temps
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    La version 0.5 est super fun. Si vous creuser sous un diamant, le diamant tombe, mais pas la pierre qui se trouve au dessus du diamant
    Il y a aussi une autre règle, présente dans mon Boulder Dash de référence, qui est : si deux pierres sont l'une au dessus de l'autre, et que les cases pour les deux pierres sont creusés (les deux à gauche, ou les deux à droite) alors la pierre du dessus roule pour tomber sur le coté.

    J'irai voir le code, si j'ai le temps
    Bonjour,

    Merci pour le retour d'expérience !

    Sur GitHub, j'en suis à la version v0.8a qui intègre vos suggestions (sauf les pierres qui roulent sur les côtés) et bien plus encore.

    Plus j'avance et plus je crains d'être limité par la lenteur relative de Python par rapport à C et C++, mais bon, j'étais surtout parti dans l'idée de faire quelque chose de simple et vite fait à la base (durée du week-end oblige).

    Et puis, je ne suis pas calé du tout en matière de conception de jeux : quelles libs sont faciles à mettre en œuvre ? SDL ? Unity, c'est quoi ? Bref, le sujet est intéressant, mais je ne sais pas par où commencer, sachant que si je me mets à la conception de jeux, je le ferais certainement en C/C++ (mes langages de prédilection après Python).

    En tout cas merci pour le feedback, je n'avais plus joué à Boulder Dash depuis... oh... 1986 ?

    @+.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    S'il y en a que ça intéresse, le jeu tkBoulderDash continue gentiment d'évoluer sur GitHub après le WE-JV4.

    La version jouable actuelle intègre plein de petites nouveautés sympas.

    Nom : tkboulderdash-screenshot-001.png
Affichages : 415
Taille : 48,2 Ko

    Retrouvez toutes les versions jouables dans la section releases de GitHub :


    Plus le numéro de version est élevé et plus la mouture est récente (ce qui n'est pas une évidence : Python v3.0 est moins récent que Python v2.7.8, alors que son numéro de version est bel et bien plus grand, il n'y a donc pas de logique obligatoire dans cette histoire).

    Et comme d'hab' à présent, il suffit d'avoir Python3 sur sa bécane, de télécharger l'archive .zip ou .tar.gz, de la décompresser dans un répertoire temporaire, de lancer game.py et de s'amuser.

    EDIT
    Pour télécharger Python3 : https://www.python.org/downloads/
    /EDIT

    Le jeu tkBoulderDash ne nécessite pas de libs tierces à installer : il fonctionne avec seulement Python3 et Tkinter (qui est livrée par défaut dans l'installation standard du langage), c'est tout.

    Amusez-vous bien !

    @+.
    Dernière modification par Invité ; 01/09/2014 à 08h04. Motif: oubli lien utile

  15. #15
    Invité
    Invité(e)
    Par défaut Appel à contribution
    Bonjour,

    J'ai un peu torché les murs à la truelle

    S'il y en a qui voudraient bien me refaire un GIF de 64x64 de mur en briques dans les tons terre, ce serait sympa.

    Le motif doit pouvoir se répéter jointivement dans les quatre directions (comme dans la capture d'écran ci-dessus).

    Merci pour vos contributions !

    @+.

  16. #16
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    26 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 26 335
    Points : 212 596
    Points
    212 596
    Billets dans le blog
    94
    Par défaut
    La caméra ne suit pas, lors d'un déplacement continue (rester appuyé sur une touche)
    Je ne pense pas qu'il soit judicieux de donner des points, pour creuser de la terre
    Le niveau deux, je ne suis pas sur qu'il soit finissable.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    La caméra ne suit pas, lors d'un déplacement continue (rester appuyé sur une touche)
    Salut,
    Oui, c'est un problème que je n'arrive pas à résoudre pour le moment.

    Il faudrait que j'oblige la répétition de touches à ne se faire que tous les 200-300 ms => le gestionnaire d'animation annule les planifications précédentes de scrolling en cas d'appel répété. Du coup, ce n'est qu'au moment où l'on relâche la touche que le dernier appel est pris en compte.

    Je me demande si je ne devrais pas placer le scrolling dans une boucle autonome, totalement indépendante des appuis de touche (genre camera tracking autonome).

    Je ne pense pas qu'il soit judicieux de donner des points, pour creuser de la terre
    Tout travail mérite salaire : Rockford creuse, Rockford gagne 50 points par portion creusée dans la mine. C'est le salaire minimum à la tarball69's diamond mining inc.

    Le niveau deux, je ne suis pas sur qu'il soit finissable.
    Je ne sais pas. Je n'ai pas encore vérifié, en effet.

    A la dernière mouture du jeu, j'ai rendu le niveau 1 un peu plus dur.

    Si tu as des idées pour faire un niveau, jette un oeil dans data/json/level_1.json => tu peux copier le fichier dans e.g. level_3.json et bidouiller selon ton idée => la prise en compte des nouveaux niveaux est automatique.

    A la limite, tu peux toujours bricoler data/json/level_1.json directement : si ton level est sympa, propose-le ici, je l'ajouterai au projet en tant que level_3.json

    Matrice max : 20 lignes x 60 colonnes

    Tu peux utiliser la taille de matrice que tu veux, du moment que cela reste agréable à jouer et que ça ne dépasse pas matrice max, càd in fine, pas plus de 1200 sprites par niveau (pour que ça reste jouable sur des ordis à faibles capacités).

    Merci pour ta contribution.

    @+.

  18. #18
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    26 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 26 335
    Points : 212 596
    Points
    212 596
    Billets dans le blog
    94
    Par défaut
    J'avais vu pour le JSON, mais il faut que je me souvienne de bon concept dans ce type de jeu.
    Pour le code, j'ai un peu regardé, mais ce n'est pas encore ma tasse de café. Notamment, je regardais pour la répétition des touches, mais j'ai pas encore tout analysé.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    J'avais vu pour le JSON, mais il faut que je me souvienne de bon concept dans ce type de jeu.
    Essaie déjà de te créer un niveau perso : les idées viendront certainement au fur et à mesure.

    Pour le code, j'ai un peu regardé, mais ce n'est pas encore ma tasse de café. Notamment, je regardais pour la répétition des touches, mais j'ai pas encore tout analysé.
    Oui bah, ce n'est pas la peine de trop t'y attarder : mon code change souvent, il évolue vite.

    Et les concepts qui vont avec, aussi.

    Je ne suis pas sûr que cela vaille la peine de trop te casser le bonnet sur le code actuel. Au pire, si tu as des points de doute à lever, demande ici, j'expliquerai.

    @+.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Faisant suite aux remarques constructives de LittleWhite, j'ai entièrement réécrit la fonctionnalité de suivi caméra du joueur.

    Désormais, c'est un thread indépendant de tout appui de touche, vous pouvez donc foncer à travers la mine, la caméra suivra, quoi que vous fassiez.

    Pour télécharger la dernière version jouable :


    @LittleWhite : Cool ! J'ai réussi le level 2 !

    J'avoue qu'il n'est pas évident, mais il est jouable entièrement.

    Trop bien, le jeu commence à prendre de la gueule.

    @+.

Discussions similaires

  1. Python3 tkinter méthode configure d'un bouton
    Par SuperCalif dans le forum Tkinter
    Réponses: 6
    Dernier message: 06/05/2014, 21h21
  2. [python3+tkinter]demande d'aide sur un programme.
    Par ivigu dans le forum Général Python
    Réponses: 8
    Dernier message: 13/02/2013, 06h45
  3. [Tkinter] "Portée" de PhotoImage ?
    Par Olivier_ dans le forum Tkinter
    Réponses: 2
    Dernier message: 25/11/2005, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo