Simple Number Guessing Game in R

หนึ่งในวิธีที่จะช่วยเราพัฒนา Coding Skill ได้เร็วที่สุดคือการลองเขียน Simple Program อย่างเกมง่ายๆ แล้วลองเล่นดูว่าโปรแกรมรันได้ถูกต้องหรือเปล่า สำหรับคนที่เพิ่งเริ่มเขียนโค้ดใหม่ๆ ลองเริ่มจากเกมที่กฏง่ายๆก่อน เช่น Number Guessing Game (เกมทายตัวเลข)

Just play. Have fun. Enjoy the game.

— Michael Jordan

บทความวันนี้จะสอนเขียนเกมทายเลขง่ายๆใน R เขียน Code จริงไม่ถึง 20 ไลน์ (เสร็จใน 5 นาที) พร้อมอธิบายการทำงานของ Control Flow ใน R เบื้องต้น เช่น if-else เพื่อสร้างเงื่อนไขในเกม


Simple Game Rules

fun game in R
Picture: https://unsplash.com/photos/EgB1uSU5tRA

สำหรับกฏของเกมนี้ก็ง่ายๆ

  • ทายตัวเลขระหว่าง 1-100
  • ถ้าทายถูก ก็ชนะ จบเกม
  • ถ้าทายผิด โปรแกรมจะบอกว่าเราทายเลขสูงหรือต่ำเกินไป (Hint)
  • ทายซ้ำได้เรื่อยๆ จนกว่าจะถูก
  • ถ้าอยากหยุดเกมแค่กดปุ่ม ESC

Function Anatomy in R

เราสามารถเขียน function ใช้เองใน R ได้ง่ายๆ ด้วย template ด้านล่าง ภายในเครื่องหมายปีกกา {} คือ body ของฟังชั่นที่ R จะรันผลจากบนลงล่างไล่ไปทีละไลน์

function_name <- function() {
    ... body ...
    ... body ...
}

สำหรับ control flow ที่เราใช้ในการเขียนโปรแกรมวันนี้คือ

  • if
  • else
  • repeat
  • break

หลายๆคนน่าจะพอเดาได้ว่า if else ใช้สร้างเงื่อนไข ส่วน repeat เราใช้เพื่อให้โปรแกรมรันซ้ำไปเรื่อยๆจนกว่าเราจะทายเลขถูก และโปรแกรม break ออกจาก repeat loop

ส่วนโครงของ if-else จะหน้าตาแบบนี้ เงื่อนไข (condition) จะเขียนในวงเล็บ

if (condition) {
    ... if TRUE, do something ...
} else {
    ... if FALSE, do something else ...
}

Example Program

ดาวน์โหลดตัวอย่างโค้ด guess_game.R ได้ที่นี่ เพื่อนๆสามารถเปิดไฟล์นี้ขึ้นมาใน RStudio แล้วกด ctrl+shift+enter พร้อมกันเพื่อรันโปรแกรมนี้

guessNum <- function() {
    
    ## print game start
    print("Game Starts!")
    print("Rule: Guess a number between 1 and 100")
    
    ## initialize random number
    hidden_num <- sample(1:100, size = 1)
    
    ## repeat loop 
    repeat { 
    
    ## ask for user input
    n <- as.numeric(readline(prompt = "Enter a number between 1 and 100:"))
        
        ## game rules
        if (n < hidden_num) {               
             print("You're too low!")         
        } else if (n > hidden_num) {
             print("You're too high!")
        } else {
            print("You're right!")
            print(paste("The hidden number is", hidden_num))
            break
        }
    }
}

เวลาเราจะเริ่มเล่นเกม แค่พิมพ์ guessNum() ลงไปใน console แล้วก็เลยทายตัวเลขได้เลย สามารถทายซ้ำได้เรื่อยๆจนกว่าจะทายถูก โปรแกรมจะให้ hint เราว่าเลขที่เราทายนั้นสูงหรือต่ำเกินไป ถ้าเราทายถูกเมื่อไหร่โปรแกรมจะพิมพ์ว่า "You're right!" แล้วก็ break เพื่อจบเกม

Inside of every problem lies an opportunity.

— Robert Kiyosaki

สำหรับมือใหม่เวลาเขียนโปรแกรมใน R จะเจอ error ค่อนข้างบ่อย และปัญหาที่เจอบ่อยสุดเลยคือใส่ {} ไม่ครบ โปรแกรมจะรันไม่ออก ลองเช็คโปรแกรมของเราดีๆก่อนรัน

ข้อดีของการฝึกเขียนโปรแกรมไม่ว่าจะภาษาอะไรก็ตาม ช่วยเรื่องวิธีการคิดอย่างเป็นระบบ รวมถึงช่วยพัฒนา problem solving skill ฝึกเขียนบ่อยๆเดี๋ยวก็เก่งขึ้นเอง ถ้าไม่เลิกไปซะก่อน แฮร่!!


Are You Ready?

COVER

อัพเดทความรู้ใหม่ๆเรื่องสถิติ data science และ programming ฟรีตลอดชีวิตที่ Facebook | Blog | Free Online Courses เก่งขึ้นทุกวัน แค่อ่านบล๊อกเรา อย่าลืมกด see first เพจด้วยน๊า

DataRockie — Get One Percent Better Everyday

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.