× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 Jeux de combat en python.
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
niko973
  Posté le 01/04/2014 @ 16:11 
Aller en bas de la page 
Petit astucien

Bonjour à tous,

J'ai un projet à faire qui consiste en la réalisation d'un jeu en python 3. J'ai choisi de faire un petit jeux lux deux joueurs peuvent d'affronter. Différentes actions seraient possibles telles que : acheter une arme/armures, vendre une arme/armures, attaquer, abandonner, chercher de l'or (c'est le moyen le plus simple que j'ai trouver de faire gagner de l'or au joueurs pour qu'il puissent s'acheter des équipements) et autres.

Je voudrais qu'une seule action par tour soit possible, qu'a chaque fois qu'il attaque le joueur puisse choisir son arme et que la meilleur armure soit d'office utilisée parmis les différente que le joueur possède.

Pour un débutant en python je vous assure tout cela est assez compliqué. Le promet doit rester assez simple mais je me suis lancé dans de la POO parce-que je trouvais l'idée de ce petit combat plus fun. Je vous partage mon code, le but étant que vous puissiez me corriger soit sur des erreurs de raisonnement dans mes fonctions ou ma main loop ou des erreurs de typo (mais ca je devrais m'en sortir seul si ce sont des coquilles)

Voila j'espère que vous pourrez m'aider car je ne me sors pas, même pour des fonctions basiques comme abandonner... Merci d'avance!

Niko97320

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

import random

class Joueur:

def __init__(self):

self.nom=""

self.sante=100

self.sante_max=100

self.gold=100

self.arme=["Fourchette"] # liste pour pouvoir ajouter du stuff

self.armure=["Culotte en coton"] # liste pour pouvoir ajouter du stuff quand achat

self.etat="Normal"

def abandonner(self):

print ("%s a choisi d'abandonner.") % self.nom

self.sante = 0

def attaquer(self, ennemi, arme):

critique=0.9+random.random()

if critique >= 1.5 :

print ("Coup critique !")

dommage=self.arme*critique-ennemi.armure

ennemi.sante=ennemi.sante-dommage

print ("%s inflige %s dommages à %s. \n Il reste %s PV à %s" % self.nom, dommage, ennemi.nom, ennemi.sante, ennemi.nom)

def stats(self):

print ("***** %s Stats ***** \n Vie : %s/%s PV \n Armure : %s \n Arme : %s \n Or : %s \n" % self.nom, self.sante, self.sante_max, self.armure, self.arme, self.gold)

def chercherOr(self):

print ("Vous entreprenez la recherche d'or par terre autour de vous")

gain=random.randint(10,80)

self.gold=self.gold+gain

Print ("vous avez trouvé %s Or qui s'ajoute a votre bourse. Solde : %s" % gain, self.gold)

def acheter(self):

Print("Vous entrez dans la boutique avec %s en poche" % self.gold)

# Affiche la liste des armes et armures a vendre et leur prix

achat=input("Quelle arme ou armure de la liste souhaitez vous acheter ?")

# tests prix et dispo

if achat in lArmes or achat in lArmures :

print("Vous avez selectionné %s" % achat)

else :

print ("Cet objet n'est pas à vendre!")

if achat.prix <= self.gold in achat in lArmes:

achat=self.arme

# enleve l'arme ou armure du stuff

self.armes.remove(achat)

else :

print("Vous n'avez pas assez d'or pour acheter cela")

if achat.prix <= self.gold and achat in lArmures:

achat=self.armures

# enleve l'arme ou armure du stuff

self.armure.remove(achat)

else :

print("Vous n'avez pas assez d'or pour acheter cela")

self.gold=self.gold-self.arme.prix

print("Felicitation vous venez d'acheter %s, il vous reste " % achat)

def vendre(self):

# afficher la liste des objets possédés.

print("Vous entrez dans la boutique avec %s en poche" % self.gold)

# Afficher la liste des armes et armures possédées

vente=input("Quelle arme ou armure de la liste souhaitez vous vendre?")

if vente in self.arme :

self.armes.remove(vente)

self.gold=self.gold+arme.prix

elif vente in self.armure :

self.armure.remove(vente)

self.gold=self.gold+armure.prix

else :

print ("Vous ne pouvez pas vendre ceci.")

class Arme:

def __init__ (self,prix,degats):

self.prix=prix

self.degats=degats

def getDegats (self):

degats=self.degats

return degats

class Armure:

def __init__ (self,prix,protection):

self.prix=prix

self.protection=protection

# Contruction des armes et armures

fourchette=Arme(0,10)

dague=Arme(5,20)

epeeCourte=Arme(30,70)

hache=Arme(50,100)

epeeLegendaire=Arme(300,1000)

katana=Arme(100,200)

calecon_en_maille=Armure(0,0)

armure_en_cuir=Armure(10,10)

haume_cuir=Armure(5,5)

jambiere_cuir=Armure(5,5)

armure_acier=Armure(50,50)

haume_acier=Armure(20,20)

jambieres_acier=Armure(20,20)

# Listes pour les tests

lArmes=["Fourchette","Dague","Epee courte","Hache","Epee Legendaire","Katana"]

lArmures=["Caleçon en maille", "Armure cuir","Haume cuir","Jambière cuir", "Armure acier", "Haume acier","Jambières acier"]

lActions=["attaquer","abandonner","vendre","acheter","stats","chercherOr"]

j1=Joueur()

j2=Joueur()

j1.nom=input("Joueur 1 entrez votre nom : ")

j2.nom=input("Joueur 2 entrez votre nom : ")

while (j1.sante != 0 or j2.sante != 0) :

print ("Que voulez vous faire %s \n" % j1.nom)

action=input("> ")

if action == "attaquer" :

j1.attaquer(j2,Fourchette)

elif action == "abandonner" :

j1.abandonner

elif action == "vendre" :

j1.vendre

elif action == "acheter" :

j1.acheter

elif action == "stats" :

j1.stats

elif action == "chercherOr" :

j1.chercherOr

else :

print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")

print ("\n".join(lActions))

if j1.sante==0:

break

print ("Que voulez vous faire %s \n" % j2.nom)

action=input("> ")

if action == "attaquer" :

j2.attaquer

elif action == "abandonner" :

j2.abandonner

elif action == "vendre" :

j2.vendre

elif action == "acheter" :

j2.acheter

elif action == "stats" :

j2.stats

elif action == "chercherOr" :

j2.chercherOr

else :

print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")

print ("\n".join(lActions))

# if j2.sante == 0:

# break

if j1.sante == 0 :

print ("j2.nom remporte la victoire!")

if j2.sante == 0 :

print ("j1.nom remporte la victoire!")

####### facon de faire avec eval a explorer ######

#if action in lActions:

# eval("j1."+action) #pb

# else :

# print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")

# print ("\n".join(lActions))

# if j1.sante==0:

# break

# print ("Que voulez vous faire %s \n" % j2.nom)

# action=input("> ")

#

# if action in lActions:

# eval("j2."+action)

# else :

# print ("Ceci ne semble pas être une action possible. Voici la liste des actions :")

# print ("\n".join(lActions))

# if j2.sante == 0:

# break

Publicité
niko973
 Posté le 01/04/2014 à 16:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ca sera sans doute plus facile comme ca. Vous pourrez trouver le code ici https://www.dropbox.com/s/bzbik7f6n66wohi/RPG-with-class.py

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
62,38 €Kit mémoire 16 Go DDR4 SO-DIMM HyperX (2x8 Go) à 62,38 € livré
Valable jusqu'au 10 Août

Amazon Allemagne propose actuellement le Kit mémoire 16 Go DDR4 SO-DIMM HyperX Impact à 57,83 €. Comptez 4,55 € pour la livraison en France soit un total de 62,38 € livré alors qu'on le trouve ailleurs à partir de 75 €. Un excellent prix pour ce kit mémoire dédié aux ordinateurs portables et composé de 2 modules de 8 Go DDR4 2666 MHz CL15. Notez que la version 32 Go (2x16 Go) est également en promotion à 114,10 € livrée.


> Voir l'offre
51,99 €SSD Silicon Power A55 512 Go à 51,99 €
Valable jusqu'au 14 Août

Amazon fait une promotion sur le SSD Silicon Power A55 512 Go qui passe à 51,99 € livré gratuitement. Ce SSD à mémoire TLC possède un cache SLC et offre des taux de transfert de 550 Mo/s en lecture et 450 Mo/s en écriture. 


> Voir l'offre
-50%Jusqu'à -50% sur les pastilles lave-vaisselle de la marque Finish
Valable jusqu'au 09 Août

Cette semaine, Amazon offre jusqu'à 50% de remise immédiate sur les pastilles lave-vaisselle de la marque Finish.


> Voir l'offre

Sujets relatifs
jeux android kill shot de l'aide svp
jeux programmation
Cree un jeux ?
convertir python *.py en *.exe
Programme de Pointage en Python
[PYTHON] - Pymedia enregistrement audio
Thème Superkaramba et script python
Aide pour jeux
Linux, superkaramba avec thème karamba et python
Problème de lancement IDLE de Python
Plus de sujets relatifs à Jeux de combat en python.
 > Tous les forums > Forum Autres langages