Bài 24: Game Xúc Xắc (Dice Simulator)

yanyan

By yanyan

Đăng ngày Tháng 7 24, 2025

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

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.