หลังจากที่ได้เรียน และศึกษาทางด้าน R-Language มาพอสมควร พอมาถึงตอนนี้ได้รับโจทย์ให้ลองเขียน Function สำหรับการเล่นเกมส์ง่ายๆ คือการเป่ายิ้งฉุบ และมีการนับคะแนน แพ้/ชนะ ระหว่างผู้เล่น และ บอท เดี๋ยวเรามาลองดู Function กัน และเดี๋ยวจะมีการอธิบายว่า Code ที่ระบุในแต่ละขั้นตอน ใช้ทำอะไรกันบ้างนะครับ

ภาพด้านบนจะเป็น Code ทั้งหมดที่ผมทำการเขียนเพื่อใช้เรียก Function การเล่นเกมส์นี้
ทีนี้เรามาย่อย และทำความเข้าใจ Code ในแต่ละ กระบวนการกันนะครับ
hand <- c("rock", "paper", "scis")
- code ในบรรทัดแรก จะเป็นการสร้างตัวแปล hand เพื่อใช้ในการเก็บค่าตัวเลือกที่เป็นไปได้ทั้งหมด ในทีนี้คือ ค้อน(“rock”) กรรไกร(“scis”) และกระดาษ(“paper”)
play_game <- function() {
user_score <- 0
Bot_score <- 0
print("Welcome to a New World")
print("Let's Play a game!!")
- code ถัดมาจะเป็นการระบุว่า จะสร้าง Function ที่ชื่อว่า “play_game()” หากพิมพ์ตามนี้จะเป็นการต้อนรับพร้อมกับเปิดการเล่นเกมส์ และนอกเหนือจากนั้น จะมีการนับ Score ด้วย โดยเริ่มต้นใน Score ของผู้เล่น และ บอท เริ่มที่ 0 คะแนนเท่ากัน
for (round in 1:10) {
print(paste0("for_round: ",round))
user_h <- readline("You turn ..and (rock,paper,scis): ")
while(!(tolower(user_h) %in% hand)) {
user_h <- readline("Please choose again (rock, paper, scis): ")
}
bot_h <- sample(hand, 1)
print(paste0("for round bot choose: ",bot_h))
- สำหรับส่วนนี้จะเป็นส่วนสำคัญคือการเล่นเกมส์ และการนับจำนวนรอบ โดยสามารถอธิบายได้ดังนี้
- for (round in 1:10) {
print(paste0(“for_round: “,round))
จะเป็นการวนลูปการเล่น จำนวน 10 รอบ และประกาศว่าอยู่รอบที่เท่าไหร่อยู่ ณ ตอนนี้ - user_h <- readline(“You turn ..and (rock,paper,scis): “)
จะเป็นการขอให้ผู้เล่นป้อนตัวเลือก ว่าจะออก ค้อน กรรไกร หรือ กระดาษ - while(!(tolower(user_h) %in% hand)) {
user_h <- readline(“Please choose again (rock, paper, scis): “)
}
จะเป็นการตรวจสอบว่าตัวเลือกที่ผู้เล่นป้อน ตรงกับตัวเลือกที่ระบุในตอนต้นหรือไม่ (rock, paper, scis) หากไม่ใช่ ผู้เล่นจะต้องป้อนใหม่จนกว่าจะถูกต้อง - bot_h <- sample(hand, 1)
จะเป็นการที่ บอท จะทำการสุ่มตัวเลือก ตามที่มีระบุในตอนต้น (rock, paper, scis) - print(paste0(“for round bot choose: “,bot_h))
เป็นการแสดงตัวเลือกที่คอมพิวเตอร์เลือก
if (tolower(user_h) == bot_h) {
print("Draw")
}
else if ((tolower(user_h) == "rock" && bot_h == "paper") |
(tolower(user_h) == "paper" && bot_h == "scis") |
(tolower(user_h) == "scis" && bot_h == "rock"))
{
print("You lose this round")
Bot_score <- Bot_score + 1
}
else {
print("You win in this round!!!")
user_score <- user_score + 1
}
}
- ส่วนรองสุดท้ายนี้จะเป็นการตัดสินผลแพ้ชนะในแต่ละรอบการเล่น โดยเป็นการกำหนดเงื่อนไขว่า
– หากตัวเลือกที่ผู้เล่นและบอท เลือกเป็นตัวเดียวกัน ประกาศผลว่า เสมอกัน
– หากตัวเลือกที่ผู้เล่นเลือก เป็นฝ่ายแพ้ บอท ประกาศว่า บอทชนะในรอบนั้นๆ
– หากตัวเลือกที่ผู้เล่นเลือก เป็นฝ่ายชนะ บอท ประกาศว่า ผู้เล่นชนะในรอบนั้นๆ
print("Final score")
print(paste0("Your score: ", user_score ))
print(paste0("Bot score: ", Bot_score))
if (user_score > Bot_score) {
print("YOU A WINNER !!!")
} else if (user_score == Bot_score) {
print("DRAW Try Agian")
} else {
print("BOT WINNER !!!")
}
}
- ส่วนสุดท้าย เป็นการแสดงผลคะแนน และประกาศผู้ชนะเมื่อเล่นครบ 10 รอบการแข่งขัน
- ถ้าหาก คะแนนผู้เล่น มากกว่าให้ประกาศว่าผู้เล่นชนะ
ถ้าหาก คะแนนบอท มากกว่าให้ประกาศว่าบอทชนะ และ
หากคะแนนเท่ากันให้ประกาศว่าเสมอกัน

Leave a comment