Tài nguyên của bài · 3 file · 1 KB — tải về rồi tải lên Scratch khi làm theo video
BauTroi.svg, Dan.svg, MayBay.svg
Đăng nhập để tải tài nguyên
Nâng cao · Mức E · Bài 2

Game Bắn máy bay

Mục tiêu: Trò chơi bắn máy bay: tàu bắn đạn, máy bay rơi xuống; trúng thì được điểm, bị đâm thì mất mạng.

Em sẽ học gì

  • Nội dung trong bài: dùng nhân bản để tạo ra rất nhiều viên đạn và máy bay từ một nhân vật.
  • Mỗi bản sao sinh ra, chạy chương trình riêng, rồi tự xoá khi trúng đích hoặc ra khỏi sân khấu.
  • Bắn trúng máy bay thì được điểm, để máy bay đâm vào tàu thì mất một mạng.
Kết quả cần đạt
Kết quả cần đạt: bấm cờ xanh để chạy thử.
183

Bài làm như sau. Trước hết là phông nền bầu trời: chọn Sân khấu ở góc dưới bên phải, rê chuột vào nút Chọn một Phông nền, chọn Tải phông nền lên, chọn file BauTroi.svg: trời xanh có mây, dưới đáy có dải xanh đậm. Viết dòng hướng dẫn chơi lên dải xanh đậm ở đáy: chọn công cụ Văn bản, hình chữ T, chọn màu tô trắng: kéo Độ bão hoà về 0, Độ sáng lớn nhất, bấm gần mép dưới rồi gõ: Di chuột: tàu chạy ngang. Phím cách: bắn.

Bước 1
283

Quay về thẻ Code. Dòng chữ nằm trên phông nền, nên lúc chơi luôn hiện ở đáy sân khấu. Trò chơi này không cần mèo: bấm chuột phải vào mèo, chọn xoá.

Bước 2
383

Thêm tàu của người chơi: bấm nút Chọn một Nhân vật ở góc dưới bên phải, gõ Rocketship vào ô tìm kiếm, rồi chọn con tàu. Đặt tên là Tau, Sân khấu rộng từ âm 240 đến 240 theo chiều ngang x, và từ âm 180 đến 180 theo chiều dọc y. Mèo đứng chính giữa, tại điểm x bằng 0, y bằng 0. đặt ở giữa đáy sân khấu: x bằng 0, y bằng âm 100, kích thước 40 phần trăm cho tàu nhỏ lại. Thêm viên đạn: rê chuột vào nút Chọn một Nhân vật, chọn Tải Nhân vật lên, rồi chọn file Dan.svg. Nhân vật mới tên là Dan. Đặt đạn ngay trên tàu: x bằng 0, y bằng âm 80. Thêm máy bay địch: lại rê chuột vào nút Chọn một Nhân vật, chọn Tải Nhân vật lên, chọn file MayBay.svg. Nhân vật tên là MayBay. Đặt máy bay ở mép trên: x bằng 0, y bằng 150. Tạo biến: chọn nhóm Biến số, bấm Tạo một biến, đặt tên là diem: số máy bay đã bắn trúng. Tạo thêm biến mang: số mạng còn lại, lúc đầu là 3. Hai ô biến hiện ở góc sân khấu.

Bước 3
483

Bây giờ viết khối lệnh. Chọn nhân vật Tau.

Bước 4

Việc cần làm: diem = 0, mang = 3; về giữa đáy; lặp mãi: x của tàu = x của chuột.

583

Sơ đồ thuật toán của tàu: bấm cờ xanh: điểm về 0, mạng bằng 3, tàu về giữa đáy. Rồi lặp mãi: đặt x của tàu bằng toạ độ x của chuột, nên tàu luôn chạy theo chuột.

Bước 5
683

Chọn nhóm Sự kiện, kéo khối: Khi bấm vào cờ xanh,

Giải thích: Khối Khi bấm vào cờ xanh: bấm cờ xanh thì các khối gắn bên dưới bắt đầu chạy.

Bước 6
783

Chọn nhóm Biến số, gắn khối đặt biến thành, chọn diem, giữ số 0,

Bước 7
883

thêm một khối đặt biến thành nữa, chọn mang, gõ 3: lúc đầu có ba mạng.

Giải thích: Khối đặt biến thành gán giá trị cho biến: mỗi ván mới, điểm về 0 và có ba mạng.

Bước 8
983

Chọn nhóm Chuyển động, gắn khối đi tới điểm x y, x bằng 0, y bằng âm 100: tàu ở giữa đáy sân khấu.

Bước 9
1083

Chọn nhóm Điều khiển, gắn khối liên tục,

Bước 10
1183

bên trong, khối đặt x bằng, trong nhóm Chuyển động,

Bước 11
1283

ô số thả khối toạ độ x con trỏ chuột, trong nhóm Cảm biến. Ta vừa làm: điểm về 0, mạng bằng 3, tàu về giữa đáy, rồi lặp mãi chạy theo chuột.

Giải thích: Khối liên tục lặp mãi: mỗi lần lặp, đặt x của tàu bằng toạ độ x của con trỏ chuột, nên tàu luôn chạy theo chuột.

Bước 12
1383
Chạy thử

Chạy thử: bấm cờ xanh, rồi di chuột sang trái, sang phải: tàu chạy theo chuột.

Bước 13
1483

Đến viên đạn. Chọn nhân vật Dan. Thêm tiếng đạn bắn: mở thẻ Âm thanh, bấm nút Chọn một Âm thanh, tìm Pew: tiếng chiu.

Bước 14
1583

Quay lại thẻ Code.

Bước 15

Việc cần làm: ẩn đạn gốc; lặp mãi: đợi bấm phím cách, tạo bản sao, đợi 0,5 giây.

1683

Sơ đồ của đạn gốc. Bấm cờ xanh: đạn gốc ẩn đi, nó chỉ là khuôn để tạo ra các viên đạn. Rồi lặp mãi: đợi đến khi bấm phím cách, tạo một bản sao của đạn, đợi 0,5 giây, rồi lại đợi phím.

Bước 16
1783

Kéo khối Khi bấm vào cờ xanh,

Bước 17
1883

gắn khối ẩn, trong nhóm Hiển thị,

Giải thích: Đạn gốc ẩn đi: nó chỉ là cái khuôn, các viên đạn bay lên là bản sao của nó.

Bước 18
1983

Thêm khối liên tục, trong nhóm Điều khiển,

Bước 19
2083

bên trong, khối đợi đến khi,

Bước 20
2183

điều kiện là khối phím được bấm, trong nhóm Cảm biến: giữ nguyên phím trắng, tức là phím cách,

Giải thích: Khối đợi đến khi dừng ở đây cho tới khi phím cách, Scratch gọi là phím trắng, được bấm.

Bước 21
2283

rồi khối tạo bản sao của chính tôi, trong nhóm Điều khiển,

Giải thích: Khối tạo bản sao của chính tôi tạo ra một viên đạn mới, giống hệt đạn gốc.

Bước 22
2383

và khối đợi, gõ 0,5 giây: giữ phím thì mỗi giây bắn hai viên. Ta vừa làm: đạn gốc ẩn đi, rồi lặp mãi: đợi phím cách, tạo bản sao, đợi 0,5 giây.

Bước 23

Việc cần làm của bản sao: đi tới tàu, hiện ra, bay lên tới mép trên rồi tự xoá.

2483

Sơ đồ của bản sao đạn: đi tới tàu và hiện ra. Chưa tới mép trên thì y tăng 10, bay lên; tới mép trên rồi thì xoá bản sao này.

Bước 24
2583

Kéo khối Khi tôi bắt đầu là một bản sao, trong nhóm Điều khiển,

Giải thích: Khối khi tôi bắt đầu là một bản sao chạy riêng cho mỗi bản sao vừa được tạo ra.

Bước 25
2683

gắn khối đi tới, trong nhóm Chuyển động, chọn Tau: viên đạn xuất phát từ con tàu,

Bước 26
2783

rồi khối hiện, trong nhóm Hiển thị,

Bước 27
2883

Gắn khối đặt âm lượng thành, trong nhóm Âm thanh, gõ 10: tiếng đạn nhỏ lại, chỉ còn 10 phần trăm.

Bước 28
2983

và khối bắt đầu âm thanh, chọn Pew: đạn bắn ra kêu chiu.

Giải thích: Bản sao đi tới con tàu rồi mới hiện ra, vì đạn gốc đang ẩn nên bản sao cũng ẩn theo.

Giải thích: Khối đặt âm lượng thành 10 phần trăm làm tiếng đạn nhỏ lại. Bản sao không giữ âm lượng của đạn gốc, nên ta đặt âm lượng ngay trong bản sao.

Bước 29
3083

Thêm khối lặp lại cho đến khi, trong nhóm Điều khiển,

Bước 30
3183

điều kiện là phép so sánh lớn hơn, bên phải gõ 170,

Bước 31
3283

bên trái thả khối toạ độ y, trong nhóm Chuyển động: lặp cho tới khi đạn lên tới mép trên.

Bước 32
3383

Bên trong, khối thay đổi y một lượng, gõ 10: đạn bay lên.

Giải thích: Vòng lặp có điều kiện: y tăng 10 mỗi lần, lặp cho tới khi toạ độ y lớn hơn 170, tức là đạn lên tới mép trên.

Bước 33
3483

Cuối cùng khối xoá bản sao này, gắn dưới vòng lặp. Ta vừa làm: mỗi bản sao đạn đi tới tàu, hiện ra, kêu Pew nhỏ nhỏ, bay lên tới mép trên rồi tự xoá.

Giải thích: Khối xoá bản sao này để xoá viên đạn khi không cần nữa. Không xoá thì bản sao cứ tích lại, làm đầy bộ nhớ, làm nặng chương trình. Ta cần lưu ý việc xóa này.

Bước 34
3583
Chạy thử

Chạy thử: bấm cờ xanh, giữ phím cách và di chuột: đạn bay lên liên tục, mỗi viên là một bản sao.

Bước 35
3683

Đến máy bay địch. Chọn nhân vật MayBay. Thêm tiếng trúng đạn: thẻ Âm thanh, Chọn một Âm thanh, tìm Zoop.

Bước 36
3783

Quay lại thẻ Code.

Bước 37

Việc cần làm: ẩn máy bay gốc; lặp mãi: tạo bản sao, đợi 1 giây.

3883

Sơ đồ của máy bay gốc: ẩn đi, rồi lặp mãi: tạo một bản sao, đợi một giây. Mỗi giây có thêm một máy bay.

Bước 38
3983

Kéo khối Khi bấm vào cờ xanh,

Bước 39
4083

gắn khối ẩn,

Bước 40
4183

thêm khối liên tục,

Bước 41
4283

bên trong, khối tạo bản sao của chính tôi,

Bước 42
4383

và khối đợi 1 giây. Ta vừa làm: máy bay gốc ẩn đi, rồi cứ mỗi giây tạo thêm một bản sao.

Giải thích: Lặp mãi: cứ mỗi giây, máy bay gốc tạo thêm một bản sao, tức là một máy bay mới.

Bước 43

Việc cần làm của bản sao: xuất hiện ở mép trên, x ngẫu nhiên; rơi xuống; trúng đạn thì cộng điểm, chạm tàu thì trừ mạng; xuống tới đáy thì xoá.

4483

Sơ đồ của bản sao máy bay: hiện ở mép trên, tại x ngẫu nhiên. Chưa xuống tới đáy thì y giảm 4, rơi xuống. Chạm đạn thì điểm tăng 1 và xoá bản sao. Chạm tàu thì mạng giảm 1 và xoá bản sao. Xuống tới đáy rồi cũng xoá bản sao.

Bước 44
4583

Kéo khối Khi tôi bắt đầu là một bản sao,

Bước 45
4683

gắn khối đi tới điểm x y, ô y gõ 170: máy bay xuất hiện ở mép trên,

Bước 46
4783

ô x thả khối lấy ngẫu nhiên, trong nhóm Các phép toán, từ âm 200, đến 200: mỗi máy bay xuất hiện một chỗ.

Bước 47
4883

Thêm khối hiện.

Giải thích: Mỗi bản sao xuất hiện ở mép trên, tại một toạ độ x lấy ngẫu nhiên từ âm 200 đến 200, nên mỗi máy bay rơi một chỗ.

Bước 48
4983

Thêm khối lặp lại cho đến khi,

Bước 49
5083

điều kiện là phép so sánh nhỏ hơn, bên phải gõ âm 170,

Bước 50
5183

bên trái thả khối toạ độ y: lặp cho tới khi máy bay xuống tới đáy.

Bước 51
5283

Bên trong, khối thay đổi y một lượng, gõ âm 4: máy bay rơi xuống.

Giải thích: Vòng lặp có điều kiện: y giảm 4 mỗi lần, máy bay rơi xuống cho tới khi toạ độ y nhỏ hơn âm 170.

Bước 52
5383

Thêm khối nếu, gắn dưới khối thay đổi y,

Bước 53
5483

điều kiện là khối đang chạm, trong nhóm Cảm biến, chọn Dan: máy bay trúng một viên đạn bất kỳ,

Bước 54
5583

thì khối thay đổi biến một lượng, chọn diem, giữ số 1,

Bước 55
5683

khối đặt âm lượng thành, nhóm Âm thanh, gõ 10: như tiếng đạn, bản sao phải tự đặt âm lượng,

Bước 56
5783

khối bắt đầu âm thanh, chọn Zoop,

Bước 57
5883

khối ẩn: máy bay biến mất,

Bước 58
5983

khối đợi 1 giây,

Bước 59
6083

rồi khối xoá bản sao này: máy bay bị bắn hạ.

Giải thích: Đang chạm Dan đúng với mọi bản sao đạn. Trúng đạn thì điểm tăng 1, kêu Zoop, rồi máy bay này bị xoá.

Giải thích: Xoá bản sao thì tiếng của nó cũng tắt theo. Nên máy bay ẩn đi, đợi 1 giây cho tiếng Zoop kêu xong, rồi mới xoá.

Bước 60
6183

Thêm một khối nếu nữa,

Bước 61
6283

điều kiện là khối đang chạm, chọn Tau: máy bay đâm vào tàu,

Bước 62
6383

thì khối thay đổi biến một lượng, chọn mang, gõ âm 1: mất một mạng,

Bước 63
6483

rồi xoá bản sao này.

Giải thích: Máy bay đâm vào tàu thì mạng giảm 1 và máy bay này bị xoá.

Bước 64
6583

Cuối cùng, gắn khối xoá bản sao này dưới vòng lặp: máy bay xuống tới đáy thì xoá. Ta vừa làm: mỗi bản sao máy bay hiện ở mép trên, rơi xuống; trúng đạn thì cộng điểm, đâm vào tàu thì trừ mạng, xuống tới đáy thì xoá.

Giải thích: Máy bay xuống tới đáy mà không trúng gì cũng phải xoá, để không còn bản sao thừa.

Bước 65
6683
Chạy thử

Chạy thử: bấm cờ xanh, giữ phím cách và di chuột theo máy bay: bắn trúng thì ô diem tăng, máy bay biến mất.

Bước 66
6783

Còn phần thua cuộc. Chọn lại nhân vật Tàu. Thêm nhạc thua: thẻ Âm thanh, Chọn một Âm thanh, tìm Lose: đoạn nhạc game over.

Bước 67
6883

Quay lại thẻ Code.

Bước 68

Việc cần làm: đợi đến khi mang < 1 thì nhạc thua, nói Hết mạng!, dừng tất cả.

6983

Sơ đồ phần hết mạng: đợi đến khi mạng nhỏ hơn 1, đặt âm lượng 10 phần trăm, phát nhạc thua, nói Hết mạng! trong 4 giây, rồi dừng tất cả.

Bước 69
7083

Kéo thêm một khối Khi bấm vào cờ xanh,

Giải thích: Tàu có thêm script thứ hai, cũng bắt đầu khi bấm cờ xanh, chạy song song với script thứ nhất.

Bước 70
7183

gắn khối đợi đến khi, trong nhóm Điều khiển,

Bước 71
7283

điều kiện là phép so sánh nhỏ hơn, bên phải gõ 1,

Bước 72
7383

bên trái thả biến mang.

Giải thích: Khối đợi đến khi dừng ở đây cho tới khi mạng nhỏ hơn 1, tức là hết mạng.

Bước 73
7483

Rồi khối phát thông báo, nhóm Sự kiện, Thông báo mới tên hetmang: báo cho máy bay thôi bay,

Bước 74
7583

khối đặt âm lượng thành, nhóm Âm thanh, gõ 10: nhạc thua cũng nhỏ vừa phải,

Bước 75
7683

khối bắt đầu âm thanh, chọn Lose: nhạc thua vang lên,

Bước 76
7783

khối nói trong 2 giây, trong nhóm Hiển thị, gõ: Hết mạng! đổi thành 4 giây: đợi nhạc thua vang hết.

Bước 77
7883

Cuối cùng khối dừng tất cả: hết ván, mọi bản sao cũng bị xoá. Ta vừa làm: đợi đến khi hết mạng thì phát nhạc thua, nói Hết mạng! trong 4 giây rồi dừng tất cả.

Giải thích: Khối dừng tất cả dừng mọi script, và Scratch xoá luôn mọi bản sao còn lại.

Bước 78
7983

Máy bay phải dừng lại khi hết mạng, nếu không chúng vẫn đâm vào tàu, mạng xuống số âm. Chọn nhân vật MayBay.

Bước 79
8083

Kéo khối Khi nhận thông báo, chọn hetmang, chọn hetmang,

Bước 80
8183

gắn khối dừng lại, chọn other scripts in sprite: dừng các script khác, máy bay gốc thôi tạo máy bay mới,

Bước 81
8283

rồi khối xoá bản sao này: các máy bay đang bay biến mất.

Giải thích: Thông báo đến cả máy bay gốc lẫn mọi bản sao: máy bay gốc thôi tạo máy bay mới, các bản sao tự xoá, nên mạng không xuống số âm.

Bước 82
8383
Chạy thử

Xong rồi! Chơi thử một ván: bắn hạ máy bay để ghi điểm. Để máy bay đâm vào tàu ba lần thì hết mạng, trò chơi dừng lại.

Bước 83

Các khối mới trong bài

  • Khối tạo bản sao của chính tôi: tạo thêm một nhân vật giống hệt, chạy cùng các chương trình.
  • Khối khi tôi bắt đầu là một bản sao: chạy riêng cho mỗi bản sao vừa được tạo ra.
  • Khối xoá bản sao này: xoá bản sao khi không cần nữa, tránh tích lại.

Kỹ thuật lập trình đã học

  • Về kỹ thuật lập trình, bài này ta học: nhân bản: một nhân vật gốc, thường ẩn đi, tạo ra rất nhiều bản sao giống nhau.
  • Vòng đời của bản sao: sinh ra, chạy chương trình riêng, rồi tự xoá khi trúng đích hoặc ra khỏi sân khấu.
  • Biến dùng chung: mọi bản sao máy bay cùng cộng điểm và trừ mạng.
  • Và kiểm thử: bắn liên tiếp, nhiều máy bay cùng lúc, không còn bản sao thừa sau khi ra khỏi sân khấu.

Bài tập

Bài tập mở rộng: thêm máy bay mạnh, cần bắn ba phát mới rơi. Mỗi bản sao cần một biến riêng: khi tạo biến, chọn Chỉ nhân vật này.

Hứng táo nâng cao: nhiều màn Làm game Flappy Bird
ZaloCộng đồng hỗ trợ lập trình ScratchCộng đồng hỗ trợ