
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)
- যখন কোন কী প্রকাশ করা হয় তখন বলা হয়। কী প্যারামিটার হল সংশ্লিষ্ট কী (বা কী.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 | ব্যবহারকারী এন্টার চাপলেন |
Key.ESCAPE | ব্যবহারকারী Esc টিপুন |
কী। বিরতি | ব্যবহারকারী বিরাম টিপুন |
কী.স্পেস | ব্যবহারকারী স্পেস চাপা |
কী.বাম | ব্যবহারকারী বাম তীর কী টিপুন |
চাবি।ঠিক | ব্যবহারকারী ডান তীর কী টিপুন |
কী.ইউ.পি | ব্যবহারকারী আপ তীর কী টিপে |
কী.ডাউন | ব্যবহারকারী ডাউন কী টিপুন |
কী.অজানা | ব্যবহারকারী উপরেরগুলি ছাড়া অন্য একটি কী টিপেন |
3. টাইমারের সাথে কাজ করা
অনেক গেম রিয়েল টাইমে ঘটে, অর্থাৎ ব্যবহারকারী কিছু না করলেও গেমে ইভেন্টগুলি ঘটে। আপনাকে এই ধরনের গেমগুলি বাস্তবায়ন করতে সক্ষম করার জন্য, আমরা গেম ইঞ্জিনে একটি টাইমার যুক্ত করেছি। এটি এই মত কিছু কাজ করে: আপনি টাইমার চালু করুন এবং টাইমার ব্যবধান সেট করুন। উদাহরণস্বরূপ, 500 মিলিসেকেন্ড। তারপর, প্রতি অর্ধ সেকেন্ডে গেম ইঞ্জিনonTurnTimer()
পদ্ধতিটি কল করে। বার বার চিরতরে — টাইমার বন্ধ না হওয়া পর্যন্ত। তাহলে আপনি কিভাবে টাইমার ব্যবহার করবেন?
-
টাইমার চালু করুন।
এটি করার জন্য, একটি বিশেষ পদ্ধতি আছে । পদ্ধতিটি মিলিসেকেন্ডে (1 মিলিসেকেন্ড = 1/1000 সেকেন্ড) কলগুলির মধ্যে ব্যবধানকে একটি যুক্তি হিসাবে নেয়৷ আপনাকে এটি শুধুমাত্র একবার কল করতে হবে, এবং গেম ইঞ্জিন প্রতিবার এমএস মিলিসেকেন্ডে পদ্ধতিটি কল করা শুরু করবে।
void setTurnTimer(int timeMs)
onTurn()
-
onTurn(int) পদ্ধতি ওভাররাইড করুন।
এটি করার জন্য, আপনাকে ক্লাসে একটি পদ্ধতি ঘোষণা করতে হবে যা উত্তরাধিকারসূত্রে পায় । এই পদ্ধতিটি গেম ইঞ্জিন দ্বারা কল করা হবে। আরও কি, প্রতিটি কলের সাথে গেম ইঞ্জিনটি কলটির জন্য একটি অনুক্রমিক শনাক্তকারী পদ্ধতিতে পাস করবে (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