Python - Ejercicio POO

 
Vista:
sin imagen de perfil

Ejercicio POO

Publicado por anonymous (38 intervenciones) el 07/07/2021 01:55:36
Buenas noches, tengo una duda con mi código, con estos inputs;
camino_1 = Camino(["F", "O"], "rojo")
camino_2 = Camino(["E", "S"], "amarillo")
camino_3 = Camino(["F", "N"], "amarillo")
baldosa = Baldosa([camino_1, camino_2, camino_3])
baldosa.col = 65
baldosa.fila = 5
print(baldosa)

me deberia salir este output: Baldosa: Num. de Caminos = 3, Ubicacion = (5, 65), pero no lo logro, aquí dejo la explicación del output y mi codigo por si alguien me pudiese ayudar.

La baldosa de este ejemplo tiene tres caminos: dos amarillos y uno rojo. El camino_1 rojo tiene un extremo al oeste y otro en un fin, el camino_2 amarillo tiene como extremos el sur y el este, mientras que el camino_3 amarillo tiene como extremos el fin (al igual que el camino rojo) y el norte.

Lo primero que se hace es instanciar los tres caminos en el orden que fueron descritos. Luego, se instancia la baldosa dándole como parámetro una lista que contiene al camino_1, camino_2 y camino_3. La baldosa tiene por defecto posición (-1,-1), por lo que al renombrar estos atributos, la baldosa queda ahora en la columna 65 y la fila 5, es decir, en el punto (5,65).




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
class Camino:
    def __init__(self,extremos,color):
 
        self.extremos = extremos
        self.color = color
        self.conquistado = False
 
    def __str__(self):
 
        return "Camino: extremos =" + " " + str(self.extremos) + ", " + "color = " + self.color
 
    def rotar(self,grados,sentido):
        self.grados = grados
        self.sentido = sentido
 
        for i in range(0,2):
 
            if sentido == "horario":
                if grados == 90:
 
                    if self.extremos[i] == "N":
                        self.extremos[i] = "E"
 
                    elif self.extremos[i] == "E":
                        self.extremos[i] = "S"
 
                    elif self.extremos[i] == "S":
                        self.extremos[i] = "O"
 
                    elif self.extremos[i] == "O":
                        self.extremos[i] = "N"
 
                    elif self.extremos[i] == "F":
                        self.extremos[i] = "F"
 
                elif grados == 180:
 
                    if self.extremos[i] == "N":
                        self.extremos[i] = "S"
 
                    elif self.extremos[i] == "E":
                        self.extremos[i] = "O"
 
                    elif self.extremos[i] == "S":
                        self.extremos[i] = "N"
 
                    elif self.extremos[i] == "O":
                        self.extremos[i] = "E"
 
                    elif self.extremos[i] == "F":
                        self.extremos[i] = "F"
 
                elif grados == 270:
 
                    if self.extremos[i] == "N":
                        self.extremos[i] = "O"
 
                    elif self.extremos[i] == "E":
                        self.extremos[i] = "N"
 
                    elif self.extremos[i] == "S":
                        self.extremos[i] = "E"
 
                    elif self.extremos[i] == "O":
                        self.extremos[i] = "S"
 
                    elif self.extremos[i] == "F":
                        self.extremos[i] = "F"
 
            elif sentido == "antihorario" :
 
                if grados == 90:
 
                    if self.extremos[i] == "N":
                        self.extremos[i] = "O"
 
                    elif self.extremos[i] == "O":
                        self.extremos[i] = "S"
 
                    elif self.extremos[i] == "S":
                        self.extremos[i] = "E"
 
                    elif self.extremos[i] == "E":
                        self.extremos[i] = "N"
 
                    elif self.extremos[i] == "F":
                        self.extremos[i] = "F"
 
                elif grados == 180:
 
                    if self.extremos[i] == "N":
                        self.extremos[i] = "S"
 
                    elif self.extremos[i] == "O":
                        self.extremos[i] = "E"
 
                    elif self.extremos[i] == "S":
                        self.extremos[i] = "N"
 
                    elif self.extremos[i] == "E":
                        self.extremos[i] = "O"
 
                    elif self.extremos[i] == "F":
                        self.extremos[i] = "F"
 
                elif grados == 270:
 
                    if self.extremos[i] == "N":
                        self.extremos[i] = "E"
 
                    elif self.extremos[i] == "O":
                        self.extremos[i] = "N"
 
                    elif self.extremos[i] == "S":
                        self.extremos[i] = "O"
 
                    elif self.extremos[i] == "E":
                        self.extremos[i] = "S"
 
                    elif self.extremos[i] == "F":
                        self.extremos[i] = "F"
 
class Baldosa:
 
    def caminos(self,camino,fila,col):
 
        self.camino = camino
        self.fila = -1
        self.col = -1
 
        return "Baldosa: Num. de Caminos =" + str(self.camino) + "Ubicacion =" + "("+ str(self.fila) + "," + str(self.col) + ")"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejercicio POO

Publicado por algoritmo (236 intervenciones) el 07/07/2021 17:12:42
Hola

No entiendo muy bien lo que pretendes.

Sin embargo, con lo siguiente, creo que obtienes lo que quieres.
Espero que te sirva :)


1
2
3
4
5
6
7
8
9
10
11
class Baldosa:
 
    def caminos(self,camino,fila=-1,col=-1):
        return "Baldosa: Num. de Caminos =%s Ubicacion = (%s, %s)" % (camino, fila, col)
 
camino_1 = Camino(["F", "O"], "rojo")
camino_2 = Camino(["E", "S"], "amarillo")
camino_3 = Camino(["F", "N"], "amarillo")
 
baldosa = Baldosa().caminos(camino_1, 65, 5)
print(baldosa)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ejercicio POO

Publicado por anonymous (38 intervenciones) el 07/07/2021 17:35:11
Hola, la verdad no entiendo muy bien tu codigo, me lo podrias explicar?, al final quiero hacer un codigo mas generico que me resulte para cualquier cantidad de inputs.

Te comento, las instrucciones con las que debería obtener el resultado, son las siguientes;

En esta sección, el objetivo es crear las baldosas del juego. Para ello, debes comenzar programando la clase Baldosa.

El parámetro que reciben las instancias de Baldosa al ser creadas es: caminos (tipo lista).

La clase debe tener los siguientes atributos:

caminos: corresponde a una lista que contiene un número variable de caminos. Ten en cuenta que esta lista contendrá objetos de clase Camino.
fila: corresponde a un int que representa la posición vertical de la baldosa en el tablero, es decir, en qué fila del tablero se ubica. Este atributo tiene que ser -1 por defecto, no se recibe como argumento al crear la baldosa.
col: corresponde a un int que indica la posición horizontal de la baldosa en el tablero, es decir, en qué columna del tablero se ubica. Este atributo tiene que ser -1 por defecto, no se recibe como argumento al crear la baldosa.
Nota: a partir de los atributos de Baldosa, podemos determinar que su ubicación en el tablero es (fila, col) según la convención utilizada.

Además, debe tener los siguientes métodos:

rotar(grados, sentido): este método recibe los parámetros grados de tipo int y sentido de tipo string. Cuando se utiliza este método, la baldosa deberá rotar en la magnitud grados, cambiando la orientación de los extremos de los caminos que contiene. Para ello, puedes utilizar el método rotar de la clase Camino que ya has implementado. Este método no retorna nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ejercicio POO

Publicado por anonymous (38 intervenciones) el 07/07/2021 17:37:12
Además ahora tengo este codigo, pero no puede utilizar el método rotar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Baldosa:
 
    def __init__(self,caminos):
 
        self.caminos = caminos
 
        for cantidad in range(len(caminos)):
            cantidad += 1
 
    def camino(self,fila,col):
 
        self.fila = fila
        self.col = col
 
        return "Baldosa: Num. de Caminos =" + str(self.camino) + "Ubicacion =" + "("+ str(self.fila) + "," + str(self.col) + ")"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar