Programació Python: Simulació Balística i Gràfics Geomètrics
Clasificado en Diseño e Ingeniería
Escrito el en catalán con un tamaño de 5,79 KB
Aquest document presenta dos projectes de programació en Python. El primer simula la penetració d'una bala a través de capes de material amb diferent duresa. El segon projecte permet dibuixar diverses figures geomètriques (punts, quadrats, rectangles i triangles) en una matriu de caràcters, simulant un entorn gràfic bàsic.
Simulació de Resistència Balística amb Python
Aquesta secció implementa un programa que calcula la potència restant d'una bala després de travessar diverses capes de material. Cada capa té una duresa específica que redueix la potència de la bala.
Codi Python: Simulació de Bala Blindada
potencia = int(input("Potència de la bala: "))
capes = int(input("Quantes capes té el material?: "))
material = []
for capa_idx in range(capes):
duresa = int(input(f"Duresa de la capa {capa_idx + 1}?: "))
material.append(duresa)
capa_actual = 0
sortir = False
while not sortir:
if capa_actual < len(material) and potencia >= material[capa_actual]:
potencia -= material[capa_actual]
capa_actual += 1
else:
sortir = True
print(f"La bala s'ha quedat amb {potencia} de potència.")
print(f"La bala ha passat per {capa_actual} capes.")
print(f"Li quedaven {len(material) - capa_actual} capes per travessar.")
El programa sol·licita a l'usuari la potència inicial de la bala i el nombre de capes del material. Després, per a cada capa, demana la seva duresa. Finalment, simula el procés de penetració, mostrant la potència final de la bala i quantes capes ha aconseguit travessar.
Dibuix de Figures Geomètriques en Matriu ASCII
Aquesta secció conté un conjunt de funcions en Python per dibuixar figures geomètriques bàsiques (punt, quadrat, rectangle, triangle rectangle) en una matriu bidimensional de caràcters. Aquestes funcions són la base per a una aplicació interactiva de dibuix.
Funcions de Dibuix Geomètric
punt(matriu, x, y, caracter)
: Dibuixa un punt a les coordenades especificades.quadrat(matriu, x, y, mida, caracter)
: Dibuixa un quadrat amb la mida donada.rectangle(matriu, x, y, mida1, mida2, caracter)
: Dibuixa un rectangle amb les dimensions especificades.triangle(matriu, x, y, base, caracter)
: Dibuixa un triangle rectangle amb la base donada.
Codi Python: Definició de Funcions de Dibuix
def punt(matriu, x, y, caracter):
if y < len(matriu) and x < len(matriu[y]):
matriu[y][x] = caracter
def quadrat(matriu, x, y, mida, caracter):
if y + (mida - 1) < len(matriu) and x + (mida - 1) < len(matriu[y]):
for i in range(mida):
for j in range(mida):
matriu[y + i][x + j] = caracter
def rectangle(matriu, x, y, mida1, mida2, caracter):
if y + (mida1 - 1) < len(matriu) and x + (mida2 - 1) < len(matriu[y]):
for i in range(mida1):
for j in range(mida2):
matriu[y + i][x + j] = caracter
def triangle(matriu, x, y, base, caracter):
if y + (base - 1) < len(matriu) and x + (base - 1) < len(matriu[y]):
for i in range(base):
for j in range(i + 1):
matriu[y + i][x + j] = caracter
Nota sobre la funció punt
: S'ha corregit l'ordre dels índexs de la matriu per assegurar que y
es refereix a la fila i x
a la columna, d'acord amb la convenció habitual matriu[fila][columna]
.
Gestió de la Matriu i Interacció amb l'Usuari
Aquesta part del codi inclou funcions per mostrar i esborrar el contingut de la matriu, així com el bucle principal que gestiona la interacció amb l'usuari, permetent-li seleccionar la figura a dibuixar i introduir els seus paràmetres.
Funcions de Visualització i Neteja
def mostrar(matriu):
for i in range(10):
fila = ""
for j in range(9):
fila += matriu[i][j] + ","
fila += matriu[i][9]
print(fila)
def esborrar(matriu):
for i in range(10):
for j in range(10):
matriu[i][j] = " "
La funció mostrar
imprimeix la matriu a la consola, separant els caràcters amb comes. La funció esborrar
reinicia tota la matriu amb espais en blanc.
Bucle Principal d'Interacció
matriu = []
for i in range(10):
fila = []
for j in range(10):
fila.append(" ")
matriu.append(fila)
print("Opcions de Dibuix:")
print(" Punt")
print(" Quadrat")
print(" Rectangle")
print(" Triangle")
print(" Sortir")
opcio = input("Quina opció vols (P/Q/R/T/S)?: ").upper()
while opcio != "S":
x = int(input("Coordenada X: "))
y = int(input("Coordenada Y: "))
caracter = input("Caràcter a dibuixar: ")
if opcio == "P":
punt(matriu, x, y, caracter)
elif opcio == "Q":
mida = int(input("Mida del costat: "))
quadrat(matriu, x, y, mida, caracter)
elif opcio == "R":
mida1 = int(input("Amplada (Mida 1): "))
mida2 = int(input("Alçada (Mida 2): "))
rectangle(matriu, x, y, mida1, mida2, caracter)
elif opcio == "T":
base = int(input("Longitud de la base: "))
triangle(matriu, x, y, base, caracter)
else:
print("Opció no vàlida. Si us plau, tria P, Q, R, T o S.")
mostrar(matriu)
esborrar(matriu)
opcio = input("Quina opció vols (P/Q/R/T/S)?: ").upper()
El bucle principal inicialitza una matriu de 10x10. Després, presenta un menú a l'usuari i processa la seva entrada, cridant a la funció de dibuix corresponent. Després de cada dibuix, la matriu es mostra i es neteja per a la següent operació.