Een game is niets zonder invoer, en met Pygame's ondersteuning voor zowel muis- als aanraakinvoer, kunt u ervoor zorgen dat uw game toegankelijk is.

Tegenwoordig zijn touchscreen-apparaten overal. Het is geen verrassing dat game-ontwikkelaars steeds vaker touch-invoer gebruiken in hun games, en frameworks maken dit steeds gemakkelijker.

PyGame maakt het gemakkelijk om games en applicaties te maken die kunnen profiteren van aanraakinvoer.

PyGame's Touch-ondersteuning

PyGame heeft ingebouwde ondersteuning voor het werken met aanraakinvoer. Dit omvat ondersteuning voor invoer met muis en vingeraanraking.

Om een ​​muis te detecteren, kunt u de pyspel. MUISKNOP OMLAAG En pyspel. MUISKNOP OMHOOG evenementen. Bijvoorbeeld:

voor evenement in pygame.event.get():
als event.type == pygame. MUISKNOP OMLAAG:
afdrukken("Muisknop ingedrukt")

Om invoer met vingers te detecteren, kunt u de pyspel. VINGER NAAR BENEDEN En pyspel. VINGER OMHOOG evenementen. Bijvoorbeeld:

voor evenement in pygame.event.get():
als event.type == pygame. VINGER NAAR BENEDEN:
afdrukken("Vinger raakte het scherm aan")

Een eenvoudig spel maken

Je vindt alle code in deze GitHub Repo.

Begin met het maken van een eenvoudig spel. Deze game zal bestaan ​​uit een personage dat je over het scherm kunt bewegen met behulp van aanraakinvoer. Om dit te doen, moet je een gamelus en een spelerspersonage maken.

Voordat je begint, zorg ervoor dat je hebt pip op uw apparaat geïnstalleerd, gebruik dan de volgende opdracht om het PyGame moduul:

pip installeer pygame

Importeer nu de PyGame-module in uw spelcode:

importeren pyspel
pygame.init()

Maak daarna het spelvenster en een spelobject:

# Stel het beeldscherm in
maat = (400, 400)
scherm = pygame.display.set_mode (grootte)

# Maak een spelerobject
speler = pygame. Oppervlak((50, 50))
speler.fill((255, 0, 0))

# Stel de beginpositie van de speler in
speler_pos = [175, 175]

Maak ten slotte de spellus:

# De spellus
hardlopen = WAAR

terwijl rennen:
# Controleer op evenementen
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals

# Werk de spelerpositie bij
speler_pos[0] += 5
speler_pos[1] += 5

# Teken de speler
screen.blit (speler, speler_pos)

# Werk de weergave bij
pygame.display.update()

Merk op dat de bovenstaande code alleen een eenvoudig spel creëert waarbij het personage van de speler over het scherm beweegt. Om het spel interessanter te maken, kan dat natuurkunde en botsingen toevoegen om obstakels te creëren die de speler moet overwinnen.

Muisaanrakingsinvoer voor spelerbewegingen

Nu je een spel hebt met een spelerskarakter, kun je beginnen met het toevoegen van aanraakinvoer. Om dit te doen, moet u een gebeurtenishandler voor de muisinvoer toevoegen. Voeg de pyspel. MUISKNOP OMLAAG En pyspel. MUISKNOP OMHOOG gebeurtenissen naar de spellus.

Maak een gebeurtenishandler voor de muisinvoer. Wanneer een speler op de muisknop drukt, werk je de positie van het personage bij naar de huidige muispositie. Het programma negeert het loslaten van de muisknop, aangezien het in dat geval geen actie hoeft te ondernemen.

# De spellus
hardlopen = WAAR

terwijl rennen:
# Controleer op evenementen
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals
# Controleer op muisinvoer
elif event.type == pygame. MUISKNOP OMLAAG:
muis_x, muis_y = gebeurtenis.pos
speler_pos[0] = muis_x
speler_pos[1] = muis_y
elif event.type == pygame. MUISKNOP OMHOOG:
doorgang

scherm.vullen((0, 0, 0))

# Teken de speler
screen.blit (speler, speler_pos)

# Werk de weergave bij
pygame.display.update()

U kunt ook extra logica toevoegen aan de gebeurtenishandler om de speler te laten bewegen als reactie op de muisinvoer.

Finger Touch-ingangen voor spelerbewegingen

Naast muisinvoer kunt u ook invoer met vingeraanraking toevoegen. Om dit te doen, moet u een gebeurtenishandler voor de vingeraanrakingsinvoer toevoegen.

Voeg de pyspel. VINGER NAAR BENEDEN En pyspel. VINGER OMHOOG gebeurtenissen aan de spellus:

# De spellus
hardlopen = WAAR

terwijl rennen:
# Controleer op evenementen
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals
# Controleer op muisinvoer
elif event.type == pygame. MUISKNOP OMLAAG:
muis_x, muis_y = gebeurtenis.pos
speler_pos[0] = muis_x
speler_pos[1] = muis_y
elif event.type == pygame. MUISKNOP OMHOOG:
doorgang
# Controleer op vingerinvoer
elif event.type == pygame. VINGER NAAR BENEDEN:
vinger_x, vinger_y = gebeurtenis.pos
speler_pos[0] = vinger_x
speler_pos[1] = vinger_y
elif event.type == pygame. VINGER OMHOOG:
doorgang

scherm.vullen((0, 0, 0))

# Teken de speler
screen.blit (speler, speler_pos)

# Werk de weergave bij
pygame.display.update()

Merk op hoe vergelijkbaar dit is met de gebeurtenishandler voor muisinvoer. Deze gebeurtenishandler werkt de positie van het personage bij wanneer de speler met zijn vinger op het scherm drukt. Als ze hun vinger loslaten, gebeurt er niets. Hiermee kunt u een game maken die u kunt besturen met zowel muis- als vingeraanrakingsinvoer. Houd er rekening mee dat u ook andere evenementen kunt gebruiken, zoals pyspel. VINGERBEWEGING reageren op vingerbewegingen.

Pygame's extra aanraakfuncties

Met de basisaanraakfuncties kunt u beginnen met het toevoegen van meer geavanceerde functies. PyGame heeft een paar ingebouwde functies die u kunnen helpen meer aanraakfuncties aan uw spel toe te voegen.

Het eerste kenmerk is de pygame.mouse.set_visible() functie. Met deze functie kunt u de muiscursor verbergen. Dit kan handig zijn als u een spel wilt maken dat alleen aanraakinvoer gebruikt en niet de muis.

Hier is een voorbeeld van het gebruik van de set_visible() functie:

pygame.mouse.set_visible(Vals)

De pygame.mouse.set_pos() functie zet de muiscursor op een specifieke positie op het scherm. Dit is handig als u de muis naar een specifieke locatie wilt verplaatsen zonder de muisinvoer te gebruiken.

Hieronder ziet u een voorbeeld van het gebruik van de set_pos() functie:

pygame.mouse.set_pos(200, 200)

U kunt de pygame.mouse.get_rel() functie om de relatieve beweging van de muis te krijgen. U kunt dit gebruiken om te detecteren hoe ver de muis is verplaatst sinds de laatste muisgebeurtenis.

Zo kun je de krijg_rel() functie:

dx, dy = pygame.mouse.get_rel()

Tot slot kunt u de pygame.mouse.get_pressed() functie om te controleren of de speler op een muisknop drukt. Dit kan handig zijn bij het maken van games met muis-/aanraakbediening.

Hieronder ziet u een voorbeeld van het gebruik van de get_pressed() functie:

mouse_buttons = pygame.mouse.get_pressed()

PyGame biedt ook een MUIS WIEL gebeurtenistype dat u kunt gebruiken om scrollen met het muiswiel te detecteren. Het ondersteunt zowel verticale als horizontale scrolls.

Hier is een voorbeeld:

voor evenement in pygame.event.get():
als event.type == pygame. MUIS WIEL:
als evenement.y > 0:
afdrukken("Muiswiel omhoog gescrolld")
elif evenement.y < 0:
afdrukken("Muiswiel naar beneden gescrolld")

Maak interactieve games met aanraakinvoer

Met de aanraakinvoer kunt u nu interactieve games maken. U kunt bijvoorbeeld een spel maken waarbij de speler zich over het scherm kan bewegen met behulp van aanraakinvoer. Je kunt ook op gebaren gebaseerde spellen maken, waarbij de speler verschillende gebaren kan uitvoeren om acties in het spel te activeren.

De mogelijkheden zijn eindeloos als het gaat om het maken van games met aanraakinvoer. Met behulp van PyGame kun je spellen maken die zowel leuk als interactief zijn. Dus ga erop uit en begin met creëren!