Pygame ou tkinter ?
Meurtrierx
-
Meurtrierx Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Meurtrierx Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute en programmation et j'ai programmé un jeu (très très simple ^^) dans le but principal non pas de le commercialiser --' mais de m'améliorer et comprendre le langage python.
Tout d'abord pouvez-vous me dire si mon programme est bien codé ? (mal formulé ,sale ,bug , ...)
Ensuite j'aimerai faire un affichage graphique j'ai vogué sur le net et j'ai trouvé : pygame et tkinter . Lequel d'entre eux me conseillez-vous, ou faut-il les mélanger ? (si possible pourquoi)
Et enfin : mieux vaut commencer sur un langage , le maîtriser et en apprendre d'autre ou en commencer plusieurs a la fois ? (j'aimerai commencer c++)
Merci d'avoir lu ce pavé et d'avoir pris le temps de répondre ^^ (je suis nouveau sur le forum)
Bonne soirée.
Je débute en programmation et j'ai programmé un jeu (très très simple ^^) dans le but principal non pas de le commercialiser --' mais de m'améliorer et comprendre le langage python.
Tout d'abord pouvez-vous me dire si mon programme est bien codé ? (mal formulé ,sale ,bug , ...)
Ensuite j'aimerai faire un affichage graphique j'ai vogué sur le net et j'ai trouvé : pygame et tkinter . Lequel d'entre eux me conseillez-vous, ou faut-il les mélanger ? (si possible pourquoi)
Et enfin : mieux vaut commencer sur un langage , le maîtriser et en apprendre d'autre ou en commencer plusieurs a la fois ? (j'aimerai commencer c++)
Merci d'avoir lu ce pavé et d'avoir pris le temps de répondre ^^ (je suis nouveau sur le forum)
Bonne soirée.
from random import * import pickle import time rejouer =1 nommos = ['Loup','Ours','Cerbère','Dragon','Hades'] degatmos = [8,15,35,60,450] viemos = [50,95,120,200,13500] argentmos = [6,20,50,100,10000] xpmos = [10,34,70,128,10000] mobtué = 0 t2 = time.clock() print(" VOUS JOUER A MON JEU !!!") #Chargement reprendrepartie = input("Charger ? oui/non \n") if reprendrepartie == 'oui': f = open('Monfichier', 'rb') viemaxj = pickle.load(f) viej = pickle.load(f) degatj = pickle.load(f) argentj = pickle.load(f) xpj = pickle.load(f) xpmax = pickle.load(f) niveauj = pickle.load(f) f.close() print("Vous avez : ",degatj,"dégats") print("Vous avez actuellement :",viej, "/",viemaxj,"pv") print("Votre argent : ",argentj,"krik") print("Vous êtes niveau :",niveauj,"et",xpj,'/',xpmax,'xp') else : viemaxj = 150 argentj = 100 degatj = 20 viej = 150 niveauj = 1 xpj = 0 xpmax = 50 while rejouer == 1 : menu = int(input("\n1.combat 2.soigner 3.boutique 4.stats 5.sauvegarder 6.quitter \n")) #Combat if menu == 1 : monstr = int(input("Quel monstre voulez vous affronter ? \n 1 - Loup 4 - Dragon \n 2 - Ours \n 3 - Cerbère \n")) monstre = monstr - 1 degatmob = degatmos[monstre] viemob = viemos[monstre] xpmob = randint((xpmos[monstre]/2),(xpmos[monstre])) argentmob = randint((argentmos[monstre]/2),(argentmos[monstre])) print("combat contre ",nommos[monstre]) for i in range (1,100,1) : if viej < 1: print("Vous avez perdu") argentj = argentj/2 break if viemob < 1 : print("Vous avez gagné ! Vous obtenez",argentmob,"krik et",xpmob,'xp') argentj = argentj + argentmob xpj = xpj + xpmob print("Vous avez désormais ",argentj,"krik et",xpj,'/',xpmax,'xp') mobtué = mobtué + 1 if xpj >= xpmax : xpj = xpj -xpmax xpmax = 1.5*xpmax niveauj = niveauj + 1 viemaxj = viemaxj +8 degatj = degatj + 2 print("Vous changez de niveau ! ->",niveauj) break choix = int(input("1 combattre, 2 informations, 3 fuir \n")) if choix == 1 : viej = viej - degatmob print("Il vous reste ",viej,"/",viemaxj,"pv") viemob = viemob-degatj print("Il reste" , viemob,"pv a",nommos[monstre]) if choix == 2 : print(" Il a ",degatmob," dégats, ",viemob,"pv et peut rapporter entre ",(argentmos[monstre]/2),"à",(argentmos[monstre]),"krik et",(xpmos[monstre]/2),"à",(xpmos[monstre]),'xp') if choix == 3 : print("vous prenez la fuite") break #Soin if menu == 2 : if argentj >= 10 : viej = viemaxj argentj = argentj-10 print("Vous avez maintenant ",viej," pv et ",argentj,"krik") else : print("Vous n'avez plus assez d'argent ou votre choix est erroné.") #Boutique if menu == 3 : print("Vous avez actuellement : ",argentj,"krik") choixboutique = int(input("Que voulez vous augmenter ? \n (1) 15 vie = 25 krik \n (2) 1 degat = 25 krik \n")) if choixboutique != 1 and choixboutique !=2 or argentj < 25: print("Vous n'avez plus assez d'argent ou votre choix est erroné") if choixboutique == 1 and argentj >= 25 : viemaxj = viemaxj + 15 argentj = argentj - 25 print("vie joueur : ",viemaxj,"il vous reste :",argentj,"krik") if choixboutique == 2 and argentj >= 25 : argentj = argentj -25 degatj = degatj +1 print("degats joueur : ",degatj,"il vous reste :",argentj,"krik") #Stats if menu == 4 : print("Vous avez : ",degatj,"dégats") print("Vous avez actuellement :",viej, "/",viemaxj,"pv") print("Votre argent : ",argentj,"krik") print("Depuis votre dernière connexion vous avez tué",mobtué,"monstres") #Sauvegarde if menu == 5 : f = open('Monfichier', 'wb') pickle.dump(viemaxj,f) pickle.dump(viej,f) pickle.dump(degatj,f) pickle.dump(argentj,f) pickle.dump(xpj,f) pickle.dump(xpmax,f) pickle.dump(niveauj,f) f.close() print("Sauvegarde effectuée !") #Quitter if menu == 6 : t1 = time.clock() print("Vous avez quitté le jeu après",(t1-t2),"sec d'utilisation.") rejouer = 0
A voir également:
- Pygame vs tkinter
- Udp vs tcp - Guide
- Samsung a15 vs a16 - Accueil - Téléphones
- X86 vs x64 ✓ - Forum Windows 7
- 1 million vs 1 milliard - Accueil - Technologies
- Psp street vs psp 3000 - Forum PSP
1 réponse
Quelques remarques sur ton code :
mobtué = 0 -> pas d'accent dans les noms de variable.
Ton programme n'est pas facile à lire car tu n'utilises pas des fonctions.
Ensuite à la place des if, ça serait mieux d'utiliser switch().
for i in range (1,100,1) :=> utilise plutôt xrange()
Pour le graphique, cela dépend du type de graphique que tu souhaites faire. A mon avis, tu souhaites faire des fenêtres ? Dans ce cas, utilise plutôt tkinter (ou d'autres comme pyQt), mais pas pygame.
Sinon, ton programme est vraiment simple. Je te conseille vraiment d'approfondir le python, de faire des programmes plus complexes (au moins pour gérer les algorithmes), te familiariser avec les classes, etc. Après, tu pourras envisager de changer :-).
Cdlt,
mobtué = 0 -> pas d'accent dans les noms de variable.
Ton programme n'est pas facile à lire car tu n'utilises pas des fonctions.
Ensuite à la place des if, ça serait mieux d'utiliser switch().
for i in range (1,100,1) :=> utilise plutôt xrange()
Pour le graphique, cela dépend du type de graphique que tu souhaites faire. A mon avis, tu souhaites faire des fenêtres ? Dans ce cas, utilise plutôt tkinter (ou d'autres comme pyQt), mais pas pygame.
Sinon, ton programme est vraiment simple. Je te conseille vraiment d'approfondir le python, de faire des programmes plus complexes (au moins pour gérer les algorithmes), te familiariser avec les classes, etc. Après, tu pourras envisager de changer :-).
Cdlt,
Je viens de corriger cet accent.
Les fonctions ? je connais mais j'aimerai savoir pourquoi les utiliser si l'on ne l'utilise pas plusieurs fois dans le code ? (comme ce programme) Cela ne fait que rajouter une ligne de code supplémentaire non ?
Je ne connaissais pas switch() ni xrange() , je m'en vais l'apprendre ^^
Oui , ce sont des fenêtres que j'aimerai faire (peut-être plus tard des mouvements mais pas pour le moment ^^)
Je débute donc oui ce programme est simple mais j'essaierai de l'approfondir avant le c++ car pour avoir essayer le c++ (en 1h) je préfère apprendre python :)
Je suis d'accord mon niveau en python est surement désastreux a vos yeux mais c'est le début (je reste le meilleur de ma classe en terminale S option ISN ^^)
Merci. :)
petit pb :
"En Python, l'instruction switch n'existe pas ; il faut la remplacer par une suite de si/sinon, ou en passant par un lambda-calcul."
"Pour info, xrange n'existe plus en Python3 et range est devenu "générateur" i.e. a le comportement de xrange 2.x"
-> Donc plus de switch et xrange est devenu range en 3.4 (la version que j'utilise)
Non, ton niveau n'est pas désastreux. Loin de là ;-). Si je te conseille de continuer, c'est plutôt pour améliorer l'algorithmique.
Pour la fonction, effectivement, ici ce n'est pas forcément nécessaire. Mais cela améliore quand même la lisibilité. Mais effectivement, trouve un programme plus compliqué à faire :-).
Je viens de finir mais j'ai un soucis , ma fonction 'combat' revient quand par ex je suis dans les 'stats'
code :
Il vaut mieux envoyer les variables en argument dans les fonctions.
Je ne suis pas sûr d'avoir bien saisie ton erreur ?
Par contre si quelqu'un pourrai m'aider , tout marche sauf les combats (je vous laisse essayer vous verrez) .
J'ai une question : comment utiliser break dans une fonction ? ou y-a-t-il un équivalent ?
remarque : sur ce code je pense que les fonctions ne font que compliquer le prgm ^^