Nâng cao · Mức E · Bài 5

Hứng táo nâng cao: nhiều màn

Mục tiêu: Trò chơi Hứng táo nhiều màn: Menu, Màn 1, Màn 2, Thắng hoặc Thua; chuyển màn bằng thông báo.

Em sẽ học gì

  • Nội dung trong bài: thiết kế các trạng thái của trò chơi: Menu, hai màn chơi, thắng hoặc thua.
  • Chuyển màn bằng thông báo: phát thông báo màn 2, các nhân vật nhận được thì sang màn mới.
  • Biến man giữ số màn: mỗi màn một phông nền, màn sau táo rơi nhanh hơn.
Kết quả cần đạt
Kết quả cần đạt: bấm cờ xanh để chạy thử.
186

Ở cấp Cơ bản ta đã làm trò chơi Hứng táo một màn. Bài này nâng cấp nó: có Menu, hai màn chơi, thắng hoặc thua, chuyển màn bằng thông báo. Bài làm như sau. Trước hết là phông nền cho từng màn: chọn Sân khấu ở góc dưới bên phải,

Bước 1
286

mở thẻ Phông nền. Phông trắng này dùng làm màn hình Menu, chọn công cụ Văn bản, hình chữ T, bấm phía trên giữa sân khấu rồi gõ: Hứng táo, bấm nút để bắt đầu.

Bước 2
386

Quay về thẻ Code.

Bước 3
486

Phông nền Màn 1: bấm nút Chọn một Phông nền ở góc dưới bên phải, gõ Blue Sky, rồi chọn bầu trời xanh.

Bước 4
586

Phông nền Màn 2: lại bấm nút Chọn một Phông nền, gõ Stars, rồi chọn bầu trời sao. Đến các nhân vật. Chọn mèo, mèo là người chơi, đặt tên là Meo, kích thước 60 phần trăm.

Bước 5
686

Thêm quả táo: bấm nút Chọn một Nhân vật, gõ Apple vào ô tìm kiếm, rồi chọn quả táo. Đặt tên là Tao.

Bước 6
786

Thêm nút bắt đầu: lại bấm nút Chọn một Nhân vật, gõ Button2, rồi chọn cái nút. Đặt tên là Nut, 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 nút dưới dòng chữ Menu: x bằng 0, y bằng âm 40. Tạo biến: chọn nhóm Biến số, bấm Tạo một biến, đặt tên là man: số màn đang chơi. Tạo biến diem: số táo hứng được, và biến mang: số mạng còn lại, lúc đầu là 3. Trước khi viết khối lệnh, vẽ sơ đồ trạng thái. Trò chơi bắt đầu ở Menu, bấm nút thì sang Màn 1. Ở Màn 1, đủ 3 điểm thì sang Màn 2, táo rơi nhanh hơn. Đủ 6 điểm thì thắng. Hết mạng ở màn nào cũng thua. Mỗi mũi tên là một điều kiện để chuyển màn. Sân khấu sẽ điều khiển việc chuyển màn. Chọn lại Sân khấu.

Bước 7

Việc cần làm: bấm cờ xanh: phông Menu; man = 0, diem = 0, mang = 3.

886

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

Bước 8
986

Nhóm Hiển thị: gắn khối đổi phông nền thành, chọn backdrop1: phông Menu có dòng chữ.

Giải thích: Bấm cờ xanh thì trò chơi luôn bắt đầu ở trạng thái Menu: phông trắng có dòng chữ.

Bước 9
1086

Nhóm Biến số: gắn khối đặt biến thành, chọn man, giữ số 0: Menu là màn số 0,

Bước 10
1186

thêm khối đặt biến thành, chọn diem, giữ số 0,

Bước 11
1286

thêm một khối nữa, chọn mang, gõ 3. Ta vừa làm: bấm cờ xanh thì hiện phông Menu, đặt man, diem về 0 và mang bằng 3.

Giải thích: Ba khối này đặt lại mọi biến: lần chơi nào cũng bắt đầu giống hệt lần đầu.

Bước 12
1386

Đến cái nút. Chọn nhân vật Nut.

Bước 13

Việc cần làm: bấm cờ xanh thì hiện nút; bấm vào nút thì ẩn nút, phát thông báo màn 1.

1486

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

Bước 14
1586

gắn khối hiện, trong nhóm Hiển thị.

Giải thích: Ở Menu, nút hiện ra để người chơi bấm.

Bước 15
1686

Kéo khối Khi bấm vào nhân vật này, trong nhóm Sự kiện, đặt bên dưới,

Bước 16
1786

gắn khối ẩn: bấm xong thì nút biến mất,

Bước 17
1886

rồi khối phát thông báo, trong nhóm Sự kiện, bấm vào ô thông báo, chọn Thông báo mới, đặt tên là màn 1. Ta vừa làm: bấm cờ xanh thì nút hiện ra; bấm vào nút thì nút ẩn đi và phát thông báo màn 1.

Giải thích: Khối phát thông báo màn 1 báo cho mọi nhân vật và sân khấu biết: chuyển sang Màn 1.

Bước 18
1986
Chạy thử

Chạy thử: bấm cờ xanh, Menu hiện ra cùng cái nút. Bấm vào nút: nút biến mất.

Bước 19
2086

Ai nhận thông báo màn 1? Chọn lại Sân khấu.

Bước 20

Việc cần làm: nhận màn 1: man = 1, phông Blue Sky; đợi đến khi diem = 3; man tăng 1, phát màn 2.

2186

Kéo khối Khi nhận thông báo, trong nhóm Sự kiện, chọn màn 1,

Giải thích: Khối Khi nhận thông báo chạy các khối bên dưới khi có ai đó phát thông báo màn 1.

Bước 21
2286

gắn khối đặt biến thành, chọn man, gõ 1: đang ở Màn 1,

Bước 22
2386

gắn khối đổi phông nền thành, trong nhóm Hiển thị, chọn Blue Sky.

Giải thích: Mỗi màn một phông nền, người chơi nhìn là biết đang ở màn nào.

Bước 23
2486

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

Bước 24
2586

điều kiện là phép so sánh bằng, bên phải gõ 3,

Bước 25
2686

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

Giải thích: Khối đợi đến khi dừng ở đây cho tới khi diem bằng 3: đó là điều kiện chuyển sang Màn 2.

Bước 26
2786

Rồi khối thay đổi biến một lượng, chọn man, giữ số 1: man thành 2,

Bước 27
2886

và khối phát thông báo, trong nhóm Sự kiện, chọn Thông báo mới, đặt tên là màn 2. Ta vừa làm: nhận màn 1 thì man bằng 1, đổi phông. Đủ 3 điểm thì man tăng 1, phát thông báo màn 2.

Giải thích: man tăng thêm 1 thành 2, rồi phát thông báo màn 2 cho mọi nhân vật biết.

Bước 28

Việc cần làm: nhận màn 2: phông Stars; đợi đến khi diem = 6; phát thông báo thắng.

2986

Kéo thêm một khối Khi nhận thông báo, chọn màn 2,

Bước 29
3086

gắn khối đổi phông nền thành, chọn Stars.

Bước 30
3186

Gắn khối đợi đến khi,

Bước 31
3286

điều kiện là phép so sánh bằng, bên phải gõ 6,

Bước 32
3386

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

Bước 33
3486

Rồi khối phát thông báo, chọn Thông báo mới, đặt tên là thắng. Ta vừa làm: nhận màn 2 thì đổi sang phông bầu trời sao; đủ 6 điểm thì phát thông báo thắng.

Giải thích: Màn 2 làm giống Màn 1: đổi phông, đợi đủ 6 điểm, rồi phát thông báo thắng.

Bước 34

Việc cần làm: nhận màn 1: đợi đến khi mang < 1 thì phát thông báo thua.

3586

Kéo thêm một khối Khi nhận thông báo, chọn màn 1,

Bước 35
3686

gắn khối đợi đến khi,

Bước 36
3786

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

Bước 37
3886

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

Bước 38
3986

Rồi khối phát thông báo, chọn Thông báo mới, đặt tên là thua. Ta vừa làm: từ Màn 1 trở đi, hết mạng thì phát thông báo thua.

Giải thích: Hai script cùng nhận màn 1 chạy song song: một script đợi đủ điểm, script này đợi hết mạng, màn nào cũng thế.

Bước 39
4086
Chạy thử

Chạy thử: bấm cờ xanh, rồi bấm nút: phông nền đổi sang Blue Sky, Màn 1 bắt đầu.

Bước 40
4186

Đến người chơi. Chọn nhân vật Meo.

Bước 41

Việc cần làm: bấm cờ xanh thì ẩn; nhận màn 1: về giữa đáy, hiện, lặp mãi: x = x của chuột.

4286

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

Bước 42
4386

gắn khối ẩn: ở Menu chưa có mèo.

Bước 43
4486

Kéo khối Khi nhận thông báo, đặt bên dưới, chọn màn 1,

Bước 44
4586

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

Bước 45
4686

Gắn khối hiện,

Giải thích: Nhận thông báo màn 1 thì mèo về giữa đáy sân khấu và hiện ra: bắt đầu chơi.

Bước 46
4786

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

Bước 47
4886

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

Bước 48
4986

ô số thả khối toạ độ x con trỏ chuột, trong nhóm Cảm biến. Ta vừa làm: ở Menu mèo ẩn; nhận màn 1 thì mèo về giữa đáy, hiện ra và chạy theo chuột.

Giải thích: Vòng lặp mãi mãi: x của mèo luôn bằng x của con trỏ chuột, sang Màn 2 vẫn chạy tiếp.

Bước 49
5086
Chạy thử

Chạy thử: bấm cờ xanh, bấm nút, rồi di chuột: mèo hiện ra và chạy theo chuột.

Bước 50
5186

Đến quả táo. Chọn nhân vật Tao.

Bước 51

Việc cần làm: cờ xanh: ẩn. Nhận màn 1: hiện ở mép trên, rơi theo man; hứng được: +1 điểm; rơi tới đáy: -1 mạng.

5286

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

Bước 52
5386

gắn khối ẩn.

Bước 53
5486

Kéo khối Khi nhận thông báo, đặt bên dưới, chọn màn 1,

Bước 54
5586

gắn khối đi tới vị trí ngẫu nhiên, trong nhóm Chuyển động,

Bước 55
5686

khối đặt y bằng, gõ 170: táo ở mép trên, chỗ ngẫu nhiên,

Bước 56
5786

rồi khối hiện.

Giải thích: Vị trí ngẫu nhiên rồi đặt y bằng 170: táo luôn ở mép trên, mỗi lần một chỗ khác.

Bước 57
5886

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

Bước 58
5986

bên trong, khối thay đổi y một lượng,

Bước 59
6086

ô số thả phép nhân, trong nhóm Các phép toán, bên trái gõ âm 4,

Bước 60
6186

bên phải thả biến man.

Giải thích: Tốc độ rơi theo biến man: Màn 1 rơi 4 điểm ảnh mỗi lần, Màn 2 rơi 8. Không cần viết lại script cho Màn 2.

Bước 61
6286

Gắn khối nếu dưới khối thay đổi y,

Bước 62
6386

điều kiện là khối đang chạm, trong nhóm Cảm biến, chọn Meo: mèo hứng được táo,

Bước 63
6486

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

Bước 64
6586

khối đi tới vị trí ngẫu nhiên,

Bước 65
6686

và khối đặt y bằng, gõ 170: quả táo mới rơi từ mép trên.

Giải thích: Mèo hứng được táo thì diem tăng 1, rồi quả táo quay về mép trên, rơi lại từ một chỗ mới.

Bước 66
6786

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

Bước 67
6886

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

Bước 68
6986

bên trái thả khối toạ độ y, trong nhóm Chuyển động: táo rơi tới đáy,

Bước 69
7086

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 70
7186

khối đi tới vị trí ngẫu nhiên,

Bước 71
7286

và khối đặt y bằng, gõ 170. Ta vừa làm: táo rơi từ mép trên, nhanh theo biến man. Hứng được thì thêm điểm, rơi tới đáy thì mất mạng.

Giải thích: Táo rơi tới đáy mà mèo không hứng được thì mất một mạng, quả táo cũng quay về mép trên.

Bước 72
7386
Chạy thử

Chạy thử: bấm cờ xanh, bấm nút rồi hứng táo. Đủ 3 quả thì sang Màn 2: phông sao, táo rơi nhanh hơn.

Bước 73
7486

Còn trạng thái thắng và thua. Chọn lại nhân vật Meo.

Bước 74

Việc cần làm: nhận thắng: nói Thắng rồi! rồi dừng tất cả. Nhận thua: nói Thua rồi! rồi dừng tất cả.

7586

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

Bước 75
7686

gắn khối nói trong 2 giây, trong nhóm Hiển thị, gõ: Thắng rồi!

Bước 76
7786

rồi khối dừng tất cả, trong nhóm Điều khiển.

Giải thích: Nói trong 2 giây rồi mới dừng tất cả, để người chơi kịp đọc. Dừng tất cả mà không đợi thì câu nói mất ngay.

Bước 77
7886

Kéo thêm một khối Khi nhận thông báo, chọn thua,

Bước 78
7986

gắn khối nói trong 2 giây, gõ: Thua rồi!

Bước 79
8086

rồi khối dừng tất cả. Ta vừa làm: nhận thắng thì mèo nói Thắng rồi, nhận thua thì nói Thua rồi, rồi dừng tất cả.

Bước 80
8186

Trong 2 giây mèo nói, táo vẫn rơi, điểm và mạng còn đổi. Chọn lại nhân vật Tao.

Bước 81

Việc cần làm: nhận thắng hoặc nhận thua thì táo đứng yên.

8286

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

Bước 82
8386

gắn khối dừng lại, trong nhóm Điều khiển, chọn dòng other scripts in sprite: dừng các script khác của quả táo.

Giải thích: Khối này dừng script rơi của quả táo, nên điểm và mạng giữ nguyên trong lúc mèo nói.

Bước 83
8486

Làm giống vậy cho thua: kéo thêm khối Khi nhận thông báo, chọn thua,

Bước 84
8586

gắn khối dừng lại, chọn other scripts in sprite. Ta vừa làm: nhận thắng hoặc thua thì quả táo dừng rơi.

Bước 85
8686
Chạy thử

Xong rồi! Chơi thử một ván: hứng đủ 6 quả táo qua hai màn, mèo nói Thắng rồi và trò chơi dừng. Ván thứ hai, cố tình để táo rơi: mất 3 mạng thì mèo nói Thua rồi. Kiểm thử chơi lại: bấm cờ xanh. Về Menu, diem về 0, mang lại là 3: giống hệt lần đầu.

Bước 86

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

  • Bài làm đã hoàn thành. Các khối chính của bài:
  • Khối khi nhận thông báo: mỗi trạng thái bắt đầu khi nhận thông báo của nó.
  • Khối phát thông báo: chuyển sang trạng thái mới: báo cho mọi nhân vật cùng lúc.
  • Khối đổi phông nền thành: mỗi màn một phông nền riêng.

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

  • Về kỹ thuật lập trình, bài này ta học: sơ đồ trạng thái: vẽ trước các màn và điều kiện chuyển màn.
  • Chuyển màn bằng thông báo: sân khấu phát thông báo, nhân vật nào cần thì nhận và làm việc của mình.
  • Biến giữ trạng thái: man đổi thì tốc độ rơi của táo đổi theo.
  • Đặt lại khi chơi lại: bấm cờ xanh thì điểm, mạng, phông nền và nhân vật đều như lần đầu.

Bài tập

Bài tập mở rộng: thêm Màn 3 có phông nền mới, táo rơi nhanh hơn nữa, và một biến lưu điểm cao nhất.

Game Bóng bàn hai người chơi Game Bắn máy bay
ZaloCộng đồng hỗ trợ lập trình ScratchCộng đồng hỗ trợ