สวัสดีค่ะ ..
วันนี้ลองมาเขียน เช็คการชน แบบใช้ darkbasic
concept ก็เหมือนกันในแบบของ c# xna เรื่องของ collision 2d
คือมีการโหลด image เข้ามาก่อน และนำ image เข้าไปใน sprite
แล้วนำ sprite มาเช็ค โดยใน darkbasic จะมี function สำหรับตรวจสอบ
การชนให้เลยนะค่ะ ใช้ function sprite hit หรือไม่ก็ sprite collision
rem define variable
mouse = 100
object= 101
IobjectBlue = 102
IobjectRed = 103
rem load object
Load Image "MouseIMG.png",mouse
load image "a11.png",IobjectBlue
load image "a1r.png",IobjectRed
rem hide mouse
hide mouse
sprite object,200,200,IobjectRed
SET SPRITE IMAGE object,IobjectRed
Sprite mouse,mousex(),mousey(),mouse
rem main loop
do
Sprite object,200,200,IobjectRed
Sprite mouse,mousex(),mousey(),mouse
if 0 = Sprite Hit(object,mouse)
SET SPRITE IMAGE object,IobjectBlue
text 0,0,"1"
else
SET SPRITE IMAGE object,IobjectRed
text 0,0,"0"
endif
loop
ปล. อย่าลืมทำ content file เองเด้อค่ะ
ถ้าไงลองเปรียบเทียบโค้ดใน darkbasic กับใน xna c# ดูๆ เหมือนใน darkbasic ยังมีการทำงานแบบและการเขียนโปรแกรมเป็นแบบ structure อยู่เลย run ไปเรื่อยเขียนเป็นบรรทัดๆ
อย่างดีก็เขียนเป็น function
ส่วนใน xna จะมีการเขียนสไตล์ OOP มากกว่า เป็นคลาสต่างๆ มี event driven สำหรับจัดการ method ต่างๆ มี content pipeline ในการจัดการ memory หรือ load object
มั่งนะค่ะ มั่ว อันนี้พูดตามความคิดเห็นส่วนตัว
ก็ถึงไง หนูว่า ถ้าสังเกตดีๆ การหัดเขียน darkbasic จะมีข้อดีในการพัฒนาที่เร็ว
หมายถึง หนูว่านะ ถ้าเนื่องานเท่ากัน โปรแกรมเมอร์ไม่มีประสบการณ์ในภาษาใดภาษาหนึ่งเป็นพิเศษนะ darkbasic น่าจะทำให้งานเสร็จได้เร็วกว่า
พูดอีกแง่นึง หากเป็นงานที่ทำเป็น prototype ก็น่าจะทำเป็น darkbasic ไปก่อนให้เห็นภาพง่ายๆ มั่งนะ หรือเปล่า ??? ยกตัวอย่าง ง่ายๆ ลองดูการ load model 3d ที่เป็นพวก .x file นะค่ะ หากใช้ darkbasic ทำกับ xna c#ใครจะทำเสร็จก่อนกัน
(มั่งค่ะ แฮะๆ มั่ว)


กรณีชน เขียนเหมือน mouseover ไว้นะค่ะ ให้เปลี่ยนสีรูป

รูปปกติ ตอนยังไม่โดนชน
จบแระค่ะ บายค่ะ งุงิ งุงิ ...
ปล. function sprite collison หรือ sprite hit หนูไม่แน่ใจเหมือนกันว่าทำไรผิดอะปะนะค่ะ
คือในส่วนที่เป็น non polygon ส่วน transparency มันจะดักไม่ได้นะค่ะ อิอิ