2017-04-13 84 views
1

我得到這個錯誤代碼:pygame的龜崩潰

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編程,並在這是什麼沒有經驗。我試圖尋找解決這個問題的答案,但是當我不知道什麼是錯誤時很難,誰能告訴我如何解決這個問題?我做錯了什麼?

+0

你是如何運行代碼?爲什麼在'#!/ Library/Frameworks/Python.framework/Versions/3.6/bin /'中?大概把它放在一個普通的文件夾中,比如'〜/ Dev/MyProject/myprogram.py',然後用'python myprogram.py'從該文件夾運行它。 – bananafish

+0

此外,'雖然:'不是合法代碼。您需要發佈功能代碼,而不是僞代碼。 – ShadowRanger

+0

這段代碼包含很多問題,請解決它們......順便說一下,什麼是「日誌」?你在哪裏得到它?來自pypi的'log'沒有'GetTime()'方法。作爲一個方面說明,你**不需要在新的行分號,它只是使它看起來更少的Python。 – abccd

回答

0

在這裏我會指出你的錯誤以及如何解決你的問題。

  1. true在Python稱爲True
  2. K_ESCAPEK_W ......沒有定義,我不知道你來自哪裏有你的名字,但你必須明白這一點你自己。你可能意味着pygame.K_ESCAPEpygame.K_w ...注:他們是下套管
  3. 蟒蛇在每一行不需要;打破
  4. 你不需要pygame = pygameturtle = turtle由於進口自帶的名字
  5. 從獲取項目字典不使用[]。
  6. 調用甲魚的左/右轉光標通過角度不動左/右

下面是如何從崩潰停止:

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()(窗口),但是龜不知道如何使用pygame創建的現有窗口,所以應用程序崩潰了。 pygame知道如何使用現有的窗口龜創建。作爲一個方面說明,沒有必要使用pygame和烏龜,只需要使用tkinter,它有更多的功能。另外,你甚至都不需要它們,烏龜有足夠的功能去做你想要的。

編輯:pygame和龜會從來沒有一起工作很好。推薦使用tkinter。

+0

感謝您指出了這一點,我決定在node.js中創建我的程序,因爲'我更熟悉JavaScript! – Alliator