Thiết kế trò chơi Điền số vào bảng
Bạn đang xem trước 20 trang mẫu tài liệu Thiết kế trò chơi Điền số vào bảng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
2017
S ố chào mừng ngày khai trường
5 - 9 - 2017
Thiết kế trò chơi:
Điền số vào bảng
Trò chơi Điền số vào bảng
Chúng ta cùng thiết kế chương trình Điền số vào bảng, mở rộng hơn của
bài toán Điền số vào dãy (chương trình 1).
Có thể hiểu 1 bảng số như một dãy số hoặc có thể coi bảng số như một
ma trận số. Trong chương trình này chúng ta cùng thiết kế bài toán tìm
số cho bảng ma trận 3 x 3. Có thể tổng quát cho ma trận kích thước khác.
Giao diện chương trình sẽ gần tương tự như bài toán điền số vào dãy số.
Dien so vao
bang.sb2
Bài toán tìm và điền số
vào bảng (ma trận),
tổng quát hơn bài toán
điền số vào dãy.
Kịch bản, yêu cầu chương trình.
- Chương trình sẽ tự động sinh các bài toàn điền số vào bảng. Trong
bảng số (3 x 3) sẽ hiện các số, trong đó có 1 ô hiện dấu ? mà người dùng
cần tìm.
Giáo viên đóng vai MC sẽ thông báo nội dung bài toán trên màn hình.
Phía dưới hiện 4 đáp án của bài toán.
2 | C S 4 S 1 3 - 2017
Vị trí cần tìm và điền
số sẽ có dấu ?. Vị trí
này có thể ở 1 ô bất
kỳ trong bảng số.
Tìm số bằng phương
pháp trắc nghiệm.
Có thể dùng phương
pháp điền trực tiếp.
- Người chơi sẽ làm bài bằng cách nháy lên một trong những đáp án phía
dưới. Nháy lên một trong các nút A, B, C, D.
- Nếu làm sai Giáo viên thông báo sai và yêu cầu làm tiếp tục bào toán
này. Làm sai bị trừ 1 điểm.
Phải thực hiện giải
bài liên tục cho đến
khi làm xong.
- Nếu làm đúng, giáo viên thông bào đúng. Tại ô có dấu ? sẽ biến mất và
hiện đáp số đúng của bài toán. Làm đúng được thưởng 10 điểm.
Nút xuất hiện. Người chơi nháy lên nút này để tự động chuyển
sang bài tiếp theo.
Đáp số đúng hiện
trên bảng.
Nút Next xuất hiện để
người chơi nháy lên và
chuyển sang câu hỏi tiếp
theo.
Các nhân vật chính
Biểu tượng Tên nhân vật Chức năng và hoạt động Các chú ý
khác
Đối tượng Đối tượng này được xây Bộ dữ liệu
Math dựng đặc biệt để lưu trữ tất chính lưu dữ
cả các dữ liệu và thuật toán liệu của các
sinh tự động các bài toán thuật toán sẽ là
và dữ liệu của chương dữ liệu riêng
trình. (local) của đối
tượng này.
Giáo viên Giáo viên đóng vai trò là
người dẫn chương trình và
thực hiện giao tiếp với
ngưởi chơi.
Các nút A, B, Các nút dành cho người Nháy lên nút
C, D chơi lựa chọn đáp án của này sẽ sinh ra
trò chơi. Mỗi lần chỉ được thông điệp
nháy chuột 1 lần lên 1 nút Done.
lệnh này.
Nút Câu hỏi Nhân vật này chỉ có nhiệm
(Question) vụ hiển thị như 1 dấu hỏi
tại vị trí cần điền số. Khi
người dùng đã chọn đáp án,
hình ảnh này sẽ ẩn đi, và
tại vị trí này sẽ hiện đáp án
đúng của bài toán. Biểu tượng Tên nhân vật Chức năng và hoạt động Các chú ý
khác
Nút Next Nút này sẽ chỉ hiện khi Nháy lên nút
người chơi đã làm xong 1 này sẽ sinh ra
bài. Khi người dùng nháy thông điệp
lên nút này thì sẽ bắt đầu 1 Reset.
bài toán tiếp theo.
Đối tượng Nhân vật này có nhiệm vụ Đối tượng này
Number hiển thị đáp số của bài toán có 11 trang
sau khi người dùng nháy phục với hình
chuột nhập đáp án. ảnh các số từ 0
đến 9 và dấu trừ
(-). Tên của
trang phục cũng
là 0 đến 9. Dấu
trừ có tên
minus.
Một số phân tích thiết kế bài toán.
(a) Thể hiện lưới ma trận.
Tọa độ của lưới ma trận 3 x 3 của chương trình được tính theo bảng sau.
Số liệu được đo tại tâm của các ô lưới này. 2 mảng X-list, Y-list sẽ lưu
lại dãy 9 tọa độ theo X, Y của các điểm này.
75 1 2 3
25 4 5 6
-
25 7 8 9
-65 45 155
(b) Bài toán và thuật toán sinh bảng số
Vì một lưới (ma trận) số có thể hiểu theo cả 2 nghĩa: 1 dãy số (9 số) và 1
ma trận (3 x 3), do đó sẽ phân biệt 2 loại thuật toán số.
(1) thuật toán sinh dãy 9 số có qui luật.
(2) thuật toán sinh ma trận 3 x 3 số theo qui luật.
Các bài toán, qui luật sinh dãy số.
Các thuật toán sinh dãy số này tương tự như đã trình bày trong chương
trình Điền số vào dãy, sự khác biệt ở đây là số lượng dãy số = 9 và vị trí
hiện câu hỏi có thể bất kỳ.
Stt Mô tả qui luật dãy số Ví dụ
1 Dãy số chẵn liên tục 2 4 6 8 10 12 14 16
2 Dãy số lẻ liên tục 1 3 5 7 9 11 13 15 17 19
3 Dãy số nguyên tố liên tục 2 3 5 7 11 13 17 19 23
4 Dãy số Fibonaci 1 1 2 3 5 8 13 21
5 Dãy số chính phương 1 4 9 16 25 36
6 Dãy số lập phương 1 8 27 64 125
7 Dãy các số tạo thành 1 cấp số 1 4 7 10 13 16 19 22
cộng.
8 Dãy số tạo thành 1 cấp số 3 6 12 24 48
nhân.
Các bài toán, qui luật sinh ma trận số.
Sau đây là một số thuật toán sinh ma trận 3 x 3 số, các thuật toán này sẽ
được trình bày trong phần sau.
Stt Mô tả qui luật cho ma trận Ví dụ
số
1 Cột cuối cùng là tổng (hiệu, 1 3 4
tích) các cột trước đó. 3 7 10
-1 -6 - 7
2 Hàng cuối cùng là tổng (hiệu, 1 3 5
tích) các hàng phía trên. -1 0 9
0 3 14
3 Các số trong ma trận là 1 giao
hoán của dãy {1, 2, 3, , N}
4 Các số trong ma trận là 1 giao
hoán của dãy {12, 22, 32, ,
N2}
5 Mỗi hàng (cột) là một cấp số
cộng (nhân) với cùng công sai
(công bội).
6 Ma trận đối xứng với các phần
tử trên đường chéo bằng nhau. Bộ các biến nhớ dùng để lưu trữ bộ dữ liệu được sinh bởi chương trình
đều là các biến nhớ riêng của nhân vật Math.
Stt Tên biến nhớ Ý nghĩa Chú ý
1 pNumber Số lượng phần tử của dãy sẽ được (biến nhớ)
sinh tự động. Giá trị có trong
chương trình là pNumber = 6.
2 NumList Dãy số chính (gốc) được sinh tự (list)
động của thuật toán.
3 pMNumber Vị trí của dãy sẽ có dấu hỏi ?. mặc (biến nhớ)
định giá trị này = pNumber.
Chú ý: trong 1 số thuật toán yêu cầu
bắt buộc pMNumber = pNumber.
Trong chương trình này, giá trị này
có thể nhận ngẫu nhiên từ 1 đến 9.
4 pList Dãy 4 phương án được sinh tự (list)
động. Đây chính là các giá trị ứng
với các phương án A, B, C, D.
5 sList Dãy 4 giá trị chỉ ra phương án nào (list)
đúng, phương án nào sai. Theo qui
định giá trị = 0 (sai), = 1 (đúng).
6 AList, BList, 3 mảng 3 chiều tương ứng với 3 (list)
CList hàng dữ liệu của bảng. Các mảng
này sẽ được sử dụng khi cần sinh bộ
dữ liệu đặc thù cho ma trận số.
Chú ý: các thuật toán với ma trận số
sẽ làm việc với các bảng này.
(c) Biểu diễn số trong ô lưới
Một vấn đề thiết kế quan trọng nữa là cách thể hiện số trên lưới ma trận
3 x 3.
Nhân vật Number sẽ có chức năng thể hiện các số bằng hình ảnh trên
màn hình. Vì yêu cầu thể hiện cả các số nguyên âm nên trang phục của
đối tượng này sẽ bao gồm các số 0, 1, 2, ., 9 và cả dấu -.
Trang phục của đối
tượng Number bao gồm
các số 0, 1, 2, 3, 4, 5, 6,
7, 8, 9 và dấu -.
Dấu - đặt ở cuối cùng, trang
phục thứ 11.
Chúng ta thiết kế nhân vật Number có các chữ số với cùng 1 độ rộng, ký
hiệu là dx.
Sơ đồ sau tính khoảng cách từ tâm của số đến chữ số bên trái ngoài cùng
của số này. Phân biệt 2 trường hợp khi số cần thể hiện có số các chữ số
là lẻ hay chẵn. Từ đó suy ra công thức tính khoảng cách này.
length = 5 length = 4
Sơ đồ cách tính
khoảng cách từ
tâm của 1 số đến
chữ số bên trái 36578 3657
ngoài cùng.
Khoảng cánh này = Khoảng cánh này =
2dx = length/2 - 0.5 1.5dx = length/2 -
0.5
Thủ tục sẽ được xây dựng là:
Show_Number center: size
Thủ tục này sẽ thể hiện số N tại vị trí (X,Y) lấy làm tâm với kích thước
% so với kích thước gốc của đối tượng số này.
Các tham số chính của thủ tục và được dùng trong thủ tục bao gồm: Tham số. biến Ý nghĩa
nhớ
N (tham số) Số nguyên gốc cần thể hiện trên màn hình. Số này
có thể là âm hoặc dương.
X, Y (tham số) Tọa độ tâm chính giữa của số được thể hiện.
size (tham số) (tính bằng %)
Số được thể hiện sẽ có kích thước bằng chính giá
trị này (tính theo %) so với nhân vận gốc.
dx (biến nhớ) Độ rộng thực tế của các ký tự tương ứng với size.
Thông số này được tính bằng công thức:
dx = OriginSize * size / 100.
OriginSize (biến Độ rộng của các ký tự ở chế độ gốc (100%). Giá
nhớ) trị này sẽ đo trên thực tế tại cửa sổ Costume.
Trong chương trình đã thiết kế, giá trị này = 22.
CurrSize (biến Kích thước hiện thời của nhân vật Number. Sau
nhớ) khi thể hiện xong số, thủ tục sẽ trả lại kích thước
của nhân vật trước khi chạy lệnh này.
N.temp (biến Số trung gian dùng để lưu số cần thể hiện nếu N <
nhớ) 0.
Tính dx = độ rộng thực
tế của các chữ số.
Chuyển kích thước về
giá trị size.
Di chuyển về bên trái
của số sẽ thể hiện.
Nếu N < 0 thì thể hiện
dấu - đầu tiên bằng lệnh
stamp.
Thể hiện lần lượt các
chữ số từ trái sang phải
bằng lệnh stamp, độ
rộng mỗi chữ = dx.
Chuyển trả kích thước
về giá trị ban đầu.
Thiết kế bộ dữ liệu chính
Stt Tên biến nhớ Ý nghĩa Chú ý
1 Matrix.List 5 biến nhớ tổng thể lưu 5 giá trị
(list) đầu tiên của dãy. Bài toán chính là
tìm phần tử tiếp theo (một cách
hợp lý) của dãy trên.
2 pA, pB, pC, 4 phương án của bài toán. Trong 4
pD (biến nhớ) phương án này sẽ có 1 phương án
đúng.
3 pCorrect (biến Biến nhớ chỉ ra số thứ tự của
nhớ) phương án đúng trong số 4
phương án trên. Biến nhớ này
không hiện trên màn hình.
4 Choice (biến Biến nhớ ghi lại phương án lựa
nhớ) chọn của người dùng. Như vậy Stt Tên biến nhớ Ý nghĩa Chú ý
nếu Choice=pCorrect thì làm
đúng, ngược lại là sai.
5 Score (biến Điểm số của người chơi. Nếu giải
nhớ) đúng sẽ được tặng 10 điểm, nếu
làm sai sẽ bị trừ 1 điểm.
6 Time_to_Solve Tham số ghi lại trạng thái của Chỉ khi
(biến nhớ) chương trình qui định thời gian tham số
người chơi làm bài. này = 1
= 0, không là thời gian chơi. mới cho
phép
= 1, đang là thời gian chơi. người
dùng nháy
lên các nút
đáp án A,
B, C, D.
7 XList, YList 2 dãy các tọa độ X, Y dùng để thể
(list) hiện dãy các số trong bảng. 2 dãy
này đều có 9 phần tử.
8 X2-list (list) Dãy tọa độ X (4 phần tử) thể hiện
các số tại các phương án A, B, C,
D.
9 Y1, Y2 Y1 = tọa độ Y của các số phía trên
các nút A, B, C, D.
Y2 = tọa độ Y của các nút A, B,
C, D.
Các biến nhớ riêng của đối tượng Math dùng để lưu
trữ bộ dữ liệu chính của bài toán.
1 pNumber Số lượng phần tử của dãy sẽ được Gán mặc
(biến nhớ) sinh tự động. Giá trị có trong định = 9.
chương trình là pNumber = 9.
2 NumList (list) Dãy số chính (gốc) được sinh tự Dãy này
động của thuật toán. có
pNumber
phần tử.
3 pMNumber Vị trí của dãy sẽ có dấu hỏi ?. mặc
(biến nhớ) định giá trị này = pNumber.
Chú ý: trong 1 số thuật toán yêu
cầu bắt buộc pMNumber =
pNumber. Stt Tên biến nhớ Ý nghĩa Chú ý
4 pList (list) Dãy 4 phương án được sinh tự
động. Đây chính là các giá trị ứng
với các phương án A, B, C, D.
5 sList (list) Dãy 4 giá trị chỉ ra phương án nào
đúng, phương án nào sai. Theo qui
định giá trị = 0 (sai), = 1 (đúng).
6 AList, BList, 3 mảng 3 chiều tương ứng với 3 Một số
CList (list) hàng dữ liệu của bảng. Các mảng thuật toán
này sẽ được sử dụng khi cần sinh sinh dữ
bộ dữ liệu đặc thù cho ma trận số. liệu cần bộ
dữ liệu
dạng ma
trận này.
Các biến nhớ riêng của đối tượng Number và tham số
của thủ tục hiển thị số chính của Number.
1 N (tham số của Số nguyên gốc cần thể hiện trên
thủ tục) màn hình. Số này có thể là âm
hoặc dương.
2 X, Y (tham số Tọa độ tâm chính giữa của số
của thủ tục) được thể hiện.
3 size (tham số (tính bằng %)
của thủ tục) Số được thể hiện sẽ có kích thước
bằng chính giá trị này (tính theo
%) so với nhân vận gốc.
4 dx (biến nhớ) Độ rộng thực tế của các ký tự
tương ứng với size. Thông số này
được tính bằng công thức:
dx = OriginSize * size / 100.
5 OriginSize Độ rộng của các ký tự ở chế độ
(biến nhớ) gốc (100%). Giá trị này sẽ đo trên
thực tế tại cửa sổ Costume. Trong
chương trình đã thiết kế, giá trị
này = 22.
6 CurrSize (biến Kích thước hiện thời của nhân vật
nhớ) Number. Sau khi thể hiện xong số,
thủ tục sẽ trả lại kích thước của
nhân vật trước khi chạy lệnh này.
7 N.temp (biến Số trung gian dùng để lưu số cần Nếu N>0
nhớ) thể hiện nếu N < 0. thì N.temp
= N, nếu Stt Tên biến nhớ Ý nghĩa Chú ý
N < 0 thì
N.temp =
-N.
Sơ đồ hoạt động hệ thống
Sơ đồ hoạt động của chương trình này tương tự như trò chơi Điền số vào
dãy, tuy nhiên có sự khác biệt nhất định.
Reset
Thực hiện việc sinh dữ
Gửi thông liệu bài toán chính của
điệp Reset chương trình.
Math.Done
Thông báo yêu cầu Kích hoạt các nút
bài toán. này làm việc.
Kiểm tra và thông
báo đúng / sai.
Nếu làm sai, gửi Thể hiện bộ dữ liệu
thông điệp Sai rồi. trên lưới 3 x 3 trừ Nếu người dùng nháy
Sai rồi ra 1 ô để hiện dấu ? chuột, gửi thông điệp
Done.
Thể hiện đáp số lên
Nế u làm đúng, gửi ô có dẩu ?
thông điệp Đúng rồi. Done
Đúng rồi
Ẩn Hiện
Hiệ n Ẩn
Nếu nháy lên, gửi
thông điệp Reset.
Reset
Các thuật toán sinh dữ liệu cho dãy số
Các thuật toán này sẽ sinh bộ dữ liệu chính và lưu trong bảng NumList.
Việc sinh yêu cầu ngẫu nhiên để mỗi lần sẽ ra các bộ dữ liệu không
giống nhau.
Mô tả qui luật Chương trình
cho dãy số
Dãy số chẵn liên
tục
Dãy số lẻ liên tục
Dãy số nguyên tố Sử dụng thủ tục Next Primary để sinh bộ dữ liệu này.
liên tục
Thủ tục Next Primary sẽ tìm ra số nguyên tố nhỏ nhất > n.
Kết quả lưu trong biến Next.Primary.Math. Mô tả qui luật Chương trình
cho dãy số
Thủ tục Is Primary sẽ kiểm tra xem số p có phải là
nguyên tố hay không. Kết quả lưu trong biến kq.Math (= 1,
yes, = 0, no).
Dãy số Fibonaci Mảng Fibonaci.temp lưu 5 số hạng đầu tiên của dãy
Fibonaci. Các số này sẽ được lấy ngẫu nhiên làm phần tử đầu
tiên của dãy số được sinh. Mô tả qui luật Chương trình
cho dãy số
Dãy số chính Số hạng đầu tiên lấy ngẫu nhiên từ 12 đến 52.
phương
Dãy số lập Số hạng đầu tiên lấy ngẫu nhiên từ 13 đến 43.
phương
Dãy các số tạo Số hạng đầu tiên lấy từ -99 đến 99. Công sai lấy ngẫu nhiên
thành 1 cấp số từ 2 đến 20.
cộng.
Dãy số tạo thành Số hạng đầu tiên lấy từ -5 đến 5. Công bội lấy ngẫu nhiên từ
1 cấp số nhân. 2 đến 10. Mô tả qui luật Chương trình
cho dãy số
Các thuật toán sinh dữ liệu cho ma trận số
Các thuật toán này sẽ sinh bộ dữ liệu vào các bảng AList, BList, CList,
sau đó sẽ chuyển dữ liệu vào mảng NumList.
Thủ tục sau sẽ sao chép dữ liệu từ các bảng AList, BList, CList sang
NumList.
Chuyển dữ liệu từ bảng
AList sang NumList.
Chuyển dữ liệu từ bảng
BList sang NumList.
Chuyển dữ liệu từ bảng
CList sang NumList.
Mô tả qui Chương trình Ghi chú
luật cho ma
trận số
Cột cuối cùng a, b được sinh
là tổng các cột ngẫu nhiên. c = a
trước đó. + b. a, b, c được
gán lần lượt cho
các hàng của ma
trận.
Cột cuối cùng a, b được sinh
là hiệu các cột ngẫu nhiên. c = a
trước đó. - b. a, b, c được
gán lần lượt cho
các hàng của ma
trận.
Mô tả qui Chương trình Ghi chú
luật cho ma
trận số
Cột cuối cùng a, b được sinh
là tích các cột ngẫu nhiên. c = a
trước đó. x b. a, b, c được
gán lần lượt cho
các hàng của ma
trận.
Hàng cuối a, b được sinh
cùng là tổng ngẫu nhiên. c = a
các hàng phía + b. a, b, c được
trên. gán lần lượt cho
các cột của ma
trận.
Mô tả qui Chương trình Ghi chú
luật cho ma
trận số
Hàng cuối a, b được sinh
cùng là hiệu ngẫu nhiên. c = a
các hàng phía - b. a, b, c được
trên. gán lần lượt cho
các cột của ma
trận.
Hàng cuối a, b được sinh
cùng là tích ngẫu nhiên. c = a
các hàng phía x b. a, b, c được
trên. gán lần lượt cho
các cột của ma
trận.
File đính kèm:
thiet_ke_tro_choi_dien_so_vao_bang.pdf



