Tải bản đầy đủ (.docx) (7 trang)

HUONG DAN LAM FLASH TRAC NGHIEM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (220.92 KB, 7 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>HƯỚNG DẪN LÀM FLASH TRẮC NGHIỆM</b>



Nhờ kĩ thuật đo lường tổng quát khả năng học tập một cách đáng tin cậy, phương pháp trắc nghiệm
khách quan đã sớm được đưa vào giáo dục, và hiện nay hình thức trắc nghiệm đang được sử dụng rất
phổ biến. Bài hướng dẫn này sẽ giúp các bạn thiết kế một bài trắc nghiệm bằng chương trình Flash 8,
nhằm phục vụ cho việc giảng dạy, học tập và củng cố kiến thức.Bạn có thể sử dụng Flash để thiết kế
một bài trắc nghiệm có nhiều chức năng.


Trong phạm vi bài viết tôi sẽ hướng dẫn bạn thiết kế một vài chức năng cơ bản, bản thân bạn có thể tự
tìm hiểu và thiết kế thêm cho mình các chức năng khác nhằm phục vụ hiệu quả cho công việc.


Đầu tiên, chúng ta sẽ mở một file Flash mới (New Flash Document), đặt tên là soanCauTracNghiem.fla
gồm 5 layer (từ trên xuống): nut (chứa các biểu tượng nút), Hoi_Dap (chứa các câu hỏi và câu trả lời),
loiBinh (chứa các đánh giá dành cho lựa chọn của người làm trắc nghiệm), nen (chứa các đối tượng
tĩnh) và cuối cùng là action (chứa các mã lệnh điều khiển hoạt động của tất cả các đối tượng).


Trong phạm vi bài viết này tôi sẽ hướng dẫn các bạn thiết kế (không giải thích mã lệnh cũng như cách
tạo ra các đối tượng) một bài trắc nghiệm gồm một số chức năng cơ bản như: có thư viện câu hỏi, lấy
ngẫu nhiên câu hỏi trong thư viện, có đảo thứ tự các câu hỏi sau mỗi lần làm, cho biết số câu đã làm
và số câu làm đúng trên tổng số câu sau khi kết thúc....


Để thiết kế bài trắc nghiệm này chúng ta sẽ sử dụng 7 Frames trên Timeline, nên tôi sẽ lần lượt hướng
dẫn bạn thiết kế theo từng Frame của từngLayer, những Frame trống trên mỗi Layer (màu trắng) tôi sẽ
bỏ qua và khơng đề cập đến.


<b>• Frame 1:</b>


-Layer loiBinh : đặt tên là load ở bảng Properties.


-Layer action : tạo ngân hàng câu hỏi bằng cách nhập đoạn code sau (đứng tại layer nhấn F9), mỗi câu
hỏi có 4 đáp án trả lời, câu hỏi và các đáp án nằm trong dấu nháy đơn, cách nhau bằng dấu sổ dọc, số


câu hỏi không hạn chế:


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',


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>• Frame 2:</b>


-Layer loiBinh : đặt tên là reset.


-Layer nut : tạo một nút để bắt đầu bài trắc nghiệm, chọn nút nhấn F9 và nhập đoạn code :
on (press) {gotoAndPlay « qt »} ;


-Layer nen : tạo chữ bắt đầu hay một câu đại loại để dẫn dắt vào bài trắc nghiệm.
-Layer action : nhập đoạn code :


stop();


var sodiem=0;
var sothutu=0;
var sodung=0;
var dkPlay=false;


var maxCauhoi=MangCauhoi.length;
var MangKiemtra=new Array();


// Khởi tạo mảng kiểm tra, giá trị true là câu đã hỏi rồi, flase là chưa hỏi


<b>• Frame 3:</b>



-Layer loiBinh : đặt tên là qt.


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

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");}
}


}


-Layer Hoi_Dap : tạo 6 Dynamic Text bằng cách sử dụng công cụ Text, vào bảng Properties chọn
Dymanic Text rồi click giữ chuột trái và kéo ra các trường text hình chữ nhật kích thước tùy ý. Ta cần
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). Tạo lời bình
[Chọn câu trả lời].


-Layer nen : tạo tên gọi và khung viền trang trí cho các Dymanc Text vừa tạo.
-Layer action : nhập đoạn code :


sothutu++;


if (sothutu>maxCauhoi) {
gotoAndPlay("kt");
}


diem=sodiem;



soCau=sothutu - 1 + " / " + maxCauhoi;


<b>♦ Frame 4:</b>


-Layer loiBinh : F6 (Insert KeyFrame - tạo frame mới có nội dung giống Frame trước) rồi xuống bảng
Properties đặt tên là lam.


-Layer nut : F5 (Insert Frame - tiếp theo Frame trước).
-Layer Hoi_Dap : F5 - Layer nen : F5.


-Layer action : nhập đoạn code :
stop();


// Lay random mot cau hoi chua duoc hoi
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;


<b>♦ Frame 5:</b>


-Layer loiBinh : đặt tên là dung và viết lời bình [Chính xác !].
-Layer Hoi_Dap : F5 - Layer nen : F5.


-Layer nut : tạo nút trả lời đúng, chọn nút nhấn F9 và nhập đoạn code :
on (release, keyPress "") {


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

-Layer action : nhập đoạn code :
stop();


dkPlay=false;
sodiem+=1;


<b>♦ Frame 6:</b>


-Layer loiBinh : đặt tên là sai và viết lịi bình [Khơng chính xác !].
-Layer Hoi_Dap : F5 - Layer nen : F5.


-Layer nut : tạo nút trả lời sai, chọn nút nhấn F9 và nhập đoạn code :
on (release, keyPress "") {


gotoAndPlay("qt");}
-Layer action :
stop();


dkPlay=false;



</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

-Layer loiBinh : đặt tên là kt.


-Layer nut : tạo nút thực hiện lại bài trắc nghiệm, chọn nút nhấn F9 và nhập đoạn code :
on (release, keyPress "") {


gotoAndPlay("reset"); }


-Layer Hoi_Dap : tạo 1 Dynamic Text số câu đúng (var : diem).


-Layer nen : tạo tên gọi và khung viền trang trí cho các Dymanc Text vừa tạo.
-Layer action :


stop();
dkPlay=false;
diem=sodiem;


Như vậy là đã kết thúc bài hướng dẫn. Q Thầy Cơ và các bạn có thể làm thử. Rất mong sự góp ý của
q Thầy Cơ và các bạn. Chúc thành công và vui vẻ trong công việc.


<b>Trong các bài hướng dẫn thiết kế bài trắc nghiệm trước ( P1, P2 ) ta </b>


<b>đã thiết kế một số code sử dụng trong 7 frames và 7 nút, bây giờ ta </b>


<b>sẽ lần lượt đề cập và giải thích từng đoạn code cũng theo một tiến </b>


<b>trình như khi chúng ta thiết kế, tức là theo từng Frame từ 1 đến 7.</b>



<b>♣Frame 1: layer action:</b>


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 tồ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.


<b>♣Frame 2:</b>


-Layer nut :


on (press) {gotoAndPlay « qt »} ;


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

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();


<b>♣Frame 3:</b>


-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.


<b>♣Frame 4: layer action :</b>


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;


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

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.


<b>♣Frame 5:</b>


-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.


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×