งงกับอะโบ้เข็ด : Order key
posted on 03 Jan 2008 12:34 by xnanoob in Tutorials

สวัสดีค่า
วันนี้มาหัดปล่อยพลังนะค่ะ
ก้องงๆ เหมือนกันไม่รู้จะควบคุมลำดับของการกดยังไง
จากในรูปคือต้องการปล่อยพลัง โดยมีลำดับดังนี้ กดลง กดเฉียงขวา กดขวา แล้วต่อย (ปุ่ม X)
ปัญหาที่พบก้อคือถ้ายืนอยู่เฉยๆ ก้อต้องมีสถานะเป็น idleไป หรือลำดับไม่ได้เป็นไปตามต้องการ
ก้อให้ไปสู่ idle state ด้วย
แบบนี้หรือเป่าหว่า (มั่ง)

ในรูปนี้กำหนดให้ A = กดลง ,B = กดเฉียง ,C = กดขวา ,D = ต่อย
ในการที่จะตรวจสอบเช็ดสถานะที่ผู้เล่นกดมานั้นก้อมีปัญหาตอนตรวจสอบเหมือนกัน
เช่นผู้เช่นกดปุ่มแช่เอาไว้เป็นต้น
จังหวะนี้อาจจะเป็นการที่เคนนั่งตั้งรับแล้วปล่อยพลังก้อได้ (นึกภาพตามเอาเองนะ)

อีกตัวอย่างเช่น ตอนที่กิวปล่อยโซนิคบูม ก้อต้องมีจังหวะที่เดินถอยหลังค้างไว้
แล้วค่อยเดินหน้าต่อย
การตรวจสอบนั้นคล้าย Regular Expression หรือเปล่าหว่า?

เดี๋ยวลองมั่วดูก่อน
โดยในตอนแรกก้อไม่รู้จะทำไงดีเลยไปถามอ. อ.บอกว่าให้ใช้ queue ในการเก็บ action ก่อน
ส่วนการ process ตอนออกนั้น(pop ค่าออกจาก queue) ให้มั่วใช้ Regular Expression ในการตรวจสอบ
จะมีประสิทธิภาพดีและง่ายกว่าเยอะเลย ...!! หลังจากมั่วอยู่นาน
ตัวอย่าง โจทย์คือต้องการเช็ค Z X C กดสามปุ่มนี้เรียงกัน โดยที่ลำดับมีความสำคัญ
ถ้าทำตรงนี้ได้ ก้อจะปล่อยอะโบ้เข็ดได้นะส่วนเรื่อง Regular Expression ค่อยไปมั่วกันอีกที
จากรูปด้านบนเป็น A B C ก้อขอให้เปลี่ยนเป็น Z X C แล้วกันนะ [เพราะปุ่มมันติดกันจะได้กดง่าย]
Regular Expression ขอ Z X C รูปด้านบนแปลงได้ดังนี้
|
Regex stringKenAction = new Regex("^Z*ZX*XC*C"); |
มั่งนะ
-
^ จุดเริ่มต้น
-
* แทนใดๆ
-
อักษรหนึ่งตัวแทน กูขออย่างน้อย 1 ตัว
| Queue<string> QueueJoy;
QueueJoy = new Queue<string>(); |
ต่อไปก้อสร้าง Queue เอาไว้เก็บ
|
if ((Key.IsKeyDown(Keys.Z))){ QueueJoy.Enqueue("Z");} |
Enqueue หรือ Push ค่าลงไป
|
if (stringKenAction.IsMatch(mergestring) == true) |
ถ้า match ก้อทำไรตามใจ ในกรณีนี้คือปล่อยพลังท่าไม้ตาย
เย้ๆ ได้แระ
ถ้าไงเดี๋ยวขอตัวไปลองปล่อยพลังก่อนนะค่ะ
จบแระค่ะ บายค่ะ เฮือก..! งุงิ งุงิ
เอกสารอ้างอิง
Regular Expressions Usage in C#
Queue<T> Generic Class
(Regular Expression Syntax)

บริการห้องเช่า ห้องเช่า รายวัน ใกล้เซ็นทรัลลาดพร้าว พหลโยธิน 24
สนใจติดต่อ กดดูตัวอย่างห้องได้เลย








#1 By T!D on 2008-01-03 18:06