http://cubiccreative.org/robocodecamp/#overall
มาร่วมสนุกกับการสร้างสรรค์ปัญญาประดิษฐ์ (AI) ให้แก่รถถังเพื่อชิงชัยในสมรภูมิรบกับ "ค่ายคิวบิกโรโบโค้ด ครั้งที่ 1" ที่น้องๆ จะได้เรียนรู้และสนุกสนานไปกับพี่ๆ ทีมงานคิวบิกครีเอทีฟตลอดระยะเวลา 5 วัน 4 คืนในวันที่ 23 - 27 ตุลาคม 2550 ณ มหาวิทยาลัยเกษตรศาสตร์!
สำหรับเด็ก ม.1 ถึง ม.4 :23: แต่คุณครูก็สมัครได้นะ
รับสมัครถึง 5 ต.ค. ศกนี้ ค่าสมัคร 900 จ่ายเมื่อประกาศว่าติดเท่านั้น
มันเจี่ยมจริงๆ :12:
ที่ชอบก็คงเป็นไอนี้ http://robocode.sourceforge.net/
น่าลองเล่นดูจัง กลับไปห้องจะลองโหลดมาดู
อ้างคำพูดจาก: ^-FakE-^ เมื่อ 18 ก.ย. 2007, 10:41 น.
สำหรับเด็ก ม.1 ถึง ม.4 :23: แต่คุณครูก็สมัครได้นะ
พี่เอก็ไปเป็นอาจารย์ดิ :25:
ได้เหรอ เค้ารับเฉพาะคุณครูนี่นา {หมีโหด}
คุงคูพี่เอ :25:
สมัครไปเป็นพี่เลี้ยงดูแลน้องๆมัธยม เดี๋ยวแต่งชุดเมดไปเลย {หมีโหด}
ว่าจะเอาข่าวนี้มาโพสต์อยู่ครับ กลัวคนไม่สนใจ เดี๋ยวกลายเป็นโฆษณาไปอีก
เฟรมแข่ง Cubic Creative ROBOCODE Tournament 2007 (www.cubiccreative.org/robocode (http://www.cubiccreative.org/robocode)) ด้วยครับ
แล้วก็สมัครเข้าค่ายไปแล้วเรียบร้อย :12:
ใครในนี้จะไปบอกด้วยนะครับ แต่เกมมันสนุก ระทึกมาก (ถ้าเล่นหลายๆคน)
เฟริม :25:
จัดแข่งภายในเลย แต่ที่แน่ๆ มาสอนก่อนเลยเฟรม {หมีโหด}
น่าสนใจแฮะ อยากลองเล่นดู แต่ไม่มีเวลาว่างศึกษาแฮะช่วงนี้
ใครลองเล่นแล้วลองมาอธิบายคร่าวๆได้บ้างป่าว :45:
ได้ครับ เดี๋ยวยังไง จะเขียนวิธีการเล่นให้ ขอเวลาอ่านหนังสือสักครู่ครับ
:22:
1. Intro and Overview
สวัสดีครับ , วันนี้ผมจะมาแนะนำเกมการศึกษา ไม่ได้ขาย แต่ให้โหลดมาลองเล่นครับ ซอฟต์แวร์มีชื่อว่า "Robocode"
ผู้พัฒนาเป็นคนต่างประเทศ คนไทยเอามาจัดการแข่งขัน (ผ่านมาแล้ว) ซึ่งผมเองก็ลงแข่งขัน
เกมนี้เป็นเกมที่จะให้เราเขียนโปรแกรมควบคุมรถถังของเรา เหมือนกับการเขียนมันสมอง AI อะไรประมาณนี้ ให้กับหุ่นยนต์
แล้วเราก็ดูมันสู้กับเพื่อนๆ
โค้ดที่ใช้ในการพัฒนาหุ่นยนต์จะเป็นภาษา Java แต่มันจะมีชุดคำสั่งของมันอยู่
อันดับแรกเราก็จะต้องไปดาวน์โหลดโปรแกรม Java Runtime Environment ก่อนครับที่
http://cubiccreative.org/crnt07/jre-6u1-windows-i586-p-iftw.exe (http://cubiccreative.org/crnt07/jre-6u1-windows-i586-p-iftw.exe)
แล้วก็ Setup อะไรให้เรียบร้อยครับ ขั้นตอนนี้เป็นขั้นตอนที่ระบบจะทำการดาวน์โหลดซอฟต์แวร์มาจากอินเทอร์เน็ตอีกที
และให้โหลดชุดโปรแกรมไปติดตั้งได้เลย มันจะได้ไฟล์นามสกุล ,jar มาไม่ต้องตกใจครับ เพราะเป็นนามสกุลไฟล์ Java
วิธีการติดตั้งก็ให้คลิกขวาที่ไฟล์ แล้วเปิดด้วยโปรแกรม Java ที่เพิ่งโหลดมาได้ทันที
http://downloads.sourceforge.net/robocode/robocode-setup-1.3.5.jar?use_mirror=nchc (http://downloads.sourceforge.net/robocode/robocode-setup-1.3.5.jar?use_mirror=nchc)
โหลดมา ก็ติดตั้งโปรแกรมครับ แล้วก็เข้าโปรแกรม หน้าตามันก็ประมาณนี้
(http://img2.f0nt.com/19/5d0f8d4bdbbbcb93805ebca97eafe44b.jpg)
โปรแกรมมันจะมี 2 ส่วนครับ คือส่วนของการดูการแข่งขัน เป็นหน้าที่ให้เรา add หุ่นยนต์มาเจอกัน ส่วนอีกหน้าหนึ่งคือส่วนของ Code Editor ทำได้
โดยการกด Ctrl+E ครับ ไปที่ Robot > New Robot
(http://img2.f0nt.com/19/7ac803d99407bc364536c1a88f130edb.jpg)
ก็ให้ตั้งชื่อหุ่นยนต์ครับอันดับแรก เป็นตัวอักษรภาษาอังกฤษ ตัวหน้าขึ้นต้นตัวใหญ่ กด OK , ตั้งชื่อ Package (Folder) เป็นตัวพิมพ์เล็กทั้งหมด กด OK
(http://img2.f0nt.com/19/30bf9433e8fd7ffb69731d1bc7f5146d.jpg)
มันก็จะมี Code ให้ยาวเหยียดครับ ต่อไปขอเข้าเรื่องของ Code โปรแกรมเลยครับ
หูวว :45: +
java ลงแต่ตัว runtime เหรอครับ
ไม่ต้องลงตัวคอมไพ ใช่ป่ะ คือแก้โค้ดแล้วคอมไพโดย robot editor เลยเหรอ :25:
อ้างคำพูดจาก: โตน เมื่อ 19 ก.ย. 2007, 10:51 น.
หูวว :45: +
java ลงแต่ตัว runtime เหรอครับ
ไม่ต้องลงตัวคอมไพ ใช่ป่ะ คือแก้โค้ดแล้วคอมไพโดย robot editor เลยเหรอ :25:
ใช่ครับ ตาม Link ที่ผมแปะไว้เลย
เดี๋ยวผมทำ Tutorials เรื่อง Code อยู่ครับ เดี๋ยวจะมีฟังก์ชั่นให้เราเล่นอะไรกันสนุกๆ
สอนให้จบแล้วมาแข่งกันนะ :25b:
บวกเฟรมไปก่อน :27:
:22: น่าสนใจนะ ท่าทางจะไม่ยากเท่าไร น่าสนุกดีด้วย
2. Code
อันดับแรก ใครที่เคยเขียนภาษาอะไรก็ตาม ก็น่าจะพอจับจุดไปได้บ้าง แต่ใครที่ไม่เป็นผมจะพยายามสื่อสารครับ
หลังจากที่เราสร้างหุ่นยนต์ใหม่เสร็จแล้ว มันจะมี Code พื้นฐานให้เราไว้แล้วครับ มาดูกันว่ามีอะไรบ้าง (คลิกดูภาพใหญ่แล้วกันนะครับ)
(http://img2.f0nt.com/thumb/8aa78ffd1ff93e67a93031507b8c1c6b.jpg) (http://img2.f0nt.com/19/8aa78ffd1ff93e67a93031507b8c1c6b.jpg)
หลังจากที่เราทราบแล้วว่า Code ส่วนไหน ทำหน้าที่อะไร เรามาดูฟังก์ชั่นที่เราไว้ใช้แก้ไข Code กันดีกว่า
ฟังก์ชั่นพื้นฐาน
ขออธิบายครับ ฟังก์ชั่นไหนที่มี Left จะมี Right ด้วยเสมอ แล้วแต่จะพลิกแพลงครับ
ahead(x);
เดินตรงไปข้างหน้า x หน่วย (ตัวเลข)
back(x);
ถอยหลัง x หน่วย (ตัวเลข)
turnLeft(x);
เลี้ยวซ้าย x องศา
turnRight(x);
เลี้ยวขวา x องศา
turnGunRight(x);
หมุนปืนไปทางขวา x องศา
ปกติแล้วการหมุนปืน ปืนมันจะพาเรดาร์ ไปด้วยเสมอ การหมุนปืน 1 ครั้ง ก็แทบว่าไม่ต้องสั่งให้เรดาร์หมุนตามเลย
turnRadarLeft(x);
หมุนเรดาร์ไปทางซ้าย x องศา
// อธิบายเพิ่มเติม
ที่ต้องหมุนก็เพราะว่า Radar มันจะไม่มีวันเจอศัตรู และเข้าเหตุการณ์ onScannedRobot ไม่ได้ (เหตุการณ์เมื่อเจอศัตรูแล้วให้ทำอะไร)
ส่วนมาก turnRadarLeft(x); จะไปอยู่ตรงคำสั่ง void Run (ดูรูปภาพข้างบนประกอบ) เพราะชุดคำสั่งนั้น มันเป็นเหตุการณ์ที่วนอยู่ตลอด
ทำให้ เมื่อหุ่นยนต์มันไม่เจออะไร มันก็จะไปหมุนเรดาร์จนกว่าจะเจอ
เทคนิคพิเศษ
- ถ้าเราตั้งค่าของ turnRadar ไว้น้อยๆ มันจะ Scan ได้แม่นยำ และยิงค่อนข้างแม่นด้วย ซึ่งค่ามันก็มีตั้งแต่ 0-360 ครับ
fire(x);
ยิงปืนด้วยความแรงเท่าไร มีขนาด 0-3 แต่อย่าลืมว่า หุ่นยนต์ทุกตัวมีพลังงาน ถ้าหุ่นยนต์ยิงไปด้วยความแรง 3 มันก็จะลด 3 ถ้ายิงโดน มันก็จะเพิ่มพลังงานให้
ตอนนี้พอทราบกันเบื้องต้นครับ คือ Code พื้นฐาน ลองไปประยุกต์ปรับแต่ง Code เดิมกันได้เลยครับ ที่สำคัญ อย่าลืมครับว่า ใช้ฟังก์ชั่นอะไร
อย่าลืมปิดท้ายด้วย ; (เซมิโคล่อน) เสมอครับ
// เพิ่มเติมครับ การที่จะ Save และคอมไพล์ Code ของเรา สามารถทำได้ โดยการกดปุ่ม F6 ครับ
:27: ลืมจริงๆ
พบกันในหัวข้อที่ 3 เรื่องของ IF , ELSE การตัดสินใจของหุ่นยนต์ครับ ช่วงหน้า ห้ามพลาด !!
อ่ะ เอา doc มาแปะไว้ก่อน
http://robocode.sourceforge.net/docs/robocode/
:27:
ใครสนใจมาแข่งกัน ลงชื่อไว้เลยน้า :27:
3. IF , ELSE การตัดสินใจของหุ่นยนต์
แน่นอนครับว่า การทำงานของหุ่นยนต์ นอกจากจะให้มันยิงๆ อย่างเดียวแล้ว คงให้มันตัดสินใจกันบ้างครับ
IF มักจะเห็นทั่วๆไป ในหมู่ของนักเขียนโปรแกรม มันแปลว่า ถ้า
ตัวอย่างสถานการณ์
ถ้า(หุ่นยนต์พลังงานน้อยกว่า 20){
ให้ยิงปืนด้วยความแรง(2);
}
เทียบคำสั่งกับของจริง
if(getEnergy()<20){
fire(2);
}
จากสถานการณ์ข้างต้น น่าจะพอทราบกันแล้วใช่ไหมครับว่า เราจะหากินกับเจ้า IF ได้อย่างไรบ้าง แล้วเราก็ได้รู้คำสั่งใหม่ครับ ที่ไว้ใช้ตรวจพลังงานของเรา
นั่นคือ getEnergy() มันเป็นชุดคำสั่งครับ เราจึงต้องใส่ () ต่อท้าย ลองไปทำเล่นดูกับ Code คุณครับ
โครงสร้างของชุดคำสั่ง IF คือ
if(เหตุการณ์){
คำสั่งที่ให้กระทำเมื่อ[b]เหตุการณ์เป็นจริง[/b];
}
หากมีหลายตัวเลือก เช่น คุณจะทำ Code ที่
ถ้าหุ่นยนต์พลังน้อยกว่า 90 ให้ยิงปืนความแรง 2.5 ถ้าหุ่นยนต์พลังงานน้อยกว่า 60 ให้ยิงความแรง 2 ถ้าต่ำกว่า 40 ให้ยิง 1 และถ้านอกเหนือจากนั้นให้ยิงความแรง 0.5
ให้ลองดูจาก Code ข้างล่างนี้ครับ
if(getEnergy()<90){
fire(2.5);
}else if(getEnergy()<60){
fire(2);
}else if(getEnergy()<40){
fire(1);
}else{
fire(0.5);
}
พอจะเห็นการทำงานของมันหรือยังครับ สังเกตว่ามันมี ELSE เข้าไปเกี่ยวข้องด้วย
เราอาจจะไปประยุกต์ได้หลายอย่างนะครับ เช่นใช้ชุดคำสั่ง getOthers() ที่ดูจำนวนศัตรูที่เหลือในสนาม เช่น
if(getOthers()<3){
turnGunLeft(5);
}
จากกรณีข้างต้นคือ
ถ้าศัตรู เหลือน้อยกว่า 3 ให้สแกนโดยการหมุนปืนให้มันช้าๆลง
หวังว่าคงเข้าใจนะครับ สำหรับเรื่องนี้ จากนั้นก็ลองทดสอบกันได้เลยครับ
บทต่อไปคงเป็นเรื่องเกี่ยวกับฟังก์ชั่นใหม่ๆ ที่ให้เราเลือกใช้ การใช้ทิศทางของตัวเราให้เกิดประโยชน์ , คำสั่งที่วัดระยะทางห่างระหว่างเรากับศัตรู ฯลฯ ห้ามพลาดครับ !!
ตอนนี้ผมขอตัวไปอ่านหนังสือก่อนครับ เดี๋ยวสอบตก :42:
เฟรมเอาพวกเทคนิคในเกมส์ต่างๆ มาฝากด้วยนะ ส่วน coding เนี้ย
ใครมีปัญหาสงสัยสอบถามเพิ่มเติมได้เลยนะครับ ตอบได้จะตอบ ตอบไม่ได้ก็จะตอบ :27:
คุณ Fake สอนผมด้วยนะครับ :25b:
พี่ไม่รู้เรื่องเลย น้องโตนมาสอนพี่หน่อยที่บ้านนะ :25:
แอร๊ยยยยยย :25:
มาเขียน AI กันเถอะ :25:
เล่นแล้ว เฮ่ยย หนุกๆๆๆ :04:
กำหนดการ การปล่อยบทความ Robocode
- เทคนิคพิเศษ ในการเล่น
- ทิศทางของหุ่นยนต์ (Bearing , Heading)
- A synchronize movements (การกระทำเหตุการณ์หลายๆอย่างพร้อมกัน เช่น ตรงไปแล้วเลี้ยวซ้ายด้วย)
- ตัวอย่างโค้ดเทพๆ
กิจกรรม โฟร์ทรอโบคอนต์ (ฟอนต์โรโบโค้ด) อยากให้ทำครับ ส่งโค้ดกันทุกศุกร์ ให้ยักษ์หาของรางวัล(ยศ หรืออะไรก็ได้ ที่ไม่ต้องเสียเงิน เอาของที่มีอยู่มาใช้ให้เกิดประโยชน์ :27:)
- เป็นกิจกรรมที่ฝีกการแก้ปัญหา
- คนจะเขียนโปรแกรมกันมากขึ้น
- สนุก
หาเครื่องแม่ อาจจะเป็นเครื่องยักษ์ในการรันโค้ด แล้วก็ให้ยักษ์เอา Score มาขึ้นไว้ ใน Robocode จะมี สังเกตตอนเล่นเสร็จมันจะมีให้ Save Log อยู่ ดังนั้น ก็เอาตรงนั้นล่ะมาแสดง
ถ้าสนใจโครงการ ผมจะทยอยเอาบทความมาลงแล้วให้ทุกคนมี Code เป็นของตัวเองครับ
และถ้ากระแสดีจริงๆ ผมจะเปิดเว็บ Robocode :43:
อ๊ะ.......... :25: เพิ่งเห็นจู๋นี้....เล่นด้วนคนครับ น่าจะช่วยประเทืองปัญญาเรื่องภาษาจาวาที่จะเรียนในเทอมหน้าด้วย :40:
ป.ล. ถ้าบวกได้บวกให้ไปแล้วนะเนี่ย :25:
อ้าว !! ลงชื่อครับ เดี๋ยวเฟรมแข่งด้วย กำหนดการเอาให้ได้สัก 20 คน (ไหวไหม :44:) แล้วแบ่งสายเจอกันดีกว่า 20 คัดเอา 10
ตอนนี้เท่าที่เห็นมี
^-FakE-^
doyrer
น้องเฟรม
ใครสนใจก็เริ่มได้ครับ เดี๋ยวให้พี่แอนมาดูอีกทีหนึ่ง ว่าจะเอาแบบจริงจังแค่ไหน :34:
ตอนนี้จัดให้ได้ สิบคนก็เก่งแล้วครับ :30:
แต่เราต้องเริ่มครับ เพื่ออนาคตโอเพนซอร์ส :12:
(ไม่ได้เกี่ยวเล๊ย)
10 คนก็ได้ :11:
เป็นอันว่าผมจะรอพี่แอนมาเจิมโครงการอีกทีหนึ่งครับ ระหว่างนี้จะทยอยทำบทความให้ ขอให้ผ่านสอบพรุ่งนี้ไปก่อนครับ
เดี๋ยวผมลุยให้ :12:
เฮ้ย เฮ้ย :39:
พี่แอนรับทราบแล้วเฟรม เริ่มได้เลย {หมีโหด}/
เฟรมนัดส่ง Code ครั้งแรก ศุกร์ที่ 28 ภายในเวลา 22.00 น. และประกาศรายชื่อผู้โชคดีี 1-3 เวลา 22.20 น. ครับ :43:
รางวัล : ??
วิธีการแนบ Code มาให้ดูวิธีการทำเลยครับ :
1. เมื่อสร้างโค้ดที่สามารถ Compile ผ่่านแล้วให้ไปที่หน้าตอนที่เรา add โค้ดเล่นกัน เลือก Robot > Package Robot for upload
(http://img2.f0nt.com/20/867cbd4a380754c048fecbe23d630767.jpg)
2. เพิ่มหุ่นยนต์ที่เราต้องการจะ Export ลงไป
(http://img2.f0nt.com/20/74fc5741b05a0a477d8401cfc2e06f4f.jpg)
3. กด Next
4. ตรง Include Source ไม่ต้องใส่ก็ได้ , ใส่รุ่นของหุ่นยนต์ , ใส่รายละเ้อียดหุ่นยนต์ , ใส่ชื่อหุ่นยนต์ สุดท้าย (ใส่หรือไม่ใส่ก็ได้)สำหรับ ชื่อเว็บไซต์ของผู้พัฒนาหุ่นยนต์
(http://img2.f0nt.com/20/73d4e127fb74b9e0f1eeb449867a4fdb.jpg)
5. คลิก Next
6. เลือกพื้นที่ ที่จะ Export ไฟล์ไปหา
7. กด Package! มันจะไม่มีปฏิกริยาโต้ตอบใดๆ คลิกปุ๊บ เสร้จปั๊บ แล้วแนบไฟล์ใส่ rar ส่่ง Code กันมาได้เลยครับ
แล้วมาลุ้นกันครับ
:46:
ยังไม่สอนเขียนโค๊ดเล๊ย :41:
นอกจากคำำสั่งพื้นฐานที่กล่าวมามันมมีคำสั่งพิเศษอื่นอีกหรือเปล่าครับ :09:
มีครับผม เดี๋ยวผมจะทยอยๆแล้วกันครับ หรือเข้าไปดูก่อนได้เลย ตาม Doc ที่มีคนมาโพสต์ไว้ครับ (ภาษาอังกฤษ)
หรือ เนื้อหาบางส่วน (ภาษาไทย) : http://cubiccreative.org/crnt07/help/index.htm
:46:
ขอบคุณครับ :12: