ai 2009 homework 2
Download
Skip this Video
Download Presentation
AI 2009 Homework#2

Loading in 2 Seconds...

play fullscreen
1 / 21

AI 2009 Homework#2 - PowerPoint PPT Presentation


  • 52 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' AI 2009 Homework#2' - aolani


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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
  • รูปเล่มรายงาน อธิบาย
    • หลักการทำงานของ A*
    • ส่วนของโปรแกรมที่ได้ปรับปรุงแก้ไข
slide2
การเรียกโปรแกรม

1.ลง C#

2.ลง XNA

3. unrar TileMap7

4. double click Tilemap.sln

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

};

mymap cs 2
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*

slide6
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

2d map in xna
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 ?

2d map in xna1
2D Map in XNA

If map area is larger than screen area ?

64,64

SCREEN AREA

800,600

MAP AREA

2d map scrolling
2D Map Scrolling

MAP AREA

Map[0,0]

Screen(0,0)

Map[w,h]

SCREEN AREA

Viewport

Screen(800,600)

2d map scrolling1

Screen(0,0)

2D Map Scrolling

Map[20,20]

Screen(800,600)

2d map scrolling2

Screen(0,0)

2D Map Scrolling

Map[10,20]

Screen(800,600)

2d map scrolling3

Screen(0,0)

2D Map Scrolling

Map[10,20]

Screen(800,600)

2d map to block

Screen(0,0)

2D Map to Block

Map[10,20]

Mouse Pointer =

Map[x,y] ??

Mouse pointer at

(400,250)

Screen(800,600)

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

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

slide17

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 = ________________?

slide18

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 = ________________?

slide19

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 = ________________________?

slide20

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

slide21

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

ad