
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.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
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) {
// Set "X" in the cell where the left mouse click occurred
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Clear the cell where the right mouse click occurred
setCellValue(x, y, "");
}
}
2. کی بورڈ کے ساتھ کام کرنا
گیم انجن میں کی بورڈ کے ساتھ کام کرنے کے دو طریقے ہیں:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
- جب کوئی کلید دبائی جاتی ہے تو اسے کہا جاتا ہے۔ کلیدی پیرامیٹر دبائی ہوئی کلید (یا Key.UNKNOWN) ہے۔ -
onKeyReleased(Key key)
- جب کوئی کلید جاری کی جاتی ہے تو اسے کہتے ہیں۔ کلیدی پیرامیٹر متعلقہ کلید (یا Key.UNKNOWN) ہے۔
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
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) {
// When the space bar is pressed, the center cell turns yellow
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// When the space bar is released, the center cell changes back to white
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
اہم! گیم انجن کے موجودہ ورژن میں، کلیدی قسم میں نو اقدار کا ایک محدود سیٹ ہے:قدر | صارف کی طرف سے دبائی گئی کلید |
---|---|
کلید۔ENTER | صارف نے Enter دبایا |
کلید۔ ESCAPE | صارف نے Esc دبایا |
کلید۔ PAUSE | صارف نے توقف دبا دیا۔ |
کلید۔اسپیس | صارف نے اسپیس کو دبایا |
کلید۔ بائیں | صارف نے بائیں تیر والے بٹن کو دبایا |
کلید۔ رائٹ | صارف نے دائیں تیر والے بٹن کو دبایا |
کلید یوپی | صارف نے اوپر تیر والے بٹن کو دبایا |
Key.DOWN | صارف نے نیچے کی بٹن دبائی |
کلید۔UNKNOWN | صارف نے اوپر والے کے علاوہ ایک کلید دبائی |
3. ٹائمر کے ساتھ کام کرنا
بہت سے گیمز ریئل ٹائم میں ہوتے ہیں، یعنی اگر صارف کچھ نہیں کرتا، تب بھی گیم میں واقعات رونما ہوتے رہتے ہیں۔ آپ کو اس طرح کے گیمز کو لاگو کرنے کے قابل بنانے کے لیے، ہم نے گیم انجن میں ٹائمر شامل کیا ہے۔ یہ کچھ اس طرح کام کرتا ہے: آپ ٹائمر آن کرتے ہیں اور ٹائمر کا وقفہ سیٹ کرتے ہیں۔ مثال کے طور پر، 500 ملی سیکنڈ۔ پھر، ہر آدھے سیکنڈ میں گیم انجنonTurnTimer()
طریقہ کو کال کرتا ہے۔ بار بار ہمیشہ کے لیے — جب تک ٹائمر بند نہ ہو جائے۔ تو آپ ٹائمر کیسے استعمال کرتے ہیں؟
-
ٹائمر آن کریں۔
ایسا کرنے کے لئے، ایک خاص طریقہ ہے
void setTurnTimer(int timeMs)
. یہ طریقہ ایک دلیل کے طور پر کالوں کے درمیان وقفہ کو ملی سیکنڈ میں لیتا ہے (1 ملی سیکنڈ = 1/1000 سیکنڈ)۔ آپ کو اسے صرف ایک بار کال کرنے کی ضرورت ہے، اور گیم انجنonTurn()
ہر بار Ms ملی سیکنڈ میں طریقہ کو کال کرنا شروع کر دے گا۔ -
onTurn(int) طریقہ کو اوور رائیڈ کریں۔
ایسا کرنے کے لیے، آپ کو
void onTurn(int step)
کلاس میں ایک طریقہ کا اعلان کرنا ہوگا جو وراثت میں ملتا ہےGame
۔ یہ طریقہ گیم انجن کے ذریعہ بلایا جائے گا۔ مزید یہ کہ ہر کال کے ساتھ گیم انجن کال کے لیے ایک ترتیب وار شناخت کنندہ کے طریقہ کار کو منتقل کرے گا (1, 2, 3, …)۔ -
ٹائمر بند کر دیں۔
اگر ٹائمر کی مزید ضرورت نہیں ہے، مثال کے طور پر، جب صارف گیم مکمل کرتا ہے، تو آپ اسے بند کر سکتے ہیں۔ ایسا کرنے کے لیے، آپ کو صرف
stopTurnTimer()
طریقہ کال کرنے کی ضرورت ہے۔ -
ٹائمر کو تیز کریں یا تبدیل کریں۔
کچھ گیمز میں، واقعات جس رفتار سے ہوتے ہیں وہ مسلسل تیز ہوتی رہتی ہے، اس لیے ہمارے ٹائمر کو تیز کرنا آسان ہو گا (کالوں کے درمیان وقت کم کریں)۔ کچھ بھی آسان نہیں ہو سکتا:
setTurnTimer(int timeMs)
ایک نئی قدر کے ساتھ ایک بار پھر کال کریں، اور کالوں کے درمیان وقتonTurn()
بدل جائے گا۔
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); // Turn on the timer, the interval between calls is 500ms.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // If 100 calls have been made, turn off the timer
}
if (step % 2 == 1) {
// If this call is odd, set the cell background to red
setCellColor(1, 1, Color.RED);
}
else {
// If this call is even, set the cell background to blue
setCellColor(1, 1, Color.BLUE);
}
}
…
}
اس سادہ مثال میں، ہم نے ایک فیلڈ بنایا ہے جو 3 خلیات x 3 خلیات ہے۔ پھر ہم نے ایک ٹائمر شروع کیا جو onTurn()
ہر آدھے سیکنڈ میں طریقہ کو کال کرے گا۔ ہر آدھے سیکنڈ میں، سیل کا رنگ بدل جائے گا، لیکن اس کا مواد نہیں بدلے گا۔ 50 سیکنڈ کے بعد، رنگ مزید نہیں بدلے گا۔ ابھی کے لیے بس اتنا ہی ہے! اگر آپ "گیمز" سیکشن کے بارے میں مزید جاننا چاہتے ہیں، تو یہاں کچھ مفید دستاویزات ہیں جو مدد کر سکتی ہیں:
GO TO FULL VERSION