CodeGym /Blog Java /Random-PL /Sekcja gier na CodeGym: silnik gry
John Squirrels
Poziom 41
San Francisco

Sekcja gier na CodeGym: silnik gry

Opublikowano w grupie Random-PL
„Gry” od CodeGym to nowy dział z dużymi zadaniami związanymi z pisaniem popularnych gier komputerowych. Są łatwiejsze do stworzenia niż się wydaje: każdy projekt jest podzielony na dwadzieścia podzadań. Wykonując zadania krok po kroku, napiszesz własną grę, a następnie będziesz mógł dodawać unikalne funkcje i dzielić się nią ze znajomymi. Sekcja "Gry" na CodeGym: Silnik gry - 1Gry wykorzystują prosty silnik gry CodeGym . W tym artykule opiszemy jego najważniejsze cechy i jak wygląda proces pisania gry.

1. Wstęp

Dla dewelopera realizacja gry komputerowej składa się z trzech etapów:
  1. Inicjalizacja gry — Na ten etap składają się czynności przygotowawcze: ustawienie rozmiaru pola gry, narysowanie pola gry, stworzenie obiektów gry i ustawienie ich w początkowych pozycjach oraz inne czynności, które należy wykonać na początku gry.

  2. Proces gry. Ten etap obejmuje przesuwanie obiektów w grze, działania graczy, zapisywanie wyników i inne czynności, które muszą być wykonywane z określoną częstotliwością lub po naciśnięciu przycisków.

  3. Ukończenie gry. Ten etap obejmuje zatrzymanie animacji, zgłoszenie wygranej lub przegranej oraz inne czynności, które należy wykonać na koniec gry.

2. Inicjalizacja gry

Inicjalizacja gry składa się tylko z dwóch kroków: Krok 1: Utwórz główną klasę gry. Aby opracować własną grę przy użyciu silnika gry CodeGym, musisz utworzyć klasę, która dziedziczy klasę Game(com.codegym.engine.cell.Game). Daje to twojej klasie możliwość wywoływania metod silnika gry i daje silnikowi możliwość wywoływania twoich metod. Na przykład:

import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}
Krok 2: Zastąp metodę inicjalizacji (). W tej metodzie będą wykonywane wszystkie czynności wymagane do uruchomienia gry: tworzenie pola gry, tworzenie obiektów gry itp. Wystarczy zadeklarować tę metodę w klasie, która dziedziczy klasę Game. Na przykład:

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
    }
}
Metoda initialize()jest analogiczna do main()metody: jest punktem wyjścia dla całego kodu napisanego dla gry.

3. Tworzenie pola gry

Tworzenie pola gry również składa się tylko z dwóch kroków. Krok 1: Podziel pole gry na komórki. Całe pole gry jest podzielone na komórki przez silnik gry. Minimalny rozmiar to 3x3; maksymalny to 100x100. Wymiary ekranu gry są stałe. Można go podzielić na różne liczby komórek. Na przykład 7 komórek szerokości i 9 komórek wysokości: Sekcja "Gry" na CodeGym: Silnik gry - 2Zwróć uwagę, że numeracja komórek zaczyna się od lewego górnego rogu. Aby ustawić rozmiar pola gry, użyj void setScreenSize(int width, int height)metody. Określa rozmiar pola gry. Jego parametry reprezentują liczbę komórek w poziomie (szerokość) iw pionie (wysokość). Zwykle jest wywoływany raz, gdy gra jest uruchamiana. Na przykład:

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);
        ...
    }
}
Podczas pisania gry może być konieczne uzyskanie aktualnej szerokości i wysokości pola gry. Aby to zrobić, przydadzą się metody int getScreenWidth()i . Krok 2: Włącz lub wyłącz siatkę (opcjonalnie). Jeśli nie podoba Ci się czarna siatka oddzielająca komórki na boisku, możesz ją wyłączyć. Metoda włącza i wyłącza siatkę. Domyślnie wyświetlana jest siatka. Aby to wyłączyć, wywołaj tę metodę z false jako argumentem: int getScreenHeight()void showGrid(boolean isShow)

showGrid(false);
Wynik: Sekcja "Gry" na CodeGym: Silnik gry - 3Aby ponownie włączyć sieć, zadzwoń:

showGrid(true);

4. Prymitywny program

Oto przykład programu:

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);
    }
}
W tym przykładzie pole gry jest ustawione na 3x3, siatka jest wyłączona, a pomarańczowy „X” o połowie rozmiaru komórki jest ustawiony na niebieskim tle w środkowej komórce. Będzie to pierwsza rzecz, którą zobaczy gracz po rozpoczęciu gry.

5. Praca z komórkami boiska

Fakt, że możemy podzielić pole gry na komórki jest świetny, ale co możemy zrobić z samymi komórkami? Możesz ustawić następujące właściwości dla każdej komórki pola gry:
  • kolor komórki (kolor tła komórki);
  • tekst (tekst lub liczba);
  • kolor tekstu;
  • rozmiar tekstu jako procent rozmiaru komórki.
Przyjrzyjmy się metodom pracy z komórkami pola gry :
  1. void setCellColor(int x, int y, Color color)— ustawia kolor komórki o współrzędnych (x, y):

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

  2. Color getCellColor(int x, int y)— zwraca kolor komórki o współrzędnych (x, y):

    
    Color myColor = getCellColor(2, 0);
    

  3. void setCellValue(int x, int y, String value)— ustawia tekst komórki o współrzędnych (x, y) równych ciągowi w parametrze value:

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

  4. String getCellValue(int x, int y)— zwraca tekst zawarty w komórce o współrzędnych (x, y):

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

  5. void setCellTextSize(int x, int y, int size)— ustawia rozmiar zawartości komórki o współrzędnych (x, y). Parametr rozmiaru to wysokość tekstu jako procent wysokości komórki:

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

  6. int getCellTextSize(int x, int y)— zwraca rozmiar zawartości komórki o współrzędnych (x, y):

    
    int size = getCellTextSize(2 , 0);
    

  7. void setCellNumber(int x, int y, int value)— ustawia tekst komórki o współrzędnych (x, y) równych liczbie w parametrze value:

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

  8. int getCellNumber(int x, int y)— zwraca liczbę zawartą w komórce o współrzędnych (x, y). Jeśli komórka nie zawiera liczby, zwraca 0:

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

  9. void setCellTextColor(int x, int y, Color color)— ustawia kolor zawartości (tekstu) komórki o współrzędnych (x, y):

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

  10. Color getCellTextColor(int x, int y)— zwraca kolor zawartości (tekstu) komórki o współrzędnych (x, y):

    
    Color textColor = getCellTextColor(1, 3);
    
Dla wygody istnieje kilka setCellValueEx()metod z różnymi zestawami parametrów:
  1. void setCellValueEx(int x, int y, Color cellColor, String value)— ustawia kolor tła (cellColor) i zawartość (wartość) komórki o współrzędnych (x, y):

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)— ustawia kolor tła (cellColor), zawartość (wartość) i kolor tekstu (textColor) komórki o współrzędnych (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)— ustawia kolor tła (cellColor), zawartość (wartość), kolor tekstu (textColor) i rozmiar tekstu (textSize) komórki o współrzędnych (x, y):

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

6. Praca z kolorem

Odpowiada Color enumza kolory w silniku gry. Posiada unikalne wartości dla 148 kolorów. Ma również specjalną wartość (BRAK), która nie reprezentuje żadnego koloru. Oto przykład pracy z kolorem:

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.
Czasami może być konieczne uzyskanie tablicy wszystkich istniejących kolorów. Aby to zrobić, użyj values()metody. Na przykład:

Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
Bardzo łatwo jest uzyskać indeks koloru w palecie:

Color color = Color.RED;
int redIndex = color.ordinal();  // Index of red

int blueIndex = Color.BLUE.ordinal();  // Index of blue
Możesz także uzyskać kolor według jego indeksu:

Color color = Color.values()[10];  // The color variable is assigned the color with index 10 in the Color enum.

7. Okna dialogowe

Na koniec gry musisz zgłosić wygraną lub przegraną graczowi. Aby to zrobić, istnieje specjalna metoda, która wyświetla okno dialogowe na ekranie gry:

void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Tutaj:
  • cellColorjest kolorem tła okna dialogowego;
  • messageto treść wiadomości;
  • textColorto kolor tekstu wiadomości;
  • textSizeto rozmiar tekstu wiadomości.
Okno dialogowe zamyka się samoczynnie, jeśli użytkownik naciśnie spację.

8. Metody użytkowe

Podczas pisania gier często używa się liczb losowych. Aby ułatwić sobie zdobywanie liczb losowych, możesz skorzystać z następujących metod użytkowych udostępnianych przez silnik gry:
  1. int getRandomNumber(int max)— zwraca losową liczbę całkowitą od 0 do (max-1) włącznie.

  2. int getRandomNumber(int min, int max)— zwraca losową liczbę całkowitą od min do (max-1) włącznie.

To wszystko na teraz! Jeśli chcesz dowiedzieć się więcej o sekcji „Gry”, oto kilka przydatnych dokumentów, które mogą pomóc:
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION