Tài nguyên của bài · 11 file · 257 KB — tải về rồi tải lên Scratch khi làm theo video
city.svg, flap1.svg, flap2.svg, flap3.svg, gameover.svg, getready.svg, ground.svg, hit.wav, pipe.svg, point.wav, wing.wav
Đăng nhập để tải tài nguyên
Nâng cao · Mức E

Làm game Flappy Bird

Mục tiêu: Làm game Flappy Bird: chim bay qua các cột ống, chạm ống hoặc đất thì thua.

Em sẽ học gì

  • Nội dung trong bài: các nhân vật cùng hoạt động và lập trình song song
  • Vòng lặp, Sự kiện, Thông điệp, di chuyển, trang phục hoạt hình
  • Lệnh điều kiện, các biến nhớ điểm số, trạng thái và tốc độ.
  • Tạo bản sao, trọng lực và va chạm.
Kết quả cần đạt
Kết quả cần đạt: bấm cờ xanh để chạy thử.
1112

Ta bắt đầu bài làm! Mở một bài làm mới, chưa có nhân vật nào. Các hình ảnh nhân vật đã được tải sẵn thành các file để sử dụng. Gồm chim bay có ba kiểu cánh, cột ống, mặt đất, nền thành phố, màn hình chờ và màn hình Game Over. Ta sẽ tải các nhân vật lên. Ta Bấm vào nút chọn nhân vật ở góc dưới bên phải, Đầu tiên ta tải cột ống lên. Chọn nút Tải lên, rồi chọn file cột ống. Đặt tên là Pipe, Vị trí nhân vật tính bằng hai toạ độ x và y. 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. Điểm chính giữa sân khấu có x bằng 0, y bằng 0. chọn cột ống, đặt x bằng 264, để ống di chuyển ra mép phải sân khấu, và y bằng 0 để ở giữa theo chiều dọc

Bước 1
2112

Cột ống cần một tiếng báo khi chim ghi điểm. Mở thẻ Âm thanh, bấm vào nút chọn âm thanh, chọn Tải âm thanh lên, rồi chọn file point, là tiếng ghi điểm.

Bước 2
3112

Quay lại thẻ Code. Tiếp theo, phần mặt đất: ta chọn nhân vật, Tải nhân vật lên, rồi chọn file mặt đất. Đặt tên là Ground, Đặt vị trí x bằng 0, y bằng âm 147: để mặt đất sát phía dưới cùng sân khấu. Đến chú chim: ta chọn nhân vật, Chọn file chim bay. Đặt tên là Bird, x bằng âm 100: chim đứng sang bên trái y bằng 0.

Bước 3
4112

Chim cần ba kiểu cánh để vỗ cánh. Mở thẻ Trang phục, bấm vào nút thêm trang phục, chọn Tải trang phục lên, và chọn file cánh giữa. Thêm tiếp trang phục: bấm vào nút thêm, rồi chọn file cánh xuống.

Bước 4
5112

Chim còn cần tiếng vỗ cánh. Mở thẻ Âm thanh, bấm vào nút chọn âm thanh, chọn Tải âm thanh lên, rồi chọn file wing, là tiếng vỗ cánh.

Bước 5
6112

Với 3 kiểu cánh này, khi thay đổi liên tục ta sẽ thấy chim đang đập cánh. Quay lại thẻ Code. Phần Màn hình chờ: bấm vào nút chọn nhân vật, bấm Tải nhân vật lên, rồi chọn file màn hình chờ. Đặt tên là Gét Red đi x bằng 0, để màn hình chờ nằm chính giữa sân khấu, đặt y bằng 30 để dịch lên 1 chút kích thước 60 phần trăm, để thu hỏi lại chút cho vừa. Đến phần Màn hình thua: ta chọn nhân vật, Tải nhân vật, chọn file Game Over. Đặt tên là Game Over, x bằng 0, cũng nằm chính giữa, y bằng 40: hình này sẽ hiện ra khi chim thua.

Bước 6
7112

Lúc thua cần một tiếng va chạm. Mở thẻ Âm thanh, bấm vào nút chọn âm thanh, chọn Tải âm thanh lên, rồi chọn file hit, là tiếng va chạm.

Bước 7
8112

Quay lại thẻ Code. Cuối cùng là nền: bấm vào nút chọn phông nền, Tải phông nền lên, chọn file nền thành phố.

Bước 8
9112

Vậy là đã đủ hình ảnh. Ta Quay lại phần Code.

Bước 9
10112

Bây giờ tạo biến. Chọn nhân vật Bird. Vào nhóm Các biến số, chọn Tạo một biến, đặt tên biến là score: đây là biến điểm số, dùng chung cho mọi nhân vật, rồi bấm OK. Tạo biến thứ hai, đặt tên là playing: cho biết trò chơi đã bắt đầu chưa, bằng 0 là chưa, bằng 1 là đang chơi, bấm OK. Tạo tiếp một biến thứ ba, đặt tên v y: là trọng lực để chim sẽ bay lên hay rơi xuống. chỉ chim dùng nên chọn Chỉ nhân vật này, bấm OK. Bỏ dấu tick của v y và của playing, để ẩn bớt các ô biến số trên sân khấu, chỉ giữ ô điểm số trên màn hình để xem điểm khi chơi.

Bước 10
11112

Bây giờ ta bắt đầu viết lệnh. Ta chọn nhân vật đường ống: Pipe.

Bước 11

Việc cần làm: tạo các cột ống mới, cách nhau một khoảng ngẫu nhiên.

12112

Sơ đồ thuật toán của ống gốc: ẩn đi, đợi đến khi trò chơi bắt đầu, rồi lặp mãi: tạo một bản sao cột ống, chờ 2 đến 2,5 giây.

Bước 12
13112

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

Bước 13
14112

gắn khối lệnh ẩn đi: để ống gốc tự ẩn đi lúc bắt đầu.

Bước 14
15112

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

Bước 15
16112

đưa phép so sánh bằng vào ô điều kiện, bên phải là 1,

Bước 16
17112

bên trái là biến playing: đợi đến khi playing bằng 1, là khi trò chơi bắt đầu.

Giải thích: Khối đợi đến khi điều kiện đúng, tức là playing bằng 1, thì sẽ chạy lệnh tiếp theo

Bước 17
18112

Thêm khối vòng lặp mãi mãi, tên khối là Liên tục,

Giải thích: Khối vòng lặp mãi mãi , lặp lại các khối lệnh bên trong, có thể dừng khi ta đặt điều kiện dừng.

Bước 18
19112

bên trong tạo một bản sao của ống: mỗi bản sao của chính nó

Giải thích: Để ống sẽ tạo liên tục các bản sao, và di chuyển về phía chim, để trông như chim đang bay qua ống.

Bước 19
20112

Sau mỗi bản sao, thêm khối chờ,

Bước 20
21112

với số giây lấy ngẫu nhiên, từ 2 đến 2,5 giây. Ta vừa làm: ống ẩn đi, đợi trò chơi bắt đầu, rồi cứ chờ ngẫu nhiên và tạo thêm một bản sao.

Giải thích: để các cột ống sinh ra ngẫu nhiên cho sinh động

Bước 21
22112
Chạy thử

Chạy thử: ta tạm đặt playing bằng 1, rồi bấm cờ xanh, ống gốc ẩn đi và liên tục tạo bản sao ẩn. Ta viết script cho bản sao để thấy chúng chạy.

Bước 22

Việc cần làm: ống sẽ chạy từ phải sang trái, nếu không chạm con chim thì cộng điểm, ống ra khỏi màn hình thì tự xoá.

23112

Sơ đồ của bản sao ống: hiện ở mép phải với độ cao ngẫu nhiên. Chưa ra khỏi mép trái thì dịch sang trái 3 bước, vừa qua chim thì cộng một điểm. Ra khỏi mép trái thì xoá bản sao.

Bước 23
24112

Giờ viết cho bản sao: kéo khối, Khi tôi bắt đầu là một bản sao,

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

Bước 24
25112

gắn khối đi tới điểm x y, x bằng 260, để bắt đầu xuất hiện ở mép phải sân khấu,

Bước 25
26112

y là một số ngẫu nhiên, từ 0, đến 60, để độ cao các cột ống có vị trí dọc khác nhau.

Bước 26
27112

Thêm khối hiện ra,

Bước 27
28112

thêm khối vòng lặp có điều kiện, lặp lại cho đến khi,

Bước 28
29112

ghép phép so sánh nhỏ hơn, bên phải là âm 260

Bước 29
30112

bên trái là vị trí x của cột ống: nghĩa là cột ống sẽ hiện ra từ mép phải cho đến khi ra khỏi mép trái sân khấu.

Giải thích: Khối lặp lại cho đến khi là vòng lặp có điều kiện, lặp liên tục lệnh trong đó nếu điều kiện còn đúng.

Bước 30
31112

Bên trong vòng lặp, khối đổi x một lượng bằng âm 3: để mỗi lần cột ống dịch sang trái ba bước.

Bước 31
32112

Thêm khối điều kiện nếu,

Bước 32
33112

ghép phép so sánh bằng, bên phải là x bằng âm 100, là vị trí của chim

Bước 33
34112

bên trái là vị trí x: cột ống vừa đi qua chim,

Bước 34
35112

thì thêm khối đổi biến một lượng, chọn biến score: game được cộng thêm một điểm khi chim bay qua được ống

Bước 35
36112

Thêm khối bắt đầu âm thanh point, trong nhóm Âm thanh: mỗi lần ghi điểm có một tiếng báo.

Giải thích: Khối bắt đầu âm thanh phát tiếng rồi chạy tiếp ngay, không chờ tiếng phát xong.

Giải thích: Khối điều kiện nếu: nếu điều kiện đúng thì chạy các khối bên trong, ở đây cột ống qua chim thì cộng một điểm.

Bước 36
37112

Cuối cùng, ra khỏi màn hình thì xoá bản sao cột ống này. Ta vừa làm xong: bản sao hiện ở mép phải, chạy sang trái, qua chim thì cộng điểm, ra khỏi màn hình thì xoá.

Giải thích: Ta lưu ý Khối xoá bản sao này, để xoá bản sao khi không cần nữa, để đỡ tốn bộ nhớ.

Bước 37
38112
Chạy thử

Chạy thử: ta tạm đặt playing bằng 1, rồi bấm cờ xanh, các cột ống hiện ở mép phải, chạy sang trái rồi biến mất như mong muốn

Bước 38
39112

Tiếp theo là mặt đất Ground.

Bước 39

Việc cần làm: mặt đất chạy sang trái liên tục, đi quá xa thì kéo về.

40112

Sơ đồ của mặt đất: lặp mãi, dịch sang trái 3 bước; đi quá âm 35 thì kéo về 36 bước.

Bước 40
41112

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

Bước 41
42112

gắn khối vòng lặp mãi mãi, mục đích để mặt đất di chuyển liên tục

Bước 42
43112

bên trong khối đổi x một lượng, âm 3, để mặt đất chạy sang trái.

Bước 43
44112

Thêm khối điều kiện nếu,

Bước 44
45112

ghép phép so sánh nhỏ hơn, bên phải là âm 35,

Bước 45
46112

bên trái là vị trí x của mặt đất,

Bước 46
47112

thì khối đổi x một lượng bằng 36 để kéo mặt đất về lại vị trí ban đầu, rồi chạy tiếp, nhìn như mặt đất chạy mãi không hết. Ta sẽ thấy mặt đất như di chuyển liên tục sang trái, để con chim đứng yên nhưng cảm giác đang bay sang phải

Giải thích: Như vậy ta thấy khối mặt đất cứ sang trái vài bước, rồi được đặt về lại bên phải, liên tục như vậy

Bước 47
48112
Chạy thử

Chạy thử mặt đất nhé: bấm cờ xanh, mặt đất chạy mãi sang trái, nhìn như con đường dài vô tận. Ta đã xong phần mặt đất.

Bước 48
49112

Bây giờ ta sang phần Màn hình chờ Get Re đi

Bước 49

Việc cần làm: hiện màn hình chờ, trò chơi bắt đầu thì ẩn.

50112

Sơ đồ của màn hình chờ: hiện ra, đợi đến khi trò chơi bắt đầu, rồi ẩn đi.

Bước 50
51112

khối Khi bấm cờ xanh,

Bước 51
52112

thì hiện ra.

Bước 52
53112

Thêm khối: Đợi đến khi,

Bước 53
54112

phép so sánh bằng, bên phải là 1,

Bước 54
55112

bên trái là biến playing: trò chơi bắt đầu thì màn hình chờ biến mất.

Bước 55
56112

Sau đó khối ẩn đi. Ta vừa làm: màn hình chờ hiện ra, đợi trò chơi bắt đầu, rồi ẩn đi.

Bước 56
57112
Chạy thử

Chạy thử: bấm cờ xanh, màn hình chờ hiện ra và đứng đợi, vì trò chơi chưa bắt đầu.

Bước 57
58112

Bây giờ Đến Màn hình thua GameOver.

Bước 58

Việc cần làm: ẩn Game Over lúc bắt đầu.

59112

Sơ đồ: bấm cờ xanh thì màn hình Game Over ẩn đi.

Bước 59
60112

Khi bấm cờ xanh,

Bước 60
61112

thì ẩn đi.

Bước 61
62112
Chạy thử

Chạy thử: bấm cờ xanh, màn hình Game Over biến mất.

Bước 62

Việc cần làm: nhận thông báo gameover thì hiện ra.

63112

Sơ đồ: nhận thông báo gameover thì hiện ra và phát tiếng va chạm.

Bước 63
64112

Kéo thêm khối Khi nhận được thông báo, tạo thông báo mới tên gameover,

Bước 64
65112

thì hiện ra. Thông báo này sẽ do chú chim gửi đi khi thua.

Bước 65
66112

Thêm khối phát âm thanh hit đến hết, trong nhóm Âm thanh: tiếng va chạm khi chim thua.

Giải thích: Khối khi nhận được thông báo: Game Over chỉ hiện khi chim thua và gửi thông báo gameover.

Bước 66
67112
Chạy thử

Chạy thử: bấm cờ xanh, màn hình Game Over bị ẩn đi, chỉ hiện khi nhận thông báo thua từ chú chim.

Bước 67
68112

Bây giờ Đến chú chim, nhân vật chính.

Bước 68

Việc cần làm: đặt chim về vị trí xuất phát, các biến về 0.

69112

Sơ đồ khởi tạo của chim: về vị trí xuất phát, nhìn sang phải, rồi đặt ba biến vy, score, playing về 0.

Bước 69
70112

Khi bấm cờ xanh,

Bước 70
71112

đặt chim ở vị trí xuất phát bằng khối đi tới điểm x y, x bằng âm 100, y bằng 0,

Bước 71
72112

thêm khối đặt hướng bằng, 90: chim nhìn sang phải.

Bước 72
73112

Thêm khối đặt biến, chọn vy, giá trị 0, là trọng lực rơi xuống

Bước 73
74112

thêm một khối đặt biến nữa, chọn score, giá trị 0, là điểm số

Bước 74
75112

thêm khối đặt biến playing, là đang chạy hay dừng, 0 là dừng chọn giá trị 0: để bắt đầu một ván mới. Ta vừa làm: đưa chim về vị trí xuất phát, nhìn sang phải, và đặt ba biến về 0.

Bước 75
76112
Chạy thử

Chạy thử: bấm cờ xanh, chim về đúng vị trí xuất phát, nhìn sang phải.

Bước 76

Việc cần làm: chờ bấm phím, rồi rơi theo trọng lực; chạm ống hoặc đất thì thua.

77112

Sơ đồ chính của chim: đợi bấm phím, rồi đặt playing bằng 1 và vy bằng 8. Rồi lặp mãi: rơi theo trọng lực, nghiêng đầu theo tốc độ. Chạm ống hoặc đất thì báo gameover và dừng; bay quá cao thì giữ y bằng 170.

Bước 77
78112

Script thứ hai: khi bấm cờ xanh,

Bước 78
79112

khối đợi đến khi,

Bước 79
80112

có phím được bấm: lúc đó trò chơi mới bắt đầu.

Bước 80
81112

Thêm khối đặt biến, chọn playing, giá trị 1: trò chơi đang chơi.

Bước 81
82112

Thêm khối đặt biến, chọn vy, trọng lực kéo chim rơi xuống hay bay lên giá trị 8: chim bật lên lúc đầu.

Bước 82
83112

Thêm khối vòng lặp mãi mãi,

Bước 83
84112

bên trong khối đổi biến một lượng, chọn vy, âm 0,8: đó là trọng lực kéo chim xuống.

Giải thích: Đây là trọng lực: mỗi vòng lặp, vy giảm đi 0,8 nên chim rơi càng lúc càng nhanh.

Bước 84
85112

Thêm khối đổi y một lượng,

Bước 85
86112

bằng vy: vy dương thì bay lên, vy âm thì rơi xuống.

Bước 86
87112

Chim nghiêng đầu theo tốc độ: khối đặt hướng bằng,

Bước 87
88112

một phép trừ, 90 trừ,

Bước 88
89112

một phép nhân, 3 nhân,

Bước 89
90112

vy: chim ngẩng đầu khi bay lên, cúi đầu khi rơi xuống.

Bước 90
91112

Thêm khối điều kiện nếu: để kiểm tra va chạm,

Bước 91
92112

với điều kiện là khối hoặc, ghép khối đang chạm vào ô bên trái, chọn Pipe: chim chạm cột ống, và một khối đang chạm vào ô bên phải, chọn Ground: hoặc chim chạm đất. Khối đang chạm đúng khi nhân vật này chạm vào nhân vật đã chọn.

Giải thích: Khối hoặc đúng khi một trong hai điều kiện đúng: chim chạm ống hoặc chạm đất.

Bước 92
93112

Nếu thua thì khối phát thông báo và chờ, chọn gameover: màn hình Game Over sẽ hiện ra,

Giải thích: Khối phát thông báo và chờ: gửi thông báo rồi đợi các nhân vật nhận xử lý xong.

Bước 93
94112

thêm khối dừng tất cả ở dưới: sau khi phát thông báo thì kết thúc trò chơi.

Bước 94
95112

Giữ chim không bay quá cao: thêm khối điều kiện nếu,

Bước 95
96112

phép so sánh lớn hơn, bên phải là 170,

Bước 96
97112

bên trái là vị trí y của chim,

Bước 97
98112

thì khối đặt y bằng, 170: để chim không vượt khỏi đỉnh màn hình. Ta vừa làm: đợi phím bấm, rồi lặp: rơi theo trọng lực, nghiêng đầu, chạm ống hoặc đất thì thua.

Bước 98
99112
Chạy thử

Chạy thử: bấm cờ xanh, chim đứng đợi phím, rồi bấm Space một lần: chim bật lên rồi rơi theo trọng lực, chạm đất thì hiện Game Over.

Bước 99

Việc cần làm: bấm phím thì chim bay lên.

100112

Sơ đồ: bấm phím thì vy bằng 8 và phát tiếng vỗ cánh: chim bay lên.

Bước 100
101112

Script cuối: khi bấm phím,

Bước 101
102112

khối đặt biến, chọn vy, giá trị 8: chim vỗ cánh bay lên.

Bước 102
103112

Thêm khối bắt đầu âm thanh wing: mỗi lần bấm phím có tiếng vỗ cánh. Ta vừa làm: bấm phím thì đặt vy bằng 8, chim bay lên.

Bước 103
104112
Chạy thử

Chạy thử: bấm cờ xanh, rồi bấm Space: chim bật lên, sau đó rơi xuống theo trọng lực. Nếu bấm liên tục space, chim sẽ bay lên trên mãi

Bước 104

Việc cần làm: đổi trang phục liên tục để chim đập cánh.

105112

Sơ đồ: lặp mãi, đổi sang trang phục kế tiếp rồi chờ 0,1 giây: chim đập cánh.

Bước 105
106112

Một script nữa cho cánh chim: khi bấm cờ xanh,

Bước 106
107112

khối vòng lặp mãi mãi,

Bước 107
108112

bên trong khối trang phục kế tiếp,

Bước 108
109112

thêm khối chờ, gắn ngay dưới khối trang phục kế tiếp trong vòng lặp, 0,1 giây giữa các lần đổi, nên chim trông như đang đập cánh. Ta vừa làm: lặp mãi mãi, đổi sang trang phục kế tiếp, chờ 0,1 giây: chim đập cánh.

Bước 109
110112
Chạy thử

Chạy thử: bấm cờ xanh, chim đổi trang phục liên tục, nhìn như đang đập cánh.

Bước 110
111112

Xong rồi! Chọn lại nhân vật Bird để chơi thử.

Bước 111
112112
Chạy thử

Chọn con chim, bấm cờ xanh, rồi bấm phím cho chim vỗ cánh: chim bay qua các cột ống, điểm tăng lên, chạm ống hay đất thì hiện Game Over.

Bước 112

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

  • Ta đã hoàn thành bài làm. Bài này ta học các khối:
  • Khối đợi đến khi: dừng lại cho tới khi điều kiện đúng thì mới chạy tiếp.
  • Khối liên tục: vòng lặp mãi mãi: lặp lại các khối lệnh bên trong.
  • Khối tạo bản sao của: tạo một bản sao: mỗi bản sao là một cột ống mới.
  • Khối khi tôi bắt đầu là một bản sao: chạy khi 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, đỡ tốn bộ nhớ.
  • Khối lặp lại cho đến khi: vòng lặp có điều kiện: lặp cho tới khi điều kiện đúng.
  • Khối nếu … thì: khối điều kiện: điều kiện đúng thì chạy các khối bên trong.
  • Khối bắt đầu âm thanh: phát một tiếng rồi chạy tiếp ngay, không chờ hết tiếng.
  • Khối hoặc: đúng khi một trong hai điều kiện đúng.
  • Khối phát thông báo và chờ: gửi thông báo rồi đợi các nhân vật nhận xử lý xong.

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

  • Về kỹ thuật lập trình, bài này ta học: bản sao: một nhân vật gốc tạo ra nhiều bản sao cùng chạy.
  • Trọng lực: tốc độ rơi tăng dần nên chim rơi nhanh dần.
  • Va chạm: kiểm tra chim có chạm cột ống hoặc mặt đất không.
  • Điều kiện, vòng lặp thông điệp, phối hợp với nhau để làm nên trò chơi.

Bài tập

Bài tập mở rộng, ta có thể thêm các cột ống có khoảng hở khác nhau, tăng hoặc giảm tốc độ ống để thay đổi độ khó

Game Bắn máy bay Chú khủng long chạy
ZaloCộng đồng hỗ trợ lập trình ScratchCộng đồng hỗ trợ