Si vous pensez que PyGame ne prend pas en charge python3 ou 64 bits, il semble que développement terminé. Donc, quand je vais voir le site, il semble vivant à première vue. La dernière version 1.9.1 Packages (August 6th 2009) Donc, j'ai l'impression que c'est le cas.
Essayez PySDL2 qui semble être le successeur. Cela semble être un wrapper ctypes pour SDL2, donc je m'attends à ce qu'il fonctionne rapidement sans construire.
L'environnement est la version Anaconda de Python 3.5 (64 bits) sous Windows.
> cd PySDL2-0.9.3
> C:\Anaconda3\python.exe setup.py install
> cd examples
> C:\Anaconda3\python.exe sdl2hello.py
J'obtiens une erreur indiquant que SDL2 ne peut pas être trouvé.
https://www.libsdl.org/download-2.0.php Obtenez la dll SDL2 à partir de. Définissez la variable d'environnement PYSDL2_DLL_PATH pour qu'elle pointe vers le répertoire dll.
encore
> C:\Anaconda3\python.exe sdl2hello.py
déplacé. Cependant, les exemples utilisant d'autres SDL_gfx ne fonctionnent pas.
SDL_gfx
Il n'y a pas de dll ... Très bien, construisons tout.
Je l'ai construit. Créer un script.
Les exemples ont helloworld.py et sdl2hello.py avec le même résultat d'exécution.
import sdl2.ext
def ext_hello():
'''
helloworld.Extrait de py
'''
sdl2.ext.init()
window = sdl2.ext.Window("Hello World!", size=(592, 460))
window.show()
processor = sdl2.ext.TestEventProcessor()
processor.run(window)
sdl2.ext.quit()
import ctypes
import sdl2
def hello():
'''
helloworld.Extrait de py
'''
sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO)
window = sdl2.SDL_CreateWindow(b"Hello World",
sdl2.SDL_WINDOWPOS_CENTERED,
sdl2.SDL_WINDOWPOS_CENTERED,
592, 460, sdl2.SDL_WINDOW_SHOWN)
running = True
event = sdl2.SDL_Event()
while running:
while sdl2.SDL_PollEvent(ctypes.byref(event)) != 0:
if event.type == sdl2.SDL_QUIT:
running = False
break
sdl2.SDL_Delay(10)
sdl2.SDL_DestroyWindow(window)
sdl2.SDL_Quit()
if __name__=='__main__':
hello()
#ext_hello()
J'avais un tel sentiment. Je vois. ext semble être une couche de ctypes cachés et un petit cadre. Utilisons directement sdl2.
SDL_Renderer https://wiki.libsdl.org/SDL_CreateRenderer Essayez de transplanter.
def hello_renderer():
print("hello_renderer")
posX = 100
posY = 100
width = 320
height = 240
sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO);
win = sdl2.SDL_CreateWindow(b"Hello World", posX, posY, width, height, 0);
renderer = sdl2.SDL_CreateRenderer(win, -1, sdl2.SDL_RENDERER_ACCELERATED);
bitmapSurface = sdl2.SDL_LoadBMP(b"hello.bmp");
bitmapTex = sdl2.SDL_CreateTextureFromSurface(renderer, bitmapSurface);
sdl2.SDL_FreeSurface(bitmapSurface);
while True:
e=sdl2.SDL_Event()
if sdl2.SDL_PollEvent(ctypes.byref(e)):
if e.type == sdl2.SDL_QUIT:
break;
sdl2.SDL_RenderClear(renderer);
sdl2.SDL_RenderCopy(renderer, bitmapTex, None, None);
sdl2.SDL_RenderPresent(renderer);
sdl2.SDL_DestroyTexture(bitmapTex);
sdl2.SDL_DestroyRenderer(renderer);
sdl2.SDL_DestroyWindow(win);
sdl2.SDL_Quit();
Il bougeait facilement.
sdl2.SDL_PollEvent(ctypes.byref(e))
NULL -> None
b"Par octets"
Après cela, je pense que je devrais obtenir des informations de l'exemple de C.
Recommended Posts