pygame 乌龟崩溃
pygame with turtle crashing
我得到这个错误代码:
2017-04-13 03:04:14.958 Python[606:839244] -[SDLApplication _setup:]: unrecognized selector sent to instance 0x1007a0dd0
2017-04-13 03:04:14.971 Python[606:839244] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SDLApplication _setup:]: unrecognized selector sent to instance 0x1007a0dd0'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff8d71be7b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00007fffa22fbcad objc_exception_throw + 48
2 CoreFoundation 0x00007fff8d79dcb4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x00007fff8d68dfb5 ___forwarding___ + 1061
4 CoreFoundation 0x00007fff8d68db08 _CF_forwarding_prep_0 + 120
5 Tk 0x000000010324b5e6 TkpInit + 471
6 Tk 0x00000001031c6c8d Tk_Init + 1794
7 _tkinter.cpython-36m-darwin.so 0x00000001027e7dfd Tcl_AppInit + 77
8 _tkinter.cpython-36m-darwin.so 0x00000001027e5849 _tkinter_create + 889
9 Python 0x000000010006a688 _PyCFunction_FastCallDict + 568
10 Python 0x00000001000f33e4 call_function + 612
11 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
12 Python 0x00000001000f27a0 _PyEval_EvalCodeWithName + 2720
13 Python 0x00000001000f2fab fast_function + 219
14 Python 0x00000001000f33cb call_function + 587
15 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
16 Python 0x00000001000f37cc _PyFunction_FastCallDict + 828
17 Python 0x000000010000e984 _PyObject_FastCallDict + 356
18 Python 0x000000010000eaa0 _PyObject_Call_Prepend + 208
19 Python 0x000000010000e5b3 PyObject_Call + 99
20 Python 0x0000000100089871 slot_tp_init + 81
21 Python 0x0000000100080144 type_call + 212
22 Python 0x000000010000e8d4 _PyObject_FastCallDict + 180
23 Python 0x00000001000f3225 call_function + 165
24 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
25 Python 0x00000001000f37cc _PyFunction_FastCallDict + 828
26 Python 0x000000010000e984 _PyObject_FastCallDict + 356
27 Python 0x000000010000eaa0 _PyObject_Call_Prepend + 208
28 Python 0x000000010000e5b3 PyObject_Call + 99
29 Python 0x0000000100089871 slot_tp_init + 81
30 Python 0x0000000100080144 type_call + 212
31 Python 0x000000010000e8d4 _PyObject_FastCallDict + 180
32 Python 0x00000001000f3225 call_function + 165
33 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
34 Python 0x00000001000f312e fast_function + 606
35 Python 0x00000001000f33cb call_function + 587
36 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
37 Python 0x00000001000f27a0 _PyEval_EvalCodeWithName + 2720
38 Python 0x00000001000f3636 _PyFunction_FastCallDict + 422
39 Python 0x000000010000e984 _PyObject_FastCallDict + 356
40 Python 0x000000010000eaa0 _PyObject_Call_Prepend + 208
41 Python 0x000000010000e5b3 PyObject_Call + 99
42 Python 0x0000000100089871 slot_tp_init + 81
43 Python 0x0000000100080144 type_call + 212
44 Python 0x000000010000e8d4 _PyObject_FastCallDict + 180
45 Python 0x00000001000f3225 call_function + 165
46 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
47 Python 0x00000001000f312e fast_function + 606
48 Python 0x00000001000f33cb call_function + 587
49 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
50 Python 0x00000001000f27a0 _PyEval_EvalCodeWithName + 2720
51 Python 0x00000001000f2944 PyEval_EvalCode + 100
52 Python 0x000000010012f21e PyRun_FileExFlags + 206
53 Python 0x000000010012f4bf PyRun_SimpleFileExFlags + 447
54 Python 0x0000000100148ada Py_Main + 3914
55 Python 0x0000000100000dfe Python + 3582
56 Python 0x0000000100000c34 Python + 3124
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6
我的密码是
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/
import sys;
import log;
# Initialization
print(log.GetTime());
import pygame;
import turtle;
pygame = pygame;
turtle = turtle;
# After Initialization
pygame.init();
turtle.begin_fill();
player = {
'speed': {
'move': 5,
'rotate': 1
}
};
while true:
time = log.GetTime();
keys = pygame.key.get_pressed();
if keys[K_ESCAPE]: break;
if keys[K_W]: turtle.forward(player.speed.move);
if keys[K_S]: turtle.backward(player.speed.move);
if keys[K_A]: turtle.left(player.speed.rotate);
if keys[K_D]: turtle.right(player.speed.rotate);
print('Ended program!');
我对 python 编程非常陌生,对此毫无经验。我曾尝试寻找解决此问题的答案,但当我不知道出了什么问题时非常困难,谁能告诉我如何解决此问题?我做错了什么?
在这里我会指出你的错误以及如何解决你的问题。
true
在 python 中被称为 True
K_ESCAPE
, K_W
... 没有定义,我不知道你的名字是从哪里来的,但你得自己弄清楚。您可能是指 pygame.K_ESCAPE
、pygame.K_w
...注意:它们是小写的
- python 不需要在每个换行符处
;
- 您不需要
pygame = pygame
和 turtle = turtle
,因为导入时带有名称
- 从字典获取项目使用 [] 而不是 .
- 调用 turtle 的 left/right 将光标转动该角度而不移动 left/right
以下是阻止它崩溃的方法:
import sys
import log
# Initialization
print(log.GetTime())
import pygame
import turtle
# After Initialization
turtle.begin_fill()
pygame.init()
player = {
'speed': {
'move': 5,
'rotate': 1
}
};
while True:
time = log.GetTime()
keys = pygame.key.get_pressed()
if keys[pygame.K_ESCAPE]: break
if keys[pygame.K_W]: turtle.forward(player['speed']['move'])
if keys[pygame.K_S]: turtle.backward(player['speed']['move'])
if keys[pygame.K_A]: turtle.left(player['speed']['rotate'])
if keys[pygame.K_D]: turtle.right(player['speed']['rotate'])
print('Ended program!')
您需要与 turtle.begin_fill()
和 pygame.init()
交换位置,因为 pygame 和 turtle 都使用基本模块 tkinter
,但只有一个 Tk()
(window) 一次被允许,但是 turtle 不知道如何使用 pygame 创建的现有 window,所以应用程序崩溃了。虽然 pygame 知道如何使用现有的 window 创建的海龟。
作为旁注,没有必要对 turtle 使用 pygame,只需使用 tkinter
,它有更多的功能。另外,你甚至不需要它们中的任何一个,turtle 有足够的功能来做你想做的事。
编辑:pygame 和 turtle 永远不会 一起工作。推荐使用 tkinter。
我得到这个错误代码:
2017-04-13 03:04:14.958 Python[606:839244] -[SDLApplication _setup:]: unrecognized selector sent to instance 0x1007a0dd0
2017-04-13 03:04:14.971 Python[606:839244] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SDLApplication _setup:]: unrecognized selector sent to instance 0x1007a0dd0'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff8d71be7b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00007fffa22fbcad objc_exception_throw + 48
2 CoreFoundation 0x00007fff8d79dcb4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x00007fff8d68dfb5 ___forwarding___ + 1061
4 CoreFoundation 0x00007fff8d68db08 _CF_forwarding_prep_0 + 120
5 Tk 0x000000010324b5e6 TkpInit + 471
6 Tk 0x00000001031c6c8d Tk_Init + 1794
7 _tkinter.cpython-36m-darwin.so 0x00000001027e7dfd Tcl_AppInit + 77
8 _tkinter.cpython-36m-darwin.so 0x00000001027e5849 _tkinter_create + 889
9 Python 0x000000010006a688 _PyCFunction_FastCallDict + 568
10 Python 0x00000001000f33e4 call_function + 612
11 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
12 Python 0x00000001000f27a0 _PyEval_EvalCodeWithName + 2720
13 Python 0x00000001000f2fab fast_function + 219
14 Python 0x00000001000f33cb call_function + 587
15 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
16 Python 0x00000001000f37cc _PyFunction_FastCallDict + 828
17 Python 0x000000010000e984 _PyObject_FastCallDict + 356
18 Python 0x000000010000eaa0 _PyObject_Call_Prepend + 208
19 Python 0x000000010000e5b3 PyObject_Call + 99
20 Python 0x0000000100089871 slot_tp_init + 81
21 Python 0x0000000100080144 type_call + 212
22 Python 0x000000010000e8d4 _PyObject_FastCallDict + 180
23 Python 0x00000001000f3225 call_function + 165
24 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
25 Python 0x00000001000f37cc _PyFunction_FastCallDict + 828
26 Python 0x000000010000e984 _PyObject_FastCallDict + 356
27 Python 0x000000010000eaa0 _PyObject_Call_Prepend + 208
28 Python 0x000000010000e5b3 PyObject_Call + 99
29 Python 0x0000000100089871 slot_tp_init + 81
30 Python 0x0000000100080144 type_call + 212
31 Python 0x000000010000e8d4 _PyObject_FastCallDict + 180
32 Python 0x00000001000f3225 call_function + 165
33 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
34 Python 0x00000001000f312e fast_function + 606
35 Python 0x00000001000f33cb call_function + 587
36 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
37 Python 0x00000001000f27a0 _PyEval_EvalCodeWithName + 2720
38 Python 0x00000001000f3636 _PyFunction_FastCallDict + 422
39 Python 0x000000010000e984 _PyObject_FastCallDict + 356
40 Python 0x000000010000eaa0 _PyObject_Call_Prepend + 208
41 Python 0x000000010000e5b3 PyObject_Call + 99
42 Python 0x0000000100089871 slot_tp_init + 81
43 Python 0x0000000100080144 type_call + 212
44 Python 0x000000010000e8d4 _PyObject_FastCallDict + 180
45 Python 0x00000001000f3225 call_function + 165
46 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
47 Python 0x00000001000f312e fast_function + 606
48 Python 0x00000001000f33cb call_function + 587
49 Python 0x00000001000f8d84 _PyEval_EvalFrameDefault + 21892
50 Python 0x00000001000f27a0 _PyEval_EvalCodeWithName + 2720
51 Python 0x00000001000f2944 PyEval_EvalCode + 100
52 Python 0x000000010012f21e PyRun_FileExFlags + 206
53 Python 0x000000010012f4bf PyRun_SimpleFileExFlags + 447
54 Python 0x0000000100148ada Py_Main + 3914
55 Python 0x0000000100000dfe Python + 3582
56 Python 0x0000000100000c34 Python + 3124
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6
我的密码是
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/
import sys;
import log;
# Initialization
print(log.GetTime());
import pygame;
import turtle;
pygame = pygame;
turtle = turtle;
# After Initialization
pygame.init();
turtle.begin_fill();
player = {
'speed': {
'move': 5,
'rotate': 1
}
};
while true:
time = log.GetTime();
keys = pygame.key.get_pressed();
if keys[K_ESCAPE]: break;
if keys[K_W]: turtle.forward(player.speed.move);
if keys[K_S]: turtle.backward(player.speed.move);
if keys[K_A]: turtle.left(player.speed.rotate);
if keys[K_D]: turtle.right(player.speed.rotate);
print('Ended program!');
我对 python 编程非常陌生,对此毫无经验。我曾尝试寻找解决此问题的答案,但当我不知道出了什么问题时非常困难,谁能告诉我如何解决此问题?我做错了什么?
在这里我会指出你的错误以及如何解决你的问题。
true
在 python 中被称为 K_ESCAPE
,K_W
... 没有定义,我不知道你的名字是从哪里来的,但你得自己弄清楚。您可能是指pygame.K_ESCAPE
、pygame.K_w
...注意:它们是小写的- python 不需要在每个换行符处
;
- 您不需要
pygame = pygame
和turtle = turtle
,因为导入时带有名称 - 从字典获取项目使用 [] 而不是 .
- 调用 turtle 的 left/right 将光标转动该角度而不移动 left/right
True
以下是阻止它崩溃的方法:
import sys
import log
# Initialization
print(log.GetTime())
import pygame
import turtle
# After Initialization
turtle.begin_fill()
pygame.init()
player = {
'speed': {
'move': 5,
'rotate': 1
}
};
while True:
time = log.GetTime()
keys = pygame.key.get_pressed()
if keys[pygame.K_ESCAPE]: break
if keys[pygame.K_W]: turtle.forward(player['speed']['move'])
if keys[pygame.K_S]: turtle.backward(player['speed']['move'])
if keys[pygame.K_A]: turtle.left(player['speed']['rotate'])
if keys[pygame.K_D]: turtle.right(player['speed']['rotate'])
print('Ended program!')
您需要与 turtle.begin_fill()
和 pygame.init()
交换位置,因为 pygame 和 turtle 都使用基本模块 tkinter
,但只有一个 Tk()
(window) 一次被允许,但是 turtle 不知道如何使用 pygame 创建的现有 window,所以应用程序崩溃了。虽然 pygame 知道如何使用现有的 window 创建的海龟。
作为旁注,没有必要对 turtle 使用 pygame,只需使用 tkinter
,它有更多的功能。另外,你甚至不需要它们中的任何一个,turtle 有足够的功能来做你想做的事。
编辑:pygame 和 turtle 永远不会 一起工作。推荐使用 tkinter。