Trò chơi trắc nghiệm (bài 5)

22/09/2013 16:54

Bạn đã hoàn tất trò chơi trắc nghiệm bằng Flash. Việc cần làm là biên soạn nhiều câu hỏi trắc nghiệm theo dạng thức XML đã biết. Tuy nhiên, nếu có thời gian, bạn có thể thực hiện thêm vài cải tiến nho nhỏ.

Khi hiển thị điểm đạt được qua từng câu hỏi trong trò chơi trắc nghiệm, có lẽ cần cho biết điểm tối đa để người chơi tự đánh giá "thành tích" của mình. Hiện tại, ta cho mỗi câu một điểm, vậy điểm tối đa bằng số câu hỏi có trong tập tin XML. Bạn hãy mở lại tập tin Test.fla trong Flash, bấm vào khung 1 ở lớp Layer 1 và gõ phím F9 để mở cửa sổ Actions – Frame. Trong hàm showQuestion, ở dòng 21, bạn sửa câu lệnh

score.text = s;

thành

score.text = s + " / " + list.length;

Giả sử tập tin XML có 14 câu hỏi và người chơi đạt được 8 điểm, điểm trên màn hình có dạng 8 / 14.

Khi kết thúc trò chơi, nếu bạn muốn tính điểm "trên 10" như điểm trong trường học, ta cần thực hiện đôi chút tính toán. Bạn bấm vào cuối dòng 51, gõ phím Enter để chèn thêm dòng trống (dòng 52) và viết thêm hai câu lệnh như sau trong hàm check, ở dòng 52 và 53:

var pts:Number = (s*10)/list.length();

score.text = s + " / " + list.length() + " = " + pts.toFixed(1) + " / 10";

Trong câu lệnh ở dòng 52, ta lấy trị số của biến s nhân với 10, chia cho số câu hỏi, lưu kết quả vào biến pts (points). Trong câu lệnh ở dòng 53, ta thêm trị số của biến pts vào kết quả, đặt sau dấu = (dấu bằng). Ta viết pts.toFixed(1) thay vì viết pts đơn giản nhằm làm cho trị số của biến pts được chuyển thành trị số chỉ có một ký số thập phân, cho dễ xem. Ví dụ, kết quả 8 / 14 sẽ được trình bày như sau: 8 / 14 = 5.7 / 10;

Trò chơi của ta cũng nên có "màn hình chào" như nhiều trò chơi khác. Màn hình chào dùng để giới thiệu tên trò chơi, người chơi chỉ bắt đầu chơi khi bấm vào màn hình hoặc vào dòng chữ nào đó. Màn hình chào giúp người chơi "chuẩn bị tinh thần" để nhập cuộc.

Để có màn hình chào, ta phải làm cho hàm showQuestion khoan hiển thị câu hỏi khi trò chơi vừa mới khởi động. Bạn bấm vào cuối dòng 11 (ngay trên định nghĩa hàm showQuestion), gõ phím Enter để chèn thêm dòng trống (dòng 12) và viết câu lệnh định nghĩa biến mới:

var hello = true;

Biến hello sẽ đóng vai trò của một "cờ hiệu", trị true của biến cho biết trò chơi đang ở trạng thái "chào", chưa hiển thị câu hỏi.

Ở đầu phần thân của hàm showQuestion, bạn viết câu lệnh điều kiện ở các dòng 14 – 18.

Câu lệnh như vậy ngụ ý rằng: nếu trị của biến hello là true thì hiển thị dòng chữ "Trò chơi trắc nghiệm" trong khung chữ mang tên question và hiển thị câu hướng dẫn "Xin bấm vào đây để bắt đầu" trong khung chữ mang tên a. Câu lệnh return; ở dòng 17 dùng để thoát khỏi hàm showQuestion. Điều này nghĩa là ở trạng thái "chào", hàm showQuestion chỉ hiển thị tên trò chơi và câu hướng dẫn rồi thôi, không làm gì nữa.

Khi người dùng bấm vào câu hướng dẫn, tức là bấm vào khung chữ a, hàm check được gọi. Ta cần sửa hàm check cho thích hợp với "tình hình và nhiệm vụ mới". Trong phần thân của hàm check, bạn viết thêm câu lệnh điều kiện ở các dòng 46 – 50 như hình sau.

Câu lệnh như vậy ngụ ý rằng: nếu trị của biến hello là true (đang ở trạng thái "chào") thì gán trị false cho biến hello (tựa như phất cờ hiệu, thôi "chào"), sau đó gọi lại hàm showQuestion và thoát khỏi hàm check (câu lệnh return; ở dòng 49). Khi trị của biến hello không còn là true, hàm showQuestion bắt đầu hiển thị câu hỏi.

Bạn chú ý, không cần mở chương trình Flash để chạy trò chơi trắc nghiệm, bạn có thể dùng trình duyệt (Internet Explorer, Firefox, Chrome, Opera,...) để mở tập tin Test.swf mà bạn thu được nhờ chương trình Flash (trong trình duyệt, bạn ấn Ctrl + O hoặc chọn File > Open File và tìm chọn tập tin Test.swf trong thư mục nào đó).



NGỌC GIAO

Ý kiến bạn đọc (0)
Tên   Email

Lên đầu trang