CodeGym/Java blog/Tilfældig/Spilsektion på CodeGym: Spilmotor
John Squirrels
Niveau
San Francisco

Spilsektion på CodeGym: Spilmotor

Udgivet i gruppen
"Spil" fra CodeGym er en ny sektion med store opgaver, der går ud på at skrive populære computerspil. De er nemmere at skabe, end det ser ud til: hvert projekt er opdelt i tyve underopgaver. Når du udfører opgaver trin for trin, skriver du dit eget spil, og derefter kan du tilføje unikke funktioner og dele det med venner. Sektionen "Spil" på CodeGym: Spilmotor - 1Spillene bruger den simple CodeGym-spilmotor . I denne artikel vil vi beskrive dets nøglefunktioner , og hvordan spillets skriveproces ser ud.

1. Introduktion

For udvikleren er der tre trin i implementeringen af ​​et computerspil:
  1. Spilinitialisering — Dette trin består af forberedende handlinger: at indstille størrelsen på spillefeltet, tegne spillefeltet, skabe spilobjekter og placere dem i deres oprindelige positioner og andre handlinger, der skal udføres i begyndelsen af ​​spillet.

  2. Spilproces. Dette trin inkluderer bevægelige spilobjekter, spillerhandlinger, hold score og andre handlinger, der skal udføres med en bestemt frekvens, eller når der trykkes på knapper.

  3. Spilafslutning. Denne fase inkluderer stop af animation, rapportering af sejr eller tab og andre handlinger, der skal udføres i slutningen af ​​spillet.

2. Initialisering af spil

Spilinitialisering består kun af to trin: Trin 1: Opret spillets hovedklasse. For at udvikle dit eget spil ved hjælp af CodeGym-spilmotoren, skal du oprette en klasse, der arver klassen Game(com.codegym.engine.cell.Game). Dette giver din klasse mulighed for at kalde spilmotorens metoder, og giver motoren mulighed for at kalde dine metoder. For eksempel:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}
Trin 2: Tilsidesæt initialiseringsmetoden(). Alle handlinger, der kræves for at starte spillet, vil ske i denne metode: oprettelse af spillefeltet, skabelse af spilobjekter osv. Du skal blot erklære denne metode i klassen, der 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 udgangspunktet for al den kode, der er skrevet til spillet.

3. Oprettelse af en spillebane

At skabe et spillefelt består også kun af to trin. Trin 1: Opdel spillefeltet i celler. Hele spillefeltet er opdelt i celler af spilmotoren. Minimumsstørrelsen er 3x3; maksimum er 100x100. Målene på spilskærmen er konstante. Det kan opdeles i forskellige antal celler. For eksempel 7 celler brede og 9 celler høje: Sektionen "Spil" på CodeGym: Spilmotor - 2Bemærk, at celler er nummereret fra øverste venstre hjørne. For at indstille størrelsen på spillefeltet, brug void setScreenSize(int width, int height)metoden. Det bestemmer størrelsen af ​​spillefeltet. Dens parametre repræsenterer antallet af celler vandret (bredde) og lodret (højde). Det kaldes normalt é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 spil, skal du muligvis få spillefeltets aktuelle bredde og højde. For at gøre dette vil int getScreenWidth()og int getScreenHeight()metoderne være nyttige. Trin 2: Slå gitteret til eller fra (valgfrit). Hvis du ikke kan lide det sorte gitter, der adskiller cellerne på spillebanen, kan du slå det fra. Metoden void showGrid(boolean isShow)slår gitteret til og fra. Som standard vises gitteret. For at slå det fra skal du kalde denne metode med false som argumentet:
showGrid(false);
Resultat: Sektionen "Spil" på CodeGym: Spilmotor - 3For at tænde for nettet igen, 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 eksempel er spillefeltet sat til 3x3, gitteret er slukket, og et orange "X" halv cellestørrelse er sat på en blå baggrund i den midterste celle. Dette vil være det første, spilleren ser, når spillet starter.

5. Arbejde med celler i spillefeltet

At vi kan opdele spillefeltet i celler er fantastisk, men hvad kan vi gøre med selve cellerne? Du kan indstille følgende egenskaber for hver celle på spillefeltet:
  • celle farve (celle baggrundsfarve);
  • tekst (tekst eller nummer);
  • tekst farve;
  • tekststørrelse som en procentdel af cellestørrelsen.
Lad os se på metoderne til at arbejde med cellerne på spillefeltet :
  1. void setCellColor(int x, int y, Color color)— indstiller farven 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 farven på cellen med koordinater (x, y):

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value)— indstiller cellens tekst med koordinater (x, y) lig med strengen i værdiparameteren:

    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)— indstiller størrelsen af ​​cellens indhold med koordinater (x, y). Størrelsesparameteren er teksthøjden som en procentdel af cellehøjden:

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

  6. int getCellTextSize(int x, int y)— returnerer størrelsen af ​​cellens indhold med koordinater (x, y):

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value)— indstiller cellens tekst med koordinater (x, y) lig med tallet i værdiparameteren:

    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 indeholdt i cellen med koordinater (x, y). Hvis cellen ikke indeholder et tal, returnerer 0:

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

  9. void setCellTextColor(int x, int y, Color color)— indstiller farven på cellens indhold (tekst) med koordinater (x, y):

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

  10. Color getCellTextColor(int x, int y)— returnerer farven på cellens indhold (tekst) med koordinater (x, y):

    Color textColor = getCellTextColor(1, 3);
For nemheds skyld er der flere setCellValueEx()metoder med forskellige sæt parametre:
  1. void setCellValueEx(int x, int y, Color cellColor, String value)— indstiller baggrundsfarven (cellefarve) og indholdet (værdi) af cellen med koordinater (x, y):

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)— indstiller cellens baggrundsfarve (cellefarve), indhold (værdi) og tekstfarve (tekstfarve) 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)— indstiller baggrundsfarven (cellefarve), indhold (værdi), tekstfarve (tekstfarve) og tekststørrelse (tekststørrelse) for cellen med koordinater (x, y):

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

6. Arbejde med farve

Den Color enumer ansvarlig for farver i spilmotoren. Den har unikke værdier for 148 farver. Den har også en speciel værdi (NONE), der ikke repræsenterer nogen farve. Her er et eksempel på at arbejde med farver:
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.
Nogle gange skal du muligvis få en række af alle eksisterende farver. For at gøre dette skal du bruge values()metoden. For eksempel:
Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
Det er meget nemt at få et farveindeks 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 farve ved dens indeks:
Color color = Color.values()[10];  // The color variable is assigned the color with index 10 in the Color enum.

7. Dialogbokse

I slutningen af ​​spillet skal du rapportere en sejr eller et tab til spilleren. For at gøre dette er der en speciel metode, der viser en dialogboks på spilskærmen:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Her:
  • cellColorer baggrundsfarven i dialogboksen;
  • messageer meddelelsens tekst;
  • textColorer farven på beskedteksten;
  • textSizeer størrelsen på beskedteksten.
Dialogboksen lukker af sig selv, hvis brugeren trykker på mellemrumstasten.

8. Nyttemetoder

Når man skriver spil, bruges tilfældige tal meget. For at gøre det nemmere at få tilfældige tal, kan du bruge følgende hjælpemetoder fra spilmotoren:
  1. int getRandomNumber(int max)— returnerer et tilfældigt heltal fra 0 til (max-1) inklusive.

  2. int getRandomNumber(int min, int max)— returnerer et tilfældigt heltal fra min til (max-1) inklusive.

Det er alt for nu! Hvis du vil lære mere om afsnittet "Spil", er her noget nyttig dokumentation, der kan hjælpe:
Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu