1. Oyun alanının hücreleriyle çalışmak

Oyun alanını hücrelere ayırabilmemiz harika. Ama hücrelerin kendileriyle ne yapabiliriz?

Oyun alanının her hücresi için şunları ayarlayabiliriz:

  • hücre rengi (hücrenin arka plan rengi);
  • metin (bu metin veya bir sayı olabilir);
  • metin rengi;
  • hücre boyutunun yüzdesi olarak metin boyutu.

Oyun alanının hücreleriyle çalışma yöntemlerini ele alalım:

void setCellColor(int x, int y, Color color)hücrenin rengini koordinatlara (x, y)eşit olarak ayarlar color.

Örnekler:

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

Color getCellColor(int x, int y)hücrenin rengini koordinatlarla döndürür (x, y).

Örnek:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value)metni String valuekoordinatlarla hücreye atar (x, y).

Örnekler:

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

String getCellValue(int x, int y)hücrede bulunan metni koordinatlarla döndürür (x, y).

Örnekler:

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

void setCellTextSize(int x, int y, int size)hücredeki metnin boyutunu koordinatlarla ayarlar (x, y); burada sizemetin yüksekliği, hücre yüksekliğinin yüzdesi olarak bulunur.

Örnek:

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

int getCellTextSize(int x, int y)hücredeki içeriğin boyutunu koordinatlarla döndürür (x, y).

Örnek:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value)numarayı int valuekoordinatlı hücreye atar (x, y).

Örnekler:

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

int getCellNumber(int x, int y)hücrede bulunan sayıyı koordinatlarla döndürür (x, y). Hücre bir sayı içermiyorsa, 0 döndürür.

Örnekler:

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

void setCellTextColor(int x, int y, Color color)hücrenin içeriğinin (metnin) rengini koordinatlarla ayarlar (x, y).

Örnekler:

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

Color getCellTextColor(int x, int y)hücrenin içeriğinin (metnin) rengini koordinatlarla döndürür (x, y).

Örnek:

Color textColor = getCellTextColor(1, 3);

setCellValueEx()Size kolaylık sağlamak için, farklı parametre kümelerine sahip birden çok yöntem vardır :

void setCellValueEx(int x, int y, Color cellColor, String value)sırasıyla ve koordinatlarına (x, y)eşit olacak şekilde hücrenin arka plan rengini ve metnini ayarlar .cellColorvalue

Örnek:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)hücrenin arka plan rengini, metnini ve metin rengini sırasıyla , ve , koordinatlarına (x, y)eşit olacak şekilde ayarlar .cellColorvaluetextColor

Örnek:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);hücrenin arka plan rengini, metnini, metin rengini ve metin boyutunu sırasıyla , , ve , koordinatlarına (x, y)eşit olacak şekilde ayarlar .cellColorvaluetextColortextSize

Örnek:

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


2. Renkle çalışma

CodeGym oyun motoru, Color148 renk için benzersiz değerler içeren özel bir türe sahiptir. NONEAyrıca rengin yokluğunu temsil eden özel bir değeri vardır .

Renkle çalışma örnekleri

Color myColor = Color.WHITE;  // The color white is assigned to the myColor variable.
Color redColor = Color.RED; // The color red is assigned to the redColor variable.
Color blueColor = Color.BLUE; // The color blue is assigned to the blueColor variable.

Şu komutu kullanarak bir hücreyi kırmızıya boyayabilirsiniz:

setCellColor(0, 2, Color.RED);

Bir hücrenin belirli bir renk olup olmadığını aşağıdaki gibi bir komutla kontrol edebilirsiniz:

if (getCellColor(0,2) == Color.GREEN)
{
}

Bazen mümkün olan her renkten bir dizi almanız gerekebilir. Bunu yapmak için values()yöntemi kullanın.

Örnek:

// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();

Renk paletinde bir rengin indeksini almak çok kolaydır — sadece şu ordinal()yöntemi kullanın:

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

int blueIndex = Color.BLUE.ordinal(); // Index of the color blue

Bir rengi indeksine göre de kolayca elde edebilirsiniz:

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


3. İletişim kutuları

Oyunun sonunda, oyuncuya kazanıp kazanmadığını bildirmemiz gerekir. Bu ve diğer durumlar için, CodeGym oyun motorunun void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)mesajla birlikte bir iletişim kutusu görüntüleyen özel bir yöntemi vardır message.
Bu yöntemin parametreleri şunlardır:

  • cellColoriletişim kutusunun arka plan rengidir
  • messagemesajın metni
  • textColormesaj metninin rengidir
  • textSizemesajın metninin boyutudur

Kullanıcı boşluk çubuğuna basarsa veya iletişim kutusuna fare ile tıklarsa iletişim kutusu kendini kapatır.

Bu yöntemi çağırma örneği:

// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);


4. Yardımcı yöntemler

Oyun yazarken, sıklıkla rastgele sayılar kullanacaksınız. Rastgele sayıları almayı kolaylaştırmak için oyun motorunun yardımcı yöntemlerini kullanabilirsiniz:

int getRandomNumber(int max)0dahil olmak üzere rasgele bir sayı döndürür (max–1).

int getRandomNumber(int min, int max)mindahil olmak üzere rasgele bir sayı döndürür (max–1).


5.JDK11+

IntelliJ IDEA'dan programınızı çalıştırırken, Game sınıfını devralan bir sınıf aşağıdaki hatayı oluşturabilir:

Error: JavaFX runtime components are missing, and are required to run this application

Bu durumda, bu tür her sınıf için şu adımları bir kez gerçekleştirmeniz gerekir:
  1. Çalıştır'ı Aç → Yapılandırmayı Düzenle
  2. VM options değeri için aşağıdakini girin:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    DİKKAT:

    IntelliJ IDEA'nın son sürümlerinde, "VM seçenekleri" alanı varsayılan olarak gösterilmez. Görüntülemek için ALT+V tuşlarına basın

  3. Basın: UygulaTamam
  4. Oyunu çalıştırın.