
1. บทนำ
สำหรับนักพัฒนา มีสามขั้นตอนในการติดตั้งเกมคอมพิวเตอร์:-
การเริ่มต้นเกม — ขั้นตอนนี้ประกอบด้วยการดำเนินการเตรียมการ: การตั้งค่าขนาดของสนามแข่งขัน การวาดสนามแข่งขัน การสร้างวัตถุในเกมและวางไว้ในตำแหน่งเริ่มต้น และการดำเนินการอื่นๆ ที่ต้องทำในตอนเริ่มเกม
-
กระบวนการของเกม ขั้นตอนนี้รวมถึงการเคลื่อนย้ายวัตถุในเกม การกระทำของผู้เล่น การรักษาคะแนน และการกระทำอื่นๆ ที่ต้องทำในความถี่ที่กำหนดหรือเมื่อกดปุ่มต่างๆ
-
จบเกม ขั้นตอนนี้รวมถึงการหยุดภาพเคลื่อนไหว การรายงานผลแพ้หรือชนะ และการดำเนินการอื่นๆ ที่ต้องทำเมื่อจบเกม
2. การเริ่มต้นเกม
การเริ่มต้นเกมประกอบด้วยสองขั้นตอนเท่านั้น: ขั้นตอนที่ 1: สร้างคลาสหลักของเกม ในการพัฒนาเกมของคุณเองโดยใช้เอ็นจิ้นเกม CodeGym คุณต้องสร้างคลาสที่สืบทอดคลาสGame
(com.codegym.engine.cell.Game) สิ่งนี้ทำให้ชั้นเรียนของคุณสามารถเรียกใช้เมธอดของเอ็นจิ้นเกมได้ และช่วยให้เอ็นจิ้นสามารถเรียกใช้เมธอดของคุณได้ ตัวอย่างเช่น:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
ขั้นตอนที่ 2: แทนที่เมธอด initialize() การกระทำทั้งหมดที่จำเป็นในการเริ่มเกมจะเกิดขึ้นในวิธีนี้: การสร้างสนามแข่งขัน การสร้างวัตถุในเกม ฯลฯ คุณเพียงแค่ต้องประกาศวิธีนี้ในคลาสที่สืบทอดGame
คลาส ตัวอย่างเช่น:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Here we perform all actions to initialize the game and its objects
}
}
วิธีการ นี้initialize()
คล้ายคลึงกับmain()
วิธีการ: เป็นจุดเริ่มต้นสำหรับโค้ดทั้งหมดที่เขียนขึ้นสำหรับเกม
3. การสร้างสนามเด็กเล่น
การสร้างสนามเด็กเล่นประกอบด้วยสองขั้นตอนเท่านั้น ขั้นตอนที่ 1: แบ่งสนามเด็กเล่นออกเป็นเซลล์ สนามเด็กเล่นทั้งหมดถูกแบ่งออกเป็นเซลล์โดยเอ็นจิ้นเกม ขนาดต่ำสุดคือ 3x3; สูงสุดคือ 100x100 ขนาดหน้าจอเกมคงที่ สามารถแบ่งออกเป็นจำนวนเซลล์ต่างๆ ตัวอย่างเช่น กว้าง 7 เซลล์ สูง 9 เซลล์:
void setScreenSize(int width, int height)
วิธีการ กำหนดขนาดของสนามแข่งขัน พารามิเตอร์แสดงถึงจำนวนเซลล์ในแนวนอน (กว้าง) และแนวตั้ง (สูง) โดยปกติจะเรียกเพียงครั้งเดียวเมื่อเริ่มเกม ตัวอย่างเช่น:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the field size to 7 cells x 9 cells
setScreenSize(7, 9);
...
}
}
เมื่อเขียนเกม คุณอาจต้องทราบความกว้างและความสูงปัจจุบันของสนามเด็กเล่น ในการทำเช่นนี้int getScreenWidth()
และint getScreenHeight()
วิธีการ จะมีประโยชน์ ขั้นตอนที่ 2: เปิดหรือปิดกริด (ไม่บังคับ) หากคุณไม่ชอบเส้นตารางสีดำที่แยกเซลล์ในสนามแข่งขัน คุณสามารถปิดได้ เมธอด นี้void showGrid(boolean isShow)
จะเปิดและปิดกริด ตามค่าเริ่มต้น เส้นตารางจะแสดงขึ้น หากต้องการปิด ให้เรียกเมธอดนี้โดยใช้เท็จเป็นอาร์กิวเมนต์:
showGrid(false);
ผลลัพธ์: 
showGrid(true);
4. โปรแกรมดั้งเดิม
นี่คือตัวอย่างของโปรแกรม:
public class MySuperGame extends Game {
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
// Turn off the grid
showGrid(false);
// Change the background of the center cell to blue, and display an "X" in it.
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
ในตัวอย่างนี้ ฟิลด์เกมถูกตั้งค่าเป็น 3x3 ตารางถูกปิด และ "X" สีส้มครึ่งหนึ่งของขนาดเซลล์ถูกตั้งค่าบนพื้นหลังสีน้ำเงินในเซลล์ตรงกลาง นี่จะเป็นสิ่งแรกที่ผู้เล่นเห็นเมื่อเริ่มเกม
5. การทำงานกับเซลล์ของสนามเด็กเล่น
ความจริงที่ว่าเราสามารถแบ่งสนามเด็กเล่นออกเป็นเซลล์ได้นั้นยอดเยี่ยม แต่เราจะทำอะไรกับเซลล์เหล่านั้นได้ล่ะ คุณสามารถตั้งค่าคุณสมบัติต่อไปนี้สำหรับแต่ละเซลล์ของสนามแข่งขัน:- สีของเซลล์ (สีพื้นหลังของเซลล์);
- ข้อความ (ข้อความหรือตัวเลข);
- สีข้อความ
- ขนาดข้อความเป็นเปอร์เซ็นต์ของขนาดเซลล์
-
void setCellColor(int x, int y, Color color)
— กำหนดสีของเซลล์ด้วยพิกัด (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);
-
void setCellValue(int x, int y, String value)
— ตั้งค่าข้อความของเซลล์ด้วยพิกัด (x, y) เท่ากับสตริงในพารามิเตอร์ค่า:setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
String getCellValue(int x, int y)
— ส่งกลับข้อความที่อยู่ในเซลล์ด้วยพิกัด (x, y):String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size)
— กำหนดขนาดของเนื้อหาของเซลล์ด้วยพิกัด (x, y) พารามิเตอร์ขนาดคือความสูงของข้อความเป็นเปอร์เซ็นต์ของความสูงของเซลล์:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
— ส่งกลับขนาดของเนื้อหาของเซลล์ด้วยพิกัด (x, y):int size = getCellTextSize(2 , 0);
-
void 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));
-
void 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()
วิธีที่มีชุดพารามิเตอร์ต่างกัน:
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— กำหนดสีพื้นหลัง (cellColor) และเนื้อหา (ค่า) ของเซลล์ด้วยพิกัด (x, y):setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
— กำหนดสีพื้นหลัง (สีเซลล์) เนื้อหา (ค่า) และสีข้อความ (สีข้อความ) ของเซลล์ด้วยพิกัด (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)
— ตั้งค่าสีพื้นหลัง (cellColor), เนื้อหา (ค่า), สีข้อความ (textColor) และขนาดข้อความ (textSize) ของเซลล์ที่มีพิกัด (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. การทำงานกับสี
เป็นColor enum
ผู้รับผิดชอบสีในเครื่องยนต์เกม มีค่าที่ไม่ซ้ำกันสำหรับ 148 สี นอกจากนี้ยังมีค่าพิเศษ (ไม่มี) ที่แสดงถึงไม่มีสี นี่คือตัวอย่างการทำงานกับสี:
Color myColor = Color.WHITE; // The myColor variable is set to white.
Color redColor = Color.RED; // The redColor variable is set to red.
Color blueColor = Color.BLUE; // The blueColor variable is set to light blue.
บางครั้งคุณอาจต้องการอาร์เรย์ของสีที่มีอยู่ทั้งหมด ในการทำเช่นนี้ให้ใช้values()
วิธีการ ตัวอย่างเช่น:
Color[] colors = Color.values(); // The colors variable is assigned an array containing all available colors.
ง่ายมากที่จะรับดัชนีของสีในจานสี:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of red
int blueIndex = Color.BLUE.ordinal(); // Index of blue
คุณยังสามารถรับสีได้จากดัชนี:
Color color = Color.values()[10]; // The color variable is assigned the color with index 10 in the Color enum.
7. กล่องโต้ตอบ
ในตอนท้ายของเกม คุณต้องรายงานการชนะหรือแพ้ให้ผู้เล่นทราบ ในการทำเช่นนี้ มีวิธีพิเศษที่แสดงกล่องโต้ตอบบนหน้าจอเกม:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
ที่นี่:
cellColor
เป็นสีพื้นหลังของกล่องโต้ตอบmessage
เป็นข้อความของข้อความtextColor
เป็นสีของข้อความtextSize
คือขนาดของข้อความ
8. วิธีการยูทิลิตี้
เวลาเขียนเกม จะใช้ตัวเลขสุ่มมาก เพื่อให้ง่ายต่อการรับหมายเลขสุ่ม คุณสามารถใช้วิธียูทิลิตี้ต่อไปนี้จากเอนจิ้นเกม:-
int getRandomNumber(int max)
— ส่งกลับจำนวนเต็มแบบสุ่มตั้งแต่ 0 ถึง (สูงสุด-1) รวม -
int getRandomNumber(int min, int max)
— ส่งกลับจำนวนเต็มแบบสุ่มจากขั้นต่ำถึง (สูงสุด-1) รวม
GO TO FULL VERSION