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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
C# เบื้องต้น ก่อนการเขียนเกมด้วย XNA
Advertisements

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
โปรแกรมทดสอบที่1 ทดสอบการแสดงผลข้อความ
Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
ครั้งที่ 9 Function(ต่อ).
บทที่ 2 รหัสควบคุมและการคำนวณ
โครงสร้างโปรแกรมภาษา C
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
LAB 1 ให้นักศึกษาเขียน Flowchart โดยใช้โปรแกรม Microsoft Word วาดรูป Flowchart ส่ง Flowchart ที่วาดเสร็จแล้วในชั่วโมง และ print ใส่กระดาษ ส่งในครั้งหน้า.
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
ครั้งที่ 12 การค้นหาข้อมูล (Searching)
ครั้งที่ 8 Function.
สื่อการเรียนการสอน เรื่อง เมาส์(mouse)
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Library/API.
Lecture 10: อาร์เรย์หนึ่งมิติ
LAB # 5 Computer Programming 1 1.
LAB # 5.
Week 6 ประกาศค่าตัวแปร.
รับและแสดงผลข้อมูล.
โครงสร้างภาษาซี.
ลักษณะพิเศษของ ภายใต้คำสั่ง <BODY>
Microsoft Word Part I Government Savings Bank Computer Trainging Í
Object Oriented Programing
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
ตัวแปรแบบโครงสร้าง.
C Programming Lecture no. 6: Function.
แก้ไขปรับปรุง Form.
A* Pathfinding and other path generator.
Asst.Prof. Dr.Surasak Mungsing
โปรแกรม Microsoft Access
ข้อมูลชนิดอาร์เรย์ ประเภทของข้อมูลที่ผ่านมาส่วนใหญ่ในตอนต้นๆจะเป็นข้อมูลเดี่ยว โดยตัวแปรหนึ่งตัวสามารถเก็บข้อมูลได้หนึ่งตัว ถ้าหากต้องการเก็บข้อมูลหลายตัวจะต้องประกาศตัวแปรหลายตัว.
เริ่มต้น Photoshop CS5.
การใช้งาน Microsoft Windows XP
หน่วยที่ 14 การเขียนโปรแกรมย่อย
CSS.
Suphot Sawattiwong Sprite Suphot Sawattiwong
Suphot Sawattiwong Lab IV: Array Suphot Sawattiwong
การคำนวณทางคณิตศาสตร์ ตัวดำเนินการ
การเขียนโปรแกรมภาษาซี
ตัวแปรกับชนิดของข้อมูล
โปรแกรมการคำนวณพื้นที่สามเหลี่ยมมุมฉาก
เครื่องมือที่ใช้ในการกำหนดการเคลื่อนไหว
ชนิดของข้อมูล ตัวแปร และตัวดำเนินการ
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
อาจารย์นัณฑ์ศิตา ชูรัตน์
C language W.lilakiatsakun.
เกม PONG. เกม Pong เป็นเกมคลาสสิกที่โด่งดังมากใน อดีต ในครั้งแรกออกมาเป็นเกมตู้ก่อนประมาณ 1972 ต่อมาเมื่อได้รับความนิยมเพิ่มขึ้นในปี 1975 ทาง บริษัท Atari.
การสร้างหน้าโฮมเพจด้วยโปรแกรม Macromedia Dreamweaver MX 2004
หลักการทำ Animation แบบง่ายๆ
เขียนโปรแกรมเพื่อแสดงข้อมูลพนักงาน ด้วย ADO.NET vs. DataReader
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
Week 2 Variables.
Computer Programming for Engineers
ความหมาย การประกาศ และการใช้
บทที่ 3 การทำงานกับฟอร์ม (Form)
โปรแกรม Microsoft Access
บทที่ 3 การทำงานกับฟอร์ม (Form)
บทที่ 7 Low Level API (ต่อ)
คำสั่งเกี่ยวกับการรับ และแสดงผล
วิธีการเขียนโปรแกรมเพื่อทำงานกับข้อมูล โดยที่ ข้อมูลนั้นจะต้อง 1. เป็นประเภทเดียวกัน | ตัวเลข, ตัวอักษร 2. มีขนาดเท่ากัน ? ARRAY คืออะไร.
คอมพิวเตอร์เบื้องต้น Basic of Computer
เริ่มต้น Photoshop CS5.
พื้นฐานการเขียนโปรแกรมด้วย C#
ตัวแปร และชนิดข้อมูล.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Week 13 Basic Algorithm 2 (Searching)
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
ใบสำเนางานนำเสนอ:

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

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

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

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 แต่ล่ะตำแหน่งของ 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*

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

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

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

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

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

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

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

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

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

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

map view View.position View.width View.height Map.width Map.height Mouse.position [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 RTS, select & move

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

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

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

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

view View.position View.width View.height step1 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 step2 Step3&4