418382 ภาคต้น 2553/การบ้าน 2

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

หมายเหตุ: การบ้านนี้ลอกมาจากการบ้านที่ 4 ของวิชา CSIE 234 ของมหาวิทยาลัย Harvard ดูต้นฉบับได้ที่นี่: Homework 4

ให้ download homework-02-starter.zip เมื่อขยายไฟล์แล้วให้เิปิดไฟล์ homework-02-starter.sln แล้วทดลองคอมไพล์และรันแล้วจะเห็นผลเป็นดังนี้

418341-homework-02-starter.jpg

ซึ่งเมื่อคุณกดปุ่มคีย์บอร์ดหรือกดปุ่มเมาส์แล้วภาพก็ยังจะไม่เปลี่ยน

ข้อ 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