CodeGym/Java-blogg/Tilfeldig/Spillseksjonen på CodeGym: Spillmotor
John Squirrels
Nivå
San Francisco

Spillseksjonen på CodeGym: Spillmotor

Publisert i gruppen
«Spill» fra CodeGym er en ny seksjon med store oppgaver som innebærer å skrive populære dataspill. De er lettere å lage enn det ser ut til: hvert prosjekt er delt inn i tjue deloppgaver. Når du fullfører oppgaver trinn for trinn, skriver du ditt eget spill, og så kan du legge til unike funksjoner og dele det med venner. "Spill"-delen på CodeGym: Spillmotor - 1Spillene bruker den enkle CodeGym-spillmotoren . I denne artikkelen vil vi beskrive nøkkelfunksjonene og hvordan skriveprosessen ser ut.

1. Introduksjon

For utvikleren er det tre stadier i implementeringen av et dataspill:
  1. Spillinitialisering — Dette stadiet består av forberedende handlinger: angi størrelsen på spillefeltet, tegne spillefeltet, lage spillobjekter og sette dem i utgangsposisjonene, og andre handlinger som må utføres i begynnelsen av spillet.

  2. Spillprosess. Dette stadiet inkluderer flytting av spillobjekter, spillerhandlinger, å holde poengsum og andre handlinger som må utføres med en viss frekvens eller når knappene trykkes.

  3. Fullføring av spillet. Dette stadiet inkluderer stopp av animasjon, rapportering av seier eller tap og andre handlinger som må utføres på slutten av spillet.

2. Spillinitialisering

Spillinitialisering består av kun to trinn: Trinn 1: Lag spillets hovedklasse. For å utvikle ditt eget spill ved å bruke CodeGym-spillmotoren, må du lage en klasse som arver klassen Game(com.codegym.engine.cell.Game). Dette gir klassen din muligheten til å kalle spillmotorens metoder, og gir motoren muligheten til å kalle metodene dine. For eksempel:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}
Trinn 2: Overstyr initialiseringsmetoden(). Alle handlinger som kreves for å starte spillet vil skje i denne metoden: å lage spillefeltet, lage spillobjekter osv. Du trenger bare å deklarere denne metoden i klassen som arver klassen Game. For eksempel:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        // Here we perform all actions to initialize the game and its objects
    }
}
Metoden initialize()er analog med main()metoden: den er utgangspunktet for all koden som er skrevet for spillet.

3. Lage et spillefelt

Å lage et spillefelt består også av bare to trinn. Trinn 1: Del spillefeltet i celler. Hele spillefeltet er delt inn i celler av spillmotoren. Minimumsstørrelsen er 3x3; maksimum er 100x100. Dimensjonene på spillskjermen er konstante. Det kan deles inn i forskjellige antall celler. For eksempel 7 celler brede og 9 celler høye: "Spill"-delen på CodeGym: Spillmotor - 2Merk at cellene er nummerert fra øverste venstre hjørne. For å angi størrelsen på spillefeltet, bruk void setScreenSize(int width, int height)metoden. Den setter størrelsen på spillefeltet. Parametrene representerer antall celler horisontalt (bredde) og vertikalt (høyde). Det kalles vanligvis én gang når spillet startes. For eksempel:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       // Set the field size to 7 cells x 9 cells
       setScreenSize(7, 9);
        ...
    }
}
Når du skriver et spill, må du kanskje få spillefeltets nåværende bredde og høyde. For å gjøre dette vil metodene int getScreenWidth()og int getScreenHeight()komme godt med. Trinn 2: Slå rutenettet på eller av (valgfritt). Hvis du ikke liker det svarte rutenettet som skiller cellene på spillefeltet, kan du slå det av. Metoden void showGrid(boolean isShow)slår rutenettet av og på. Som standard vises rutenettet. For å slå den av, kall denne metoden med false som argumentet:
showGrid(false);
Resultat: "Spill"-delen på CodeGym: Spillmotor - 3For å slå på nettet igjen, ring:
showGrid(true);

4. Et primitivt program

Her er et eksempel på et program:
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        // Create a playing field that is 3 cells x 3 cells
        setScreenSize(3, 3);
        // Turn off the grid
        showGrid(false);
        // Change the background of the center cell to blue, and display an "X" in it.
        setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
    }
}
I dette eksemplet er spillfeltet satt til 3x3, rutenettet er slått av, og en oransje "X" halvparten av cellestørrelsen er satt på en blå bakgrunn i midtcellen. Dette vil være det første spilleren ser når spillet starter.

5. Arbeide med celler i spillefeltet

Det at vi kan dele spillefeltet i celler er flott, men hva kan vi gjøre med selve cellene? Du kan angi følgende egenskaper for hver celle på spillefeltet:
  • cellefarge (cellebakgrunnsfarge);
  • tekst (tekst eller tall);
  • tekst farge;
  • tekststørrelse som en prosentandel av cellestørrelsen.
La oss se på metodene for å jobbe med cellene på spillefeltet :
  1. void setCellColor(int x, int y, Color color)— setter fargen på cellen med koordinater (x, y):

    setCellColor(0, 0, Color.RED);
    setCellColor(3, 6, Color.BLACK);
    setCellColor(6, 8, Color.NONE);

  2. Color getCellColor(int x, int y)— returnerer fargen på cellen med koordinater (x, y):

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value)— setter teksten til cellen med koordinater (x, y) lik strengen i verdiparameteren:

    setCellValue(3, 3, "text");
    setCellValue(0, 8, "W");
    setCellValue(4, 1, "2222");
    setCellValue(6, 6, "");

  4. String getCellValue(int x, int y)— returnerer teksten i cellen med koordinater (x, y):

    String s = getCellValue(3, 3);
    System.out.println(getCellValue(4, 1));

  5. void setCellTextSize(int x, int y, int size)— setter størrelsen på innholdet i cellen med koordinater (x, y). Størrelsesparameteren er teksthøyden som en prosentandel av cellehøyden:

    setCellTextSize(2 , 0, 70); // 70% of the cell height

  6. int getCellTextSize(int x, int y)— returnerer størrelsen på innholdet i cellen med koordinater (x, y):

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value)— setter teksten til cellen med koordinater (x, y) lik tallet i verdiparameteren:

    setCellNumber(3, 3, 40);
    setCellNumber(0, 8, -8);
    setCellNumber(4, 1, 2222);
    setCellNumber(6, 6, 0);

  8. int getCellNumber(int x, int y)— returnerer tallet i cellen med koordinater (x, y). Hvis cellen ikke inneholder et tall, returnerer 0:

    int i = getCellNumber(3, 3);
    System.out.println(getCellNumber(4, 1));

  9. void setCellTextColor(int x, int y, Color color)— setter fargen på innholdet (teksten) i cellen med koordinater (x, y):

    setCellTextColor(2, 1, Color.GREEN);
    setCellTextColor(0, 1, Color.NONE);

  10. Color getCellTextColor(int x, int y)— returnerer fargen på innholdet (teksten) i cellen med koordinater (x, y):

    Color textColor = getCellTextColor(1, 3);
For enkelhets skyld er det flere setCellValueEx()metoder med forskjellige sett med parametere:
  1. void setCellValueEx(int x, int y, Color cellColor, String value)— setter bakgrunnsfargen (cellefarge) og innholdet (verdi) til cellen med koordinater (x, y):

    setCellValueEx(0, 2, Color.BLUE, "56");

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)— setter bakgrunnsfargen (cellefarge), innhold (verdi) og tekstfarge (tekstfarge) til cellen med koordinater (x, y):

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

  3. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)— setter bakgrunnsfargen (cellefarge), innhold (verdi), tekstfarge (tekstfarge) og tekststørrelse (tekststørrelse) til cellen med koordinater (x, y):

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);

6. Arbeid med farger

Den Color enumer ansvarlig for farger i spillmotoren. Den har unike verdier for 148 farger. Den har også en spesiell verdi (NONE) som ikke representerer noen farge. Her er et eksempel på arbeid med farger:
Color myColor = Color.WHITE;  // The myColor variable is set to white.
Color redColor = Color.RED;  // The redColor variable is set to red.
Color blueColor = Color.BLUE;  // The blueColor variable is set to light blue.
Noen ganger må du kanskje få en rekke av alle eksisterende farger. For å gjøre dette, bruk values()metoden. For eksempel:
Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
Det er veldig enkelt å få en fargeindeks i paletten:
Color color = Color.RED;
int redIndex = color.ordinal();  // Index of red

int blueIndex = Color.BLUE.ordinal();  // Index of blue
Du kan også få en farge etter indeksen:
Color color = Color.values()[10];  // The color variable is assigned the color with index 10 in the Color enum.

7. Dialogbokser

På slutten av spillet må du rapportere en seier eller tap til spilleren. For å gjøre dette er det en spesiell metode som viser en dialogboks på spillskjermen:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Her:
  • cellColorer bakgrunnsfargen til dialogboksen;
  • messageer teksten i meldingen;
  • textColorer fargen på meldingsteksten;
  • textSizeer størrelsen på meldingsteksten.
Dialogboksen lukkes av seg selv hvis brukeren trykker på mellomromstasten.

8. Bruksmetoder

Når man skriver spill, brukes tilfeldige tall mye. For å gjøre det lettere å få tilfeldige tall, kan du bruke følgende verktøymetoder levert av spillmotoren:
  1. int getRandomNumber(int max)— returnerer et tilfeldig heltall fra 0 til (maks-1) inkludert.

  2. int getRandomNumber(int min, int max)— returnerer et tilfeldig heltall fra min til (maks-1) inklusive.

Det er alt for nå! Hvis du vil lære mer om "Spill"-delen, er her litt nyttig dokumentasjon som kan hjelpe:
Kommentarer
  • Populær
  • Ny
  • Gammel
Du må være pålogget for å legge igjen en kommentar
Denne siden har ingen kommentarer ennå