[PYTHON] essayez pysdl2

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.

Environnement d'exécution

Téléchargement et exemples

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.

Construire un ensemble de SDL2

Je l'ai construit. Créer un script.

helloworld.pyとsdl2hello.py

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

essayez pysdl2
Essayez Python
Essayez PyOpenGL
Essayez de toucher libtaxii
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez le générateur de numpy.random
Essayez Distributed Tensor Flow
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Python> essayez: / sauf:
Essayez d'installer Polynote
Essayez le détartreur standard
Essayez d'utiliser pandas.DataFrame
Essayez les astuces de saisie
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'installer chainer-gogh
Essayez d'exécuter deepdream
Essayez d'utiliser PyODE
Essayez d'exécuter Pyston 0.1
Essayez de construire PySide2