Ett spel är ingenting utan ingång, och med Pygames stöd för både mus- och pekinmatning kan du se till att ditt spel är tillgängligt.
I denna tid finns pekskärmsenheter överallt. Det är ingen överraskning att spelutvecklare i allt högre grad använder touch-input i sina spel, och ramverk gör detta enklare och enklare.
PyGame gör det enkelt att skapa spel och applikationer som kan dra nytta av touch-ingångar.
PyGames Touch Support
PyGame har inbyggt stöd för att arbeta med touch-ingångar. Detta inkluderar stöd för mus- och fingertrycksingångar.
För att upptäcka en mus kan du använda pygame. MUSKNAPP och pygame. MUSKNAPPUPP evenemang. Till exempel:
för händelse i pygame.event.get():
om event.type == pygame. MUSKNAPP:
skriva ut("Musknapp nedtryckt")
För att upptäcka fingertrycksingångar kan du använda pygame. NER NED och pygame. FINGERUPP evenemang. Till exempel:
för händelse i pygame.event.get():
om event.type == pygame. NER NED:
skriva ut("Fingret rörde skärmen")
Skapa ett enkelt spel
Du hittar all kod i denna GitHub Repo.
Börja med att skapa ett enkelt spel. Detta spel kommer att bestå av en spelarkaraktär som du kan flytta runt på skärmen med hjälp av pekingångar. För att göra detta måste du skapa en spelloop och en spelarkaraktär.
Innan du börjar, se till att du har pip installerad på din enhet, använd sedan följande kommando för att installera PyGame modul:
pip installera pygame
Importera nu PyGame-modulen i din spelkod:
importera pygame
pygame.init()
Efter det skapar du spelfönstret och ett spelobjekt:
# Ställ in displayen
storlek = (400, 400)
skärm = pygame.display.set_mode (storlek)# Skapa ett spelarobjekt
spelare = pygame. Yta((50, 50))
player.fill((255, 0, 0))
# Ställ in spelarens startposition
player_pos = [175, 175]
Skapa slutligen spelslingan:
# Spelslingan
springer = Sannmedan löpning:
# Kontrollera efter händelser
för händelse i pygame.event.get():
om event.type == pygame. SLUTA MED:
springer = Falsk# Uppdatera spelarpositionen
player_pos[0] += 5
player_pos[1] += 5# Rita spelaren
screen.blit (spelare, player_pos)
# Uppdatera displayen
pygame.display.update()
Observera att ovanstående kod bara skapar ett enkelt spel där spelarkaraktären rör sig på skärmen. För att göra spelet mer intressant kan du lägg till fysik och kollisioner för att skapa hinder för spelaren att övervinna.
Mouse Touch-ingångar för spelarrörelse
Nu när du har ett spel med en spelarkaraktär kan du börja lägga till touch-ingångar. För att göra detta måste du lägga till en händelsehanterare för musingångarna. Lägg till pygame. MUSKNAPP och pygame. MUSKNAPPUPP händelser till spelslingan.
Skapa en händelsehanterare för musingångarna. När en spelare trycker på musknappen uppdaterar du karaktärens position till den aktuella muspositionen. Programmet kommer att ignorera släppningen av musknappen, eftersom det inte behöver vidta några åtgärder i så fall.
# Spelslingan
springer = Sannmedan löpning:
# Kontrollera efter händelser
för händelse i pygame.event.get():
om event.type == pygame. SLUTA MED:
springer = Falsk
# Kontrollera om det finns musingång
elif event.type == pygame. MUSKNAPP:
mus_x, mus_y = händelse.pos
player_pos[0] = mus_x
player_pos[1] = mus_y
elif event.type == pygame. MUSKNAPPUPP:
passera
screen.fill((0, 0, 0))# Rita spelaren
screen.blit (spelare, player_pos)
# Uppdatera displayen
pygame.display.update()
Du kan också lägga till extra logik till händelsehanteraren för att få spelaren att röra sig som svar på musinmatningen.
Finger Touch-ingångar för spelarrörelse
Förutom musingångar kan du även lägga till fingertrycksingångar. För att göra detta måste du lägga till en händelsehanterare för finger-touch-ingångarna.
Lägg till pygame. NER NED och pygame. FINGERUPP händelser till spelslingan:
# Spelslingan
springer = Sannmedan löpning:
# Kontrollera efter händelser
för händelse i pygame.event.get():
om event.type == pygame. SLUTA MED:
springer = Falsk
# Kontrollera om det finns musingång
elif event.type == pygame. MUSKNAPP:
mus_x, mus_y = händelse.pos
player_pos[0] = mus_x
player_pos[1] = mus_y
elif event.type == pygame. MUSKNAPPUPP:
passera
# Kontrollera om det finns fingerinmatning
elif event.type == pygame. NER NED:
finger_x, finger_y = händelse.pos
player_pos[0] = finger_x
player_pos[1] = finger_y
elif event.type == pygame. FINGERUPP:
passerascreen.fill((0, 0, 0))
# Rita spelaren
screen.blit (spelare, player_pos)
# Uppdatera displayen
pygame.display.update()
Lägg märke till hur likt detta är musinmatningshändelsehanteraren. Denna händelsehanterare uppdaterar karaktärens position när spelaren trycker fingret på skärmen. När de släpper fingret händer ingenting. Detta gör att du kan skapa ett spel som du kan styra med både mus- och fingertrycksingångar. Tänk på att du även kan använda andra evenemang som t.ex pygame. Fingerrörelser att svara på fingerrörelser.
Pygames ytterligare touchfunktioner
Med de grundläggande touchfunktionerna på plats kan du börja lägga till mer avancerade funktioner. PyGame har några inbyggda funktioner som kan hjälpa dig att lägga till fler touchfunktioner till ditt spel.
Den första funktionen är pygame.mouse.set_visible() fungera. Denna funktion låter dig dölja muspekaren. Detta kan vara användbart om du vill skapa ett spel som bara använder touch-ingångar och inte musen.
Här är ett exempel på hur man använder set_visible() fungera:
pygame.mouse.set_visible(Falsk)
De pygame.mouse.set_pos() funktionen ställer muspekaren till en specifik position på skärmen. Detta är användbart om du vill flytta musen till en specifik plats utan att använda musingångarna.
Nedan är ett exempel på hur man använder set_pos() fungera:
pygame.mouse.set_pos(200, 200)
Du kan använda pygame.mouse.get_rel() funktion för att få musens relativa rörelse. Du kan använda detta för att upptäcka hur långt musen har rört sig sedan den senaste mushändelsen.
Så här kan du använda get_rel() fungera:
dx, dy = pygame.mouse.get_rel()
Slutligen kan du använda pygame.mouse.get_pressed() funktion för att kontrollera om spelaren trycker på någon musknapp. Detta kan vara användbart när du skapar spel med mus-/pekkontroller.
Nedan är ett exempel på hur man använder get_pressed() fungera:
mouse_buttons = pygame.mouse.get_pressed()
PyGame tillhandahåller också en MUSHJUL händelsetyp som du kan använda för att upptäcka mushjulsrullningar. Den stöder både vertikala och horisontella rullningar.
Här är ett exempel:
för händelse i pygame.event.get():
om event.type == pygame. MUSHJUL:
om event.y > 0:
skriva ut("Mushjulet rullade upp")
elif event.y < 0:
skriva ut("Mushjulet rullade ner")
Skapa interaktiva spel med pekingångar
Med pekingångarna på plats kan du nu skapa interaktiva spel. Du kan till exempel skapa ett spel där spelaren kan flytta runt på skärmen med hjälp av pekingångar. Du kan också skapa gestbaserade spel, där spelaren kan utföra olika gester för att utlösa åtgärder i spelet.
Möjligheterna är oändliga när det kommer till att skapa spel med touch-ingångar. Med hjälp av PyGame kan du skapa spel som är både roliga och interaktiva. Så gå ut och börja skapa!