def __init__(self, qPointList, bot, rType): # QGraphicsItemGroup.__init__(self) self.rType = rType #射线类型雷达 if rType == "poly": self.item = QGraphicsPolygonItem() #提供一个多边形item self.polygon = QPolygonF(qPointList) self.item.setPolygon(self.polygon) self.robot = bot #范围类型雷达 elif rType == "round": self.item = QGraphicsEllipseItem() #提供一个椭圆item self.item.setRect(qPointList[0], qPointList[1], qPointList[2], qPointList[3]) self.robot = bot color = QColor(255, 100, 6, 10) #设置雷达的颜色, brush = QBrush(color) pen = QPen(color) self.item.setBrush(brush) self.item.setPen(pen) self.addToGroup(self.item)
def __init__(self, parent=None): QGraphicsItemGroup.__init__(self) self.setFlags(QGraphicsItem.ItemIsSelectable) self.parent = parent TreeItem.scene.addItem(self) self.aItem = None self.lineCache = [] self.children = [] # cached draw params self.x = 0 self.y = 0 self.nextDown = False
def __init__(self, mapSize, parent, repr): QGraphicsItemGroup.__init__(self) # 公有属性 self.gamePlace = 1 # 私有属性 self.__mapSize = mapSize self.__parent = parent self.__health = 100 self.__repr = repr self.__gunLock = "free" self.__radarLock = "Free" # 字面意思是雷达锁 # 两个动画对象、一个physics对象 self.__runAnimation = animation("run") self.__targetAnimation = animation("target") self.__physics = physics(self.__runAnimation) # 一个physics对象 # 设置一些颜色 self.maskColor = QColor(0, 255, 255) self.gunMaskColor = QColor(0, 255, 255) # 炮膛颜色 self.radarMaskColor = QColor(0, 255, 255) # 雷达颜色 # 加载车身图片 self.__base = QGraphicsPixmapItem() self.__base.pixmap = QPixmap(os.getcwd() + "/robotImages/baseGrey.png") self.__base.setPixmap(self.__base.pixmap) self.addToGroup(self.__base) self.__baseWidth = self.__base.boundingRect().width() self.__baseHeight = self.__base.boundingRect().height() # 加载炮膛图片 self.__gun = QGraphicsPixmapItem() self.__gun.pixmap = QPixmap(os.getcwd() + "/robotImages/gunGrey.png") self.__gun.setPixmap(self.__gun.pixmap) self.addToGroup(self.__gun) self.__gunWidth = self.__gun.boundingRect().width() self.__gunHeight = self.__gun.boundingRect().height() # 炮膛位置 x = self.__base.boundingRect().center().x() y = self.__base.boundingRect().center().y() self.__gun.setPos(x - self.__gunWidth / 2.0, y - self.__gunHeight / 2.0) # --------------------------雷达初始化----------------------------- # 加载雷达图片 self.__radar = QGraphicsPixmapItem() self.__radar.pixmap = QPixmap(os.getcwd() + "/robotImages/radar.png") self.__radar.setPixmap(self.__radar.pixmap) self.addToGroup(self.__radar) self.__radarWidth = self.__radar.boundingRect().width() self.__radarHeight = self.__radar.boundingRect().height() # radar position self.__radar.setPos(x - self.__radarWidth / 2.0, y - self.__radarHeight / 2.0) # 加载雷达范围 firstPoint = QPointF(x - self.__radarWidth / 2, y) secondPoint = QPointF(x + self.__radarWidth / 2, y) thirdPoint = QPointF(x + 4 * self.__radarWidth, y + 700) fourthPoint = QPointF(x - 4 * self.__radarWidth, y + 700) qPointListe = [] qPointListe.append(firstPoint) qPointListe.append(secondPoint) qPointListe.append(thirdPoint) qPointListe.append(fourthPoint) self.__radarField = radarField(qPointListe, self, "poly") # 大雷达范围 qPointListe.remove(fourthPoint) qPointListe.remove(thirdPoint) thirdPoint = QPointF(x + 10 * self.__radarWidth, y + 400) fourthPoint = QPointF(x - 10 * self.__radarWidth, y + 400) qPointListe.append(thirdPoint) qPointListe.append(fourthPoint) self.__largeRadarField = radarField(qPointListe, self, "poly") # 细雷达范围 qPointListe.remove(fourthPoint) qPointListe.remove(thirdPoint) thirdPoint = QPointF(x + 0.4 * self.__radarWidth, y + 900) fourthPoint = QPointF(x - 0.4 * self.__radarWidth, y + 900) qPointListe.append(thirdPoint) qPointListe.append(fourthPoint) self.__thinRadarField = radarField(qPointListe, self, "poly") # 弧形雷达范围 self.__roundRadarField = radarField([0, 0, 300, 300], self, "round") self.addToGroup(self.__roundRadarField) self.__roundRadarField.setPos( x - self.__roundRadarField.boundingRect().width() / 2.0, y - self.__roundRadarField.boundingRect().height() / 2.0) # add to group self.addToGroup(self.__radarField) self.addToGroup(self.__largeRadarField) self.addToGroup(self.__thinRadarField) # 一个坦克上有三个雷达范围,但初始化的时候都是隐藏的 self.__largeRadarField.hide() self.__thinRadarField.hide() self.__roundRadarField.hide() # --------------------------雷达初始化(上----------------------------- # 设置坦克颜色:RGB self.setColor(0, 200, 100) self.setGunColor(0, 200, 100) self.setRadarColor(0, 200, 100) self.setBulletsColor(0, 200, 100) # 设置原点: # 雷达范围 self.__radarField.setTransformOriginPoint(x, y) self.__largeRadarField.setTransformOriginPoint(x, y) self.__thinRadarField.setTransformOriginPoint(x, y) # 车身 x = self.__baseWidth / 2 y = self.__baseHeight / 2 self.__base.setTransformOriginPoint(x, y) # 炮膛 x = self.__gunWidth / 2 y = self.__gunHeight / 2 self.__gun.setTransformOriginPoint(x, y) # 雷达(雷达与雷达范围不是一个东西 x = self.__radarWidth / 2 y = self.__radarHeight / 2 self.__radar.setTransformOriginPoint(x, y) # 添加self.item到items中以防冲突 self.__items = set([ self, self.__base, self.__gun, self.__radar, self.__radarField, self.__largeRadarField, self.__thinRadarField, self.__roundRadarField ]) # 初始化基类(初始化子类中的初始化函数 self.init() # 当前动画 self.__currentAnimation = []