比方說,我有一個物體,我必須通過拍攝(拋射體運動)來消滅。對象的位置是隨機的(就目前而言,只是整數,使其更容易)。即使我的'子彈'看起來恰到好處,循環也不會中斷。在任何時候,程序可能不會將圖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
林不知道這些是否可以工作。我只是想確認他們是否過分,然後打破循環。 – Tokela