- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以在类中使用 pygame 中的 pygame.draw.rect() 函数和颜色变量。
这是我的代码,其中包含详细的工作说明:(请注意,我只选取了有用的部分)
# consider pygame as 'pg' as I set with
# the line 'import pygame as pg'
class icon:
def __init__(self, picture, position, key):
self.icon = picture
self.position = position
self.p_x, self.p_y = position
self.size = 50
self.unlocked = False
self.key = key
self.status = 'off'
self.pulse_value = 0
self.pulse = 'down'
self.pulse_type = 'red'
self.c_icon = self.icon.get_rect()
self.c_icon.center = ( (self.p_x + 25), (self.p_y + 25))
def unlock(self):
self.unlocked = True
self.status = 'pulse'
self.pulse_type = 'grey'
def draw(self):
if self.unlocked == True :
if self.status == 'off':
pg.draw.rect(screen, color_passive, (*self.position, 50, 48))
elif self.status == 'on':
pg.draw.rect(screen, color_active, (*self.position, 50, 55))
elif self.status == 'pulse':
if self.pulse == 'down' :
self.pulse_value = self.pulse_value + 1
if self.pulse_value == 255 :
self.pulse = 'up'
elif self.pulse == 'up' :
self.pulse_value = self.pulse_value - 1
if self.pulse == 0 :
self.pulse = 'down'
if self.pulse_type == 'red' :
self.color_pulse = (self.pulse_value, 0, 0)
elif self.pulse_type == 'grey' :
self.color_pulse = (self.pulse_value, self.pulse_value, self.pulse_value )
pg.draw.rect(screen, *self.color_pulse, (*self.position, *self.size))
screen.blit(self.icon, self.c_icon)
world_2 = pg.image.load('ice_mountains.png').convert_alpha()
icon_1 = icon('world_2', (60, 60), K_1)
这是类图标,用于显示屏幕上的任何选项卡图标并定义选项卡是否解锁。
如你所见,我在这里使用了一个函数pygame.draw.rect()
但在这个函数中,颜色变量是一个“类变量”(self.color_pulse)
。
变量self.color_pulse
由上行的(self.pulse_value, self.pulse_value, self.pulse_value)
定义。
而self.pulse_value
是一个类变量,每次icon_2.draw()
都会以每秒30次的速度增加5。
基本上,我在主循环中使用函数 icon_2.draw()
。
elif exp >= 1000:
n_unlock = n_unlock + 1
icon_2.unlock()
print('world 2 unlocked')
这是解锁图标的代码。当主循环在解锁后执行 icon_2.draw()
时,预期的结果是图标应该出现在屏幕上,默认..ulse直到用户单击它。
但是,不幸的是,我得到了这个:
#----------*={ _MAD_ }=*----------#
May Avoid Destruction
by Edhyjox
#----------*={ _MAD_ }=*----------#
Loading...
========== Ok
custom setting succesfully imported
Window main not existing, redirect to game
World 2 unlocked
Traceback (most recent call last):
File "************************/___MAD___/script/MAD - The game.py", line 266, in <module>
icon_2.draw()
File "************************/___MAD___/script/MAD - The game.py", line 190, in draw
pg.draw.rect(screen, *self.color_pulse, (*self.position, *self.size))
TypeError: 'int' object is not iterable
我真的不知道为什么会出现这个错误。这意味着我在函数 pg.draw.rect()
中使用“int”,但变量 self.color_pulse 在程序的此时为 (5, 5, 5)。
它似乎适用于不在类中的变量......有人对这个问题有线索吗?
最佳答案
pygame.draw.rect()
的第二个参数必须是一种颜色。在 PyGame 中,颜色可以是 3 个整数值的元组。
因此 *
- 运算符(解包运算符)是多余的。
请注意
self.color_pulse = (self.pulse_value, 0, 0)
pg.draw.rect(screen, *self.color_pulse, (*self.position, *self.size))
与
相同pg.draw.rect(screen, self.color_pulse, 0, 0, (*self.position, *self.size))
考虑一下 self.pulse_value
在构造函数中由 0
初始化。
self.pulse_value = 0
如果 self.pulse_type
既不是 'red'
也不是 'grey'
,则 *self.color_pulse
无论如何都不会工作并导致错误。
此外,第三个参数必须是矩形。矩形是 4 个值的元组,但 self.size 是单个整数值。
self.size = 50
因此 *self.size
会导致错误。
跳过self.color_puls
之前的*
-运算符,并将*self.size
更改为self.size, self.size
:
pg.draw.rect(screen, self.color_pulse, (*self.position, self.size, self.size))
关于python - Pygame : Is color readable from a class variable in function pygame. 绘制.矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56267961/
我只想知道它们之间的区别: .class .class{ font-size:14px; } 对比: .class > .class{ font-size:14px; } 是一样的东西吗? 最佳答案
PrimeFaces 文档的以下摘录使标题中描述的两个选择器之间似乎存在差异: .ui-widget, .ui-widget .ui-widget { font-size: 90% !imp
我正在尝试选择特定值。但我遇到了一个问题。 我有两个元素,一个有 X Y,另一个有 X Y Z。 当选择 X Y Z 时,我也收到 X Y 的值...有没有办法让它寻找 X AND Y AND Z 而
.class.class 和 .class .class 有什么区别? 最佳答案 .class .class 匹配类 .class 的任何元素,这些元素是类 .class< 的另一个元素的后代/. .
我正在研究 Classname.class 和 Classname.class.toString() 并发现了一些不寻常的东西。 .class 在同一个类上运行时似乎等同于 .class。尽管 .cl
我试图在Dart中扩展列表并在此列表中使用另一个类。 这是我的示例,其中注释出了问题: import "Radio.dart"; // extends ListBase { List ra
我有一个很大的“经理”类,我认为它做得太多了,但我不确定如何将它划分为更多逻辑单元。 一般来说类主要由以下方法组成: class FooBarManager{ GetFooEntities();
我在一个文件中定义了一个抽象父类(super class),在另一个文件中定义了一个子类。我需要父类(super class)文件和堆栈跟踪报告来找到一个包含它。 但是,当它到达“extends”行时
我在 A. Alexenderscu 的现代 C++ 设计中找到了一些模板示例 作者使用以下行的地方 template class CheckingPolicy // class SmartPt
看一下这段代码: public static class A { public void doA() { } } public static class B extends A {
我有两个具有 .body 类的 div,但是,一个位于另一个具有 .box 类的 div 中 - 如下所示: 我只想为 .box 内部的 .body 设置样式...但我在下面所
我一定是遗漏了 C++ 规范中的某些内容,因为我无法解释为什么以下代码可以成功编译: class MyClass { static void fun(); }; int main() { MyClas
我正在尝试在 python 中“模拟”命名空间。我使用内部和外部类层次结构来创建我的命名空间。例如,您希望将文件(如资源)的路径保存在一个位置。我试过这样的事情: src = #path to sou
在试验 online crystal compiler 时(这太棒了),我遇到了一个我似乎无法找到解释的错误: class Person class Current < self end
在查看我的一段代码时,我陷入了如下的一条语句。 TMyObjectClass = TMyObject 类; 我有点困惑,不知道这句话是什么意思。由于 TMyObjectClass 在该语句上方没有声明
我正在编写一个简单的应用程序,以学习一些基本的Dart编程,但无法弄清楚其结构和包含的内容-我得到了一个重复的类Point 首先,我有一个叫做MouseTrack的主类。它将初始化列表并产生循环。 #
在 org.springframework.core.SerializableTypeWrapper (版本 5.2.3),第 112 行有以下代码: if (GraalDetector.in
我希望将鼠标悬停在子导航中的列表项上,以激活页面上该类别中所有项的类(不仅仅是父元素或同级元素)。有任何想法吗?这是我的意思的一个例子: img.BLUE {border:1px solid #FF
我正在通过 ClassLoader 加载类: Class clazz = urlClassLoader.loadClass(name.substring(0, name.length() - 6).r
以下简化的类在从 get() 返回值时执行不同的操作,具体取决于该类是被赋予 double 值还是数组作为模板参数: #include "array" #include "type_traits" t
我是一名优秀的程序员,十分优秀!