JavaRush /Blog Java /Random-VI /Mục "Trò chơi" trên JavaRush: Game engine

Mục "Trò chơi" trên JavaRush: Game engine

Xuất bản trong nhóm
“Trò chơi” từ JavaRush là một phần mới chứa các dự án nhiệm vụ lớn để viết các trò chơi máy tính phổ biến. Việc thực hiện chúng dễ dàng hơn bạn tưởng: mỗi dự án được chia thành hai chục nhiệm vụ phụ. Bằng cách hoàn thành từng bước nhiệm vụ, bạn sẽ viết trò chơi của mình và sau đó bạn có thể thêm các “tính năng” độc đáo vào đó và chia sẻ nó với bạn bè. chươngCác trò chơi sử dụng công cụ trò chơi JavaRush đơn giản . Trong bài viết này, chúng tôi sẽ nói về các tính năng chính của nó và quá trình viết một trò chơi trông như thế nào.
  1. Giới thiệu
  2. Khởi tạo trò chơi
  3. Tạo sân chơi
  4. Chương trình nguyên thủy
  5. Làm việc với các tế bào của sân chơi
  6. Làm việc với màu sắc
  7. Những hộp thoại
  8. Phương pháp tiện ích
  9. Hạn chế của công cụ trò chơi

1. Giới thiệu

Có ba giai đoạn trong quá trình triển khai trò chơi máy tính của nhà phát triển:
  1. Khởi tạo trò chơi là các hành động chuẩn bị: thiết lập kích thước và bản vẽ của sân chơi, tạo và cài đặt các đối tượng trò chơi ở vị trí ban đầu, cũng như các hành động khác phải được thực hiện khi bắt đầu trò chơi.

  2. Quá trình trò chơi. Điều này bao gồm chuyển động của các đối tượng trong trò chơi, hành động của người chơi, tính điểm kiếm được cũng như các hành động khác phải được thực hiện trong những khoảng thời gian nhất định hoặc bằng cách nhấn nút.

  3. Kết thúc trò chơi. Điều này bao gồm dừng hoạt ảnh, báo cáo chiến thắng hay thất bại và các hành động khác cần được thực hiện khi kết thúc trò chơi.

2. Khởi tạo trò chơi

Khởi tạo trò chơi chỉ bao gồm hai bước:

Bước 1: tạo lớp trò chơi chính.

Để phát triển trò chơi của bạn dựa trên công cụ trò chơi JavaRush, bạn cần tạo một lớp và kế thừa nó từ lớp Trò chơi (com.javarush.engine.cell.Game). Điều này sẽ cung cấp cho lớp của bạn khả năng gọi các phương thức trên công cụ trò chơi và khả năng công cụ gọi các phương thức của bạn. Ví dụ:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}

Bước 2: ghi đè phương thức khởi tạo().

Trong phương pháp này, tất cả các hành động cần thiết để bắt đầu trò chơi sẽ diễn ra: tạo sân chơi, tạo đối tượng trò chơi, v.v. Bạn chỉ cần khai báo phương thức này trong một lớp kế thừa từ lớp Game . Ví dụ:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        //  Тут выполняем все действия по инициализации игры и ее an objectов
    }
}
Phương thức khởi tạo() tương tự như phương thức main() : đó là nơi tất cả mã viết cho trò chơi bắt đầu được thực thi.

3. Tạo sân chơi

Tạo một sân chơi cũng chỉ bao gồm hai bước.

Bước 1: chia sân chơi thành các ô.

Toàn bộ sân chơi được game engine chia thành các ô. Kích thước tối thiểu là 3x3, tối đa là 100x100. Màn hình trò chơi có kích thước không đổi. Nó có thể được chia thành số lượng tế bào khác nhau. Ví dụ: chiều rộng 7 và chiều cao 9:
chương
Xin lưu ý rằng việc đánh số ô bắt đầu từ góc trên bên trái. Để đặt kích thước của sân chơi, hãy sử dụng phương thức void setScreenSize(int width, int Height) . Nó thiết lập kích thước của sân chơi. Nó lấy tham số là số lượng ô theo chiều ngang (chiều rộng) và chiều dọc (chiều cao). Nó thường được gọi một lần khi trò chơi bắt đầu. Ví dụ:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       //  задали размер поля 7x9 клеток
       setScreenSize(7, 9);
        ...
    }
}
Khi viết trò chơi, bạn có thể cần lấy chiều rộng và chiều cao hiện tại của sân chơi. Các phương thức int getScreenWidth()int getScreenHeight() rất hữu ích cho việc này .

Bước 2: Bật hoặc tắt lưới (tùy chọn).

Nếu bạn không thích lưới đen ngăn cách các ô trên sân chơi thì có thể tắt đi. Phương thức void showGrid(boolean isShow) bật và tắt các ô phân tách lưới. Theo mặc định, lưới được hiển thị. Để tắt nó, hãy gọi phương thức này với tham số false:
showGrid(false);
Kết quả:
chương
Để bật lại lưới, hãy gọi:
showGrid(true);

4. Chương trình nguyên thủy

Chương trình ví dụ:
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        //  Создаем игровое поле 3x3 клетки
        setScreenSize(3, 3);
        //  Выключаем отображение сетки
        showGrid(false);
        //  Меняем фон центральной клетки на синий, и отображаем в ней “Х”
        setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
    }
}
Trong ví dụ này, kích thước của sân chơi được đặt thành 3x3, màn hình lưới bị tắt và biểu tượng “X” có kích thước nửa ô màu cam được đặt ở giữa trên nền xanh lam. Đây sẽ là điều đầu tiên người chơi nhìn thấy khi bắt đầu trò chơi.

5. Làm việc với các ô của sân chơi

Việc chúng ta có thể chia sân chơi thành các ô là rất tốt, nhưng chúng ta có thể làm gì với chính các ô đó? Mỗi ô của sân chơi có thể được đặt:
  • màu ô (màu nền ô);
  • văn bản (văn bản hoặc số);
  • văn bản màu;
  • kích thước văn bản theo tỷ lệ phần trăm so với kích thước ô.
Hãy xem xét các phương pháp làm việc với các ô của sân chơi :
  1. void setCellColor(int x, int y, Color color) - đặt màu của ô theo tọa độ (x, y):

    setCellColor(0, 0, Color.RED);
    setCellColor(3, 6, Color.BLACK);
    setCellColor(6, 8, Color.NONE);

  2. Color getCellColor(int x, int y) - trả về màu của ô có tọa độ (x, y):

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value) - đặt giá trị văn bản vào ô có tọa độ (x, y):

    setCellValue(3, 3, "text");
    setCellValue(0, 8, "W");
    setCellValue(4, 1, "2222");
    setCellValue(6, 6, "");

  4. Chuỗi getCellValue(int x, int y) - trả về văn bản có trong ô có tọa độ (x, y):

    String s = getCellValue(3, 3);
    System.out.println(getCellValue(4, 1));

  5. void setCellTextSize(int x, int y, int size) - đặt kích thước của nội dung trong ô theo tọa độ (x, y). kích thước - chiều cao văn bản tính theo phần trăm của chiều cao ô:

    setCellTextSize(2 , 0, 70); //  70% высоты клетки

  6. int getCellTextSize(int x, int y) - trả về kích thước của nội dung trong ô có tọa độ (x, y):

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value) - đặt giá trị số vào ô có tọa độ (x, y):

    setCellNumber(3, 3, 40);
    setCellNumber(0, 8, -8);
    setCellNumber(4, 1, 2222);
    setCellNumber(6, 6, 0);

  8. int getCellNumber(int x, int y) - trả về số có trong ô có tọa độ (x, y). Nếu ô không chứa số, trả về 0:

    int i = getCellNumber(3, 3);
    System.out.println(getCellNumber(4, 1));

  9. void setCellTextColor(int x, int y, Color color) — đặt màu của nội dung (văn bản) trong ô có tọa độ (x, y):

    setCellTextColor(2, 1, Color.GREEN);
    setCellTextColor(0, 1, Color.NONE);

  10. Color getCellTextColor(int x, int y) - trả về màu của nội dung (văn bản) trong một ô có tọa độ (x, y):

    Color textColor = getCellTextColor(1, 3);
Để thuận tiện, có một số phương thức setCellValueEx() với các bộ tham số khác nhau:
  1. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value) — đặt ô có tọa độ (x, y) màu nền cellColor và giá trị nội dung:

    setCellValueEx(0, 2, Color.BLUE, "56");

  2. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value, Color textColor) — đặt ô có tọa độ (x, y) màu nền cellColor, giá trị nội dung và màu nội dung textColor:

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

  3. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value, Color textColor, int textSize); — đặt ô có tọa độ (x, y) ô màu nềnMàu, giá trị nội dung, màu văn bản màu nội dung và kích thước văn bản kích thước nội dungKích thước:

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);

6. Làm việc với màu sắc

Màu sắc trong game engine được điều khiển bởi Color enum , chứa các giá trị duy nhất cho 148 màu. Và cũng có giá trị đặc biệt KHÔNG - không có màu. Ví dụ về làm việc với màu sắc:
Color myColor = Color.WHITE;  //  переменной myColor присваивается белый цвет.
Color redColor = Color.RED; //  переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; //  переменной blueColor присваивается синий цвет.
Đôi khi bạn có thể muốn có được một mảng gồm tất cả các màu hiện có. Để làm điều này, hãy sử dụng phương thức value() . Ví dụ:
//  переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Lấy số màu trong bảng màu rất đơn giản:
Color color = Color.RED;
int redIndex = color.ordinal(); //  Номер красного цвета

int blueIndex = Color.BLUE.ordinal(); //  Номер синего цвета
Bạn cũng có thể lấy màu theo số của nó:
//  переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];

7. Hộp thoại

Khi kết thúc trò chơi, người chơi phải được thông báo thắng thua. Có một phương pháp đặc biệt để hiển thị hộp thoại trên màn hình trò chơi:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Đây:
  • cellColor - màu nền của hộp thoại;
  • tin nhắn - văn bản tin nhắn;
  • textColor - màu văn bản tin nhắn;
  • textSize - kích thước văn bản tin nhắn.
Hộp thoại sẽ tự đóng nếu người dùng nhấn phím cách.

8. Phương pháp hữu ích

Số ngẫu nhiên thường được sử dụng khi viết game. Để dễ dàng lấy số ngẫu nhiên hơn, bạn có thể sử dụng các phương pháp công cụ phế liệu:
  1. int getRandomNumber(int max) - trả về một số nguyên ngẫu nhiên từ 0 đến (max–1).

  2. int getRandomNumber(int min, int max) - trả về một số nguyên ngẫu nhiên từ tối thiểu đến (max–1).

9. Hạn chế của game engine

Để chạy trò chơi trên trang web, chúng được dịch sang JavaScript trên máy chủ. Về vấn đề này, một số hạn chế phát sinh. Đặc biệt, khi viết trò chơi bằng công cụ JavaRush, bạn không thể làm việc với các tệp cũng như không thể sử dụng tất cả các phương thức của lớp System , ngoại trừ currentTimeMillis() , setOut() , setErr() , arrayscopy() . Bạn cũng có thể sử dụng các trường errout . Tất nhiên, nếu vi phạm những hạn chế này, trò chơi có thể được biên dịch và chạy, nhưng sẽ không thể xuất bản. Bạn cũng sẽ không thể xuất bản trò chơi có vòng lặp vô hạn. Đó là tất cả! 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ể trợ giúp:
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION