[Python sdl2] 几个实现的对比
2022/3/20 20:28:48
本文主要是介绍[Python sdl2] 几个实现的对比,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 前言
- 各个介绍
- Pygame
- Pysdl2
- pygame_sdl2
- 对比
- 安装
- 活跃度
- 文档完善程度
- 安卓
- 其他平台
- 最后
前言
之前我写了一篇文章,当时写得急,没有怎么求证,现在写一篇弥补一下。
各个介绍
Pygame
最有名的版本啊,去搜,网上能找到几百篇关于它的教程。最新版本是2.x,1.x是基于SDL1的,2.x基于SDL2,支持python3.6+。
安装:pip install pygame
被称为SDL最好的绑定之一:
Pysdl2
这个就比较陌生了,它为了代替Pysdl项目(没找到此项目),是使用纯ctypes调用dll的方式来做游戏的。作者有配套包Pysdl2-dll可以使用。使用时可以用sdl2.ext来“Pythonic地调用”
安装:pip install pysdl2-dll
然后pip install pysdl2
因为是调用dll,不需要编译pyd,支持python2,3的所有版本。
sdl2.examples中有示例。
import sys import ctypes import sdl2dll # 导入pysdl2-dll from sdl2 import * # 导入pysdl2 from sdl2.sdlimage import * # 加载图片需要,否则只能加载BMP def main(): SDL_Init(SDL_INIT_VIDEO) IMG_Init(IMG_INIT_JPG) window = SDL_CreateWindow(b"Hello World", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 592, 460, SDL_WINDOW_SHOWN) windowsurface = SDL_GetWindowSurface(window) image = IMG_Load(b"exampleimage.jpg") rect = SDL_Rect(0,0,0,0) SDL_BlitSurface(image, None, windowsurface, rect) #SDL_RenderCopyEx(window,image,None,None,90.0,SDL_Point(0,0),SDL_FLIP_NONE) cur = SDL_Cursor() cur = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_HAND) sur = SDL_Surface() cur = SDL_CreateColorCursor(image,0,0) SDL_SetCursor(cur) SDL_UpdateWindowSurface(window) SDL_FreeSurface(image) running = True event = SDL_Event() while running: while SDL_PollEvent(ctypes.byref(event)) != 0: if event.type == SDL_QUIT: running = False break SDL_DestroyWindow(window) SDL_Quit() globals().update(locals()) return 0 if __name__ == "__main__": sys.exit(main())
这个示例会读取本地exampleimage.jpg并画到屏幕,顺便把鼠标样式。。。自己看吧。
pygame_sdl2
看上去像上两者的混合体?没错,这是github@renpytom 等人写的,使用pysdl2,并且“仿”成pygame的用法。需要自己编译,编译需要cython(这个需要vc14),windows上需要pygame_sdl2_windeps。最新版支持python3。
之前我说pygame不能输入的错了,是2.0.0前不能,用SDL2后就可以了。
对比
安装
这个比较不好比
Pygame只需要一行pip
PySdl2需要两行pip
而pygame-sdl2。。。需要自己编译
活跃度
这个没法比的,Pygame>pysdl2~pygame_sdl2
文档完善程度
这个还是pygame赢了,pygame_sdl2最坑:
而pysdl2,建议看Ctypes(DLL交互)和SDL wiki(就是C++原版)反正样子都一样。
安卓
pysdl2躺平
pygame 可以用kivy的p4a pip install python-for-android
弄成安卓的只支持Linux打包
pygame_sdl2 可以用rapt只支持py2.7
其他平台
pysdl2再次躺平
pygame躺平
pygame_sdl2支持windows,linux,mac,android,ios,wasm(web):
牛B。
最后
如果要稳定开发,建议pygame;
如果要速度,并且是C++转的,可以用pysdl2;
如果要多平台且头发够的,可以考虑pygame_sdl2。
本文发于CSDN于 2022/3/30 18:52
这篇关于[Python sdl2] 几个实现的对比的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python