Home » Andet » Del 2: Kod et livligt og legendarisk skydespil
Del 2: Kod et livligt og  legendarisk skydespil

Del 2: Kod et livligt og legendarisk skydespil

Share

I sidste nummers Kode_Kassen viste vi singlespiller-udgaven af et skydespil i arkadestil kodet i Python. Det er et underholdende, men ret omfattende spil, så vi har delt vejledningen op i to artikler. Her er anden del

Her i anden del vil vi se på multiplayer-versionen af Star-Fighter, som vi beskrev i AOD 3/22 i singlespiller-udgaven (udviklet af Francis Michael Tayag). Vi beskriver de netværks-programmeringsteknikker, som gjorde det muligt at spille dette spil over et LAN (local area network), og vi viser, hvor i kildekoden ændringerne er blevet indført.

Begge udgaver af spillet (server og klient) bliver afviklet på den samme maskine, men det er også muligt at køre dem på separate maskiner over det samme LAN. Netværks-programmering i Python er et avanceret emne; hvis nogle af læserne mangler erfaring med Python, kan det være klogest kun at fokusere på opsætning og afvikling af projektet.

Det skal nævnes, at denne guide ikke kommer ind på, hvordan dele af spillet virker, eller hvordan spillet er struktureret – det dækkede vi i foregående nummer. I stedet fokuserer denne guide på spillets netværkselement (som bruger sockets-biblioteket) og på de ændringer, der er blevet indført i spillet for at muliggøre multiplayer-action.

Vi agter at køre to omgange af spillet på den samme enhed. Det er muligt, at nogle læsere ikke har to computere til rådighed, og derfor bruger vi kun én enhed i denne guide. Lad os begynde med at arrangere vores Python-udviklingsmiljø.

Se også:  Python: Genskab det berømte Game of Life
Installation og opsætning

For at installere Python skal vi åbne et terminalvindue (Ctr-Alt-T) og skrive sudo apt-get python3 efterfulgt af apt-get install pip3 . Installer så PyGame-modulet ved at skrive pip3 install pygame . For at sikre dig, at du bruger PyGame version 2.0 (Star-Fighter bruger en nyere version af PyGame), skriver du python3 -m pip install pygame==2.0.0 . Nu bør du have version 2.0 af PyGame installeret. Skriv det følgende for at tjekke det, du netop har installeret:

python3
import pygame
quit()

Hvis alt er godt, bør dit skærmbillede se ud som skærmskuddet øverst til højre på denne side. Til sidst henter du et eksemplar af Star-Fighter-kildekoden ved at klone GitHub-lageret. Før du skriver det følgende for at klone (kopiere) GitHub-lageret, går du ind i den mappe på din maskine, som dit projekt skal ligge i.

git clone https://github.com/asmith1979/starfighter
_multiplayer/

I vores tilfælde er hele projektet blevet lagt ind i en mappe ved navn PythonProjects, som blev oprettet, før vi downloadede projektet. Med henblik på at redigere og iagttage kildekoden kan man enten bruge en basal teksteditor eller noget mere specifikt som Notepad++, PyCharm eller VS Code. I denne guide bruger vi gedit til at se og redigere kildefilerne.

Når man bruger denne metode til at se eller redigere kildefiler, kan det være en hjælp at åbne op til tre konsolvinduer: et til at redigere/se kildefiler og de to andre terminalvinduer til at eksekvere PyGame-koden.

Se også:  Trin for trin-guide: Sådan indsætter du tabeller og fotos i Word
IP-Adresser og Lokal host

En ip-adresse (internet protocol) identificerer en enhed på internettet eller på et lokalt områdenetværk (LAN), hvis der eksisterer en internetforbindelse. Man kan identificere en ip-adresse ved fire tal, der er adskilt af tre punktummer. Et eksempel på en gyldig ip-adresse kunne være 172.168.1.212. En lokal hostadresse bliver altid formuleret som 127.0.0.1, og den er også kendt som loopback-adressen.

I Multiplayer Demonstration-tilstand, som denne guide bygger på, bruger man kun lokale hostadresser i begge udgaver, og derfor bruger begge 127.0.0.1 med forskellige portnumre, således at kommunikationerne ikke støder sammen på den samme enhed. Når Multiplayer Demonstration-tilstanden ikke er aktiveret, bliver enhedernes ip-adresser brugt, og hver udgave skal køre på en separat enhed, hvis spillets multiplayerfunktion skal virke.

Bemærk, at nogle multiplayer-indstillinger, der er defineret i games.py, refererer til ip-adresser.

self.clientAddressPort = ([‘127.0.0.1’, 20002])

self.serverAddressPort = ([‘127.0.0.1’, 20001])

self.clientIPAddress = self.clientAddressPort[0]

self.serverIPAddress = self.serverAddressPort[0]

self.clientPort = 20002

self.serverPort = 20001

self.multiplayerDemo = False

Som standard er både klient- og server-ip-adresser sat op som localhost-adressen (127.0.0.1), fordi der på dette stade i programmet ikke er noget, der definerer andet. Der er også sat en adresseport-variabel op for både server og klient, og den rummer både den anvendte ip-adresse og portnummer. Portnummeret i dette eksempel bliver brugt til at modtage kommunikationer. Bemærk, at 20001 skal modtage data på serverporten, og portnummer 20002 skal modtage data på klientporten.

1 2 3 4Næste

TAGS
gør det selv
kode
kodning
python
retrogaming

DEL DENNE
Share


Mest populære
Populære
Nyeste
Tags

Find os på de sociale medier

Find os på FaceBook

AOD/AOD.dk

Brogårdsvej 22
DK-2820 Gentofte
Telefon: 33 91 28 33
redaktion@aod.dk

Audio Media A/S

CVR nr. 16315648,
Brogårdsvej 22
DK-2820 Gentofte
Telefon: 33 91 28 33
info@audio.dk
Annoncesalg:
Lars Bo Jensen: lbj@audio.dk Telefon: 40 80 44 53
Annoncer: Se medieinformation her
Annoncelinks


AOD/AOD.dk   © 2022
Privatlivspolitik og cookie information - Audio Media A/S