1. ماؤس کے ساتھ کام کرنا
گیم انجن میں ماؤس کے ساتھ کام کرنے کے دو طریقے ہیں:void onMouseLeftClick(int x, int y);
void onMouseRightClick(int x, int y);
Game
، اور ان میں کوئی کوڈ لکھیں۔ اور جب صارف ماؤس کے بٹن دبائے گا تو گیم انجن خود انہیں کال کرے گا۔
onMouseLeftClick(int x, int y)
- جب آپ بائیں ماؤس کے بٹن پر کلک کرتے ہیں تو انجن کے ذریعہ بلایا جاتا ہے۔ دلائل کے طور پر، یہ کھیل کے میدان کے سیل کے نقاط حاصل کرتا ہے جہاں کلک ہوا تھا۔ اوپری بائیں سیل میں نقاط (0,0) ہیں۔ اس طریقہ کو استعمال کرنے کے لیے، اسے اوور رائڈ کرنا ضروری ہے۔onMouseRightClick(int x, int y)
- جب آپ دائیں کلک کرتے ہیں تو کال کرتے ہیں۔ طریقہ کار کی طرح کام کرتا ہےonMouseLeftClick(int x, int y)
۔
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onMouseLeftClick(int x, int y) {
// Ставим символ "X" в клетку по которой кликнули левой кнопкой мыши
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Очищаем клетку по которой кликнули правой кнопкой мыши
setCellValue(x, y, "");
}
}
2. کی بورڈ کے ساتھ کام کرنا
گیم انجن میں کی بورڈ کے ساتھ کام کرنے کے دو طریقے ہیں:void onKeyPress(Key key);
void onKeyReleased(Key key);
onKeyPress (Key key)
- جب کوئی کی بورڈ کلید دبائی جاتی ہے تو اسے کہا جاتا ہے۔ دبائی ہوئی کلید (یا Key.UNKNOWN) کی قدر کلیدی دلیل کے طور پر طریقہ کو منتقل کی جاتی ہے۔onKeyReleased (Key key)
- اس وقت کہا جاتا ہے جب کوئی کی بورڈ کلید جاری کی جاتی ہے۔ کلیدی دلیل متعلقہ کلید (یا Key.UNKNOWN) کی قدر لیتی ہے۔
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onKeyPress(Key key) {
// При нажатии пробела, центральная клетка становится желтой
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// При отпускании пробела, центральной клетке возвращается белый цвет
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
اہم! انجن کے موجودہ ورژن میں، کلیدی قسم صرف اقدار کے ایک محدود سیٹ کو قبول کر سکتی ہے (9 پی سیز):
مطلب | صارف نے کیا کلک کیا۔ |
---|---|
کلید۔ENTER | صارف نے Enter بٹن دبایا |
کلید۔ ESCAPE | صارف نے Esc بٹن دبایا |
کلید۔ PAUSE | صارف نے توقف کے بٹن پر کلک کیا۔ |
کلید۔اسپیس | صارف نے اسپیس کو دبایا |
کلید۔ بائیں | صارف نے بائیں تیر کو دبایا |
کلید۔ رائٹ | صارف نے دائیں تیر کو دبایا |
کلید یوپی | صارف نے اوپر تیر کو دبایا |
Key.DOWN | صارف نے نیچے تیر کو دبایا |
کلید۔UNKNOWN | اوپر درج کردہ کے علاوہ کوئی بھی کلید |
3. ٹائمر کے ساتھ کام کرنا
بہت سے گیمز حقیقی وقت میں ہوتے ہیں، مطلب یہ ہے کہ اگر صارف کچھ نہیں کرتا ہے، تب بھی گیم میں ہونے والے واقعات کو انجام دیا جاتا ہے۔ تاکہ آپ اس طرح کے گیمز کو لاگو کر سکیں، ہم نے گیم انجن میں ٹائمر کی فعالیت شامل کی ہے۔ یہ کچھ اس طرح کام کرتا ہے: آپ ٹائمر کو آن کرتے ہیں اور وقت کی مدت مقرر کرتے ہیں جس کے بعد اسے بند ہونا چاہئے۔ مثال کے طور پر، 500 ملی سیکنڈ۔ اس کے بعد، ہر آدھے سیکنڈ میں گیم انجن کال کرتا ہےonTurnTimer()
۔ ٹائمر کے بند ہونے تک لامحدود بار۔ ٹائمر کا استعمال کیسے کریں؟
-
ٹائمر آن کریں۔
اس کے لیے ایک خاص طریقہ ہے
void setTurnTimer(int timeMs)
۔ ایک دلیل کے طور پر، یہ طریقہ کالوں کے درمیان وقفہ کا دورانیہ ملی سیکنڈ میں لیتا ہے (ایک سیکنڈ کا 1/1000)۔ اسے ایک بار کال کرنا کافی ہے، اور گیم انجنonTurn()
ہر بار ایم ایس ملی سیکنڈ میں طریقہ کو کال کرنا شروع کر دے گا۔ -
onTurn(int) طریقہ کو اوور رائیڈ کریں۔
void onTurn(int step)
ایسا کرنے کے لیے، آپ کو کلاس سے وراثت میں ملنے والے طریقہ کا اعلان کرنا ہوگاGame
۔ یہ طریقہ گیم انجن کے ذریعہ بلایا جائے گا۔ اس صورت میں، انجن ہر بار اس طرح کی کال کے سیریل نمبر (1,2,3, ...) کو طریقہ کار میں منتقل کرے گا۔ -
ٹائمر بند کر دیں۔
اگر ٹائمر کی مزید ضرورت نہیں ہے، جب، مثال کے طور پر، صارف نے گیم مکمل کر لی ہے، تو اسے آف کیا جا سکتا ہے۔ ایسا کرنے کے لیے آپ کو صرف کال کرنے کی ضرورت ہے
stopTurnTimer()
۔ -
ٹائمر کو تیز کریں یا تبدیل کریں۔
کچھ گیمز میں، ایونٹس مسلسل تیز ہو رہے ہیں، اس لیے ہمارے ٹائمر کو تیز کرنا آسان ہو گا (کالوں کے درمیان وقت کم کریں)۔ کچھ بھی آسان نہیں ہے:
setTurnTimer(int timeMs)
دوبارہ کال کریں، ایک نئی قدر کے ساتھ، اور کالوں کے درمیان کا وقتonTurn()
بدل جائے گا۔
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); //Включаем таймер, интервал между вызовами – 500мс.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // если прошло 100 тактов, выключаем таймер
}
if (step % 2 == 1) {
// Если данный такт нечётный, установить клетке красный фон
setCellColor(1, 1, Color.RED);
} else {
//если данный такт чётный, установить клетке синий фон
setCellColor(1, 1, Color.BLUE);
}
}
…
}
اس سادہ مثال میں، ہم نے 3x3 سیلز کا ایک فیلڈ بنایا۔ پھر ہم نے ایک ٹائمر آن کیا جو ہر آدھے سیکنڈ میں طریقہ کو کال کرے گا onTurn()
۔ ہر آدھے سیکنڈ میں سیل کا رنگ بدل جائے گا، لیکن اس کا مواد نہیں بدلے گا۔ 50 سیکنڈ کے بعد رنگ بدلنا بند ہو جائے گا۔ بس! اگر آپ گیمز سیکشن کے بارے میں مزید جاننا چاہتے ہیں، تو یہاں کچھ مفید دستاویزات ہیں جو مدد کر سکتی ہیں:
GO TO FULL VERSION