1 / 21

AI 2009 Homework#2

พื้นหญ้า. พื้นทราย. +10. +7. +14. +14. +4. +4. +10. +10. +7. +7. +14. +4. +14. +4. +10. +7. AI 2009 Homework#2. งานกลุ่ม แก้ไข map ใหม่ ให้สวยงาม เพิ่มพื้นทราย(มีรูปให้แล้ว) แก้ไขโปรแกรม เส้นทางการเดิน ที่ใช้ A* ดังนี้ กำหนดส่ง วันที่ 20 มกราคม 2553

aolani
Download Presentation

AI 2009 Homework#2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. พื้นหญ้า พื้นทราย +10 +7 +14 +14 +4 +4 +10 +10 +7 +7 +14 +4 +14 +4 +10 +7 AI 2009 Homework#2 • งานกลุ่ม • แก้ไข map ใหม่ ให้สวยงาม เพิ่มพื้นทราย(มีรูปให้แล้ว) • แก้ไขโปรแกรม เส้นทางการเดิน ที่ใช้ A* ดังนี้ • กำหนดส่ง วันที่ 20 มกราคม 2553 • รูปเล่มรายงาน อธิบาย • หลักการทำงานของ A* • ส่วนของโปรแกรมที่ได้ปรับปรุงแก้ไข

  2. การเรียกโปรแกรม 1.ลง C# 2.ลง XNA 3. unrar TileMap7 4. double click Tilemap.sln

  3. เกี่ยวกับไฟล์ • Game1 โปรแกรมหลัก • Mymap ส่วนจัดการ map และ A* • Myview ส่วนจัดการ view (แสดงผลส่วนย่อยๆ ของ map) • Mypath ส่วนเก็บข้อมูลเส้นทาง path ที่ตัวละครเดิน • Myobject ส่วนจัดการตัวละคร ตำแหน่งของตัวละคร • Mysprite ส่วนจัดการวาดรูปตัวละคร การเคลื่อนไหว • Myutils ฟังก์ชั่นย่อยๆ ต่างๆ

  4. MyMap.cs ตัวละครเดินได้หรือไม่ ขึ้นอยู่กับค่า mapenum // ค่าสถานะของ map public enum mapenum { map_none = 0, map_walk = 1, map_obstracle = 2 }; ภาพในฉากแผนที่ ขึ้นกับค่า mapenumimage public enum mapenumimage { empty=0, block, pira, chest, doorclose, dooropen, //5 grass, grassshadow, rocks, sandgrass1, sandgrass2, //10 sandgrass3, sandgrass4, sandgrass, sandgrass6, sandgrass7, //15 sandgrass8, sandgrass9, sand, wall1, waterwall, //20 watergrass, water, waterref2, waterref3, waterref //25 };

  5. MyMap.cs.2 แต่ล่ะตำแหน่งของ map จะเก็บค่าดังนี้ public struct mapelement { public mapenum maptype; // ประเภทของ map public mapenumimage mapimage; // รูปของ map public float g; // ตัวแปร A* public float h; // ตัวแปร A* public float f; // ตัวแปร A* public int parentX; // ตัวแปร A* public int parentY; // ตัวแปร A* public bool isopenlist; // ตัวแปร A* public bool iscloselist; // ตัวแปร A* public int count; // ตัวแปร A* } public mapelement[,] mapdata;  array 2D ของ map public Texture2D[] mappic;  array ของ รูป public mypath pathdata;  path ที่สร้างโดย A*

  6. Clearmap() ล้างข้อมูล Createmap() สร้างข้อมูลแผนที่ drawmap(Vector2 startpos) วาดแผนที่ clearAstarParams() ล้างข้อมูล A* // A* fn g : g fn มีค่าเพิ่มขึ้นจากการเคลื่อนที่ public float fn_g(int px, int py, int fromX, int fromY) // A* fn h : heuristic fn มีค่าลดลงเมื่อเข้าใกล้ target public float fn_h(int px, int py, int targetX, int target AstarAB(Vector2 a)คำนวณ A จาก ตำแหน่ง a ไปยัง targetX, targetY คือค่าเป็น path

  7. C# XNA : 2D Map Scrollingand others related useful functions RTS + RPG Dr.Yodthong Rodkaew

  8. 2D Map in XNA • Map as 2D array • 1 block of map is struct 64,64 800,600 If map area is larger than screen area ?

  9. 2D Map in XNA If map area is larger than screen area ? 64,64 SCREEN AREA 800,600 MAP AREA

  10. 2D Map Scrolling MAP AREA Map[0,0] Screen(0,0) Map[w,h] SCREEN AREA Viewport Screen(800,600)

  11. Screen(0,0) 2D Map Scrolling Map[20,20] Screen(800,600)

  12. Screen(0,0) 2D Map Scrolling Map[10,20] Screen(800,600)

  13. Screen(0,0) 2D Map Scrolling Map[10,20] Screen(800,600)

  14. Screen(0,0) 2D Map to Block Map[10,20] Mouse Pointer = Map[x,y] ?? Mouse pointer at (400,250) Screen(800,600)

  15. การใช้ view • View สำหรับควบคุม การเลื่อนหน้าจอ

  16. Map RTS, select & move view map View.position Mouse.position View.width View.height [Need] -View center at mapblock(x,y) -View moving: up/down/left/right -map mouse to view position, to real mapblock -is_position_in_view(x,y) Map.width Map.height

  17. view ต้องการหา viewxyทราบ mapxy view width height View (viewx,viewy) View.position map (mapx,mapy) Center of view View.width View.height View.center_at_mapblock(int mapx, int mapy) viewx = ________________? viewy = ________________?

  18. view ต้องการหา mapxyทราบ mousexy view width height Screen(0,0) View (viewx,viewy) View.position map (mapx,mapy) View.width View.height Mouse Screen (800,600) View.mouse_to_viewblock(int mousex, int mousey) mapx = ________________? mapy = ________________?

  19. view ต้องการหา mapxyอยู่ใน view หรือไม่ทราบ mapxy,viewxy, view width height map (mapx,mapy) View (viewx,viewy) View.position map (mapx,mapy) View.width View.height View.is_position_in_view(int mapx, int mapy) In_view = ________________________?

  20. view map View.position Move right View.width View.height Move down Task.I: arrow key  move view If ( ______ ) { _______________ } Task.II: mouse near border  move view If ( ______ ) { _______________ } Map.width Map.height

  21. view View.position Step3&4 step1 step2 View.width View.height Click & Move Step1: find what hero is clicked [source+hero] Step2: find what area is clicked [target] Step3: get path from A* Step4: make hero move follow a path

More Related