Trang chủ Bài viết ICT Bài viết hướng dẫn Flash Hướng dẫn thiết kế bài trắc nghiệm bằng Flash - P3

Hướng dẫn thiết kế bài trắc nghiệm bằng Flash - P3

Email In
Xem kết quả: / 16
Bình thườngTuyệt vời 
Trong các bài hướng dẫn thiết kế bài trắc nghiệm trước ( P1, P2 ) ta đã thiết kế một số code sử dụng trong 7 frames và 7 nút, bây giờ ta sẽ lần lượt đề cập và giải thích từng đoạn code cũng theo một tiến trình như khi chúng ta thiết kế, tức là theo từng Frame từ 1 đến 7.

♣Frame 1: layer action:

var MangCauHoi = new Array (
‘Câu hỏi 1|Đáp án 1| Đáp án 2|Đáp án 3|Đáp án 4|Đáp án đúng (đánh số)',
‘Câu hỏi 2|Đáp án 1| Đáp án 2|Đáp án 3| Đáp án 4|Đáp án đúng',
‘Câu hỏi 3|Đáp án 1| Đáp án 2|Đáp án 3| Đáp án 4|Đáp án đúng'
) ;
// Các câu trả lời cách nhau bởi dấu |, cuối cùng là số đúng của đáp án.
// Tạo ngân hàng câu hỏi bằng cách tạo ra một mảng (Array), số câu hỏi không hạn chế.

Mảng (Array) là một phần tử chứa biến với nhiều giá trị khác nhau, nó giống như một ngôi trường lớn, bản thân một ngôi trường có tên riêng nhưng nó lại chứa 3 khối lớp, mỗi khối lại chứa nhiều lớp, mỗi lớp lại có nhiều học sinh khác nhau nhưng toàn bộ các dữ liệu không hề tách rời. Việc sử dụng mảng là rất hữu dụng vì nó cho phép chứa thông tin có liên quan đến nhau, trong một trật tự cụ thể, cho phép tạo chỉ mục (vị trí các phần tử trong mảng, đề cập ở phần bên dưới) đồng thời liên kết các thông tin.

♣Frame 2:

-Layer nut :
on (press) {gotoAndPlay « qt »} ;
// Khi nhấn nút này thì nó sẽ chạy đến và bắt đầu chơi ở Frame qt, cách này cũng tương tự như lệnh on (press) {gotoAndPlay (x)} ; nhưng nếu có chỉnh sửa thì câu lệnh số 1 sẽ hữu dụng hơn câu lệnh số 2 rất nhiều vì nó không phụ thuộc số thứ tự x của Frame.
-Layer action :

stop(); // Lệnh dừng chơi tại Frame này.
var sodiem=0; // Giá trị ban đầu của số điểm.
var sothutu=0; // Giá trị ban đầu của số thứ tự.
var sodung=0; // Giá trị ban đầu của đáp án đúng.
var dkPlay=false; // Khởi tạo biến cho phép trả lời.
var maxCauhoi=MangCauhoi.length; // Số câu hỏi bằng chính độ dài của mảng.
var MangKiemtra=new Array();
20081209_code
♣Frame 3:
-Layer nut : tạo 4 nút cho 4 đáp án, với x=1 ; 2 ; 3 ; 4 ứng với mỗi nút của mỗi đáp án:

on (release, keyPress "x") {
// Kiểm tra hiện có đang cho phép chọn câu trả lời hay không
if (dkPlay) {
if (sodung == x) {gotoAndPlay("dung");} else {gotoAndPlay("sai");}
}
}
// Khi click chuột (nhấn x) vào nút này thì sẽ có sự so sánh giữa đáp án đúng và số thứ tự x của nút, nếu trùng khớp thì cho phép chạy về Frame đúng để tiếp tục, nếu không trùng khớp thì chạy về Frame sai để tiếp tục.

-Layer Hoi_Dap : tạo 6 Dymanic Text là câu hỏi (var : hoi); đáp án 1 (var : dap1) ; đáp án 2 (var : dap2) ; đáp án 3 (var : dap3) ; đáp án 4 (var : dap4) ; số câu đã làm (var : soCau) ; số câu đúng (var : diem).

Dymanic Text là một trường xuất của văn bản, nó lấy giá trị của biến mà ta khai báo (var) và hiển thị trong trường (diện tích ô hình chữ nhật mà ta tạo ra), ta có thể thiết lập các thuộc tính cho biến được hiển thị (sẽ đề cập ở bài sau). Do đó, nếu muốn hiển thị một biến nào đó bạn chỉ cần khai biến, gán cho nó giá trị rồi tạo cho nó một Dymanic Text là được.

-Layer action :

sothutu++; // Số thứ tự tăng dần lên mỗi lần 1 đơn vị
if (sothutu>maxCauhoi) {
gotoAndPlay("kt");
}
// Nếu số thứ tự lớn hơn số câu hỏi thì sẽ chạy về Frame kết thúc.
diem=sodiem; // Số câu đúng là số điểm, giá trị số điểm sẽ có ơ phần sau.
soCau=sothutu - 1 + " / " + maxCauhoi;
// Số câu đã làm bằng số thứ tự - 1 vì số thứ tự bắt đầu từ giá trị 0, bạn có thể sửa lại giá trị ban đầu của số thứ tự là 1 rồi số câu không cần phải -1 nữa, nó được hiển thị dưới dạng số câu đã trả lời / tổng số câu hỏi.

♣Frame 4: layer action :

stop();
// Lấy ngẫu nhiên một câu hỏi từ ngân hàng câu hỏi.
do { socau=Math.floor(Math.random()*maxCauhoi);
} while (MangKiemtra[socau]);
MangKiemtra[socau]=true;
temp=MangCauhoi[socau].split('|');
hoi=temp[0];
dap1=temp[1];
dap2=temp[2];
dap3=temp[3];
dap4=temp[4];
sodung=temp[5];
// Cho phép người chơi click chọn câu trả lời.
dkPlay=true;

Lệnh Math.random(), lệnh này cho phép ta lấy ngẫu nhiên một số từ 0.1 đến 1.0, nhưng thường thì máy không lấy giá trị 1 mà chỉ gần bằng. Một số cách lấy ngẫu nhiên khác:
Math.ramdon()*10; // Lấy ngẫu nhiên từ 0 đến 10.
Math.ramdon()*10+1; // Lấy ngẫu nhiên từ 1 đến 11.
Math.floor(Math.ramdon ()*10+1); // Lấy ngẫu nhiên từ 1 đến 10. Hàm Math.floor cho phép làm tròn số xuống số nguyên gần nhất.

Sau khi lấy ngẫu nhiên thì kiểm tra câu hỏi đã được hỏi chưa bằng cách so sánh với mảng kiểm tra, thông qua số chỉ thị (số trong ngoặc vuông) nếu MangKiemTra[socau] = true tức là câu hỏi đã được hỏi thì phân tích và hiển thị các thành phần của câu hỏi đó lên các Dymanic Text, các câu hỏi ban đầu ta đã soạn được chia là 6 temp ngăn cách bởi các dấu |, bắt đầu từ 0, ta hiển thị các temp vào các Dymanic Text tương ứng thông qua việc gán biến.

♣Frame 5:

-Layer nut :

on (release, keyPress "") {
gotoAndPlay("qt"); }
// Khi nhấp vào nút này (hoặc nhấn Space) thì sẽ quay về Frame qt.

-Layer action :

stop();
dkPlay=false; // Kết thúc.
sodiem+=1; // Ở Frame này số câu đúng được tăng thêm 1 đơn vị.

Như vậy là ta đã hoàn thành việc thiết kế code. Code của các frame 6 và 7 cũng tương tự như 5 frame đã qua. Rất mong sự đóng góp ý kiến của các bạn. Chúc vui vẻ và thành công trong công việc.
//Bạch Dương.

Viết lời bình

avatar Cao Nguyên Giáp
0
 
 
Cảm ơn BD đã giải thích rõ các mã lệnh trong bài trắc nghiệm bằng Flash .
thứ 1:Nhưng tôi thấy nó chỉ phù hợp cho các bài tập không có công thức toán học phức tạp như căn bậc 2,3,,, .
Thứ 2 tôi thấy một số giáo án Flash của thầy Trần Quang Nghĩa (dạy toán) ở trang www.echip.com.vn
soạn rất hay nó chứa cả các công thức toán học
Thứ 3: BD có thể cho tôi biết lệnh with(tencuamc){....} dùng cho trường hợp nào ạ?
Cảm ơn BD rất nhiều và đợi hồi âm
Thứ tư, 17. Tháng 12 2008, 15:43
Phản hồi cho lời bình
B
i
u
Quote
Code
List
List item
URL
Tên của bạn (Bắt buộc) *
Địa chỉ Email (Bạn nên sử dụng địa chỉ thật)
Địa chỉ trang web (Không bắt buộc)
Mã bảo vệ chống spam   
Gửi lời bình
Hủy
avatar Bạch Dương
0
 
 
Rất vui được giúp đỡ!
@ Vấn đề 1: Đồng ý, đây là một câu hỏi lớn!
@ Vấn đề 2: Tôi nghĩ đó chỉ đơn thuần là file ảnh Paste từ Word.
@ Vần đề 3: Khá phức tạp, bạn tham khảo theo link: http://www.vnfx.com/vnfx_assets/asdictionary/Flash/Actionscript_dictionary.htm
Thứ năm, 18. Tháng 12 2008, 17:19
Phản hồi cho lời bình
B
i
u
Quote
Code
List
List item
URL
Tên của bạn (Bắt buộc) *
Địa chỉ Email (Bạn nên sử dụng địa chỉ thật)
Địa chỉ trang web (Không bắt buộc)
Mã bảo vệ chống spam   
Gửi lời bình
Hủy
B
i
u
Quote
Code
List
List item
URL
Tên của bạn (Bắt buộc) *
Địa chỉ Email (Bạn nên sử dụng địa chỉ thật)
Địa chỉ trang web (Không bắt buộc)
Mã bảo vệ chống spam   
Gửi lời bình
Lần cập nhật cuối ( Thứ năm, 25 Tháng 12 2008 20:29 )