ผลต่างระหว่างรุ่นของ "418587 ภาคปลาย 2552/การบ้าน 2"
Cardcaptor (คุย | มีส่วนร่วม) |
Cardcaptor (คุย | มีส่วนร่วม) |
||
แถว 12: | แถว 12: | ||
ในข้อนี้ให้คุณสร้างไอเทมชนิดใหม่ (จะเป็นไอเทม C หรือไอเทม D ก็ได้ อย่างใดอย่างหนึ่ง) ซึ่ีงเมื่อเก็บแล้วแป้นจะปล่อยลูกบอลออกมาสองลูก ลูกหนึ่งพุ่งออกทางด้านซ้าน อีกลูกพุ่งออกทางด้านขวา ลูกบอลนี้จะต้องมีสมบัติเหมือนลูกบอลที่มีอยู่แล้วทุกประการ และเมื่อแป้นยิงลูกบอลใหม่มาแล้ว ลูกบอลเดิมสามารถที่จะหล่นออกจากฉากไปได้โดยที่ผู้เล่นจะยังไม่ตาย (กล่าวคือผู้เล่นจะตายก็ต่อเมื่อไม่มีลูกบอลเหลือในฉากแล้วเท่านั้น) | ในข้อนี้ให้คุณสร้างไอเทมชนิดใหม่ (จะเป็นไอเทม C หรือไอเทม D ก็ได้ อย่างใดอย่างหนึ่ง) ซึ่ีงเมื่อเก็บแล้วแป้นจะปล่อยลูกบอลออกมาสองลูก ลูกหนึ่งพุ่งออกทางด้านซ้าน อีกลูกพุ่งออกทางด้านขวา ลูกบอลนี้จะต้องมีสมบัติเหมือนลูกบอลที่มีอยู่แล้วทุกประการ และเมื่อแป้นยิงลูกบอลใหม่มาแล้ว ลูกบอลเดิมสามารถที่จะหล่นออกจากฉากไปได้โดยที่ผู้เล่นจะยังไม่ตาย (กล่าวคือผู้เล่นจะตายก็ต่อเมื่อไม่มีลูกบอลเหลือในฉากแล้วเท่านั้น) | ||
− | วิธีการที่ง่ายที่สุดในการทำโจทย์ข้อนี้คือการเขียน subclass ของ [http://theory.cpe.ku.ac.th/~pramook/418383/homework-02/doc/html/class_breakout_lib_1_1_item.html BreakoutLib.Item] แล้ว implement เมธอด CollideWithBar ของมันให้เพิ่มลูกบอลเข้าไปสองลูกใส่ GameState | + | วิธีการที่ง่ายที่สุดในการทำโจทย์ข้อนี้คือการเขียน subclass ของ [http://theory.cpe.ku.ac.th/~pramook/418383/homework-02/doc/html/class_breakout_lib_1_1_item.html BreakoutLib.Item] แล้ว implement เมธอด <tt>CollideWithBar</tt> ของมันให้เพิ่มลูกบอลเข้าไปสองลูกใส่ <tt>GameState</tt> |
==== แก้ไข Content Pipeline ให้อ่านไอเทมชนิดที่สามได้ ==== | ==== แก้ไข Content Pipeline ให้อ่านไอเทมชนิดที่สามได้ ==== |
รุ่นแก้ไขเมื่อ 10:07, 4 กุมภาพันธ์ 2553
ให้ไว้ ณ วันอาทิตย์ที่ 31 ม.ค. 2553 ส่งวันพุธที่ 17 ก.พ. 2553 เวลา 23.59 น. โดย zip ไฟล์ในไดเรกทอรี Breakout ส่งมาที่ pramook at gmail dot com
เนื้อหา
เริ่มต้น
- ให้ดาวน์โหลดซอร์สโค้ดของโปรแกรมเกม Breakout จาก http://theory.cpe.ku.ac.th/~pramook/418383/homework-02/Breakout.zip
- คุณสามารถดาวน์โหลดโปรแกรมเกม Breakout ที่มีฟีเจอร์ครบทุกอย่างตามที่บอกในการบ้านนี้มาดูเป็นตัวอย่างได้ที่ http://theory.cpe.ku.ac.th/~pramook/418383/homework-02/Breakout-Complete.zip
- คุณสามารถดาวน์โหลดโปรแกรมที่ใช้สร้าง map สำหรับเกม Breakout ได้ที่นี่ http://theory.cpe.ku.ac.th/~pramook/418383/homework-02/BreakoutMapEditor.zip
- คุณสามารถดูโครงสร้างของเกมได้จาก API Documentation (ที่ียังไม่สมบูรณ์) ได้ที่นี่ http://theory.cpe.ku.ac.th/~pramook/418383/homework-02/doc/html
งานของคุณ
1. เพิ่มไอเทมที่เก็บแล้วมีลูกบอลเพิ่มขึ้นสองลูก
ในตอนนี้เกม Breakout ในโค้ดตั้งต้นมีไอเทมเพียงสองชนิด คือ ไอเทมที่เก็บแล้วแป้นสามารถจับและปล่อยลูกบอลได้ (ไิอเทม A) กับไอเทมที่เก็บแล้วแป้นมีความยาวมากขึ้น (ไอเทม B)
ในข้อนี้ให้คุณสร้างไอเทมชนิดใหม่ (จะเป็นไอเทม C หรือไอเทม D ก็ได้ อย่างใดอย่างหนึ่ง) ซึ่ีงเมื่อเก็บแล้วแป้นจะปล่อยลูกบอลออกมาสองลูก ลูกหนึ่งพุ่งออกทางด้านซ้าน อีกลูกพุ่งออกทางด้านขวา ลูกบอลนี้จะต้องมีสมบัติเหมือนลูกบอลที่มีอยู่แล้วทุกประการ และเมื่อแป้นยิงลูกบอลใหม่มาแล้ว ลูกบอลเดิมสามารถที่จะหล่นออกจากฉากไปได้โดยที่ผู้เล่นจะยังไม่ตาย (กล่าวคือผู้เล่นจะตายก็ต่อเมื่อไม่มีลูกบอลเหลือในฉากแล้วเท่านั้น)
วิธีการที่ง่ายที่สุดในการทำโจทย์ข้อนี้คือการเขียน subclass ของ BreakoutLib.Item แล้ว implement เมธอด CollideWithBar ของมันให้เพิ่มลูกบอลเข้าไปสองลูกใส่ GameState
แก้ไข Content Pipeline ให้อ่านไอเทมชนิดที่สามได้
Map ที่ให้ไปในเกม (ไฟล์ map-01.txt, map-02.txt, และ map-03.txt ใน Content ของโปรเจค Breakout) สามารถใส่ไอเทมได้ 4 ชนิด (แทนด้วยตัวอักษร 1, 2, 3, 4 ตามลำดับ) แต่ในตอนนี้เกมสามารถอ่านไอเทมได้แค่ชนิด 1 กับ 2 เท่านั้น เนื่องจากใน BreakoutMapReader.cs ในโปรเจค BreakoutMapContentPipeline มีการกำหนดเงื่อนไขดังต่ีอไปนี้
<geshi lang="csharp"> Item item = null; if (brickFromFile.itemType != 0) //This brick come with its item. load it. {
switch (brickFromFile.itemType) { case 1: item = new LongBarItem(); break; case 2: item = new MagnetBarItem(); break; }
} </geshi>
เมื่อคุณสร้างคลาสสำหรับไอเทมชนิดนี้เสร็จแล้ว ให้ไปเพิ่ม case 3 หรือ case 4 ในคำสั่ง switch ข้างบน แล้วเกมก็จะอ่านไอเทมที่คุณสร้างขึ้นมาใหม่ได้
2. เพิ่มไอเทมที่เก็บแล้วผู้เล่นสามารถยิงลูกกระสุนปืนออกจากแป้นได้
3. เพิ่มด่าน
สร้างด่านเพิ่มขึ้นอีกสองด่าน โดยทำการสร้าง map ตามรูปแบบที่กำหนดไว้ใน BreakoutMapContentPipeline
แก้ไข PlayScene และส่วนประกอบอื่นๆ ของเกมตามที่จำเป็น เพื่อให้หลังจากจบด่านแรกในเกมแล้ว เกมจะไปเริ่มต้นที่ด่านที่สองโดยอัตโนมัติ และทำเช่นเดียวกันกับด่านที่สาม และเมื่อผู้เล่นผ่านด่านที่สามแล้ว ให้แสดงฉากว่าผู้เล่นได้เคลียร์เกมแล้ว
4. เพิ่มเสียง
5. ทำให้เกมสวยงาม
เปลี่ยนหน้า Title, หน้า Game Over, หน้าจอระหว่างเล่นเกม, ฯลฯ