
1. Giriş
Geliştirici için bir bilgisayar oyununun uygulanmasının üç aşaması vardır:-
Oyun başlatma — Bu aşama hazırlık eylemlerinden oluşur: oyun alanının boyutunu belirleme, oyun alanını çizme, oyun nesneleri oluşturma ve bunları ilk konumlarına koyma ve oyunun başında gerçekleştirilmesi gereken diğer eylemler.
-
Oyun süreci. Bu aşama, hareket eden oyun nesneleri, oyuncu eylemleri, skor tutma ve belirli bir sıklıkta veya düğmelere basıldığında gerçekleştirilmesi gereken diğer eylemleri içerir.
-
Oyun tamamlama. Bu aşama, animasyonu durdurmayı, bir galibiyet veya kaybı bildirmeyi ve oyunun sonunda gerçekleştirilmesi gereken diğer eylemleri içerir.
2. Oyun başlatma
Oyun başlatma yalnızca iki adımdan oluşur: Adım 1: Oyunun ana sınıfını oluşturun.Game
CodeGym oyun motorunu kullanarak kendi oyununuzu geliştirmek için, sınıfı miras alan bir sınıf (com.codegym.engine.cell.Game) oluşturmanız gerekir . Bu, sınıfınıza oyun motorunun yöntemlerini çağırma yeteneği verir ve motora da sizin yöntemlerinizi çağırma yeteneği verir. Örneğin:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Adım 2: Başlatma yöntemini() geçersiz kılın. Oyunu başlatmak için gereken tüm eylemler bu yöntemde gerçekleşecektir: oyun alanı oluşturmak, oyun nesneleri oluşturmak vb. Bu yöntemi, sınıfı miras alan sınıfta bildirmeniz yeterlidir Game
. Örneğin:
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
}
}
Yöntem initialize()
, yönteme benzer main()
: oyun için yazılan tüm kodların başlangıç noktasıdır.
3. Bir oyun alanı oluşturmak
Bir oyun alanı oluşturmak da sadece iki adımdan oluşur. Adım 1: Oyun alanını hücrelere bölün. Tüm oyun alanı, oyun motoru tarafından hücrelere ayrılmıştır. Minimum boyut 3x3'tür; maksimum 100x100'dür. Oyun ekranının boyutları sabittir. Farklı sayıda hücreye bölünebilir. Örneğin, 7 hücre genişliğinde ve 9 hücre yüksekliğinde:
void setScreenSize(int width, int height)
. Oyun alanının boyutunu ayarlar. Parametreleri, yatay (genişlik) ve dikey (yükseklik) hücre sayısını temsil eder. Oyun başladığında genellikle bir kez çağrılır. Örneğin:
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);
...
}
}
Bir oyun yazarken, oyun alanının mevcut genişliğini ve yüksekliğini almanız gerekebilir. Bunu yapmak için int getScreenWidth()
ve int getScreenHeight()
yöntemleri kullanışlı olacaktır. Adım 2: Izgarayı açın veya kapatın (isteğe bağlı). Oyun alanında hücreleri ayıran siyah ızgarayı beğenmediyseniz kapatabilirsiniz. Yöntem void showGrid(boolean isShow)
ızgarayı açar ve kapatır. Varsayılan olarak ızgara görüntülenir. Kapatmak için, bu yöntemi argüman olarak false ile çağırın:
showGrid(false);
Sonuç: 
showGrid(true);
4. İlkel bir program
İşte bir program örneği:
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);
}
}
Bu örnekte, oyun alanı 3x3 olarak ayarlanmıştır, ızgara kapatılmıştır ve merkez hücrede mavi bir arka plan üzerinde hücre boyutunun yarısı kadar turuncu bir "X" ayarlanmıştır. Bu, oyuncunun oyun başladığında gördüğü ilk şey olacaktır.
5. Oyun alanındaki hücrelerle çalışma
Oyun alanını hücrelere ayırabilmemiz harika, ama hücrelerin kendisiyle ne yapabiliriz? Oyun alanının her hücresi için aşağıdaki özellikleri ayarlayabilirsiniz:- hücre rengi (hücre arka plan rengi);
- metin (metin veya sayı);
- metin rengi;
- hücre boyutunun yüzdesi olarak metin boyutu.
-
void setCellColor(int x, int y, Color color)
— hücrenin rengini koordinatlarla (x, y) ayarlar: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 (x, y) döndürür:Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value)
— koordinatları (x, y) ile değer parametresindeki dizeye eşit olan hücrenin metnini ayarlar: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 (x, y) döndürür:String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size)
— hücre içeriğinin boyutunu koordinatlarla (x, y) ayarlar. size parametresi, hücre yüksekliğinin yüzdesi olarak metin yüksekliğidir:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
— hücre içeriğinin boyutunu (x, y) koordinatlarıyla döndürür:int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value)
— koordinatları (x, y) ile değer parametresindeki sayıya eşit olan hücrenin metnini ayarlar: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 (x, y) döndürür. Hücre bir sayı içermiyorsa, 0 döndürür: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 (x, y) ayarlar:setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y)
— hücrenin içeriğinin (metnin) rengini (x, y) koordinatlarıyla döndürür:Color textColor = getCellTextColor(1, 3);
setCellValueEx()
Kolaylık sağlamak için, farklı parametre kümelerine sahip birkaç yöntem vardır :
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— hücrenin arka plan rengini (cellColor) ve içeriğini (değer) koordinatlarla (x, y) ayarlar:setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
— hücrenin arka plan rengini (cellColor), içeriğini (değer) ve metin rengini (textColor) koordinatlarla (x, y) ayarlar: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 (cellColor), içeriğini (değer), metin rengini (textColor) ve metin boyutunu (textSize) koordinatlarla (x, y) ayarlar:setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Renkle çalışma
Color enum
Oyun motorundaki renklerden sorumludur . 148 renk için benzersiz değerlere sahiptir. Ayrıca hiçbir rengi temsil etmeyen özel bir değeri (HİÇBİRİ) vardır. İşte renkle çalışmaya bir örnek:
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.
Bazen mevcut tüm renklerden oluşan bir dizi almanız gerekebilir. Bunu yapmak için values()
yöntemi kullanın. Örneğin:
Color[] colors = Color.values(); // The colors variable is assigned an array containing all available colors.
Palette bir rengin indeksini almak çok kolaydır:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of red
int blueIndex = Color.BLUE.ordinal(); // Index of blue
Bir rengi indeksine göre de alabilirsiniz:
Color color = Color.values()[10]; // The color variable is assigned the color with index 10 in the Color enum.
7. İletişim kutuları
Oyunun sonunda, bir galibiyet veya mağlubiyeti oyuncuya bildirmeniz gerekir. Bunu yapmak için oyun ekranında bir iletişim kutusu görüntüleyen özel bir yöntem vardır:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Burada:
cellColor
iletişim kutusunun arka plan rengidir;message
mesajın metni;textColor
mesaj metninin rengidir;textSize
mesaj metninin boyutudur.
8. Yardımcı yöntemler
Oyun yazarken rastgele sayılar çok kullanılır. Rastgele sayıları almayı kolaylaştırmak için oyun motorunun sağladığı aşağıdaki yardımcı yöntemleri kullanabilirsiniz:-
int getRandomNumber(int max)
— 0 ile (maks-1) dahil olmak üzere rasgele bir tamsayı döndürür. -
int getRandomNumber(int min, int max)
— min ile (maks-1) dahil olmak üzere rastgele bir tamsayı döndürür.
GO TO FULL VERSION