我想问一下在pygame中使用自定义事件..
我用pygame进行了一些实验,所以我知道pygame生成的事件是如何工作的..
我的问题是,为什么有人会对用户事件感兴趣,是否有帮助简化
组合的pygame事件?而且怎么会有人实现它,并从中获益
它在现实世界的例子..?
# creating the event
CATONKEYBOARD = USEREVENT+1
my_event = pygame.event.Event(CATONKEYBOARD, message="Bad cat!")
pygame.event.post(my_event)
# handling it
for event in pygame.event.get():
if event.type == CATONKEYBOARD:
print event.message
Run Code Online (Sandbox Code Playgroud)
我试过了,我发现事件只生成一次(一旦发布)
任何人都可以向我解释一下......?
谢谢 ..
在我的程序中添加最后的触摸后,我运行valgrind来检查内存泄漏.让我吃惊,我读了大量被使用的内存块,永远不会释放,但我确信我释放我结束程序之前,利用一切资源.仔细观察报告,我发现几乎所有报告都说泄漏来自libcurl函数调用.以下是报告中的示例:
==3555== HEAP SUMMARY:
==3555== in use at exit: 179,937 bytes in 4,212 blocks
==3555== total heap usage: 18,080 allocs, 13,868 frees, 10,050,116 bytes allocated
==3555==
==3555== Searching for pointers to 4,212 not-freed blocks
==3555== Checked 486,368 bytes
==3555==
==3555== 2 bytes in 2 blocks are still reachable in loss record 1 of 667
==3555== at 0x4C29F90: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3555== by 0x542C9C9: strdup (in /usr/lib/libc-2.20.so)
==3555== by 0x4E58C1E: ??? (in /usr/lib/libcurl.so.4.3.0)
==3555== by 0x4E6A90F: ??? (in /usr/lib/libcurl.so.4.3.0) …Run Code Online (Sandbox Code Playgroud) 大多数现代语言中的指数很容易..我用我选择的语言中的常用运算符或任何补偿它以获得所需功能的函数.
我想知道,这究竟是如何运作的?
C中的以下算法通常用于演示此效果.
double exp(val, pow) {
for(int i = 0; i < pow; ++i)
val *= val;
return val;
} // exp(2, 3) -> 8
Run Code Online (Sandbox Code Playgroud)
然而,这里有一个严重的错误..如果pow是2.6怎么办?那也会返回8 ..
那只是因为循环条件只比较两个数字..
但是当我做这样的事情时,它运作良好..
#include <math.h>
int main() {
printf("The result of 2 to the power of 2.6 is %.2f", pow(2, 2.6));
}
Run Code Online (Sandbox Code Playgroud)
如何实现后一种行为?
根据答案,似乎泰勒扩展算法是取幂的关键,那么......乘法呢?如何实现十进制乘法?