418382 ภาคต้น 2553/การบ้าน 2
หมายเหตุ: การบ้านนี้ลอกมาจากการบ้านที่ 4 ของวิชา CSIE 234 ของมหาวิทยาลัย Harvard ดูต้นฉบับได้ที่นี่: Homework 4
ให้ download homework-02-starter.zip เมื่อขยายไฟล์แล้วให้เิปิดไฟล์ homework-02-starter.sln แล้วทดลองคอมไพล์และรันแล้วจะเห็นผลเป็นดังนี้
ซึ่งเมื่อคุณกดปุ่มคีย์บอร์ดหรือกดปุ่มเมาส์แล้วภาพก็ยังจะไม่เปลี่ยน
ข้อ 1 (60 คะแนน)
จงปรับแต่ง main.cpp เพื่อทำให้เมื่อกดปุ่มต่อไปนี้แล้วโปรแกรมมีพฤติกรรมดังนี้ (ข้อละ 10 คะแนน)
- เมื่อกดปุ่ม e แล้วกล้องเคลื่อนที่ไปข้างหน้า โดยไม่เปลี่ยนมุมมอง
- เมื่อกดปุ่ม d แล้วกล้องเคลื่อนที่ไปข้างหลัง โดยไม่เปลี่ยนมุมมอง
- เมื่อกดปุ่ม s แล้วกล้องเคลื่อนที่ไปข้างด้านซ้าย โดยไม่เปลี่ยนมุมมอง
- เมื่อกดปุ่ม f แล้วกล้องเคลื่อนที่ไปข้างด้านขวา โดยไม่เปลี่ยนมุมมอง
- เมื่อกดปุ่ม w แล้วกล้องหันไปทางด้านซ้าย โดยไม่เปลี่ยนตำแหน่ง
- เมื่อกดปุ่ม r แล้วกล้องหันไปทางด้านขวา โดยไม่เปลี่ยนตำแหน่ง
คุณควรจะทำให้การเคลื่อนที่ไม่เร็วหรือช้าเกินไป
ข้อ 2 (20 คะแนน)
โค้ดที่ให้มาได้ทำการเซตค่า field-of-view เท่ากับ 60 องศา (ให้ดูคำสั่ง gluPerspective ในฟังก์ชัน display) จงปรับแต่ง main.cpp ซึ่งทำให้ (ข้อละ 10 คะแนน)
- เมื่อผู้ใช้คลิกเมาส์แล้ว field-of-view จะเปลี่ยนจาก 60 องศาอย่างต่อเนื่องไปเป็น 20 องศา และ
- เมื่อผู้ใช้ปล่อยเมาส์แล้ว field-of-view จะเปลี่ยนจาก 20 องศาอย่างต่อเนื่องไปเป็น 60 องศาตามเดิม
ข้อ 3 (20 คะแนน)
จงปรับแต่ง main.cpp เพื่อทำให้กล้องถ่ายรูป (ผู้เล่น) ไม่สามารถเดินผ่านเสาได้
คุณควรศึกษา DrawWorld เพื่อดูว่าเสาตั้งอยู่ีที่ใดบ้่าง
ผลลัพธ์ที่ควรจะได้
โปรแกรมของคุณควรจะทำงานได้คล้ายโปรแกรมตัวอย่างนี้: homework-02.exe