Đăng nhập

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

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.

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