Hướng dẫn thực hành làm một game trắc nghiệm trên flash


BƯỚC 1: THIẾT KẾ GIAO DIỆN CHÍNH

Đầu tiên tạo một file mới nhé, kích thước 400x300 (pixel), backgroundmàu trắng (#FFFFFF), tốc độ frame 24fps, vậy là bước khởi tạo đã xong.

Tạo các layer theo thứ tự từ trên xuống đặt tên cho chúng như sau: layAction, laySound, layMessage, layText, layBackground.

- Trên layer layBackground vẽ các ô hình chữ màu trang trí cho đẹp (như file minh họa kèm theo)
- Trên layer layText, vẽ 1 hộp dynamicText 380x45 (pixel), bằng cáchclick vào nút chữ A trên thanh công cụ, click và rê chuột trên Stage đểvẽ vùng chữ nhật đó. Set Property cho nó như sau: var=txtQuestion, fontchữ VNI-Helve size 12, màu đen (#000000), thuộc tính Multiple,Selectable (tùy chọn), Render text as HTML (tùy chọn), ShowBorder (vẽkhung). Tương tự vẽ thêm 4 dynamicText nữa có kích thước 360x18 (pixel)đặt tên lần lượt là var=txtAnswer1, txtAnswer2, txtAnswer3, txtAnswer4.
- Tạo một button hình tròn btnCheck, sao chép nó tnh 4 nút đặt ở đầumỗi ô dynamicText txtAnswer để làm nút cho người chơi nhấn vào để chọncâu trả lời.
- Cũng trên layer layText, vẽ tiếp 2 dynamicText kích thước 100x18, đặtt ên là var=txtNumber và txtScore, có thuộc tính tương tự các ô txtAnswer
- Thêm các chữ minh họa như Câu hỏi:, Câu trả lời, Số điểm của bạn… nhưfile bạn đã thấy. Thiết kế, hiệu chỉnh màu sắc, hình ảnh sao cho hàihòa, mỹ thuật chút xíu.


BƯỚC 2 : VIẾT ACTIONSCRIPT

Trên layer layAction, nhấn F6 để tạo các keyframe, viết AS lên đó và đặt tên lần lượt như sau:

Frame 1, name=Load

Code trên Timeline
ActionScriptstop();
// Ngân hàng câu hỏi. 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
var MangCauhoi=new Array(
    'Tên một quốc gia nằm ở bán đảo Đông Dương|Việt Nam|Thái Lan|Nhật Bản|Ấn Độ|1',
    'TigerCup 2002 được tổ chức tại đâu?|Malaysia|Thái Lan|Indonesia|Campuchia|3',
    'Một nhạc phẩm của Trịnh Công Sơn|Đưa em vào hạ|Một ngày bình yên|Tình đồng chí|Cát bụi|4',
    'Tên một ca khúc bất hủ vào dịp năm mới|Happy New Year|We wish you a merry Christmas|Silent Night|The End of the World|1',
    'Tiểu thuyết viễn tưởng Jurassic Park do ai sáng tác?|Steven Spielberg|Michael Crichton|Hemingway|Không biết|2',
    'Một ngày trọng đại của một Quốc gia|Ngày quốc khánh|Giáng sinh|Ngày quốc tế Lao động|Ngày sinh của bạn|1',
    'Tên một bài thơ của Bà huyện Thanh Quan|Mới ra tù tập leo núi|Qua đèo ngang|Câu cá mùa thu|Chúc Tết|2',
    'Ai đã nói câu Ta thà làm qủy nước Nam còn hơn làm vương đất Bắc?|Trần Hưng Đạo|Trần Nhật Duật|Trần Quốc Toản|Trần Bình Trọng|4',
    'Tác giả của bức tượng đặt trước Ủy ban nhân dân TP.HCM?|Diệp Minh Tuyền|Trà Hoa Nữ|Diệp Minh Châu|Không biết|3',
    'Tên một người mẫu, kiêm diễn viên điện ảnh và ca sĩ?|Trương Ngọc Ánh|Phương Thanh|Hồng Nhung|Thanh Hương|1'
);

Frame 2, name=Reset

Code trên Timeline

ActionScriptstop();
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 Kiemtra, giá trị true là câu đã hỏi rồi, flase là chưa hỏi
for (i=0;iCode cho nút Bắt đầu
ActionScripton (release) {
    gotoAndPlay("Process");
}

Frame 3, name=Process
Code trên Timeline
ActionScriptsothutu++;
if (sothutu>maxCauhoi) {
    gotoAndPlay("Endgame");
}
txtScore=sodiem;
txtNumber=sothutu add " / " add maxCauhoi;

Frame 4, name=Playgame

Code trên Timeline
ActionScriptstop();
// 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('|');
txtQuestion=temp[0];
txtAnswer1=temp[1];
txtAnswer2=temp[2];
txtAnswer3=temp[3];
txtAnswer4=temp[4];
sodung=temp[5];
// Cho phép người chơi click chọn câu trả lời
dkPlay=true;

Code cho nút thứ nhất
ActionScripton (release, keyPress "1") {
    // Kiểm tra hiện có đang cho phép chọn câu trả lời hay không
    if (dkPlay) {
         if (sodung == 1) {gotoAndPlay("Win");} else {gotoAndPlay("Lose");}
    }
}
Code cho nút thứ hai
ActionScripton (release, keyPress "2") {
    // Kiểm tra hiện có đang cho phép chọn câu trả lời hay không
    if (dkPlay) {
         if (sodung == 2) {gotoAndPlay("Win");} else {gotoAndPlay("Lose");}
    }
}
Tương tự cho 2 nút còn lại (thay số 3 và 4). Sau này có thể viết Hàm chỗ này cho gọn và dễ sửa chữa.

Frame 5, name=Win

Code trên Timeline
ActionScriptstop();
dkPlay=false;
sodiem+=100;
Code cho nút Chơi tiếp
ActionScripton (release, keyPress "") {
   gotoAndPlay("Process");
}

Frame 6, name=Lose

Code trên Timeline
ActionScriptstop();
dkPlay=false;
sodiem-=50;
Code cho nút Chơi tiếp
ActionScripton (release, keyPress "") {
   gotoAndPlay("Process");
}

Frame 7, name=Endgame

Code trên Timeline
ActionScriptstop();
dkPlay=false;
txtScore=sodiem;
ActionScripton (release, keyPress "") {
    gotoAndPlay("Reset");
}

BƯỚC 3: HOÀN CHỈNH GIAO DIỆN VÀ GHÉP ÂM THANH
Sau khi giao diện chính được thiết kế, và viết code, thử nghiệm thànhcông, bây giờ là bước thiết kế các giao diện phụ (nằm ở Frame Reset,Win, Lose và Endgame). Trong file kèm theo chỉ là thiết kế đơn giản.Nếu muốn hiệu ứng chuyển động cho đẹp mắt thì cứ tạo các movieclipriêng rồi đặt vào trong Layer nào đó tại các Frame trên.
Thêm âm thanh và nhạc nền vào cho các hiệu ứng của mình. Có thể tạo mộtmovieclip đặt tên movSound riêng chứa tất cả âm thanh vào từng frame,khi nào cần phát nhạc nào thì cứ cho AS sau:
ActionScriptmovSound.gotoAndStop(1) // Hoac 2, 3, 4 gi do hoac dat ten "WinSound", "LoseSound"...

BƯỚC 4 : LÀM LOADING VÀ TEST GAME
Làm một movieclip Loading đặt vào vị trí frame Load, và test tốc độ truyền đồng thời test game luôn.

Bài viết được trích dẫn từ vnfx.

0 nhận xét:

Đăng nhận xét