Bài học này sẽ tiếp tục giúp bạn làm chủ thư viện random
, đồng thời mô phỏng một trò chơi thực tế – xúc xắc. Đây là cơ hội để bạn rèn kỹ năng làm việc với:
- Vòng lặp tương tác
- Luật chơi đơn giản
- Xuất kết quả ngẫu nhiên
- Mô hình hóa nhiều người chơi
🎲 Game Xúc Xắc
Mục tiêu
- Mô phỏng xúc xắc 6 mặt
- Hiển thị kết quả mỗi lần lắc
- Tùy chọn số lần lắc hoặc chơi nhiều lượt
- Mở rộng thành trò chơi thi đấu nhiều người
Phần 1: Mô phỏng xúc xắc cơ bản
import random
def lac_xuc_xac():
return random.randint(1, 6)
print("🎲 Mô phỏng xúc xắc")
while True:
lenh = input("Nhấn Enter để lắc (hoặc nhập q để thoát): ")
if lenh.lower() == "q":
break
ket_qua = lac_xuc_xac()
print(f"👉 Kết quả: {ket_qua}")
Phần 2: Thi đấu 2 người – Ai cao hơn thắng
import random
def lac():
return random.randint(1, 6)
print("🎮 Trò chơi: Ai lắc xúc xắc cao hơn sẽ thắng!")
while True:
input("Người 1 - Nhấn Enter để lắc")
n1 = lac()
print("Người 1 ra:", n1)
input("Người 2 - Nhấn Enter để lắc")
n2 = lac()
print("Người 2 ra:", n2)
if n1 > n2:
print("🎉 Người 1 thắng!")
elif n2 > n1:
print("🎉 Người 2 thắng!")
else:
print("⚔️ Hòa nhau!")
choi_tiep = input("Chơi tiếp? (y/n): ")
if choi_tiep.lower() != 'y':
break
Phần 3: Thi đấu 5 hiệp, ai thắng nhiều hơn sẽ thắng chung cuộc
win1 = 0
win2 = 0
for i in range(1, 6):
print(f"\n🎯 Hiệp {i}")
input("Người 1 - Nhấn Enter")
n1 = lac()
print("Người 1:", n1)
input("Người 2 - Nhấn Enter")
n2 = lac()
print("Người 2:", n2)
if n1 > n2:
win1 += 1
print("➕ Người 1 thắng hiệp này")
elif n2 > n1:
win2 += 1
print("➕ Người 2 thắng hiệp này")
else:
print("⛔ Hòa hiệp")
print("\n===== Kết quả chung cuộc =====")
print(f"Người 1 thắng {win1} hiệp")
print(f"Người 2 thắng {win2} hiệp")
if win1 > win2:
print("🏆 Người 1 chiến thắng!")
elif win2 > win1:
print("🏆 Người 2 chiến thắng!")
else:
print("🤝 Hòa!")
Bài tập nâng cao
- Cho người chơi đặt tên riêng thay vì “Người 1”
- Cho chọn số mặt xúc xắc (6, 10, 20…)
- Lưu kết quả từng hiệp vào file
ketqua.txt
- Làm giao diện bằng Tkinter: nút “Lắc”, ảnh xúc xắc, điểm số trực tiếp
Bạn đã luyện được
- Tư duy luật chơi đơn giản nhưng rõ ràng
- Xử lý lượt chơi, kết quả, chiến thắng
- Dùng
random
,loop
,if – else
hiệu quả - Mô hình hóa người chơi và kết quả từng vòng
Bài cuối cùng của phần này:
👉 Bài 25 – Gỡ lỗi & Debug: Cứu mình khỏi những bug tai quái
Thảo luận