Resultados 1 al 15 de 15

Tema: ¿Pasos a seguir para plantear las funciones de un programa?



  1. #1
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103

    ¿Pasos a seguir para plantear las funciones de un programa?

    Buenas,

    Estoy aprendiendo python por mi cuenta y acabo de terminar mi primer "intento de programa". Lo llamo intento porque no tiene una funcionalidad más allá del mero hecho de aprender algún que otro concepto. Por si os interesa, es esta birria de aquí XD:

    Código:
    from random import randrange
    
    """ 
    # ANIMAL #
    
    CARACTERÍSTICAS: raza, edad, pelaje, tamaño. (¿Cómo es?)
    
    COMPORTAMIENTOS: jugando, comiendo, haciendo necesidades. (¿Qué puede hacer?)
    
    ESTADOS: hambriento, estresado, creciendo, necesidades básicas. (¿Cómo se encuentra?)
    
    ----
    
    # MASCOTA #
    
    CARACTERÍSTICAS: nombre, dueño.
    
    COMPORTAMIENTOS: sacar a pasear, alimentar, limpiar heces.
    
    """
    
    classAnimal():
    
    def__init__(self, raza, edad, pelaje, tamano): # Características propias de un animal.
    
    # Con self crearemos una instancia independiente para cada animal.
    self.raza = raza 
    self.edad = edad
    self.pelaje = pelaje
    self.tamano = tamano
    self.t_hambre =False
    self.comportamiento ="bien"
    
    
    # COMPORTAMIENTOS ¿Qué es capaz de hacer nuestro objeto perro?
    defcomer(self):
    ifself.t_hambre:
    print(self.nombre, "está comiendo.")
    self.t_hambre =False
    else:
    print(self.nombre, "no parece tener hambre ahora.")
    
    defjugar(self):
    print("Estás jugando con ", self.nombre)
    
    defnecesidades(self):
    print(self.nombre, " ha hecho sus necesidades")
    
    # ESTADOS ¿cómo está nuestro objeto perro?
    defhambriento(self):
    print(self.nombre, "parece tener habmre")
    self.t_hambre =True
    
    defestresado(self):
    print(self.nombre, "parece estresado, le vendría bien un paseo.")
    self.comportamiento ="mal"
    
    defcrecer(self):
    print(self.nombre, "parece más grande")
    self.edad +=1
    self.tamano +=5
    
    
    classMascota(Animal):
    def__init__(self, nombre, dueno, raza, edad, pelaje, tamano):
    super().__init__(raza, edad, pelaje, tamano)
    self.nombre = nombre
    self.dueno = dueno
    
    defD_comer(self):
    returnself.comer()
    
    defS_paseo(self):
    print("Vamos a dar una vuelta, chico. Ven aquí", self.nombre)
    self.necesidades()
    self.comportamiento ="bien"
    
    defcaracteristicas(self):
    print("Nombre de la mascota: ", self.nombre, "\nNombre del dueño: ", self.dueno, "\nEdad mascota: ", self.edad, "\nRaza mascota: ", self.raza, "\nColor del pelaje: ", self.pelaje, "\nTamaño de la mascota: ", self.tamano)
    
    
    
    # print(tobi.RAZA) Preguntar por qué no funciona.
    tobi = Mascota("Tobi", "Juan", "Doberman", 0, "Marrón", 25)
    
    defmascota_necesidades():
        var = randrange(1, 101)
    
    # Necesidades, hambriento, estresado y crecer.
    if1<= var <=60:
            tobi.hambriento()
    elif60< var <=80:
            tobi.estresado()
    elif80< var <=90:
            tobi.crecer()
    else:
            tobi.necesidades()
    
    
    
    
    defcriar_mascota():
        tobi.caracteristicas()
    
    # Qué haremos con la máscota
        var =False
    while var ==False:
    print("1. Pasear.\n2. Alimentar mascota.\n3. Jugar.\n4. Ver estado\n5. Salir")
            selection =int(input())
    
    if selection ==1:
                tobi.S_paseo()
                mascota_necesidades()
    elif selection ==2:
                tobi.D_comer()
                mascota_necesidades()
    elif selection ==3:
                tobi.jugar()
                mascota_necesidades()
    elif selection ==4:
                tobi.caracteristicas()
    elif selection ==5:
                var =True
    else:
    print("Repite el número.")
    
    
    criar_mascota()
    
    
    A modo de resumen, lo que he intentado es plasmar una mascota perro en un programa, algo muy sencillo, pero me he encontrado, a medida que programaba, con varias dudas: ¿Cómo relaciono esto con esto otro? ¿Dónde va este comportamiento? ¿O esta característica?

    Mi duda es ¿cómo os planteáis los programas que vais a crear? ¿Qué patrones seguir para decidir dónde debería ir cada cosa?

    No sé si me explico, pero agradecería cualquier tipo de ayuda.

    ¡Muchas gracias!

  2. #2
    ¯\_(ツ)_/¯ Avatar de josejfernandez
    Fecha de ingreso
    01 ago, 12
    Mensajes
    381
    Agradecido: 124
    No te preocupes en exceso por eso por ahora. Con tu nivel, lo importante es que consigas que el programa haga lo que quieres. A partir de ahí ya irás aprendiendo a estructurarlos correctamente.

  3. Los siguientes usuarios han agradecido a josejfernandez su comentario:


  4. #3
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103
    El problema es que me cuesta pensar qué es lo que tiene que hacer el programa, por eso, después, llevarlo a la práctica me resulta más complicado.

    Gracias!

  5. #4
    ¯\_(ツ)_/¯ Avatar de josejfernandez
    Fecha de ingreso
    01 ago, 12
    Mensajes
    381
    Agradecido: 124
    Te entiendo, ese problema es muy habitual cuando empiezas: simplemente, no sabes qué hacer.

    No sé si tu objetivo es hacer programas que gestionen animales, por lo que te recomiendo que busques algo que de verdad te interese -por el motivo que sea- y que empieces a hacerlo, aunque sea en la versión más ridículamente fácil y sencilla que haga lo mínimo que necesitas.

    Te puedo echar un cable dándote algunas ideas, pero necesitaría saber un poquito más acerca de tus intereses para ello.

  6. Los siguientes usuarios han agradecido a josejfernandez su comentario:


  7. #5
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103
    Buenas y perdona la tardanza en responder @omega. Llevo un verano un poco raro y apenas he tenido tiempo para nada, por otro lado, el poco tiempo que he tenido lo he invertido en stackoverflow, donde habré abierto como mil temas en menos de un mes XD... Que torpe soy.

    Pues llevo días liados con un problema que me trae de cabeza. Creo que me muero antes de poder hacerlo. La cuestión, es que como dices, es algo que me interesa hacer, pero el nivel de dificultad (que aunque puede que no sea tan alto, no lo sé XD), para mí es un mundo y no me sale nada.

    Estaría realmente agradecido si me puedes ayudar, aunque sea un poco o simplemente a organizar un poco lo que tengo que hacer.

    Te remito (y espero que no esté prohibido remitir a otros foros, si es así lo siento y borren o editen el comentario si lo ven oportuno) al tema donde planteo la duda: https://es.stackoverflow.com/questio...t517734_281627

    Te diría que tengas paciencia, es una pregunta larga que realmente no plantea ninguna pregunta más allá de un simple: no tengo ni dea de lo que estoy haciendo ni por dónde empezar...

    Por otro lado, una duda que se me está planteando mucho ahora mismo, es cómo enfocar el principio del código.

    Por si todavía tienes ganas de seguir leyendo y no te he aburrido ya, te planteo mi dilema (aunque es muy largo, creo que entenderás mejor el problema si te lees primero el otro tema):

    [SPOILER=Planteamiento de juego]
    Tengo que crear un programa que me devuelva aleatoriamente o según un valor especificado un personaje (por ejemplo guerrero) y el color asociado a este (verde, en caso del guerrero).

    Mi juego se basa en tirar dados y formar un grupo de aventureros o enemigos, aunque me centraré por ahora en aventureros.

    Hay 7 dados de aventureros, los cuales tienen 6 caras. Cada cara tiene una figura y un color.

    El cómo enfocar eso en un código de programación, es lo que más me está costando ahora mismo... Y realmente no lo veo difícil, pero a la hora de la verdad, me falta mucho que aprender todavía.
    [/SPOILER]

    Gracias y perdona por el parrafón.

  8. #6
    ¯\_(ツ)_/¯ Avatar de josejfernandez
    Fecha de ingreso
    01 ago, 12
    Mensajes
    381
    Agradecido: 124
    He leído todo lo que has escrito aquí y en StackOverflow. Por lo que veo tienes bastante claro las reglas de tu juego. Eso es bueno.

    Algunos de los puntos que planteas en las reglas del juego son un poco complicados para empezar. ¿Mi consejo? Lo que te dije antes: busca la versión mínima posible que haga parte de lo que quieres, para seguir construyendo sobre ella.

    ¿Cuál sería esa versión mínima posible? En mi opinión, podrías empezar por un programa de consola que creara un grupo de jugadores y lo mostrara por pantalla. Eso sólo, nada más.

    ¿Cómo funcionaría esa parte? No me termina de quedar claro. ¿Generas aleatoriamente 7 números para obtener un equipo de 7 personajes de jugador? Luego supongo se genera un equipo de enemigos y ambos equipos se enfrentan con las reglas que has descrito. ¿Es así?

    Si es así, el siguiente paso sería ampliar ese programa simple para que además pueda generar un equipo de enemigos, y el siguiente paso, añadir la capacidad de simular un combate y mostrar los resultados por pantalla. Para establecer ese plan, un desarrollador de software se basa mucho en la capacidad analítica (que estás entrenando) y en la experiencia (que estás obteniendo).

    Por ello reitero lo que te dije anteriormente: intenta que el programa haga lo que quieres, dejando un poco de lado si la forma en que lo estás haciendo es totalmente correcta o no. Preocúpate más de que funcione bien. Divide y vencerás, descomponiendo un problema complejo en otros más simples que puedes resolver, paso a paso, empezando por lo que conoces. Ese es el camino.

    Cuando vayas escribiendo código irás enfrentándote a problemas. Cuando éste código crezca, tendrás que irlo organizando y lo harás mal. En base a esos problemas y a esa experiencia, entenderás mucho mejor las mejores prácticas de desarrollo e irás aprendiendo. Por ejemplo, las estructuras de datos que has planteado en StackOverflow son mejorables, pero no tiene sentido plantear ese tema cuando todavía te cuesta proponer un flujo básico de ejecución.

  9. Los siguientes usuarios han agradecido a josejfernandez su comentario:


  10. #7
    Rey de los Chapuzas Avatar de Rugamba
    Fecha de ingreso
    08 ene, 14
    Ubicación
    CS
    Mensajes
    1,029
    Agradecido: 262
    Entiendo que lo que quiere crear es una versión del dungeon roll, me equivoco?


    Lo primero sería crear 2 vectores de 7 posiciones que se rellenen automaticamente con valores aleatorios de los posibles personajes/colores.

    Una vez hecho eso, necesitas crear una matriz donde se representarán "las reglas" yo pondria en una columna los colores de los personajes, en otra los de los enemigos y en otra el resultado de enfrentar uno con otro (seria la matriz que te aperece en la tarjeta de reglas del juego.

    Despues yo lo que haria a modo de test es que lances el programa, que genere ambos vectores y que tu despues seleccionando un valor de uno de los vectores y otro del otro vector te diga el resultado del "combate", a partir de ahi vamos viendo si quieres.
    Última edición por Rugamba; 29/07/2019 a las 09:13

  11. Los siguientes usuarios han agradecido a Rugamba su comentario:


  12. #8
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103
    Buenas a los dos y muchas gracias por la ayuda!

    Ya tengo parte del código hecho, porque llevo días trabajando en él, pero no fue sino antes de ayer que pude organizar todo lo que tenía hecho en código y en papel para crear algo un poco más "bonito". Os muestro lo que llevo.

    from random import choices
    """ Importa choices para generar opciones aleatorios con una probabilidad específica. """

    classDados:
    """ Crea un objeto, enemigo o compañero, con los atributos figura y color. """
    caras_grupo = {
    "Guerrero":"Verde",
    "Templario":"Blanco",
    "Mago":"Azul",
    "Ladrón":"Morado",
    "Pergamino":"Marrón",
    "Campeón":"Amarillo"
    }

    caras_mazmorra = {
    "Goblin":"Verde",
    "Esqueleto":"Blanco",
    "Ghoul":"Azul",
    "Cofre":"Morado",
    "Pocima":"Naranja",
    "Dragón":"Rojo"
    }

    def__init__(self, tipo, figura=None):
    """ Devuelve el par clave:valor de un diccionario. Donde la clave es una figura y el valor un color. """
    if tipo =="enemigo":
    self.caras =dict(Dados.caras_mazmorra)

    if tipo =="aliado":
    self.caras =dict(Dados.caras_grupo)

    if figura isNone:
    posibilidades = [i for i inself.caras.keys()]
    eleccion = choices(posibilidades, weights=[2,2,2,2,1,1])
    self.figura, self.color = eleccion[0], self.caras[eleccion[0]]
    else:
    self.figura, self.color = figura, self.caras[figura]


    classAcciones:
    """ Acciones de los dados en dungeon roll. """
    def__init__(self):
    """ Inicializa los grupos enemigos y aliados como listas. """
    self.grupo_aliado = []
    self.grupo_enemigo = []
    self.dragones = []
    self.cementerio =0

    defadd(self, tipo, figura=None, cantidad=1):
    """
    Añade aliados o enemigos a sus respectivos grupos.
    Tipo: si es aliado o enemigo.
    Figura: si queremos que sea aleatoria o nosotros especificamos una. Bastaría con poner el nombre de la figura.
    Cantidad: por defecto, para añadir siempre se debe añadir 1. Puede añadirse tantos como se quieran.
    Devuelve True o False según si en el grupo enemigo hay dragones.
    """
    if tipo =="enemigo":
    dado =self.grupo_enemigo
    if tipo =="aliado":
    dado =self.grupo_aliado
    for i inrange(cantidad):
    dado.append(Dados(tipo, figura)) # Llama al método notas y le agrega el resultado a la respectiva lista, enemigo o aliado.
    for i inself.grupo_enemigo:
    if i.figura =="Dragón":
    self.dragon =True
    return
    self.dragon =False

    defeliminar_dados(self, eliminar_enemigo=None, eliminar_aliado=None):
    """ Elimina aliados o enemigos específicos del grupo adecuado. """
    defmetodo_eliminar(eliminados, grupo):
    """ Submétodo para eliminar los dados especificados. """
    for i in eliminados:
    grupo.remove(i)
    if eliminar_enemigo isnotNone:
    metodo_eliminar(eliminar_enemigo, self.grupo_enemigo)
    if eliminar_aliado isnotNone:
    self.cementerio += eliminar_aliado.count(Dados())
    metodo_eliminar(eliminar_aliado, self.grupo_aliado)

    defguarida_dragon(self):
    """ Elimina los dragones del grupo enemigo y los añade a la guarida """
    for i inself.grupo_enemigo:
    if i.figura =="Dragón":
    self.dragones.append(i)
    for i inself.dragones:
    if i inself.grupo_enemigo:
    self.grupo_enemigo.remove(i)


    if__name__=="__main__":
    pass



    Explicando un poco, tengo la clase dados, que se encarga de generar un par clave:valor donde la clave es una figura y el valor un color. Pensé en separar la clase dados en dos, uno para enemigos y otro para aliados, pero por ahora no creo que ninguna clase haga diferente a la otra, así que creo que lo mejor, para no repetir código es dejarla como una, ¿qué opináis?

    Luego me enfoqué en las posibles acciones de los dados: añadirse al grupo, eliminarse del grupo, los dragones se van a la guarida del dragon y los dados aliados que mueren se van al cementerio.

    Ahora tendría que hacer el combate, que si puedes explicarme un poco más @Rugamba lo que me has comentado, te lo agradecería.

    Si veis cualquier cosa que se deba cambiar o se pueda mejorar, agradecería que me lo dijerais.

    Gracias por la ayuda!

  13. #9
    Rey de los Chapuzas Avatar de Rugamba
    Fecha de ingreso
    08 ene, 14
    Ubicación
    CS
    Mensajes
    1,029
    Agradecido: 262
    Primero haria un combate simple.
    Te lo poongo redactado para que le des tu una vueltecita.

    Ejemplo:
    vJugador: verde,verde,azul,amarillo...
    vMazmorra: azul,azul,verde,azul....

    vJugadorCombate: inicialmente vacio
    vMazmorraCombate: inicialmente vacio

    El jugador introduce las posiciones de los dados que quiere usar para esta jugada, yo por ejemplo primero escogería el 3 (azul)

    vJugadorCombate: 3

    Ahora selecciona contra que enemigos lo enfrenta, que serían el 1,el 2, el 4 de vMazmorra (todos azules):

    vMazmorraCombate: 1, 2, 4

    Ahora hay que recorrer vMazmorraCombate para comprobar que todos son derrotados por los dados de vJugadorCombate.

    En este caso, vJugadorCombate derrota a vMazmorraCombate, por lo que mandas los 4 dados al cementerio. Si no los vence vuelven a sus respectivos vectores.


    No se si se entiende la idea.


    Para hacer la comprobación de si vence o no, tienen que crear un metodo Comprobación (a, b) al que invocarás para comparar cada conjunto de dados.

    Comprobar que si vMazmorraCombate.length > 1 todos deben ser del mismo color, si no lo son no debe dejar formar el conjunto.

    Despues deberias tener una tabla donde estén las equivalencias:
    Verde:verde:X
    Verde:azul:1
    Verde:morado:1
    ...
    Amarillo:Verde:X
    Amarillo:azul:X
    ....

    (sería una matriz de este tipo, donde podrias cambiar los nombres de los colores por valores numericos que representen las coordenadas.
    ¿Pasos a seguir para plantear las funciones de un programa?)

    Cuando compruebes, si la combinación es X puede eliminar todos los dados de vMazmorraCombate, si es 1 solo puede eliminar uno (el primero por ejemplo)


    Bueno, las reglas igual me he colado, pero hablo de memoria, lo que espero es que captes la idea.

    Si dudas ya sabes, pregunta ¿Pasos a seguir para plantear las funciones de un programa?

  14. #10
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103
    Buenas,

    Entiendo la idea más o menos, pero no voy a negar... Que me resulta algo confuso. En estos días voy a estar trabajando y voy a tener poco tiempo para mirar el código, a ver si me puedo poner esta noche y adelantar algo.

    Gracias!

  15. #11
    ¯\_(ツ)_/¯ Avatar de josejfernandez
    Fecha de ingreso
    01 ago, 12
    Mensajes
    381
    Agradecido: 124
    Pega el último código que tengas por aquí, pero esta vez envuélvelo en etiquetas code para que respete las tabulaciones. Ejecútalo y pega lo que sale por consola, a ver en qué punto estás.

    1. Generar equipo de personajes [HECHO]
    2. Generar equipo de enemigos [HECHO]
    3. Simular combate básico <--

    ¿Estás en este punto ahora mismo?

    Insisto en que vayas paso a paso, céntrate en una tarea y no avances hasta que la completes. No añadas cosas que no necesites para realizar esa tarea. Por ejemplo, si estás haciendo la parte que genera el equipo de personajes, no añadas nada de dragones, pergaminos ni nada que no sea exclusivamente para generar el equipo de personajes.

  16. #12
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103
    Buenas!

    De nuevo, gracias por los consejos.

    Ahora mismo estoy de curro hasta arriba y estoy reventado, por lo que estoy avanzando muy lentamente, ahora casi que nada.

    Este finde me voy de vacaciones también así que voy a tocar menos el programa.

    Pero por norma, hago lo que me habéis aconsejo. Me centro en una parte y hasta que no la termino no paro, voy pasó a paso. Intentando que funcione con lo mínimo indispensable. Tendré, luego, más tiempo para mejorar, añadir o quitar.

    Gracias!!

  17. #13
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103
    He avanzado un poco más en el programa. @Rugamba, por ahora no he puesto en práctica tu método como tal de matices, pero aparte de que python no tiene matrices como tal, por lo que he leído, se me complica bastante ponerlo en práctica.

    He tomado un desvio, probablemente provisional para ir haciendo las funciones poco a poco. Por ahora: puedo mostrar los grupos, crear ambos grupos, filtrar de dragones, selccionar para pelear y eliminar dados.

    Os dejo el código por si queréis echarle un vistazo. (Sinceramente, creo que debería ordenarlo).

    Código:
    from random import choices
    """ Importa choices para generar opciones aleatorios con una probabilidad específica. """
    
    classDados:
    """ Crea un objeto, enemigo o compañero, con los atributos figura y color. """
        caras_grupo = {
    "Guerrero":"Verde",
    "Templario":"Blanco",
    "Mago":"Azul",
    "Ladrón":"Morado",
    "Pergamino":"Marrón",
    "Campeón":"Amarillo"
        }
    
        caras_mazmorra = {
    "Goblin":"Verde",
    "Esqueleto":"Blanco",
    "Ghoul":"Azul",
    "Cofre":"Morado",
    "Pocima":"Naranja",
    "Dragón":"Rojo"
        }
    
    def__init__(self, tipo, figura=None):
    """ Devuelve el par clave:valor de un diccionario. Donde la clave es una figura y el valor un color. """
    if tipo =="enemigo":
    self.caras =dict(Dados.caras_mazmorra)
    
    if tipo =="aliado":
    self.caras =dict(Dados.caras_grupo)
    
    if figura isNone:
                posibilidades = [i for i inself.caras.keys()]
                eleccion = choices(posibilidades, weights=[2,2,2,2,1,1])
    self.figura, self.color = eleccion[0], self.caras[eleccion[0]]
    else:
    self.figura, self.color = figura, self.caras[figura]
    
    
    classAcciones:
    """ Acciones de los dados en dungeon roll. """
    def__init__(self):
    """ Inicializa los grupos enemigos y aliados como listas. """
    self.grupo_aliado = []
    self.grupo_enemigo = []
    self.dragones = []
    self.cementerio =0
    
    defadd(self, tipo, figura=None, cantidad=1):
    """ 
            Añade aliados o enemigos a sus respectivos grupos.
            Tipo: si es aliado o enemigo.
            Figura: si queremos que sea aleatoria o nosotros especificamos una. Bastaría con poner el nombre de la figura.
            Cantidad: por defecto, para añadir siempre se debe añadir 1. Puede añadirse tantos como se quieran.
            Devuelve True o False según si en el grupo enemigo hay dragones.
            """
    if tipo =="enemigo":
                dado =self.grupo_enemigo
    if tipo =="aliado":
                dado =self.grupo_aliado
    for i inrange(cantidad):
                dado.append(Dados(tipo, figura)) # Llama al método notas y le agrega el resultado a la respectiva lista, enemigo o aliado.
    for i inself.grupo_enemigo:
    if i.figura =="Dragón":
    self.dragon =True
    return
    self.dragon =False
    
    defeliminar_dados(self, eliminar_enemigo=None, eliminar_aliado=None):
    """ Elimina aliados o enemigos específicos del grupo adecuado. """
    defmetodo_eliminar(eliminados, grupo):
    """ Submétodo para eliminar los dados especificados. """
    for i in eliminados:
                    grupo.remove(i)
    if eliminar_enemigo isnotNone:
                metodo_eliminar(eliminar_enemigo, self.grupo_enemigo)
    if eliminar_aliado isnotNone:
    for i in eliminar_aliado:
    self.cementerio +=1
                metodo_eliminar(eliminar_aliado, self.grupo_aliado)
    
    defguarida_dragon(self):
    """ Elimina los dragones del grupo enemigo y los añade a la guarida """
    for i inself.grupo_enemigo:
    if i.figura =="Dragón":
    self.dragones.append(i)
    for i inself.dragones:
    if i inself.grupo_enemigo:
    self.grupo_enemigo.remove(i)
    
    defmostrar_dados(self):
    for i inrange(len(self.grupo_enemigo)):
    print(i+1, self.grupo_enemigo[i].figura, self.grupo_enemigo[i].color)
    
    print("")
    
    for i inrange(len(self.grupo_aliado)):
    print(i+1, self.grupo_aliado[i].figura, self.grupo_aliado[i].color)
    
    defseleccionar(self):
    self.mostrar_dados()
    
    whileTrue:
    self.a_juego =int(input("Escoge un alidado para la batalla: "))
    ifself.a_juego ==""orself.a_juego <=0orself.a_juego >len(self.grupo_aliado):
    print("Introduce una posición válida para el aliado")
    else:
    self.a_juegos = []
    self.a_juegos.append(self.grupo_aliado[self.a_juego-1])
    break
    
    self.b_juego = []
    whileTrue:
                b_j =int(input("Introduce un enemigo. 0 para dejar de seleccionar: "))
    
    if b_j ==""or b_j <0or b_j >len(self.grupo_enemigo):
    print("Introduce una posición válida para el grupo enemigo.")
    elif b_j ==0: 
    ifself.b_juego:
    break
    else:
    print("Selecciona al menos un enemigo.")
    elif b_j inself.b_juego:
    print("Ya has escodigo ese enemigo")
    else:
    self.b_juego.append(self.grupo_enemigo[b_j-1])
    
    self.comprobar(self.b_juego, self.a_juegos)
    
    defcomprobar(self, enemigos, aliados):
    iflen(enemigos) >1:
    for i in enemigos:
    try:
    if i.color == color:
                            all_same =True
    else:
                            all_same =False
    break
    except:
                        color = i.color
    else:
                all_same =True
    
    
    if all_same:
    self.eliminar_dados(enemigos, aliados)
    else:
    print("Esa combinación no es válida.")
    self.seleccionar()
    
    

  18. #14
    Rey de los Chapuzas Avatar de Rugamba
    Fecha de ingreso
    08 ene, 14
    Ubicación
    CS
    Mensajes
    1,029
    Agradecido: 262
    Tienes soluciones varias para la utilización de matrices en python, como esta: Como crear matrices en Python con NumPy | Pybonacci

    de todas formas, a ver si saco un rato, y le pego un vistazo al codigo a fondo y comentamos.

  19. #15
    Personal vaguer Avatar de Saito_25
    Fecha de ingreso
    15 mar, 15
    Ubicación
    debajo de un puente
    Mensajes
    771
    Agradecido: 103
    Vi ese tutorial hace tiempo, vamos, cuando me dijiste que usara matrices, pero la verdad, con el poco tiempo que tengo y que cuando tenga 5 minutos la cabeza me retumba... Puto trabajo, dejé el tema de las matrices.

    Mañana me voy de vacaciones y no voy a poder seguir con el programa durante un tiempo, pero seguiré con la programación con la aplicación sololearn, aunque sea 5 minutos al día, que no es bueno perder el contacto con la programación durante muchos días.

    Cuando vuelva, espero poder ponerme con el programa. Me gustaría terminarlo antes de empezar el nuevo curso escolar, y me sois de mucha ayuda sinceramente.

    Agradezco el tiempo que invertís en ayudarme y responder mis preguntas, a ver si en unos años, puedo estar por el foro ayudando yo también a los demás con sus dudas ¿Pasos a seguir para plantear las funciones de un programa?.

    Te agradecería que hagas lo que has dicho, @Rugamba, seguro que puedes sacar mil cosas a mejorar en el código y todo lo que sea aprender, bienvenido es!

    Gracias de nuevo!

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

Hacemos uso de cookies propias y de terceros para proporcionar una mejor experiencia de usuario. Al seguir navegando entendemos que acepta nuestra Más información .

Aceptar