
1. Thao tác với chuột
Công cụ trò chơi có hai phương pháp để làm việc với chuột:-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
và thêm bất kỳ mã nào bạn muốn vào chúng. Công cụ trò chơi sẽ gọi chúng khi người dùng nhấp vào nút chuột.
-
onMouseLeftClick(int x, int y)
- được gọi bởi động cơ khi nhấp vào nút chuột trái. Các tham số của nó là tọa độ của ô của sân chơi nơi nhấp chuột xảy ra. Ô trên cùng bên trái có tọa độ (0, 0). Bạn cần ghi đè phương thức này để sử dụng nó. -
onMouseRightClick(int x, int y)
— được gọi khi nút chuột phải được nhấp. Phương pháp này hoạt động giống nhưonMouseLeftClick(int x, int y)
phương pháp.
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. Thao tác với bàn phím
Công cụ trò chơi có hai phương pháp để làm việc với bàn phím:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— được gọi khi bất kỳ phím nào được nhấn. Tham số phím là phím được nhấn (hoặc Key.UNKNOWN). -
onKeyReleased(Key key)
- được gọi khi bất kỳ phím nào được phát hành. Tham số chính là khóa tương ứng (hoặc 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);
}
}
}
Quan trọng! Trong phiên bản hiện tại của công cụ trò chơi, loại Khóa có một bộ chín giá trị giới hạn:Giá trị | Phím do người dùng nhấn |
---|---|
Khóa.ENTER | Người dùng nhấn Enter |
Khóa.ESCAPE | Người dùng nhấn Esc |
Khóa.TẠM DỪNG | Người dùng nhấn Tạm dừng |
Khóa.SPACE | Người dùng nhấn Space |
Phím.LEFT | Người dùng nhấn phím mũi tên trái |
Khóa.RIGHT | Người dùng nhấn phím mũi tên phải |
Key.UP | Người dùng nhấn phím mũi tên lên |
Phím.DOWN | Người dùng nhấn phím xuống |
Key.UNKNOWN | Người dùng đã nhấn một phím khác với những phím trên |
3. Làm việc với bộ đếm thời gian
Nhiều trò chơi diễn ra trong thời gian thực, tức là ngay cả khi người dùng không làm gì, các sự kiện vẫn diễn ra trong trò chơi. Để cho phép bạn triển khai các trò chơi như vậy, chúng tôi đã thêm bộ đếm thời gian vào công cụ trò chơi. Nó hoạt động như thế này: bạn bật bộ hẹn giờ và đặt khoảng thời gian cho bộ hẹn giờ. Ví dụ: 500 mili giây. Sau đó, cứ sau nửa giây, công cụ trò chơi lại gọionTurnTimer()
phương thức này. Lặp đi lặp lại mãi mãi — cho đến khi tắt đồng hồ hẹn giờ. Vì vậy, làm thế nào để bạn sử dụng bộ đếm thời gian?
-
Bật hẹn giờ.
Để làm điều này, có một phương pháp đặc biệt. Phương thức lấy đối số là khoảng thời gian giữa các lần gọi tính bằng mili giây (1 mili giây = 1/1000 giây). Bạn chỉ cần gọi nó một lần và công cụ trò chơi sẽ bắt đầu gọi phương thức này sau mỗi mili giây.
void setTurnTimer(int timeMs)
onTurn()
-
Ghi đè phương thức onTurn(int).
Để làm điều này, bạn cần khai báo một phương thức trong lớp kế thừa . Phương pháp này sẽ được gọi bởi công cụ trò chơi. Hơn nữa, với mỗi lệnh gọi, công cụ trò chơi sẽ chuyển cho phương thức một mã định danh tuần tự cho lệnh gọi (1, 2, 3,…).
void onTurn(int step)
Game
-
Tắt hẹn giờ.
Nếu bộ hẹn giờ không còn cần thiết, chẳng hạn như khi người dùng hoàn thành trò chơi, bạn có thể tắt nó đi. Để làm điều này, bạn chỉ cần gọi phương thức.
stopTurnTimer()
-
Tăng tốc hoặc thay đổi bộ đếm thời gian.
Trong một số trò chơi, tốc độ xảy ra các sự kiện liên tục tăng nhanh, do đó, sẽ rất thuận tiện để tăng tốc bộ hẹn giờ của chúng tôi (giảm thời gian giữa các cuộc gọi). Không gì có thể dễ dàng hơn: gọi lại
setTurnTimer(int timeMs)
một lần nữa với giá trị mới và thời gian giữaonTurn()
các lần gọi sẽ thay đổi.
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);
}
}
…
}
Trong ví dụ đơn giản này, chúng tôi đã tạo một trường có 3 ô x 3 ô. Sau đó, chúng tôi bắt đầu một bộ đếm thời gian sẽ gọi onTurn()
phương thức cứ sau nửa giây. Cứ sau nửa giây, màu ô sẽ thay đổi, nhưng nội dung của nó sẽ không thay đổi. Sau 50 giây, màu sẽ không thay đổi nữa. Đó là tất cả cho bây giờ! Nếu bạn muốn tìm hiểu thêm về phần "Trò chơi", đây là một số tài liệu hữu ích có thể giúp:
GO TO FULL VERSION