Предположим, у меня есть объект, который я должен уничтожить путем стрельбы (снаряд). Позиция объекта является случайной (так как теперь просто целые числа, чтобы сделать ее проще). Даже когда моя «пуля» выглядит просто на месте, цикл не прерывается. Вероятно, программа не считает график 1 и график 2 равным в любой точке. Я пробовал несколько вещей об этом условии, но ничего не получилось. Может ли кто-нибудь сказать мне, что я должен добавить/изменить?Почему два аргумента графов не считаются равными?
import matplotlib.pylab as plt
import numpy as np
import random
g = 10
c = []
d = []
fig = plt.figure()
L = random.randint(5.0,18.0)
while True:
try:
#velocity
v = float(input("What is the velocity?\n>"))
#angle
a = np.radians(float(input("What is the angle?\n>")))
z = np.sin(2*a)*v**2/g #max range
h = ((v**2*(np.sin(a))**2)/(2*g)) #max. height
x= np.linspace(0, z, 1000)
#y values
y = (x*np.tan(a) - (g*x**2)/(2*v**2*((np.cos(a))**2)))
ax = plt.axes(xlim=(0, 1.5*L), ylim=(0, 1.2*h))
plt.ion() #interactive graph
#previous tries
plt.plot(c,d, '.', color = 'lightgrey')
plt.pause(0.01)
#enemy object
graph1 = plt.plot(L, 0, 'o', color = 'r', markersize=30)
plt.pause(0.01)
#actual shoot
graph2 = plt.plot(x,y, '.', color = 'b', ms = 7)
plt.pause(0.01)
if np.any(graph2) == np.any(graph1):
print("You have destroyed the enemy object!")
plt.show()
break
else:
print("You've missed. Keep shooting!")
c.append(x)
d.append(y)
plt.show()
continue
except ValueError:
print("Sorry, I can't understand.")
Вы имеете в виду 'np.any (graph2 == graph1)', или '(graph1 == graph2) .any()'? – mgilson
Я не уверен, что любой из них может работать. Я просто хочу узнать, являются ли они egual, а затем разорвать петлю. – Tokela