🎯 Mục Tiêu Dự Án: Học Cơ Bản Python, Vòng Lặp và Xử Lý Tập Tin
Trò chơi đoán số là một cột mốc quan trọng cho mỗi lập trình viên mới. Nó đề cập đến những khái niệm cơ bản như gán biến, logic điều kiện (if/elif/else), vòng lặp (while), và (trong phiên bản nâng cao này) xử lý tập tin để lưu điểm cao nhất.
Bài viết này sẽ phân tích logic cốt lõi của một script Python cho trò chơi đoán số đơn giản, thách thức người chơi đoán một số ngẫu nhiên giữa 1 và 100 trong số lần thử ít nhất có thể.
➡️ Bạn có thể tìm thấy mã nguồn đầy đủ, có thể chạy, bao gồm hướng dẫn thiết lập cho tập tin Hi-score.txt, tại đây:
https://github.com/bilal-dev-0x/Number-guessing-game.git
💡 Phân Tích Mã: Các Khái Niệm Chính
Hãy cùng khám phá những mảnh ghép thiết yếu trong logic của trò chơi.
1. Thiết Lập Trò Chơi: Ngẫu Nhiên và Khởi Tạo
Trò chơi bắt đầu bằng việc chọn một số nguyên ngẫu nhiên và thiết lập bộ đếm của chúng ta.
python
import random
n = random.randint(1, 100)
guesses = 0
import random: Chúng ta sử dụng câu lệnh này để đưa vào thư việnrandomtích hợp sẵn của Python.random.randint(1, 100): Dòng này chọn số bí mậtngiữa1 và 100, bao gồm cả hai đầu.guesses = 0: Chúng ta khởi tạo bộ đếm lần thử. Biến này sẽ là chỉ số cuối cùng cho hiệu suất của người chơi và là số mà chúng ta lưu vào tập tin điểm cao.
2. Logic Cốt Lõi: Vòng Lặp Vô Hạn
Vòng lặp trò chơi là trái tim của ứng dụng. Chúng ta sử dụng vòng lặp while True, chạy vô hạn cho đến khi một câu lệnh break được gặp.
python
while True:
guesses += 1
a = int(input("Đoán số: "))
if a == n:
# Thành công và kết thúc trò chơi!
print(f"Bạn đã đoán đúng số trong {guesses} lần thử.")
break
elif a < n:
# Gợi ý cho người chơi
print("Số lớn hơn....Xin vui lòng.")
else:
# Gợi ý khác
print("Số nhỏ hơn....Xin vui lòng.")
while True:: Tạo vòng lặp trò chơi vô hạn.guesses += 1: Tăng bộ đếm mỗi lần đoán.if/elif/else: Đây là logic điều kiện cung cấp phản hồi quan trọng. Nếu đoánađúng, chúng ta in kết quả và sử dụngbreakđể thoát khỏi vòng lặp. Ngược lại, người chơi nhận được gợi ý để điLớn hơnhoặcNhỏ hơn.
3. Đánh Giá Hiệu Suất: Thông Điệp Điều Kiện
Sau khi người chơi thắng và thoát khỏi vòng lặp chính, chúng ta đánh giá điểm số của họ dựa trên một vài tầng đơn giản. Đây là một cách sử dụng tuyệt vời của if/elif/else để cung cấp phản hồi cá nhân.
python
if guesses <= 10:
print("Bạn đã làm điều đó trong một số lần thử....thật tuyệt vời.")
elif 10 < guesses < 20:
print("Bạn đang làm tốt....hãy cải thiện hơn nữa.")
else:
print("Quá nhiều lần thử .... hãy cố gắng giảm số lần thử.")
4. Quản Lý Điểm Cao: Đọc và Ghi Vào Tập Tin
Đây là tính năng mạnh mẽ nhất của script này, giới thiệu Xử lý Tập tin. Nó cho phép chương trình nhớ điểm số tốt nhất ngay cả sau khi nó được đóng và mở lại.
python
# ... trước tiên, đọc điểm cao cũ ...
with open("Hi-score.txt","r") as f:
content = f.read()
# ... sau đó so sánh và có thể ghi đè ...
if int(content) > guesses:
with open("Hi-score.txt", "w") as f:
f.write(str(guesses))
print(f"Điểm cao nhất là {guesses}")
- Đọc
("r" mode)**: Chúng ta mở tập tin **Hi-score.txt** trong **chế độ đọc** để lấy thông tin hiện có. Cấu trúc **with open(...) as f:` là thực hành tốt nhất vì nó đảm bảo tập tin luôn được đóng tự động. - So sánh:
if int(content) > guesses:là logic cốt lõi. Vì điểm số thấp hơn là tốt hơn trong trò chơi này, chúng ta kiểm tra xem điểm cũcontentcó phải là một số lớn hơn (điểm tệ hơn) so với điểm hiện tạiguesseskhông. - Ghi
("w" mode)**: Nếu chúng ta đánh bại kỷ lục, chúng ta mở tập tin trong **chế độ ghi** **("w")**, điều này **ghi đè** nội dung cũ bằng điểm số mới, thấp hơn. Chúng ta phải chuyển đổi số nguyên **guesses** trở lại thành chuỗi bằng **str(guesses)` trước khi ghi nó vào tập tin văn bản.
Trò chơi đơn giản này bao gồm các trụ cột lập trình cốt lõi và cung cấp một nền tảng tuyệt vời để xây dựng các dự án phức tạp hơn!
Hãy tiến hành và fork kho lưu trữ, chạy mã, và cố gắng phá kỷ lục cao nhất của chính bạn!
➡️ Tìm thấy toàn bộ script Python và hướng dẫn thiết lập tại đây: https://github.com/bilal-dev-0x/Number-guessing-game.git