xna framework กับเต้ย

posted on 17 Dec 2007 16:23 by xnanoob  in Tutorials

สวัสดีค่ะ

วันนี้ได้คุยกับเพื่อนคนนึงชื่อน้องเต้ย (แต่ความจริงเค้าไม่ได้ชื่อเต้ยนะ  แต่พิมพ์ตกสระอีไป)

แต่ถ้าเรียกชื่อ ที่พิมพ์ถูกแล้ว เดี๋ยวเค้าจะโกรธเอา

เรื่องมีอยู่ว่า น้อยเต้ย (ฝืนใจพิมพ์ให้ผิดนะเนี้ย) อยากหัดทำ XNA กับเค้าบ้าง

ก่อนอื่นให้เต้ยไป install Microsoft Visual C# 2005 Express Edition ก่อนนะ

แล้วค่อยลง XNA เอาเป็น version 2.0 เลยก้อได้

เสร็จแล้วก้อไป เปิด Project ขี้นมาอะนะ

เลือกเป็น Windows Game (2.0) ถ้าเห็นอันนี้ก้อแสดงว่าน่าจะลงไรเสร็จแล้วอะนะ
   

ก้อเสร็จแล้วก้อเปิดหน้าที่เขียน code ขึ้นมา หลักๆ ของเราจะอยู่ที่ไฟล์ Game1.cs

โดยใน Game1.cs มันก้อจะมีหลาย method อะนะ สังเกตว่า

Class Game1 ของเราจะ Inherit มาจาก Microsoft.Framework.Game

ซึ่งตัวเนี้ยแระ มันจะเป็นคนจัดการให้เรา เรามามั่วดูนะ ว่า Game Component มันเป็นยังไงบ้าง

ภาพ แสดงการทำงานของ XNAFramework

หลักๆ ก้อจะมีอยู่ 5 method อะนะ  Initialize LoadContent Draw Update และ UnloadContent

  • Initialize  ก้อ initial อะ   (เต้ยคงเข้าใจ)
  • LoadContent ก้อ load อะนะ ก้อโหลดกราฟฟิคหรืออะไรก้อตามที่อยู่ใน Content Pipeline (มั่ง)
  • Draw ควมการแสดงผลออกหน้าจะ
  • Update ความคุมค่าต่างๆ ที่จะเปลี่ยนแปลงไป
  • UnloadContent  จะทำงานหลังจากโปรแกรมเสร็จสิ้น หรือไม่ใช่แล้วมั่ง

ซึ่งแต่หละ method จะแยกเป็นอิสระกัน

ไม่ได้ยาวหรือรวมกันเป็นพรีด  โดยในกรอบสีแดงจะเป็น เหมือน runtime ในโปรแกรมอะ

ในขณะที่  ถ้าไม่ terminate หรือปิดโปรแกรม ก้อจะไม่ออกมา หลังจากนั้นค่อย call Unload

(หรือเปล่า?)

ยกตัวอย่าง สมมติต้องการแสดงค่า 1 ถึง 100 ออกหน้าจอ

int i=0; // ตรงนี้ก้อควรยัดใน Initial

การแสดงผล display i  // ตรงนี้ไปไปวางไว้ใน Draw ... แล้วก้อจบแล้วนะ

ส่วน i++ // ซึ่งต้องการเพิ่มค่า i ก้อไปไว้ใน method update

....

บางครั้งใหม่ๆ ก้อจะงงๆ ว่า แล้วใครเป็นคน call หรือเรียกฟังก์ชั่น Draw ใครเป็นคนเรียกฟังก์ชั่น Update

ก้อไม่รู้เหมือนกัน XNAframework เป็นคนเรียกมั่ง


ภาพ แสดง ตัวอย่าง method Draw และ Update 

โดยปกติแล้วก้อมั่วกับ 2 method เนี้ยแระในตัวเกมส์อะ ประมาณ 70-80% มั่ง

ถ้าไงเต้ยลองมั่วดูก่อนแล้วกันนะจ๊ะ

 

จบแระค่ะ

บายค่า  เฮือก...

ปล. ถ้าไงวันนี้เอาเว็บ เต้ยแฟนคลับตัวจริงมาให้ดู

ด้านล่างนะ  http://www.toeyclub.net

 

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

draw กับ update ต่างกันไงบ้างอะ

#1 By T!D on 2007-12-17 17:19



โอ... กะพักสายตาจากโปรแกรมมาดูอะไรซะหน่อย กลับมาเจอกการเขียนโปรแกรมอีกเหรอ
1#:ไงดีอะ ตัวอย่าง แบบเลื่อนภาพแล้วกานนะ

Draw Method ก้อพวกวาดรูปออกมา

ส่วน Update ก้อเอาไว้ update ปรับค่า vector

แบบเนี้ยมั่ง

2#: น้องเต้ยน่ารักจาตาย กดเข้าไปพักสายตาก้อได้นิ
sad smile

#3 By xnanoob on 2007-12-17 17:28

คือกำลังงงว่า update มันก็น่าจะวาดหรือทำอะไรได้เหมือน draw อะคับ parameter ก็เหมือนกัน

ดูจาก flow chart แล้ว update แล้วก็วนกลับเข้าไป draw ใหม่ได้

เลยงงว่าเราจะแยก code ส่วน update กับส่วน draw ยังไงอะคับ เอา code ของ update ไปไว้ใน draw เลยได้มั้ย หรือกลับกัน ไม่ต้องเขียน draw เขียนแต่ update อย่างเดียวเลย embarrassed

#4 By T!D on 2007-12-17 22:42

คือมันว่าได้ก้อได้อะนะ

แต่มันจะผิดหลัก และการแสดงผล
และการแสดงผลของเราก้อจะผิดพลาด

Draw ก้อ แสดงผล คือ แสดงผล จริง
ถ้ามีไรคำนวนก้อไปไว้ใน Update

ลองดูจากโค้ดแล้วกานนะ จะเห็นภาพดีขึ้น

#5 By xnanoob on 2007-12-17 23:22