- การแนะนำ
- การเริ่มต้นเกม
- การสร้างสนามเด็กเล่น
- โปรแกรมเบื้องต้น
- การทำงานกับเซลล์ของสนามเด็กเล่น
- ทำงานกับสี
- กล่องโต้ตอบ
- วิธีการอรรถประโยชน์
- ข้อจำกัดของเอ็นจิ้นเกม
1. บทนำ
ผู้พัฒนาเกมมีสามขั้นตอน:- การเริ่มต้นเกมคือการดำเนินการเตรียมการ: การกำหนดขนาดและรูปวาดของสนามแข่งขัน การสร้างและติดตั้งวัตถุในเกมในตำแหน่งเริ่มต้น รวมถึงการดำเนินการอื่น ๆ ที่ต้องทำเมื่อเริ่มเกม
- กระบวนการเกม ซึ่งรวมถึงการเคลื่อนไหวของวัตถุในเกม การกระทำของผู้เล่น การคำนึงถึงคะแนนที่ได้รับ เช่นเดียวกับการกระทำอื่น ๆ ที่ต้องทำในช่วงเวลาหนึ่งหรือโดยการกดปุ่ม
- จบเกม ซึ่งรวมถึงการหยุดแอนิเมชั่น การประกาศชัยชนะหรือความพ่ายแพ้ และการกระทำอื่นๆ ที่ต้องทำเมื่อจบเกม
2. การเริ่มต้นเกม
การเริ่มต้นเกมประกอบด้วยสองขั้นตอน:ขั้นตอนที่ 1: สร้างคลาสเกมหลัก
ในการพัฒนาเกมของคุณโดยใช้เอ็นจิ้นเกม JavaRush คุณต้องสร้างคลาสและสืบทอดคลาสจาก คลาส Game (com.javarush.engine.cell.Game) สิ่งนี้จะทำให้คลาสของคุณสามารถเรียกเมธอดบนเอ็นจิ้นเกมได้ และความสามารถของเอ็นจิ้นในการเรียกเมธอดของคุณ ตัวอย่าง:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
ขั้นตอนที่ 2: แทนที่วิธีการเริ่มต้น ()
ในวิธีนี้ การกระทำทั้งหมดที่จำเป็นในการเริ่มเกมจะเกิดขึ้น: การสร้างสนามเด็กเล่น การสร้างวัตถุในเกม ฯลฯ คุณเพียงแค่ต้องประกาศวิธีการ นี้ในคลาสที่สืบทอดมาจาก คลาส Game ตัวอย่าง:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
เมธอดInitialize()เป็นแบบอะนาล็อกของ เมธอด main() : เป็นที่ที่โค้ดทั้งหมดที่เขียนสำหรับเกมเริ่มถูกดำเนินการ
3. การสร้างสนามแข่งขัน
การสร้างสนามแข่งขันประกอบด้วยสองขั้นตอนเท่านั้นขั้นตอนที่ 1: แบ่งสนามเด็กเล่นออกเป็นเซลล์
สนามเด็กเล่นทั้งหมดถูกแบ่งออกเป็นเซลล์โดยเอ็นจิ้นเกม ขนาดขั้นต่ำคือ 3x3 ขนาดสูงสุดคือ 100x100 หน้าจอเกมมีขนาดคงที่ สามารถแบ่งออกเป็นหลายเซลล์ได้ ตัวอย่างเช่น กว้าง 7 และสูง 9:
import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// задали размер поля 7x9 клеток
setScreenSize(7, 9);
...
}
}
เมื่อเขียนเกม คุณอาจต้องทราบความกว้างและความสูงของสนามเด็กเล่นในปัจจุบัน เมธอด int getScreenWidth()และint getScreenHeight()มีประโยชน์สำหรับสิ่งนี้
ขั้นตอนที่ 2: เปิดหรือปิดตาราง (ไม่บังคับ)
หากคุณไม่ชอบตารางสีดำที่แยกเซลล์ในสนามเด็กเล่น คุณสามารถปิดได้ เมธอดvoid showGrid(boolean isShow)จะเปิดและปิดกริดที่แยกเซลล์ ตามค่าเริ่มต้น ตารางจะแสดงขึ้น หากต้องการปิด ให้เรียกเมธอดนี้พร้อมกับพารามิเตอร์ false:showGrid(false);
ผลลัพธ์:

showGrid(true);
4. โปรแกรมดั้งเดิม
โปรแกรมตัวอย่าง:public class MySuperGame extends Game {
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
// Выключаем отображение сетки
showGrid(false);
// Меняем фон центральной клетки на синий, и отображаем в ней “Х”
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
ในตัวอย่างนี้ ขนาดของสนามเด็กเล่นถูกตั้งค่าเป็น 3x3 ปิดการแสดงตาราง และสัญลักษณ์ "X" ขนาดครึ่งเซลล์สีส้มถูกตั้งค่าไว้ที่กึ่งกลางบนพื้นหลังสีน้ำเงิน นี่จะเป็นสิ่งแรกที่ผู้เล่นเห็นเมื่อเริ่มเกม
5. การทำงานกับเซลล์ในสนามเด็กเล่น
ความจริงที่ว่าเราสามารถแบ่งพื้นที่เล่นออกเป็นเซลล์ต่างๆ ได้นั้นเยี่ยมมาก แต่เราจะทำอะไรกับเซลล์เหล่านั้นเองได้บ้าง? แต่ละเซลล์ของสนามเด็กเล่นสามารถตั้งค่าได้:- สีของเซลล์ (สีพื้นหลังของเซลล์);
- ข้อความ (ข้อความหรือตัวเลข);
- สีข้อความ
- ขนาดข้อความเป็นเปอร์เซ็นต์ที่สัมพันธ์กับขนาดเซลล์
-
เป็นโมฆะ setCellColor(int x, int y, สีสี) — ตั้งค่าสีของเซลล์ด้วยพิกัด (x, y):
setCellColor(0, 0, Color.RED); setCellColor(3, 6, Color.BLACK); setCellColor(6, 8, Color.NONE);
-
Color getCellColor(int x, int y) - ส่งกลับสีของเซลล์ที่มีพิกัด (x, y):
Color myColor = getCellColor(2, 0);
-
เป็นโมฆะ setCellValue(int x, int y, ค่าสตริง) - วางค่าข้อความในเซลล์ด้วยพิกัด (x, y):
setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
สตริง getCellValue(int x, int y) - ส่งคืนข้อความที่อยู่ในเซลล์ที่มีพิกัด (x, y):
String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
เป็นโมฆะ setCellTextSize(int x, int y, int size) - กำหนดขนาดของเนื้อหาในเซลล์ด้วยพิกัด (x, y) ขนาด – ความสูงของข้อความเป็นเปอร์เซ็นต์ของความสูงของเซลล์:
setCellTextSize(2 , 0, 70); // 70% высоты клетки
-
int getCellTextSize(int x, int y) - ส่งกลับขนาดของเนื้อหาในเซลล์ที่มีพิกัด (x, y):
int size = getCellTextSize(2 , 0);
-
เป็นโมฆะ setCellNumber(int x, int y, int value) - วางค่าตัวเลขในเซลล์ที่มีพิกัด (x, y):
setCellNumber(3, 3, 40); setCellNumber(0, 8, -8); setCellNumber(4, 1, 2222); setCellNumber(6, 6, 0);
-
int getCellNumber(int x, int y) - ส่งคืนตัวเลขที่มีอยู่ในเซลล์ที่มีพิกัด (x, y) หากเซลล์ไม่มีตัวเลข ให้คืนค่า 0:
int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
เป็นโมฆะ setCellTextColor(int x, int y, Color color) — ตั้งค่าสีของเนื้อหา (ข้อความ) ในเซลล์ด้วยพิกัด (x, y):
setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y) - ส่งกลับสีของเนื้อหา (ข้อความ) ในเซลล์ที่มีพิกัด (x, y):
Color textColor = getCellTextColor(1, 3);
-
เป็นโมฆะ setCellValueEx(int x, int y, Color cellColor, ค่าสตริง) - ตั้งค่าเซลล์ด้วยพิกัด (x, y) เซลล์สีพื้นหลังสีและค่าเนื้อหา:
setCellValueEx(0, 2, Color.BLUE, "56");
-
เป็นโมฆะ setCellValueEx(int x, int y, เซลล์สี, ค่าสตริง, สีข้อความสี) - ตั้งค่าเซลล์ด้วยพิกัด (x, y) สีพื้นหลัง เซลล์สีค่าเนื้อหาและสีของเนื้อหา textColor:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
เป็นโมฆะ setCellValueEx (int x, int y, เซลล์สี, ค่าสตริง, สีข้อความสี, int textSize); — ตั้งค่าเซลล์ด้วยพิกัด (x, y) สีพื้นหลังของเซลล์สี ค่าเนื้อหา สีข้อความ สีข้อความ และขนาดเนื้อหา ขนาดข้อความ:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. การทำงานกับสี
สีในเอ็นจิ้นเกมถูกควบคุมโดยColor enumซึ่งมีค่าเฉพาะสำหรับ 148 สี และยังมีค่าพิเศษ NONE - ไม่มีสีอีกด้วย ตัวอย่างการทำงานกับสี:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
บางครั้งคุณอาจต้องการได้รับอาร์เรย์ของสีที่มีอยู่ทั้งหมด เมื่อต้องการทำเช่นนี้ ให้ใช้เมธอดvalue() ตัวอย่างเช่น:
// переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
การรับหมายเลขสีในจานสีนั้นง่ายมาก:
Color color = Color.RED;
int redIndex = color.ordinal(); // Номер красного цвета
int blueIndex = Color.BLUE.ordinal(); // Номер синего цвета
คุณยังสามารถรับสีตามหมายเลข:
// переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];
7. กล่องโต้ตอบ
เมื่อจบเกม ผู้เล่นจะต้องได้รับแจ้งถึงชัยชนะหรือความพ่ายแพ้ มีวิธีการพิเศษในการแสดงกล่องโต้ตอบบนหน้าจอเกม:void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
ที่นี่:
- cellColor — สีพื้นหลังของกล่องโต้ตอบ
- ข้อความ — ข้อความ;
- textColor — สีข้อความข้อความ;
- textSize - ขนาดตัวอักษรของข้อความ
8. วิธีการอรรถประโยชน์
ตัวเลขสุ่มมักใช้ในการเขียนเกม เพื่อให้ง่ายต่อการรับตัวเลขสุ่ม คุณสามารถใช้วิธี scrap engine:- int getRandomNumber(int max) - คืนค่าจำนวนเต็มสุ่มตั้งแต่ 0 ถึง (สูงสุด–1)
- int getRandomNumber(int min, int max) - ส่งคืนจำนวนเต็มสุ่มจาก min ถึง (max–1) รวม
GO TO FULL VERSION