ผลต่างระหว่างรุ่นของ "Oop lab/objects co-ordination"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 21: | แถว 21: | ||
==== 1. เก็บไว้เป็น field ==== | ==== 1. เก็บไว้เป็น field ==== | ||
+ | ในกรณีที่ object ของคุณมีจำนวนไม่มาก คุณอาจจะเก็บ field ของวัตถุอื่นไว้ใน object ก็ได้ ยกตัวอย่างเช่น ถ้าคุณมีผู้เล่นสองคน อาจจะเก็บผู้เล่นอีกฝ่ายเป็น field ได้ | ||
+ | |||
+ | <syntaxhighlight lang="java"> | ||
+ | class Player { | ||
+ | private Player otherPlayer = null; | ||
+ | |||
+ | //... | ||
+ | public setOtherPlayer(player) { | ||
+ | otherPlayer = player; | ||
+ | } | ||
+ | //... | ||
+ | public isHit() { | ||
+ | //... now you can access the other player with otherPlayer field. | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ในส่วน init ใน Game อาจเป็นดังนี้ | ||
+ | |||
+ | <syntaxhighlight lang="java"> | ||
+ | public init() { | ||
+ | player1 = new Player(); | ||
+ | player2 = new Player(); | ||
+ | player1.setOtherPlayer(player2); | ||
+ | player2.setOtherPlayer(player1); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
==== 2. อ้างผ่านทาง Game ==== | ==== 2. อ้างผ่านทาง Game ==== | ||
=== การแจ้งเหตุการณ์ === | === การแจ้งเหตุการณ์ === |
รุ่นแก้ไขเมื่อ 08:10, 22 กันยายน 2557
- หน้านี้เป็นส่วนหนึ่งของ oop lab
มีสองแนวทางหลัก ๆ ในการจัดการประสานงานระหว่าง object ในเกม
- Game เป็นตัวประสานงานจัดการทั้งหมด
- ให้ object ต่าง ๆ จัดการกันเอง และแจ้ง Game เฉพาะเมื่อเกิดเหตุการณ์สำคัญ
อย่างไรก็ตาม ไม่ใช่ว่าแต่ละเกมจะต้องมีรูปแบบในการติดต่อแบบเดียว ในเกมหนึ่ง ๆ อาจจะมีทั้งส่วนที่ Game เป็นคนจัดการและส่วนที่ object จัดการกันเองด้วยก็ได้
เนื้อหา
Game เป็นตัวประสานงานทั้งหมด
เกมที่เราเขียนมาทั้งหมด โดยมากจากอยู่ในรูปแบบนี้ ทั้ง Ship game และ Flappy dot
Object ติดต่อกันเอง
การที่ object จะจัดการกิจกรรมอื่น ๆ ได้เองนั้น object จะต้องอ้างถึง object อื่น ๆ ที่เกี่ยวข้องได้ด้วย นอกจากนี้ ในบางครั้งที่เกิดเหตุการณ์ที่สำคัญ เช่น game over แล้ว object จะต้องสามารถแจ้งผลต่าง ๆ ให้กับ Game ได้ด้วย
การอ้างถึงวัตถุอื่น ๆ ในเกม
สามารถดำเนินการได้หลายแบบ
1. เก็บไว้เป็น field
ในกรณีที่ object ของคุณมีจำนวนไม่มาก คุณอาจจะเก็บ field ของวัตถุอื่นไว้ใน object ก็ได้ ยกตัวอย่างเช่น ถ้าคุณมีผู้เล่นสองคน อาจจะเก็บผู้เล่นอีกฝ่ายเป็น field ได้
class Player {
private Player otherPlayer = null;
//...
public setOtherPlayer(player) {
otherPlayer = player;
}
//...
public isHit() {
//... now you can access the other player with otherPlayer field.
}
}
ในส่วน init ใน Game อาจเป็นดังนี้
public init() {
player1 = new Player();
player2 = new Player();
player1.setOtherPlayer(player2);
player2.setOtherPlayer(player1);
}