Mẹo Hướng dẫn Trò chơi hangman ra làm sao Mới Nhất
Hà Huy Tùng Nguyên đang tìm kiếm từ khóa Trò chơi hangman ra làm sao được Cập Nhật vào lúc : 2022-12-06 05:22:04 . Với phương châm chia sẻ Bí kíp về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.Trong nội dung bài viết này chúng tôi sẽ đi tạo một trò chơi hangman, đây là một trò chơi đơn giản mà bất kỳ một người chơi nào thì cũng hoàn toàn 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 những vần âm.
Chúng tôi sẽ sử dụng:
Rails (phiên bản 4): bạn sẽ thấy những gì hoàn toàn khác nếu bạn cài sai phiên bản. Foundation: cho looks & feels Font Awesome: cho icons
Tổng Quan:
Ứng dụng sẽ gồm có 2 trang: 1. Welcome page - khởi đầu một trò chơi mới - tiếp tục trò chơi khi người tiêu dùng sẵn sàng khởi đầu 2. Game page - gallows container - một bộ chứa những vần âm - một bộ chứa những ký tự la tinh - một button để quay trở lại home page và khởi đầu một trò chơi mới
Chúng tôi không dùng authentication/authorisation và không dùng active record để tàng trữ tài liệu. Tất khắp cơ thể dùng và trạng thái trò chơi sẽ lưu giữ trong session.
Code cho nội dung bài viết có sẵn trên Github
Hands on:Hãy khởi đầu bằng việc tạo một ứng dụng rails và sử dụng -O để vô hiệu Active Record:
def guessed? (word.split('') - selected_letters).empty? end 4
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
def guessed? (word.split('') - selected_letters).empty? end 5 và remove đi dòng //=require turbolinks
mở
def guessed? (word.split('') - selected_letters).empty? end 6 và remove đi
def guessed? (word.split('') - selected_letters).empty? end 7
CoffeeScript:
remove đi gem coffee-rails từ Gemfile
sau khi đã thay đổi, mở terminal và chạy bundle từ thư mục root của ứng dụng để đảm bảo tất cả chúng ta không làm hỏng bất kể thứ gì
def guessed? (word.split('') - selected_letters).empty? end 8
giờ đây sẽ bật server để kiểm tra tiến trình mà tất cả chúng ta đã thiết lập từ trước. Từ thư mục root của ứng dụng thực thi
def guessed? (word.split('') - selected_letters).empty? end 9
Controllers:
tạo ra 2 controller là HomeController và GamesController
rails generate controller home index rails generate controller games new show update destroy
Routes: mở file
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 0 và remove tất cả nội dung ở bên trong, sau đó thêm vào những dòng sau:
root to: 'home#index' resource :trò chơi, only: [:new, :show, :update, :destroy]`
Model: tất cả chúng ta cần tạo ra một lớp Game để giứ trạng thái trò chơi (tạo ra một file
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 1 nằm trong thư mục models).
trong lớp Game cần làm những việc sau: 1. Xác định số lần lớn số 1 của người chơi bị trượt. 2. Giữ những từ đã đoán được 3. Giữ những vần âm đã được lựa chọn bởi người chơi 4. khởi tạo trò chơi 5. Trả lời số vần âm đoán trượt 6. Trả lời nếu người chơi đoán được từ hay là không 7. Trả lời nếu trò chơi là kết thúc hay chưa 8. Lựa chọn vần âm
Xác định số lần lớn số 1 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 vần âm mãi chính bới như vậy 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
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 2
Giữ những từ đã được đoán: thêm một attribute accessor cho word
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 3
Giữ những vần âm mà người chơi đã lựa chọn:
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 4
Khởi tạo một trò chơi:
def initialize @word = 'Hangman'.upcase @selected_letters = [] end
Giờ tạm thời tất cả chúng ta lựa chọn từ Hangman nhưng sau tất cả chúng ta sẽ tạo ra một cơ chế được cho phép lựa chọn từ ngẫu nhiên từ một nguồn rõ ràng.
Trả lời số vần âm đoán trượt:
def failed_attempts selected_letters.select letter.size end
Ở đây tất cả chúng ta lặp qua những vần âm được lựa chọn và đếm xem có bao nhiêu trong số chúng đã được gồm có trong từ của trò chơi.
Trả lời nếu người chơi đã đoán được từ
def guessed? (word.split('') - selected_letters).empty? end
Ở đây tất cả chúng ta quy đổi word thành một mảng những ký tự của nó và sau đó tất cả chúng ta sẽ vô hiệu những vần âm được lựa chọn từ mảng này. Nếu kết qủa là empty điều đó nghĩa là người tiêu dùng đã lựa chọn tất cả những vần âm 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:
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end
Ở đây tất cả chúng ta sẽ trả lời rằng một trò chơi đã kết thúc khi đã đạt đén số lượng 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 vần âm:
def select!(letter) raise GameOverError if finished? selected_letters << letter unless selected_letters.include? letter word.include? letter end
Ở đây tất cả chúng ta sẽ phát sinh ra lỗi trong trường hợp trò chơi kết thúc. Chúng ta sẽ xử lý lỗi này sau trong controller của tất cả chúng ta. Chúng ta sẽ add nhưng vần âm được lựa chọn trong trạng thái của trò chơi. và sẽ đưa ra trả lời là đúng hay sai nhờ vào việc có chứa hay là không vần âm này.
Chú ý: tất cả chúng ta định nghĩa lớp GameOverError ở một nơi nào khác ngoài code của tất cả chúng ta là không hợp lệ. thế nên hãy thêm dòng sau vào lớp Game
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 5
Tiếp tục thêm code sau vào class trò chơi
include ActiveModel::Serializers::JSON def attributes word: nil, selected_letters: nil end def attributes=(hash) hash.each do |key, value| send("#key=", value) end end
Đã đến lúc tất cả chúng ta thông số kỹ thuật ứng dụng để sử dụng Foundation và Font Awesome để phục vụ cho việc tạo những views
Foundation:
tất cả chúng ta sẽ sử dụng Foundation chính bới grid linh động tuyệt vời của nó.
qua đó sẽ sử dụng thêm một số trong những tính năng mê hoặc khác (như thể những button styles & utilities).
đầu tiên setup gem foundation-rails
tiếp theo
def guessed? (word.split('') - selected_letters).empty? end 8
sau đó, thiết lập nó cho ứng dụng thực thi như sau
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 7
tiếp đến khi chạy câu lệnh trên terminal có hỏi tất cả chúng ta có mong ước ghi đè message thì nhấn enter tiếp tục, lúc đó Foundation đã được setup thành công và thiết lập cho ứng dụng.
Font Awesome:
chúng tôi sử dụng font-awesome chính bới những icons tuyệt vời của nó và thực tế chúng có thay đổi được kích thước và sắc tố theo quy luật kích thước font và sắc tố của css.
đầu tiên tất cả chúng ta cần setup gem font-awesome-rails:
`gem 'font-awesome-rails'
thêm dòng sau vào file
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 8:
*= require font-awesome`
Bây giờ tất cả chúng ta hoàn toàn có thể khởi đầ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
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 9
Welcome to Hangman!
Chúng tôi không sử dụng bất kỳ database nào mà chúng tôi sử dụng session để tàng trữ vì đây là một ví dụ cơ bản để thực hành còn trong những ứng dụng thực thì tránh việc dùng theo cách này.
Do đó mở file
def select!(letter) raise GameOverError if finished? selected_letters << letter unless selected_letters.include? letter word.include? letter end 0 thêm vào code sau:
class ApplicationController < ActionController::Base protect_from_forgery with: :exception helper_method :current_game def current_game @current_game ||= load_current_game end def set_current_game(trò chơi) @current_game = trò chơi session[:serialized_current_game] = trò chơi.present? ? trò chơi.to_json : nil end def update_current_game set_current_game @current_game end protected def load_current_game Game.new.from_json(session[:serialized_current_game]) if session[:serialized_current_game].present? end end
Chú ý:
current_game: load và giữ trò chơi 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 trò chơi hiện thơi đã được serializer tàng trữ trong sesssion.
update_current_game: serialize trò chơi hiện thời tới session, tất cả chúng ta sẽ sử dụng nó phụ thuộc vào việc người tiêu dùng lựa chọn vần âm.
Thay thề file
def finished? failed_attempts >= MAX_FAILED_ATTEMPTS || guessed? end 9 với code sau:
Welcome to Hangman!
Reload lại page của trình duyệt
Ở đây khi nhấn button "New trò chơi" tất cả chúng ta chỉ việc tạo ra một trò chơi hangman mới, thiết lập session của người chơi in như thể trò chơi hiện thời và sau đó chuyển đến page show trò chơi.
Bởi vậy, xóa đi file phát sinh tự động
def select!(letter) raise GameOverError if finished? selected_letters << letter unless selected_letters.include? letter word.include? letter end 2 và thay đổi action new trong controller games như sau:
Tải thêm tài liệu liên quan đến nội dung bài viết Trò chơi hangman ra làm sao