เมื่อวานเพิ่งเรียน PYTHON มาสดๆ จาก Data Science Bootcamp 11
อาจารย์ทอยให้การบ้าน “เขียน เกม เป่า ยิ้ง ฉุบ”
ไหนๆ ก็ต้องส่งการบ้านอยู่แล้ว เลยอยากเอามาแชร์ทุกคน
ไปลุยกันเลยฮะ 😁🔥
ขั้นตอนแรกผมต้องมานั่งคิดก่อน ว่า logic ของเกมส์จะต้องมีอะไรบ้าง
พยายามแบ่งเป็นส่วนย่อยๆ จะได้ง่ายต่อการทำ (Modular)
ผมแบ่งออกเป็นส่วนๆ ดังนี้
เขียนการสุ่มออก “ค้อน, กรรไกร, กระดาษ”
เขียน function ให้ระบบทำการสุ่มออก “ค้อน, กรรไกร, กระดาษ”
โดยตั้งชื่อเป็น get_random_action()
import random
def get_random_action() :
actions = [ 'ค้อน', 'กรรไกร', 'กระดาษ' ]
return random.choice(actions)
เขียนเงื่อนไขการแพ้-ชนะ
เขียน function ให้ระบบคำนวณผลแพ้-ชนะ ในแต่ละรอบ
โดยตั้งชื่อเป็น determine_winner
ใช้ if ในการเช็คเงื่อนไขต่างๆ ดังนี้
player = ผู้เล่น
com = ระบบ
การแพ้-ชนะ
| player | com | result |
|---|---|---|
| ออกเหมือน com | ออกเหมือน player | เสมอ |
| ค้อน | กรรไกร | player ชนะ |
| กรรไกร | กระดาษ | player ชนะ |
| กระดาษ | ค้อน | player ชนะ |
| … | … | เคสอื่นๆ player แพ้ทั้งหมด |
def determine_winner(player, com) :
if player == com :
return "เสมอ"
elif ( player == 'ค้อน' and com == 'กรรไกร' ) or \
( player == 'กรรไกร' and com == 'กระดาษ' ) or \
( player == 'กระดาษ' and com == 'ค้อน' ) :
return "ชนะ"
else :
return "แพ้"
เขียน Loop ให้ระบบทำงาน
เขียน while loop ให้ระบบทำงาน โดยจะให้ผู้เล่น เล่นเกมไปเรื่อยๆ
ในแต่ละรอบจะมีการแสดงว่า com ออก “ค้อน, กรรไกร หรือ กระดาษ”
และสรุปผลการแพ้-ชนะ
กรณีที่ผู้เล่น พิมพ์ผิด ให้ระบบแจ้งเตือนว่า
“เลือกไม่ถูกต้อง. โปรดเลือก (ค้อน, กรรไกร, กระดาษ)”
หากต้องการหยุดเล่น ให้พิมพ์ “ออก” ระบบจะสรุปผลการเล่นและออกจากเกมส์
results = []
player = ""
while player != 'ออก' :
player = input( "โปรดเลือก (ค้อน, กรรไกร, กระดาษ) : " )
com = get_random_action()
if player in [ 'ค้อน', 'กรรไกร', 'กระดาษ' ] :
result = determine_winner(player, com)
print( f"คอมฯออก: {com}" )
print( result + "\n" )
results.append(result)
elif player == 'ออก' :
print( "จบเกม" )
else:
print( "เลือกไม่ถูกต้อง. โปรดเลือก (ค้อน, กรรไกร, กระดาษ) \n" )
continue
if player == 'ออก' :
break
count_win = results.count( 'ชนะ' )
count_draw = results.count( 'เสมอ' )
count_lose = results.count( 'แพ้' )
print( 'สรุปผลการแข่งขัน' )
print( f"ชนะ : {count_win}" )
print( f"เสมอ : {count_draw}" )
print( f"แพ้ : {count_lose} \n" )
ไปลองเล่นกันเลย
ผมเขียน python ใน google colab ใครสนใจไปลองเล่นดูได้ครับ
ขอบคุณทุกคนที่เข้ามาอ่านนะครับ หวังว่าจะเป็นประโยชน์ 😅


Leave a comment