Trò chơi hangman như thế nào
Trong bài viết này chúng tôi sẽ đi tạo một game hangman, đây là một game đơn giản mà bất kỳ một người chơi nào cũng có thể tìm ra từ mà ứng dụng của chúng tôi đã đưa ra bởi việc lựa chọn các chữ cái.
Chúng tôi sẽ sử dụng:
Tổng Quan:
Chúng tôi không dùng authentication/authorisation và không dùng active record để lưu trữ dữ liệu. Tất cả người dùng và trạng thái game sẽ lưu giữ trong session. Code cho bài viết có sẵn trên Github Hands on:Hãy bắt đầu bằng việc tạo một ứng dụng rails và sử dụng -O để loại bỏ Active Record:
Bây giờ trong ứng dụng chúng tôi sẽ xóa đi những thứ không sử dụng: Turbolinks: remove turbolinks từ Gemfile mở file
mở
CoffeeScript: sau khi đã thay đổi, mở terminal và chạy bundle từ thư mục root của ứng dụng để đảm bảo chúng ta không làm hỏng bất cứ thứ gì
bây giờ sẽ bật server để kiểm tra tiến trình mà chúng ta đã thiết lập từ trước. Từ thư mục root của ứng dụng thực thi
Controllers:
Routes: mở file
Model: chúng ta cần tạo ra một lớp Game để giứ trạng thái game (tạo ra một file
trong lớp Game cần làm những việc sau: 1. Xác định số lần lớn nhất của người chơi bị trượt. 2. Giữ những từ đã đoán được 3. Giữ những chữ cái đã được lựa chọn bởi người chơi 4. khởi tạo game 5. Trả lời số chữ cái đoán trượt 6. Trả lời nếu người chơi đoán được từ hay không 7. Trả lời nếu game là kết thúc hay chưa 8. Lựa chọn chữ cái Xác định số lần lớn nhất của người chơi bị trượt: Người chơi không thể cứ tiếp tục lựa chọn chữ cái mãi bởi vì như thế sẽ không phải là một trò chơi mà một bài tập luyện click chuột. Chúng ta phải xác định một gioi hạn số lận đoán trượt. Do đó thêm dòng sau vào lớp Game
Giữ những từ đã được đoán: thêm một attribute accessor cho word
Giữ những chữ cái mà người chơi đã lựa chọn:
Khởi tạo một game:
Giờ tạm thời chúng ta lựa chọn từ Hangman nhưng sau chúng ta sẽ tạo ra một cơ chế cho phép lựa chọn từ ngẫu nhiên từ một nguồn cụ thể. Trả lời số chữ cái đoán trượt:
Ở đây chúng ta lặp qua các chữ cái được lựa chọn và đếm xem có bao nhiêu trong số chúng đã được bao gồm trong từ của game. Trả lời nếu người chơi đã đoán được từ
Ở đây chúng ta chuyển đổi word thành một mảng các ký tự của nó và sau đó chúng ta sẽ loại bỏ những chữ cái được lựa chọn từ mảng này. Nếu kết qủa là empty điều đó có nghĩa là người dùng đã lựa chọn tất cả các chữ cái của từ và người chơi đã đoán được từ. Trả lời nếu trò trơi được kết thúc:
Ở đây chúng ta sẽ trả lời rằng một game đã kết thúc khi đã đạt đén giới hạn số lần đoán trượt hoặc người chơi đã đoán từ thành công. Lựa chọn một chữ cái:
Ở đây chúng ta sẽ phát sinh ra lỗi trong trường hợp game kết thúc. Chúng ta sẽ xử lý lỗi này sau trong controller của chúng ta. Chúng ta sẽ add nhưng chữ cái được lựa chọn trong trạng thái của game. và sẽ đưa ra trả lời là đúng hay sai dựa trên việc có chứa hay không chữ cái này. Chú ý: chúng ta định nghĩa lớp GameOverError ở một nơi nào khác ngoài code của chúng ta là không hợp lệ. bởi vậy hãy thêm dòng sau vào lớp Game
Tiếp tục thêm code sau vào class game
Đã đến lúc chúng ta cấu hình ứng dụng để sử dụng Foundation và Font Awesome để phục vụ cho việc tạo các views Foundation: chúng ta sẽ sử dụng Foundation bởi vì grid linh động tuyệt vời của nó. qua đó sẽ sử dụng thêm một số tính năng hấp dẫn khác (như là các button styles & utilities). đầu tiên cài đặt gem foundation-rails tiếp theo
kế tiếp, thiết lập nó cho ứng dụng thực thi như sau
tiếp đến khi chạy câu lệnh trên terminal có hỏi chúng ta có muốn ghi đè message thì nhấn enter tiếp tục, lúc đó Foundation đã được cài đặt thành công và thiết lập cho ứng dụng. Font Awesome: chúng tôi sử dụng font-awesome bởi vì các icons tuyệt vời của nó và thực tế chúng có thay đổi được kích thước và màu sắc theo quy luật kích thước font và màu sắc của css. đầu tiên chúng ta cần cài đặt gem font-awesome-rails:
thêm dòng sau vào file
Bây giờ chúng ta có thể bắt đầu xây dựng views Welcome page: Giao diện của trang như hình dưới: Thêm code sau tới file
Chúng tôi không sử dụng bất kỳ database nào mà chúng tôi sử dụng session để lưu trữ vì đây là một ví dụ cơ bản để thực hành còn trong các ứng dụng thực thì không nên dùng theo cách này. Do đó mở file
Chú ý: current_game: load và giữ game hiện thời tới biến @current_game. set_current_game: thiết lập cho biến @current_page và tên của game hiện thơi đã được serializer lưu trữ trong sesssion. update_current_game: serialize game hiện thời tới session, chúng ta sẽ sử dụng nó phụ thuộc vào việc người dùng lựa chọn chữ cái. Thay thề file
Reload lại page của trình duyệt Ở đây khi nhấn button "New game" chúng ta chỉ cần tạo ra một game hangman mới, thiết lập session của người chơi giống như là game hiện thời và sau đó chuyển đến page show game. Bởi vậy, xóa đi file phát sinh tự động
|