我在python / pygame中创建了一个高级蛇游戏。问题在于游戏已经达到了这样的程度,即当我将新版本放在家用电脑上以便每个人都能玩它时,它运行得太慢了。
我用cprofile运行游戏并得到状态,但我不确定什么是正常的,应该或可以改进什么。
以下是我使用cProfile运行的确切游戏玩法的视频,其后是cProfile结果。谢谢你的帮助!
https://www.youtube.com/watch?v=Txyoq7df_5c&feature=youtu.be 当屏幕变黑时,就是我退出游戏的那一刻。
1641078 function calls (1641062 primitive calls) in 60.384 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 60.384 60.384 <string>:1(<module>)
1785 0.021 0.000 0.021 0.000 Snakey Deluxe.py:117(timeStamp)
1 0.000 0.000 0.000 0.000 Snakey Deluxe.py:128(playMusic)
4603 0.045 0.000 8.386 0.002 Snakey Deluxe.py:223(mess_to_screen)
4603 0.022 0.000 0.504 0.000 Snakey Deluxe.py:229(text_objects)
1 0.000 0.000 0.051 0.051 Snakey Deluxe.py:233(quit_game)
1 0.238 0.238 60.384 60.384 Snakey Deluxe.py:801(gameLoop)
4603 0.025 0.000 2.257 0.000 __init__.py:1114(resource_exists)
4603 0.022 0.000 2.597 0.001 __init__.py:1130(resource_stream)
9206 0.056 0.000 0.459 0.000 __init__.py:1556(__init__)
4603 0.019 0.000 0.935 0.000 __init__.py:1569(has_resource)
9206 0.042 0.000 0.630 0.000 __init__.py:1638(_fn)
9206 0.039 0.000 2.356 0.000 __init__.py:1656(__init__)
9206 0.198 0.000 1.858 0.000 __init__.py:1660(_setup_prefix)
4603 0.013 0.000 0.597 0.000 __init__.py:1677(_has)
4603 0.019 0.000 1.337 0.000 __init__.py:1686(get_resource_stream)
9206 0.023 0.000 0.030 0.000 __init__.py:2935(_get_mro)
9206 0.041 0.000 0.081 0.000 __init__.py:2942(_find_adapter)
9206 0.071 0.000 2.536 0.000 __init__.py:389(get_provider)
32 0.001 0.000 0.001 0.000 apples.py:122(check)
1824 0.041 0.000 0.063 0.000 apples.py:145(update)
2270 0.006 0.000 0.009 0.000 apples.py:169(eat)
893 0.003 0.000 0.003 0.000 apples.py:192(appleGrow)
1 0.000 0.000 0.000 0.000 apples.py:36(__init__)
48/32 0.001 0.000 0.003 0.000 apples.py:48(apples)
4603 0.014 0.000 0.583 0.000 genericpath.py:16(exists)
9206 0.081 0.000 0.572 0.000 ntpath.py:104(join)
73648 0.661 0.000 1.671 0.000 ntpath.py:139(splitdrive)
55236 0.447 0.000 1.924 0.000 ntpath.py:210(split)
9206 0.023 0.000 0.386 0.000 ntpath.py:251(dirname)
73648 0.135 0.000 0.214 0.000 ntpath.py:35(_get_empty)
82854 0.152 0.000 0.241 0.000 ntpath.py:41(_get_sep)
73648 0.137 0.000 0.212 0.000 ntpath.py:47(_get_altsep)
64442 0.121 0.000 0.198 0.000 ntpath.py:53(_get_bothseps)
82854 0.153 0.000 0.244 0.000 ntpath.py:65(_get_colon)
4603 0.021 0.000 4.876 0.001 pkgdata.py:34(getResource)
182 0.001 0.000 0.002 0.000 random.py:170(randrange)
182 0.001 0.000 0.001 0.000 random.py:220(_randbelow)
1 0.000 0.000 0.000 0.000 snake_skins.py:51(rainbowColor)
1 0.000 0.000 0.000 0.000 snake_skins.py:58(colorMaker)
1 0.000 0.000 0.000 0.000 snakes.py:19(__init__)
1824 0.003 0.000 0.004 0.000 snakes.py:316(turnCheck)
1136 0.004 0.000 0.006 0.000 snakes.py:340(turnNow)
1824 0.238 0.000 0.595 0.000 snakes.py:400(draw)
31 0.000 0.000 0.000 0.000 snakes.py:415(popScore)
1 0.000 0.000 0.000 0.000 snakes.py:429(popObj)
1824 0.013 0.000 0.014 0.000 snakes.py:432(objCheck)
1824 0.070 0.000 0.096 0.000 snakes.py:97(update)
4603 0.025 0.000 0.214 0.000 sysfont.py:36(_simplename)
4603 0.105 0.000 0.183 0.000 sysfont.py:37(<listcomp>)
4603 2.646 0.001 7.522 0.002 sysfont.py:534(font_constructor)
4603 0.046 0.000 7.804 0.002 sysfont.py:548(SysFont)
1 0.000 0.000 60.384 60.384 {built-in method exec}
1 0.000 0.000 0.000 0.000 {built-in method exit}
36824 0.036 0.000 0.036 0.000 {built-in method getattr}
1825 0.138 0.000 0.138 0.000 {built-in method get}
395858 0.437 0.000 0.437 0.000 {built-in method isinstance}
134283 0.113 0.000 0.113 0.000 {built-in method len}
1 0.000 0.000 0.000 0.000 {built-in method load}
4603 1.009 0.000 1.009 0.000 {built-in method open}
1 0.000 0.000 0.000 0.000 {built-in method play}
1 0.051 0.051 0.051 0.051 {built-in method quit}
44124 0.242 0.000 0.242 0.000 {built-in method rect}
1 0.000 0.000 0.000 0.000 {built-in method set_visible}
1 0.000 0.000 0.000 0.000 {built-in method set_volume}
4603 0.569 0.000 0.569 0.000 {built-in method stat}
1824 1.437 0.001 1.437 0.001 {built-in method update}
4733 0.004 0.000 0.004 0.000 {method 'append' of 'list' objects}
182 0.000 0.000 0.000 0.000 {method 'bit_length' of 'int' objects}
53544 3.773 0.000 3.773 0.000 {method 'blit' of 'pygame.Surface' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
46030 0.055 0.000 0.055 0.000 {method 'endswith' of 'str' objects}
1825 0.914 0.001 0.914 0.001 {method 'fill' of 'pygame.Surface' objects}
9206 0.012 0.000 0.012 0.000 {method 'get' of 'dict' objects}
4603 0.005 0.000 0.005 0.000 {method 'get_rect' of 'pygame.Surface' objects}
255 0.000 0.000 0.000 0.000 {method 'getrandbits' of '_random.Random' objects}
46030 0.040 0.000 0.040 0.000 {method 'isalnum' of 'str' objects}
4603 0.006 0.000 0.006 0.000 {method 'join' of 'str' objects}
87457 0.082 0.000 0.082 0.000 {method 'lower' of 'str' objects}
63 0.000 0.000 0.000 0.000 {method 'remove' of 'list' objects}
4603 0.476 0.000 0.476 0.000 {method 'render' of 'pygame.font.Font' objects}
73648 0.090 0.000 0.090 0.000 {method 'replace' of 'str' objects}
13809 0.025 0.000 0.025 0.000 {method 'split' of 'str' objects}
1824 44.823 0.025 44.823 0.025 {method 'tick' of 'Clock' objects}
更多信息:当我在家庭计算机上运行游戏时,只要弹出升级动画,游戏就会运行得特别慢。但这只会让我感到困惑,因为除了每一帧都增加了位置之外,它只是做了与绘制其他所有内容相同的事情。