【发布时间】:2020-12-14 00:09:37
【问题描述】:
我正在尝试创建两个圆圈,它们在一个区域内随机移动并在它们碰撞时改变它们的颜色。
有很多创建圆圈并通过鼠标拖动来移动它们的例子,但我没有找到任何东西,对象必须自己移动。
这是我已经拥有的:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsEllipseItem
import sys, random
class Circle (QGraphicsEllipseItem):
def __init__(self, x, y, r, condition):
super().__init__(0,0,r,r)
self.setPos(x,y)
self.condition = condition
def setColor(self):
if self.condition == "changable":
self.setBrush(Qt.blue)
elif self.condition == "notChangable":
self.setBrush(Qt.black)
class GraphicView(QGraphicsView):
def __init__(self):
super().__init__()
self.scene = QGraphicsScene()
self.setScene(self.scene)
self.setSceneRect(0, 0, 600, 600)
self.circle1 = Circle(random.randint(0,600), random.randint(0,600), 20, "changable")
self.circle2 = Circle(random.randint(0,600), random.randint(0,600), 20, "notChangable")
self.circle1.setColor()
self.circle2.setColor()
self.scene.addItem(self.circle1)
self.scene.addItem(self.circle2)
app = QApplication(sys.argv)
view = GraphicView()
view.show()
sys.exit(app.exec_())
如果“可变”-圆与“不可更改”-圆发生碰撞,则“可变”-圆应将其条件更新为“不可更改”。
那么,我怎样才能让这些圆圈在区域内随机移动,让它们改变状态呢?
【问题讨论】:
-
Circle.conditon改变时是否要运行函数? -
如果两个圈子发生碰撞,他们应该更新他们的条件。运动方向不应受到碰撞的影响。他们应该继续他们的随机运动