Oẳn tù tì Từ điển Python
Chắc hẳn bạn đã từng chơi trò chơi Búa, Búa, Kéo một lần. Về cơ bản, hai người chơi giơ nắm đấm, bàn tay úp hoặc hai ngón tay để đại diện cho oẳn tù tì hoặc kéo. Người chiến thắng dựa trên ba quy tắc đơn giản này Show
Trong trường hợp hòa, không ai thắng Trò chơi nhỏ này rất dễ tạo bằng Python bằng cách sử dụng bàn phím để nhập R, P hoặc S hoặc Q để thoát. Người chơi thứ hai là chính chương trình sử dụng trình tạo số ngẫu nhiên để chọn một trong ba kết quả. Trò chơi nhỏ này đôi khi được đưa ra dưới dạng bài tập sớm, nhưng những người mới bắt đầu thường bỏ lỡ một số tính năng thực sự thông minh của Python có thể làm cho trò chơi trở nên thanh lịch và ngắn gọn hơn. Chúng tôi sẽ minh họa các bộ dữ liệu, lớp và lớp con và từ điển trong bài viết đơn giản này Chúng ta có thể bắt đầu bằng cách sử dụng một bộ để biểu diễn ba bước di chuyển có thể moves=("P", "R", "S") #tuple of legal play characters Đây là ba ký tự duy nhất mà người chơi được phép nhập. Vì vậy, chúng tôi có thể tạo một vòng lặp nhập đơn giản lặp lại cho đến khi một trong ba ký tự đó được nhập. Chúng tôi sử dụng phương pháp trên để đảm bảo mục nhập là chữ hoa. Lưu ý rằng mã “chơi theo nước đi” trả về True nếu ký tự được nhập là P, R hoặc S và nếu không thì trả về False
Và, nếu bạn muốn cho phép người chơi nhập “Q” để thoát trò chơi, bạn có thể kiểm tra Q đó và đặt cờ thoát
Như bạn có thể thấy, đây bây giờ là một chức năng. Nhưng tại sao không biến nó thành một phần của lớp học? Bạn có thể nhớ lại rằng các lớp là một phần chính của Python. Các lớp là các thành phần có thể chứa dữ liệu và có thể tồn tại trong nhiều trường hợp với các dữ liệu khác nhau trong mỗi trường hợp. Một lớp người chơiLớp người chơi hoàn chỉnh của chúng tôi có tên của người chơi và một biến chơi chứa lần chơi mới nhất. Nó cũng giữ trạng thái của cờ bỏ và cờ hợp pháp _______3____4____5Vì vậy, như bạn có thể thấy, lớp Player có một phương thức playit đặt biến play thành P, R hoặc S. Nó cũng có thể được đặt thành Q và cờ thoát cho biết đây không phải là một trò chơi thực sự. Lưu ý rằng bộ di chuyển là một biến lớp. Điều này có nghĩa là nó là một phần của tất cả các lớp thuộc loại này và bạn có thể truy cập nó bằng Trình phát. di chuyển Nhưng, còn người chơi kia thì sao? . Vì vậy, chúng ta cần một lớp khác như Player cho trình phát máy tính Như bạn có thể nhớ lại, bạn có thể lấy các lớp mới từ các lớp cũ, vì vậy chúng tôi tạo một lớp AutoPlayer bắt nguồn từ Player. Nó chỉ chứa phương thức playit mới. Tất cả các biến và phương thức khác đều nằm trong lớp Player cơ sở. Vì vậy, lớp AutoPlayer đơn giản của chúng ta chỉ là class AutoPlayer(Player): def __init__(self, name): super().__init__(name) # pass the name into the parent class def playit(self): playval = randint(0, 2) # select 0, 1 or 2 self.play = Player.moves[playval] # get that play from the tuple # print out what it has selected print(self.name + " selects " + self.play) Vì vậy, bây giờ, chúng tôi xem cách chúng tôi có thể viết một vòng lặp để bạn chơi trò chơi player1 = Player("You") player2 = AutoPlayer("Auto") while not player1.quit: #loop until a 'Q' is entered player1.playit() if not player1.quit: player2.playit() Chọn một người chiến thắngNhưng làm thế nào để chúng ta biết ai đã thắng? . Chúng tôi có thể tạo Từ điển về những trường hợp này và thông báo kết quả mà bạn in ra ________số 8Ta chỉ cần kiểm tra hòa và kiểm tra xem ai thắng, bằng cách kết hợp chuỗi cho hai người chơi. Chúng tôi làm tất cả điều này trong một lớp Người chiến thắng, sau đó trả về kết quả. Đầu tiên chúng ta khởi tạo các biến class Winner(): game= {"RS": "rock breaks scissors", "SP": "scissors cuts paper", "PR": "paper covers rock" } def __init__(self, p1, p2): # copy variables into class # to make this simpler to read self.p1 = p1 self.p2 = p2 Lưu ý rằng từ điển trò chơi cũng là một biến lớp Sau đó, phương thức findWin kiểm tra xem có hòa không và nếu không có hòa, nó gọi checkWin để kiểm tra xem p1 thắng p2 hay p2 thắng p1 0Lưu ý rằng lớp Người chơi chứa một phương thức đếmWin làm tăng số người chiến thắng của người chơi đó đã thắng. Sau đó, khi bạn cuối cùng gõ 'Q', chương trình có thể in ra điểm số cuối cùng 1đầu ra cuối cùngĐây là cách chương trình hoạt động 2Tóm lượcChúng tôi đã sử dụng bộ dữ liệu để kiểm tra đầu vào hợp lệ (P, R hoặc S) và sau đó tạo một lớp Người chơi có phương thức playit và chứa biến play chứa ký tự đại diện cho lượt chơi đó. Sau đó, chúng tôi đã tạo một lớp AutoPlayer dẫn xuất có cùng các biến và phương thức bên trong, nhưng trong đó phương thức playit sử dụng hàm số ngẫu nhiên để tạo 0, 1 hoặc 2. Sau đó, chúng được lập chỉ mục vào bộ để tìm ký tự đại diện cho vở kịch đó Cuối cùng, chúng tôi đã tạo một từ điển gồm ba lượt chơi có thể xảy ra và thông báo mô tả các trường hợp chiến thắng và sử dụng lớp Người chiến thắng để tìm xem p1+p2 thắng hay id p2+p1 thắng. Vì vậy, trong ví dụ đơn giản này, chúng tôi đã sử dụng bộ dữ liệu, từ điển, các lớp và lớp dẫn xuất để viết một chương trình trò chơi đơn giản
|