Klient¶
(timestamp) Klient:
LibGDX on genereerinud meie projekti kliendi osa, mis koosneb kahest moodulist:
Desktop(võilwjgl3) moodul võimaldab lihtsat viisi mängu testida ja arendada töölauakeskkonnas.Coremoodul on koht, kuhu saate panna ühise koodi, mis hõlmab tavaliselt mängu loogikat või ressursside laadimist.
Vaadake näidisklienti GitHubis.
Kryonet’i seadistamine kliendi jaoks¶
(timestamp) Kryonet’i seadistamine kliendi jaoks:
14. Peate lisama Kryonet’i implementation Gradle’i dependency ka kliendi jaoks:
Navigeeri
client -> core -> build.gradleNavigeeri Kryoneti Maveni Repository, et leida sobiv Gradle’i dependency teave.
Ehita projekt lisatud sõltuvusega kasutades
Tasks > build > build
Kliendi mänguklass¶
15. Nüüd avage oma kliendi mänguklass (client -> core -> src).
LibGDX genereeris mõned meetodid mängu loomiseks:
createmeetodit kutsutakse üks kord, kui rakendus luuakse esmakordselt. Siin initsialiseeritakse tavaliselt ressursid, seatakse mängumaailm ja tehakse muud seadistamise ülesanded.rendermeetod on koht, kus värskendatakse mänguloogikat, käsitsetakse sisendit ja joonistatakse graafikat.disposemeetod kutsutakse rakenduse sulgemisel või hävitamisel. Siin tuleks vabastada kõik ressursid, näiteks tekstuurid, helid või muud varad, et vabastada mälu ja vältida ressursilekkeid.
Kliendi connection serveriga¶
(timestamp) Kliendi connection serveriga:
16. Impordi Kryonet oma kliendi mänguklassi:
import com.esotericsoftware.kryonet.Client;
17. Loo create meetodis Kryonet’i klient:
client = new Client();
client.start();
Sõnumi saatmiseks serverile mängu alguses kasutage create meetodis:
client.sendTCP("Start");
selleks, et saata sõna “Start” serverile.
Testige render meetodit, kirjutades sinna:
client.sendTCP("test");
18. Connect serveriga järgmise koodiga create meetodis:
try {
client.connect(5000, "localhost", 8080, 8081);
} catch (IOException e) {
throw new RuntimeException(e);
}
kus:
5000 on aegumisaeg, mille jooksul klient ootab connectioni loomist.
Localhost on serveri hostinimi või IP-aadress.
8080 ja 8081 on TCP ja UDP portide numbrid, millele klient connectib.
19. Pärast sessiooni lõppu sulgege klient dispose meetodis:
client.close();
try {
client.dispose();
} catch (IOException e) {
throw new RuntimeException(e);
}
20. Käivitage oma server (kui pole veel käivitatud) ja käivitage oma klient connectioni testimiseks.
Peaksite nägema pidevat sõnumit “test”.
Liikumise lisamine kliendile¶
(timestamp) Liikumise lisamine kliendile:
21. Nüüd lisame näiteks juba genereeritud LibGDX-assetile liikumise:
Render meetodis kasutatakse sprite’i renderdamiseks SpriteBatchi.
begin()jaend()meetodid määratlevad partii ulatuse.draw()meetodit kasutatakse iga individuaalse sprite’i jaoks.
Näeme, et batch.draw(img, 0, 0);:
Esimene 0 on img sprite’i x-koordinaat ja teine 0 on y-koordinaat.
Sprite’i liigutamiseks peame olema võimelised muutma neid koordinaate.
22. Lisage klassile privaatsed int muutujad:
private int x = 0, y = 0;
23. Render meetodis pange batch.draw(img, 0, 0); asemele batch.draw(img, x, y);
Liikumise käsitlemine¶
(timestamp) Liikumise käsitlemine:
24. Render meetodisse lisage järgmine kood, et muuta liikumist vastavalt nupulevajutusele:
if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
x -= 10;
}
if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
x += 10;
}
Nüüd muutub x-koordinaat. Saate klientmängu käivitada selle testimiseks.
Nüüd laseme mängijate koordinaadid serverile saata.
25. Rakendage meetod mängija koordinaatide saatmiseks serverile:
private void sendPositionInfoServer() { client.sendUDP(x + " " + y);}
26. Kutsuge seda iga kord pärast koordinaatide muutmist, nii et see oleks näiteks:
if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
x -= 10;
sendPositionInfoServer();
}
if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
x += 10;
sendPositionInfoServer();
}
ja nüüd iga kord, kui liigute, saadab see teie koordinaatide teabe serverile.