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 value
koordinatlarla 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 size
metin 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 value
koordinatlı 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 .cellColor
value
Ö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 .cellColor
value
textColor
Ö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 .cellColor
value
textColor
textSize
Örnek:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Renkle çalışma
CodeGym oyun motoru, Color
148 renk için benzersiz değerler içeren özel bir türe sahiptir. NONE
Ayrı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:
cellColor
iletişim kutusunun arka plan rengidirmessage
mesajın metnitextColor
mesaj metninin rengidirtextSize
mesajı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)
0
dahil olmak üzere rasgele bir sayı döndürür (max–1)
.
int getRandomNumber(int min, int max)
min
dahil 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:
- Çalıştır'ı Aç → Yapılandırmayı Düzenle
- 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
- Basın: Uygula → Tamam
- Oyunu çalıştırın.