
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);
}
}
}
महत्वपूर्ण! गेम इंजन के वर्तमान संस्करण में, कुंजी प्रकार में नौ मानों का सीमित सेट होता है:कीमत | उपयोगकर्ता द्वारा दबाई गई कुंजी |
---|---|
कुंजी। दर्ज करें | उपयोगकर्ता ने एंटर दबाया |
की.एस्केप | उपयोगकर्ता ने Esc दबाया |
की.रोकें | उपयोगकर्ता ने पॉज़ दबाया |
की.स्पेस | उपयोगकर्ता ने स्पेस दबाया |
कुंजी।बाएं | उपयोगकर्ता ने बायां तीर कुंजी दबाया |
चाभी।ठीक है | उपयोगकर्ता ने दायां तीर कुंजी दबाया |
तनाव के स्थिति में | उपयोगकर्ता ने ऊपर तीर कुंजी दबाई |
चाबी नीचे | उपयोगकर्ता ने डाउन कुंजी दबाई |
की.अज्ञात | उपयोगकर्ता ने ऊपर दी गई कुंजी के अलावा कोई अन्य कुंजी दबाई है |
3. टाइमर के साथ काम करना
कई खेल वास्तविक समय में होते हैं, यानी यदि उपयोगकर्ता कुछ नहीं करता है, तब भी खेल में घटनाएं घटित होती हैं। आपको ऐसे खेलों को लागू करने में सक्षम बनाने के लिए, हमने गेम इंजन में एक टाइमर जोड़ा है। यह कुछ इस तरह काम करता है: आप टाइमर चालू करते हैं और टाइमर अंतराल सेट करते हैं। उदाहरण के लिए, 500 मिलीसेकंड। फिर, हर आधे सेकंड में गेम इंजनonTurnTimer()
विधि को कॉल करता है। बार-बार हमेशा के लिए - जब तक टाइमर बंद नहीं हो जाता। तो आप टाइमर का उपयोग कैसे करते हैं?
-
टाइमर चालू करें।
ऐसा करने के लिए, एक विशेष विधि है । विधि एक तर्क के रूप में मिलीसेकंड (1 मिलीसेकंड = 1/1000 सेकंड) में कॉल के बीच अंतराल लेती है। आपको इसे केवल एक बार कॉल करने की आवश्यकता है, और गेम इंजन हर बार Ms मिलीसेकंड में विधि को कॉल करना शुरू कर देगा।
void setTurnTimer(int timeMs)
onTurn()
-
ऑनटर्न (इंट) विधि को ओवरराइड करें।
ऐसा करने के लिए, आपको विरासत में मिली कक्षा में एक विधि घोषित करने की आवश्यकता है । इस विधि को गेम इंजन द्वारा कॉल किया जाएगा। क्या अधिक है, प्रत्येक कॉल के साथ गेम इंजन विधि को कॉल के लिए एक अनुक्रमिक पहचानकर्ता (1, 2, 3, …) पास करेगा।
void onTurn(int step)
Game
-
टाइमर बंद कर दें।
यदि टाइमर की अब आवश्यकता नहीं है, उदाहरण के लिए, जब उपयोगकर्ता गेम पूरा करता है, तो आप इसे बंद कर सकते हैं। ऐसा करने के लिए, आपको बस विधि को कॉल करने की आवश्यकता है।
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