Role Play Game v0.1

Soyez le premier à donner votre avis sur cette source.

Vue 6 148 fois - Téléchargée 1 216 fois

Description

Bonjour à toutes et à tous,

J'ai 17 ans et j'ai commencé Python il y a 2-3 mois, donc un peu d'indulgence
merci :)

Je tiens à préciser que ceci est mon premier post sur ce site, et également mon
premier jeu créé entièrement par mes soins.

C'est une première version et je continuerai à l'améliorer, donc n'hésitez pas à
me dire ce qu'il y a à corriger, à ajouter ou à supprimer.

PS: Vous remarquerez certainement qu'à la fin d'une partie,
la fenêtre demandant si vous voulez rejouer ou non afficher 2 boutons qui
quitteront l'application dans les 2 cas. La raison est que je n'arrive pas à
réinitialiser complètement la fenêtre 'Interface', et également avoir un nouvel
adversaire.


Le tout à été codé en python à l'aide de Tkinter.
Pour toute question, remarque ou aide par rapport à ce code, n'hésitez pas à
à commenter ci-dessous !

Merci.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
YepoMax
Messages postés
74
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
14 juin 2014
20
9 avril 2014 à 23:08
Je t'ai envoyé un message personnel concernant l'utilisation de tkinter.

Sinon, comme autre interface graphique, tu trouveras tout ce que tu veux ici :
https://wiki.python.org/moin/GuiProgramming

Mais je conseille vivement de commencer en utilisant tkinter (qui a deux gros avantages : built-in et multiplateforme), c'est super pour apprendre à programmer avec interface graphique.
AzzFoo
Messages postés
6
Date d'inscription
mardi 8 avril 2014
Statut
Membre
Dernière intervention
16 avril 2014

9 avril 2014 à 23:01
Un tout grand merci pour ces informations plus qu'utiles !

Depuis le début je pensais que j'étais en python 3 (ce serait logique qu'il soit nativement installé), honte sur moi !

JSON est vraiment intéressant, je te l'accorde :)

J'aurais une dernière question au niveau des interfaces graphiques.
Me conseillerait-tu de continuer avec tkinter, ou de me pencher vers d'autres bibliothèques plus élaborées? (Si compatibles avec python 3 qui est à présent installé bien évidemment !)

Encore un grand merci !
YepoMax
Messages postés
74
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
14 juin 2014
20
9 avril 2014 à 22:49
Une dernière remarque :

Ton jeu est très facile à retranscrire en Python 3 (seulement 3 ou 4 lignes à changer)

Voici les changements à effectuer :

#from Tkinter import *
#from tkFont import *

# A remplacer par :
from tkinter import *
from tkinter.font import *


#Line 30 : self.parent.geometry('{}x{}+{}+{}'.format (w, h, x, y))
# En Python 3, '{}x{}+{}+{}'.format(w, h, x, y) donne '220x100+850.0+490.0' ce qui n'est pas correct, il faut des nombres entiers (pas de 850.0 et 490.0 qui sont des décimaux). Il faut donc écrire ceci :

self.parent.geometry('{}x{}+{}+{}'.format (w, h, int(x), int(y)))

# Line 94 : parent.geometry('{}x{}+{}+{}'.format (w, h, x, y))
# Pareil :

parent.geometry('{}x{}+{}+{}'.format (w, h, int(x), int(y)))


Et voilà, très simple comme j'avais dit :)
YepoMax
Messages postés
74
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
14 juin 2014
20
9 avril 2014 à 22:39
Tu es en Python 2 vu que tu utilises Tkinter et non tkinter (la majuscule disparait en Python 3).

Pour ce qui est de Python 2 vs. Python 3 :

[ Source : https://wiki.python.org/moin/Python2orPython3 ]

(Il faut déjà dire que python.org conseille aux pythonneurs débutants d'apprendre Python 3 si possible.)

Python résume de cette manière ci :

"Short version: Python 2.x is legacy, Python 3.x is the present and future of the language"

Dans l'article cité, ils expliquent que le désavantage de Python 3 par rapport à Python 2 est que certains modules ne sont pas disponible et qu'il y a moins de tutos/docs en Python 3. Cependant, ce n'est plus tout à fait exact, surtout depuis les "Unofficial Packages" (http://www.lfd.uci.edu/~gohlke/pythonlibs/), des modules retranscris en Python 3 par de bons samaritains !
Lorsque j'ai appris Python 3, il y a maintenant un peu plus d'un an, il y avait très peu de tutos/docs et souvent j'étais bloqué car un module existait en Python 2 mais pas en Python 3. Aujourd'hui (avril 2014), tout cela a bien changé et Python 3 est bien plus populaire, il est rare de ne plus trouver le module que l'on cherche.

De plus, Python 3 a maintenant des modules par défaut (built-in) superbes que Python 2 n'a pas !

Python 3 continuera d'évoluer tandis que l'évolution de Python 2 s'arretera un de ces quatre.

Bref, je te recommande de passer à Python 3, tant que tu es au début (un peu s'adapter aux petites différences de syntaxes et la pilule est passée :)).
YepoMax
Messages postés
74
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
14 juin 2014
20
9 avril 2014 à 22:24
Pour installer Python 3.x (la version actuelle étant 3.4.0), rends toi ici : https://www.python.org/downloads/

JSON (JavaScript Object Notation) est une manière d'encoder les données "style javascript", TRES à la manière dont on les encode en Python (c'est pourquoi je te conseille JSON).
Pour faire clair :

Plutôt que d'écrire dans un script .py
variable = { "a": 0, "b": ["c","d"] }

Crée un fichier "fichier.json" dans lequelle tu colle ceci:
{"a": 0, "b": ["c","d"]}
Puis charge la variable dans ton script Python comme ceci :
from json import load

with open("fichier.json", "rt") as file:
    variable = load(file)


Tu pourras donc en une seule ligne de code Python charger une base de donnée aussi grande que tu veux (stockée dans ton fichier JSON). Le plus gros avantage de la méthode est que si tu désire modifier ta variable (rajouter une arme par exemple), il te suffit d'ouvrir ton .json et d'y rajouter l'arme !

Note : les accolades - "{" et "}" - désigne un dictionnaire. Un dictionnaire est comme une liste mais plutôt que de faire correspondre une variable à un indice, il fait correspondre une variable à une variable de valeur (généralement une chaine de caractère).

Un exemple :
variable1 = [ "a", "b", [0, 1] ] # ceci est une liste (type(variable1) is list)
variable2 = {"chaine1": 0, "chaine2": [1, 2], 5: "valeur"}

# Pour accéder aux valeurs d'une liste, on procède comme suit:
print( variable1[0] ) # Affiche "a"
print( variable1[2][1] ) # Affiche 0

# Pour accéder aux valeurs d'un dictionnaire, on procède de la sorte :
print( variable2["chaine1"] ) # Affiche 0
print( variable2["chaine2"][1] ) # Affiche 2
print( variable2[5] ) # Affiche "valeur"

# Note : il est évidemment possible d'avoir un dictionnaire à l'intérieur d'un dictionnaire.



Dans ton code, tu as ceci :

liste_armes = [['Lame de la Purge', (11, 18)],
   ['Lame de feu', (14, 20)],
   ['Epée ensorcelée', (8, 23)],
   ['Double dague', (9, 19)],
   ['Arc corrompu', (10, 18)],
   ['Marteau du profanateur', (13, 24)],
   ['Epée mystique', (8, 17)],
   ['Hache de l\'Empereur', (7, 16)], 
   ['Arc de Naargul', (12, 22)],
   ['Epée de Zraael', (13, 21)]]


Une manières plus facile et beaucoup plus lisible serait d'utiliser un dictionnaire :

liste_armes = {'Lame de la Purge': (11, 18),
   'Lame de feu': (14, 20),
   'Epée ensorcelée': (8, 23),
   'Double dague': (9, 19),
   'Arc corrompu': (10, 18),
   'Marteau du profanateur': (13, 24),
   'Epée mystique': (8, 17),
   'Hache de l\'Empereur': (7, 16), 
   'Arc de Naargul': (12, 22),
   'Epée de Zraael': (13, 21)}


Vu que mon post est assez long et que codes-sources me limite en longueur, je vais créer un deuxième post pour expliquer les principales différences entre Python 2.x et Python 3.x
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.