我正在制作一个由内而外的东西.但只有最后的颜色在起作用.有什么解决办法吗



所以我在为一个学校项目做场景。我正在做一件由内而外的事情。每个角色都让莱利改变自己的颜色。但只有最后一种颜色才真正有效。最重要的是if语句。这是一个python代码。我只需要其他颜色也显示出来。像蓝色和红色。

collectorsBin = Rect(240, 0, 160, 150, opacity=50, borderWidth=5, border='black')
moodCounter = Label(0, 325, 210, size=30, fill='white')
loser = Label('LOSER!!!!', 200, 200, size=50, visible=False)
redo = Line(370, 370, 160, 370, arrowEnd=True, visible=False)
rileyArea = Rect(240, 280, 160, 120, opacity=50, borderWidth=5, border='black')
anger= Group(
Rect(200, 220, 50, 55, fill='red'),
Rect(200, 250, 50, 25, fill='white'),
Rect(200, 260, 50, 15, fill='brown'),
Polygon(225, 250, 250, 240, 250, 250, 200, 250, 200, 240, 225, 250, fill='white'),
Line(250, 250, 200, 250, opacity=10),
Circle(212, 232, 8, fill='white'),
Circle(238, 232, 8, fill='white'),
Line(225, 228, 250, 225, fill='red', lineWidth=5),
Line(225, 228, 200, 225, fill='red', lineWidth=5),
Line(220, 243, 230, 243, lineWidth=5, fill='white'))

rileyFace = Circle(200, 200, 30, fill='blanchedAlmond')
rileyEyes = Group(Circle(185, 200, 10, fill='white'),
Circle(215, 200, 10, fill='white'))

normalHair = Group(Polygon(208, 183, 190, 186, 179, 197, 175, 227, 162, 227, 162, 185, 173, 170, 191, 165),
Polygon(191, 165, 199, 165, 218, 172, 230, 190, 229, 210, 225, 191, 206, 182))

normalHair.fill=gradient('paleGoldenrod', 'darkGoldenrod', start='left')
riley=(rileyFace, rileyEyes, normalHair)
rileyFace.centerX=315
rileyFace.centerY=350
rileyEyes.centerX=315
rileyEyes.centerY=350
normalHair.centerX=315
normalHair.centerY=350
sadness = Group(Rect(170, 210, 60, 60, fill='ivory'),
Circle(200, 200, 30, fill='royalBlue'),
Polygon(230, 190, 200, 180, 200, 200, 180, 220, 160, 230, 170, 180, 200, 160, 235, 187,
fill=gradient('royalBlue', 'dodgerBlue', 'blue', start='top')),
Circle(210, 200, 8, fill='white'),
Line(200, 190, 220, 195, fill='royalBlue', lineWidth=8))

happiness = Group(Circle(200, 200, 50, fill='lightGoldenrodYellow'),
Circle(200, 200, 50, fill='gold', opacity=50),
Circle(223, 200, 16, fill='white'),
Circle(178, 200, 16, fill='white'),
Oval(200, 228, 20, 35, fill='white', rotateAngle=70),
Oval(197, 223, 20, 30, fill='lightGoldenrodYellow', rotateAngle=70),
Oval(197, 223, 20, 30, fill='gold', rotateAngle=70, opacity=50),
Polygon(156, 217, 163, 173, 192, 180, 210, 180, 200, 175, 228, 174, 250, 190, 255, 178, 252, 168, 230, 150, 200, 145,
180, 150, 160, 152, 150, 160, 145, 185, 147, 200, fill=gradient('deepSkyBlue', 'darkBlue')),
Rect(185, 247, 35, 75, fill='lightGoldenrodYellow'),
Rect(185, 247, 35, 75, fill='gold'),
Polygon(190, 247, 195, 260, 205, 260, 215, 247, 220, 247, 225, 330, 180, 330, 185, 247, fill='white'))


happiness.width/=1.5
happiness.height/=1.5
fear = Group(Polygon(200, 200, 205, 235, 215, 235, 220, 200, fill='mediumSlateBlue'),
Circle(200, 200, 10, fill='white'),
Circle(220, 200, 10, fill='white'),
Oval(210, 225, 25, 15, fill='white', border='mediumSlateBlue'),
Rect(205, 235, 10, 40, fill='white'),
Rect(205, 275, 10, 20, fill='mediumSlateBlue'),
Arc(221, 196, 20, 20, 300, 180, fill='mediumSlateBlue'),
Arc(198, 198, 20, 20, 230, 180, fill='mediumSlateBlue'),
Circle(210, 235, 3, fill='crimson'),
Polygon(210, 235, 217, 228, 220, 237, fill='crimson'),
Polygon(210, 235, 203, 240, 200, 230, fill='crimson'))

disgust = Group(Polygon(185, 225, 190, 243, 210, 243, 215, 225, fill='limeGreen'),
Rect(190, 243, 20, 3, fill='lawnGreen'),
Polygon(190, 246, 185, 265, 215, 265, 210, 246, fill='limeGreen'),
Circle(200, 200, 30, fill='lightGreen'),
Circle(185, 200, 10, fill='white'),
Circle(215, 200, 10, fill='white'),
Rect(175, 185, 50, 10, fill='lightGreen'),
Polygon(200, 190, 185, 198, 175, 195, 175, 225, 163, 233, 163, 228, 170, 228, 165, 175, 193, 168, 223, 172, 233, 200, 
fill=gradient('lawnGreen', 'darkGreen')))

disgust.centerX=36
disgust.centerY=57
happiness.centerX=39
happiness.centerY=197
fear.centerX=47
fear.centerY=327

sadness.centerX=120
sadness.centerY=58
anger.centerX=116
anger.centerY=189
def onMouseDrag(mouseX, mouseY):
if(sadness.contains(mouseX, mouseY)==True):
sadness.centerX=mouseX
sadness.centerY=mouseY

if(anger.contains(mouseX, mouseY)==True):
anger.centerX=mouseX
anger.centerY=mouseY

if(happiness.contains(mouseX, mouseY)==True):
happiness.centerY=mouseY
happiness.centerX=mouseX

if(fear.contains(mouseX, mouseY)==True):
fear.centerX=mouseX
fear.centerY=mouseY

if (disgust.contains(mouseX, mouseY)==True):
disgust.centerX=mouseX
disgust.centerY=mouseY




def onMousePress(mouseX, mouseY):
if (collectorsBin.containsShape(anger)==True):
rileyEyes.fill='red'
normalHair.fill='red'
moodCounter.value=1


if (collectorsBin.containsShape(anger)==False):
normalHair.fill=gradient('paleGoldenrod', 'darkGoldenrod', start='left')
rileyEyes.fill='white'
moodCounter.value=0

if (collectorsBin.containsShape(sadness)==True):
rileyEyes.fill='blue'
normalHair.fill='blue'
moodCounter.value=1

if (collectorsBin.containsShape(sadness)==False):
normalHair.fill=gradient('paleGoldenrod', 'darkGoldenrod', start='left')
rileyEyes.fill='white'
moodCounter.value=0



if (collectorsBin.containsShape(disgust)==True):
rileyEyes.fill='green'
normalHair.fill='lawnGreen'
moodCounter.value=1

if (collectorsBin.containsShape(disgust)==False):
normalHair.fill=gradient('paleGoldenrod', 'darkGoldenrod', start='left')
rileyEyes.fill='white'
moodCounter.value=0

也许你的意思是,我们设置了一个默认值,只更改需要更改的内容:

def onMousePress(mouseX, mouseY):
eyes = 'white'
hair = gradient('paleGoldenrod', 'darkGoldenrod', start='left')
mood = 0
if collectorsBin.containsShape(anger):
eyes='red'
hair='red'
mood=1

if collectorsBin.containsShape(sadness):
eyes='blue'
hair='blue'
mood=1

if collectorsBin.containsShape(disgust):
eyes='green'
hair='lawnGreen'
mood=1

rileyEyes.fill = eyes
normalHair.fill = hair
moodCounter.value = mood

如果有多支安打,只有最后一支会赢,但你需要另一种方法来解决这个问题。

最新更新