โรโบรูกี้ - ระบบคลังความรู้ scimathว ตถ (drag...
TRANSCRIPT
รหสโครงการ 10P22C052
โรโบรก
โปรแกรมเพอสงเสรมการเรยนร
รายงานฉบบสมบรณ เสนอตอ
ศนยเทคโนโลยอเลกทรอนกสและคอมพวเตอรแหงชาต สานกงานพฒนาวทยาศาสตรและเทคโนโลยแหงชาต
กระทรวงวทยาศาสตรและเทคโนโลย และ
สานกงานสงเสรมอตสาหกรรมซอฟแวรแหงชาต
ไดรบทนอดหนนโครงการวจย พฒนาและวศวกรรม โครงการการแขงขนพฒนาโปรแกรมคอมพวเตอรแหงประเทศไทย ครงท 10
ประจาปงบประมาณ 2550
โดย
1. นายณชพล กตตกล โรงเรยนสาธตแหงมหาวทยาลยเกษตรศาสตร ศนยวจยและพฒนาการศกษา 2. รองศาสตราจารยยน ภวรวรรณ คณะวศวกรรมศาสตร มหาวทยาลยเกษตรศาสตร
2
กตตกรรมประกาศ
โครงการพฒนาโปรแกรมโรโบรกนไดรบทนสนบสนนจากโครงการการแขงขนพฒนาโปรแกรม
คอมพวเตอรแหงประเทศไทยครงท 10 จากศนยเทคโนโลยอเลกทรอนกสและคอมพวเตอรแหงชาต
สานกงานพฒนาวทยาศาสตรและเทคโนโลยแหงชาต และสานกงานสงเสรมอตสาหกรรมซอฟแวร
แหงชาต ผจดทาใครขอขอบคณ ศนยเทคโนโลยอเลกทรอนกสและคอมพวเตอรแหงชาต สานกงาน
พฒนาวทยาศาสตรและเทคโนโลยแหงชาต และสานกงานสงเสรมอตสาหกรรมซอฟแวรแหงชาต ในการ
สนบสนน การพฒนาโปรแกรมโรโบรกในครงนเปนอยางสง
ขอขอบคณ รองศาสตราจารยยน ภวรวรรณทไดกรณาใหคาปรกษาในดานแนวคดในการพฒนา
โปรแกรม ตลอดจนสนบสนนการพฒนาโปรแกรมนตลอดมา
นายณชพล กตตกล
3
บทคดยอ
โปรแกรม Robocode เปนโปรแกรมทเปดใหใชไดทวไป (open source) ซงเปนโปรแกรมทใหผใชเปนผออกแบบและโปรแกรมภาษาจาวาเพอพฒนาปญญาประดษฐของหนยนต (artificial intelligence: AI) แลวนามาตอสกบหนยนตตวอนในลกษณะคลายคลงกบรถถงในสนามรบบนโลกเสมอนจรง แตเนองดวยผทสามารถโปรแกรมหนยนตได จาเปนตองมความรภาษาจาวา จงทาใหมผทสามารถใชไดเพยงกลมหนงเทานน
โรโบรก คอโปรแกรมทออกแบบใหกลมเดกและเยาวชน ใหสามารถโปรแกรมและออกแบบปญญาประดษฐใหกบหนยนต Robocode ไดโดยงายผานทางลกษณะของแผนภาพซงจะทาใหเดกและเยาวชน ไดเรยนรหลกการทางานของหนยนต การคานวณ การกาหนดเงอนไข ตรรกศาสตร หลกการการเขยนโปรแกรมเบองตน เปนตน ซงเกดประโยชนแกผใช และสงผลดตอวงการพฒนาหนยนต ของไทย
4
Abstract
Robocode is an open-sourced program which let user to design and code their own tank robot. These robots can fight each other on the simulated battle field. However, since all Robocode programming library is based on Java, users may need to have knowledge on Java programming.
Robo-Rookies is designed for student users to design and program their Robocode robot via simplified graphical programming markup. So, anyone can enjoy and learn from Robocode.
5
บทนา
ในชวงหลายปทผานมาวงการพฒนาหนยนตไทยไดมการเตบโตขนอยางมาก โดยเฉพาะอยางยงในภาคการศกษา ทมการนาเอาหนยนตไมโครคอนโทรลเลอรมาใหนกเรยน นกศกษา และเยาวชนใชในการเรยนรการพฒนาแอปพลเคชนงายๆ ไปจนถงการใชงานในระดบอตสาหกรรม อยางไรกตามในการใชเพอการศกษาระดบพนฐานทวไป หนยนตทนามาใชยงเปนหนยนตทเกรดตา มคณสมบตคอนขางจากด และดแลรกษาลาบาก เนองจากมความจาเปนทจะตองลดตนทนเพอใหภาคการศกษาพนฐานสามารถรองรบได แตถงกระนนกยงเปนมลคาทสงอยด
โรโบโคด (Robocode -http://robocode.sourceforge.net) เปนโปรแกรมแบบเปดเผยซอรสโคด (open source) ทจาลองการตอสของหนยนตในคอมพวเตอร ลกษณะคลางคลงกบรถถงในสนามรบ โดยผใชจะเปนผโปรแกรมหนยนต ในลกษณะของปญญาประดษฐ ดวยภาษาจาวา (Java) แลวจงนาไปตอสกบหนยนตตวอน หรอสามารถตอสกบหนยนตของเพอนได ซงโปรแกรมน มประโยชนทงในเชงสรางสรรค และพฒนาความคด ทงในการสรางรปแบบและกระบวนการคดของหนยนตทมความเปนไปไดอยางหลากหลายไมจากด หนยนตแตละตวจงมเอกลกษณของตนเอง อกทงยงใหความรเกยวกบหลกการการทางานของหนยนต การคานวณ การกาหนดเงอนไข ตรรกศาสตร การเขยนโปรแกรม ฯลฯ อกทงยงไมเสยคาใชจายใดๆ ในดานฮารดแวรและซอฟทแวรทงสน
แตเปนทนาเสยดาย เนองดวยภาษาจาวาเปนภาษาคอมพวเตอรซงผทสามารถโปรแกรมภาษานได จาเปนตองมความรในดานภาษาคอมพวเตอรระดบสง เชนการโปรแกรมเชงวตถ ทาใหกลมผใชของโปรแกรมน ครอบคลมตงแตนกเรยนระดบชนมธยมศกษาตอนปลายทมความสนใจเฉพาะในดานคอมพวเตอร จนไปถงระดบมหาวทยาลย เนองจากเปนเรองยากจงทาใหคนไมอยากเขามาศกษาเรยนร แตจะดแคไหน ถาเราสามารถทาใหโรโบโคดเปนเรองทสามารถเขาใจไดงายและชดเจน ซงจะทาใหโรโบโคดเปนเครองมอทดในการสงเสรมการเรยนร
ซอฟทแวรโรโบรก (Robo-Rookies) คอแอปพลเคชนทจะทาใหการโปรแกรมเปนเรองงาย โดยจะนาเสนอรปแบบการโปรแกรมหนยนตแบบเสมอนโรโบโคด ไมวาจะเปน การทางานของหนยนต วธการคดคานวณตางๆ ของหนยนต การกาหนดเงอนไข หรออนๆ ผานรปแบบของแผนภาพ การลากและวางวตถ (drag and drop) ซงสามารถเขาใจไดงาย และเหมาะกบกลมเดกและเยาวชนทวไป
ดงนนโรโบรกจงเปนโปรแกรมทจะทาใหกลมเดกและเยาวชน สามารถโปรแกรมหนยนตดวยภาษาจาวาไดโดยการใชลากและวางวตถ บนแผนภาพโดยไมตองใชความรทางเทคนคเฉพาะดานมากจนเกนไป อนจะนาไปสประสบการณทดในการเขยนโปรแกรม และสรางความสนใจใหกบเยาวชนเพอศกษาความรเพมเตมในระดบสงตอไป
6
สารบญ
หนา
บทคดยอ 3 Abstract 4 บทนา 5 วตถประสงค 7 รายละเอยดของการพฒนา 7 ทฤษฎ หลกการ เทคนก และเทคโนโลยทใช 7 เครองมอทใชในการพฒนา 8 รายละเอยดซอฟทแวรเชงเทคนก 8 ขอบเขตและขอจากด 11 คณลกษณะของอปกรณทใชกบโปรแกรม 11 กลมผใชโปรแกรม 11 ผลของการทดสอบโปรแกรม 11 ปญหาและอปสรรค 11 แนวทางการพฒนาและประยกตใชในอนาคต 12 ขอสรปและขอเสนอแนะ 12 เอกสารอางอง 12 ภาคผนวก คมอการตดตง คมอการใชงาน
วตถป
- เพอทาง
- เพอหลก
- เพออปก
รายละทฤษฎ
- ทฤผเรสญภาษสอนการ
- ทฤโรโจดห
- อนโรโรป การอยา
ระสงคแล
อใหกลมเดกแงการลากและอใหกลมเดกแกการทวไปขอสงเสรมการกรณทมราคา
ะเอยดขอ หลกการ เ
ษฎทางการเ รยนจะสามารญลกษณภาพทษาการเขยนโนและอธบายรออกแบบภาษฎแผนภาพบรกยงใชแนหมวดหมคาสเตอรเฟซ บรกไดออกแ ขอความ สญรคลก การลาางรวดเรว
ละเปาหมา
และเยาวชนไะวางในลกษณและเยาวชนไของการโปรแรเรยนรดานกาแพง
งการพฒเทคนก แล
รยนร รถเรยนรและทมความเกยโปรแกรมทอยสรางความเขาษาโปรแกรมพความคด (mนวคดพนฐานสงตางๆ เพอ
แบบอนเตอรเญลกษณตางาก เพอใหเปน
าย
ไทย สามารถณะของแผนภไทย สามารเขกรมผานรปแารโปรแกรมห
นา
ละเทคโนโล
ทาความเขาใวของกนไดมออกแบบเปนภขาใจไดงายกมแผนภาพเพmind-map) ของแผนภาพอใหงายตอกา
เฟซของโปรแๆ มการตอบนแอปพลเคช
ถโปรแกรมหนภาพ ขาใจถงหลกกแบบทเขาใจไหนยนตใหกบ
ลยทใช
ใจสงทสามารมากกวา นนจภาพ สามารถกวา ซงโรโบรพอใหเขาใจได
พความคด (mารเขาใจและเ
แกรมใหมควสนองตอการชนทสามารถ
นยนตโรโบโค
การการทางาไดงาย บเยาวชนโดย
รถแสดงออกจงเปนเหตผลถใชในการเรรกไดใชหลกกดงายทสด
mind-map) ใลอกใชอกดว
ามเขาใจไดงรกระทาตางๆเรยนรการใช
คดภาษาจาวา
าน การคานว
ยไมตองเสยค
มาเปนลททาใหยนการการนใน
ในการวย
งาย ผานๆ เชนชงานได
าไดโดยงายผ
วณ โครงสรา
คาใชจายในก
7
ผาน
งและ
การซอ
8
เครองมอทใชในการพฒนา
- Adobe Flash CS3 ใชเพอพฒนาอนเตอรเฟซและเขยนโคดของโปรแกรม
- Adobe Photoshop CS3 ใชเพอสรางภาพประกอบการพฒนาอนเตอรเฟซ
- Java Runtime Environment (JRE) เปนแพลตฟอรมสาหรบการคอมไพลหนยนตทเขยนใหเปนแพคเกจสาหรบใชงานในโรโบโคด และยงเปนแพลตฟอรมทโรโบโคดจาเปนตองใชในการรนอกดวย
- Robocode 1.4 ขนไป เปนโรโบโคดทรองรบไลบราร JuniorRobot ซงโรโบรกใช
- mdm Zinc V2.5 เปนไลบรารสาหรบการอาน/เขยนไฟลของแพลตฟอรมแฟลช
รายละเอยดซอฟทแวรเชงเทคนก
Input/Output Specification - การสรางแผนภาพโปรแกรมจะรบขอมลจากผใชผานเมาสและคยบอรดเปนหลก - การบนทกโปรแกรมแผนภาพ จะบนทกเปนรปแบบซอรสโคดภาษาจาวา - การแปลงซอรสโคดภาษาจาวาออกมาเปนแผนภาพ จะตองเปนซอรสโคดทสรางจากโปรแกรมโรโบ
รกเทานน
Functional Specification - Editor Interface
เปนการรบขอมลจากผใช เพอสรางแผนภาพของโปรแกรมตามทผใชตองการ - Robo-Rookies Pre-compiler
คอสวนททาการแปลงแผนภาพโปรแกรมทผใชสราง เปนซอรสโคดภาษาจาวา เพอเตรยมนาไปคอมไพลอกครงหนง
- Java Source Code Loader การแปลงซอรสโคดภาษาจาวา ออกมาเปนแผนภาพโปรแกรม
- Robocode Launcher เปนสวนททาหนาทเรยกโปรแกรมโรโบโคดขนมาทางานเพอทดสอบโปรแกรม
Softwarเนองดวเปนหลกออกแบบหรอ UM
โปรแกรแตกตาง
- สวนการใชโโปรRooเลอLib
- สวนใหมประ
ทงนสวนของผใช
นอกจากโครงสรา(overheโปรแกร
re Design Sยโรโบรกพฒก และรปแบบบซอฟทแวรจML ไดอยางซ
มจะถกแบงองกนไป ซงหล
นของการเขยรลากวางคาสโครงสรางขอรแกรมทตองokies Pre-coอกทจะเรยกโrary เพอเรยนอนๆ ของโปม ซงทาหนาทะกอบการทา
นตางๆ จะทา จนกวาผใชจ
กน ในสวนขอางเชงวตถขอad) จากการม
Specificatioฒนาอยบนแพบการโปรแกรจงอยบนพนฐซอฟทแวรบน
ออกเปนฉาก ลกๆ แลวจะแ
ยนโปรแกรม สงตางๆ การทมลเชงวตถ (การเรยบรอยompiler และใปรแกรมเกาขกขอมลจากฮปรแกรมทเหทในการรบคงานใหกบสว
างานรวมกนบจะปดโปรแก
องโครงสรางของแพลตฟอรแปลงขอมลไ
on พลตฟอรมแฟรมกไมไดมรปฐานของอนเตนแพลตฟอรม
(scene) ตามแบงออกเปน
(Editor) ซงจทางานในสว(Data Objecยแลว จงนาขใช Zinc Librขนมาจากหนฮารดดสกมาลอ ไมวาจะเาการตงคาตาวนเขยนโปรแ
บนแฟลชแอปรมดงแสดงใน
ขอมลเชงวตถมแฟลชโดยตไปมา และคว
ฟลช ซงเปนแปแบบของกาตอรเฟซเปนหอนๆ ทวไป
มรปแบบของ 2 สวน อนไ
จะเปนหนาทนนจะมงเนนt Model) ขอขอมลเหลานแrary ในการเขนาอน หนานจเปนโปรแกรมเปนหนาเมนหางๆ (configuแกรม (Editor
ปพลเคชนเดนภาพท 1 (ห
ถ (DOM) ขอตรง เพอเพมวามงายในกา
แพลตฟอรมทารโปรแกรมเชหลก และไมส
งแฟลช ซงแตดแก
ทใหผใชสรางโนการรบคาตางโรโบรก หลแปลเปนภาษขยนลงไฟลอจะทาการใชโมโรโบรก หลก หนาปรurations) จาr) อกชนหนง
ยว และสลบหนาถดไป)
องโปรแกรมทมประสทธภาพรพฒนา ปรบ
ทอยบนพนฐาชงวตถ (OOสามารถแจกแ
ตละฉากจะท
โปรแกรมโรโางๆ จากผใชงลงจากทผใชไษาจาวาโดยใชอกครงหนง นโมดล Java L
รบคาตางๆ หกผใช เพอนา
ฉากไปมาตา
ทผใชโคดลงไพในการทางาบปรง และแก
านของอนเตอP) ทชดเจนนแจงออกมาเป
าหนาทตางๆ
โบโคดของตวงานแลวจดจไดทาการสราชโมดล RoboนอกจากนหากLoader และ
หรอหนาสรางาไปเปนขอม
ามการเรยกใช
ไปนน ยงประาน ลดโอเวอกไข (debug)
9
อรเฟซนก การปนวตถ
ๆ
วเองโดยาไวโดยางo-กผใชZinc
งหนยนตมล
ชงาน
ะยกตรเฮด
10
ภาพท 1 : แผนภาพแสดงโครงสรางโปรแกรมโรโบรก
11
ขอบเขตและขอจากด
- ผใชตองเปนผมความรพอสมควรในดานการใชคอมพวเตอรเบองตน - ผใชมความเขาใจวธการทางานของโปรแกรมเบองตนในลกษณะแผนภาพได - ผใชตองทาการลงโรโบโคดและ Java Runtime Environment (JRE) ดวยตนเอง
คณลกษณะของอปกรณทใชกบโปรแกรม
คอมพวเตอรใดๆ ทรองรบแพลตฟอรม Adobe Flash เวอรชน 9.0 ขนไป และรองรบแพลตฟอรม Zinc เวอรชน 2.5 ขนไป
กลมผใชโปรแกรม
เยาวชน นกเรยน นกศกษาทตองการเรยนรการเขยนโปรแกรม แนวคดของการออกแบบปญญาประดษฐ แตไมมความรพนฐานดานภาษาจาวา
ผลของการทดสอบโปรแกรม
จากการทดสอบการตดตงและใชงานโรโบรกบนคอมพวเตอรทใชระบบปฏบตการณ Windows XP ทมการลง Java Runtime Environment และ Robocode 1.4 ไวเรยบรอยแลว พบวาสามารถใชงานตางๆ ตามคณสมบตไดครบถวนสมบรณ
ปญหาและอปสรรค
ไมม
12
แนวทางการพฒนาและประยกตใชในอนาคต
- นาซอฟทแวรชดนไปพฒนาเปนหลกสตรเพอใชในการเรยนการสอนในโรงเรยนทวไป - พฒนาใหสามารถเรยกใชบนเวบเบราวเซอรไดโดยตรง เพอทจะไมจาเปนตองตดตงโปรแกรม - พฒนาใหรองรบคาสงหรอรปแบบการโปรแกรมทเพมมากขนหรอซบซอนขนได
ขอสรปและขอเสนอแนะ
โรโบรก คอซอฟทแวรทชวยใหนกเรยน นกศกษา เยาวชน หรอผสนใจสามารถเขยนโปรแกรมควบคมหนยนตโรโบโคดไดโดยไมจาเปนตองมความรในการเขยนโปรแกรมภาษาจาวา จงเหมาะสาหรบการพฒนาการเรยนรการโปรแกรมใหแกเยาวชน
เอกสารอางอง 1. Derek Franklin, Jobe Makar (2002),Macromedia Flash MX Action Scripting Advanced Trainig From The Source 2. กาพล ลลาภรณ, สรพงษ วระรกษณเดชา (2003), Flash MX ActionScript Inspire, สานกพมพโปรวชน 3. http://robowiki.net/cgi-bin/robowiki Accessed 2 Dec 2007 4. http://computing.net/programming/wwwboard/forum/15532.html Accessed 18 Dec 2007. 5. http://www.adobe.com/devnet/central/articles/regex_03.html Accessed 1 Jan 2008.