本文整理汇总了Python中Robot.Robot.shotError方法的典型用法代码示例。如果您正苦于以下问题:Python Robot.shotError方法的具体用法?Python Robot.shotError怎么用?Python Robot.shotError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Robot.Robot
的用法示例。
在下文中一共展示了Robot.shotError方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from Robot import Robot [as 别名]
# 或者: from Robot.Robot import shotError [as 别名]
class Game:
robot = None
pelota = None
porteria = None
#inicializamos juego con pelota y
def __init__(self,dimension = [0,0]):#requiere dimension del campo
rx = dimension[0]*random()#inicializamos posicion x
ry = dimension[1]*random()#inicializamos posicion y
self.robot = Robot(pos = [rx,ry])#posicion
self.robot.setAngle(random()*360)#colocamos un angulo aleatorio
px = dimension[0]*random()#posicion x pelota
py = dimension[1]*random()#posicion y pelota
self.pelota = Pelota(pos = [px,py])
#colocamos la porteria a la derecha por defecto
x = dimension[0]#porteria en la derecha
yini = dimension[1]/2.0-dimension[1]/6.0#se coloca a un tercio de altura
yfin = dimension[1]/2.0+dimension[1]/6.0#que llegue hasta dos tercios
self.porteria = Porteria(init=[x,yini],end=[x,yfin])
def action(self):
direction = self.robot.getAngle()#direction es angulo en el campo del robot
posicion = self.robot.getVel()#hacia donde apunta
posicionP = self.pelota.getPos()-self.robot.getPos()#donde se encuentra la pelota relativo al robot
# print distance
# print direction
fr = Front()
# print "robot: P."+str(self.robot.getPos())+" V."+str(posicion)
# print "pelota:"+str(self.pelota.getPos())+" PR."+str(posicionP)
angleb = angle(posicion,[posicionP[0],posicionP[1]])#calculo el angulo entre ellos
# print "angulo entre ellos:"+str(angleb)
# print "direction:"+str(direction)
vectorp = norm(posicionP)*array([cos((direction+angleb)/180.0*pi),-sin((direction+angleb)/180.0*pi)])#supongo que el angulo se mide hacia la izquierda
#vuelvo a calcular un vector supuesto que tenga la misma direccion
# print "nuevo:"+str(vectorp)+" compar:"+str(posicionP)
vectorp = vectorp-posicionP#calculo la diferencia de valores
if norm(vectorp)>10:
#quiere decir que esta medido a la derecha
angleb = -angleb
fr.setTR(fr.TR(angleb))
fr.setST(fr.ST(angleb))
fr.setTL(fr.TL(angleb))
# i1 = []
# for i in range(-90,90,5):
# i1.append(fr.evalFunc(i))
#
# plot([i for i in range(-90,90,5)],i1)
# show()
#
#
val = integrate(lambda x:fr.evalFuncUp(x),-45,45)
if val!=0:
val = val/integrate(lambda x:fr.evalFunc(x),-45,45)
print "Cambio de angulo:"+str(val)
print "Angulo o:"+str(self.robot.getAngle())
self.robot.addAngle(val)
self.robot.move()
print "Robot:"+str(self.robot.getPos())
print "Pelota:"+str(self.pelota.getPos())
# time.sleep(1)
def play(self):
self.action()
return self.porteria.revisarAdentro(self.pelota.getPos())
def inContact(self):
return self.pelota.inContact(self.robot.getPos())
def shot(self):
direction = self.robot.getAngle()#direction es angulo en el campo del robot
posicion = self.robot.getVel()#hacia donde apunta
posicionP = self.porteria.getMed()-self.robot.getPos()#donde se encuentra la pelota relativo al robot
angleb = angle(posicion,[posicionP[0],posicionP[1]])#calculo el angulo entre ellos
vectorp = norm(posicionP)*array([cos((direction+angleb)/180.0*pi),-sin((direction+angleb)/180.0*pi)])#supongo que el angulo se mide hacia la izquierda
vectorp = vectorp-posicionP#calculo la diferencia de valores
if norm(vectorp)>10:
#quiere decir que esta medido a la derecha
angleb = -angleb
self.robot.addAngle(angleb+self.robot.shotError())
self.pelota.setVel(3*self.robot.getVel())
#.........这里部分代码省略.........