Tag: it

  • PAO YING CHUB in R-Programing

    หลังจากที่ได้เรียน และศึกษาทางด้าน 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))
    • สำหรับส่วนนี้จะเป็นส่วนสำคัญคือการเล่นเกมส์ และการนับจำนวนรอบ โดยสามารถอธิบายได้ดังนี้
    • 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 รอบการแข่งขัน
    • ถ้าหาก คะแนนผู้เล่น มากกว่าให้ประกาศว่าผู้เล่นชนะ
      ถ้าหาก คะแนนบอท มากกว่าให้ประกาศว่าบอทชนะ และ
      หากคะแนนเท่ากันให้ประกาศว่าเสมอกัน