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 | استعمال ڪندڙ انٽر بٽڻ کي دٻايو |
Key.ESCAPE | صارف Esc بٽڻ کي دٻايو |
چاٻي. PAUSE | استعمال ڪندڙ روڪيو بٽڻ تي ڪلڪ ڪيو |
ڪي. اسپيس | استعمال ڪندڙ اسپيس کي دٻايو |
چاٻي. کاٻي | استعمال ڪندڙ بائیں تير کي دٻايو |
چاٻي.حق | استعمال ڪندڙ ساڄي تير کي دٻايو |
ڪي. يو. پي | استعمال ڪندڙ مٿي تير کي دٻايو |
چاٻي. هيٺ | استعمال ڪندڙ ھيٺئين تير کي دٻايو |
چاٻي. 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