Chương 4: THI CÔNG HỆ THỐNG
4.3. LẬP TRÌNH HỆ THỐNG
4.3.1 Lưu đồ giải thuật
Hệ thống sau khi cấp nguồn sẽ hiện giao diện chọn game lên màn hình cho phép người sử dụng lựa chọn các mục game khác nhau bằng cách sử dụng các nút trên tay cầm PS2.
Sau khi vào từng game thì sẽ có các thao tác sử dụng riêng. Để bắt đầu người dùng nhấn nút Start, để lựa chọn game khác nhấn nút Select và các chức năng khác.
Từ đó ta thiết lưu đồ giải thuật. Đầu tiên là lưu đồ chương trình chính, lưu đồ phát nhạc được dùng trong lúc game đang.
Với lưu đồ chương trình chính mô tả quá trình chọn game dựa vào 2 nút nhấn lên/xuống của PS2. Sau khi chọn được game, người chơi nhấn nút Start để vào game đã chọn.
Lưu đồ chương trình chính:
Hình 4-5. Lưu đồ chương trình chính.
Lưu đồ đọc/phát nhạc từ thẻ nhớ:
Hình 4-6. Lưu đồ đọc/phát nhạc.
Lưu đồ đọc/phát nhạc thể hiện quá trình đọc nhạc từ thẻ nhớ sau đó chuyển tín hiệu đến module âm thanh để phát ra ngoài.
Nếu số số byte đọc lớn hơn dung lượng bài tương đương đã đọc hết 1 bài thì kết thúc quá trình đọc file nhạc đó.
Bắt đầu
Cấu hình module Khởi tạo ngoại vi Phát nhạc nền
Tên các game
Nhấn PS2
Lên hoặc xuống
Nhấn Start Thay đổi
GAME
Gọi hàm theo GAME
Đ S
Đ
S
Đ S
Bắt đầu
Tìm tên bài trong thẻ
Kết thúc
Đọc dữ liệu (byte) Gửi đến VS1003
Số byte đọc < dung lượng bài
Tăng số byte đọc
S
Đ
a. Game Cờ Caro
Hình 4-7. Lưu đồ chính game Cờ Caro.
Game này khi bắt đầu màn hình xuất hiện bàn cờ 9x9, lần lượt từng người chơi sẽ chạm vào màn hình tại các ô trống để đánh dấu X/O. Người chơi nào đánh được 5 dấu liền nhau tính theo đường thẳng hoặc đường chéo trước sẽ giành chiến thắng. Trong lúc chơi sẽ có nhạc nền phát liên tục. Khi có người chơi thắng cuộc sẽ có nhạc báo hiệu. Từ đó, thiết kế lưu đồ, lưu đồ chương trình chính:
Game đầu tiên thao tác chủ yếu trực tiếp trên màn hình. Với mỗi lần chạm màn hình thì sẽ gọi các hàm xử lý nước đi tương ứng với lượt người chơi. Sau mỗi
Bắt đầu
Reset ván đấu Vẽ bàn cờ Hiện tỉ số
Chạm màn hình
Xử lý bước đi
Vẽ nước cờ
5 dấu liên tiếp
1
1
Thông báo kết quả
Chạm màn hình
Nhấn Select
Reset biến chọn GAME Thoát GAME
Kết thúc
Đ S
Đ
S Đ
S
S
Đ
Còn ô trống Đ S
lượt sẽ kiểm tra xem có người chơi nào thắng hay không. Tiếp theo là lưu đồ xử lý nước đi và vẽ nước đi.
Hình 4-8. Lưu đồ xử lý nước đi.
Lưu đồ xử lý nước đi:
Sử dụng tọa độ tại vị trí người chơi chạm vào để xem xét ô đó còn trống hay không. Nếu còn trống thì tạo giá trị tại ô đó tương ứng với lượt đi của người đó.
Hình 4-9. Lưu đồ vẽ nước đi.
Lưu đồ vẽ nước đi:
Đọc giá trị tại tất cả các ô trên bàn cờ rồi lần lượt vẽ kí hiệu X/O nếu ô đó có giá trị.
Sau khi có người thắng cuộc nếu muốn chơi tiếp thì nhấn Start còn nếu muốn chơi game khác thì nhấn Select.
Bắt đầu
Đọc tọa độ
Ô còn trống
Tạo giá trị cho ô Đảo lượt
Kết thúc S
Đ
Bắt đầu
Đọc giá trị tại ô
Giá trị bằng 1
Vẽ X
Kết thúc S Đ
Vẽ O
b. Game Ball Bing Bong
Game thứ 2 này ban đầu người chơi chọn các thông số cài đặt chế độ bao gồm loại banh, số người chơi và mức độ game. Nhấn nút Start để bắt đầu game hoặc nhấn nút Select để chọn game khác.
Khi bắt đầu quả banh sẽ di chuyển trong màn hình, khi chạm 2 cạnh dọc của màn hình banh sẽ đảo hướng. Nhiệm vụ của người chơi là dùng thanh Bar để đỡ quả bóng khi banh đến vị trí cuối cùng của cạnh ngang. Nếu như đỡ hụt thì người chơi thua cuộc trò chơi kết thúc. Từ đó ta thiết kế lưu đồ cho game như sau:
Hình 4-10. Lưu đồ chính của game.
Khi bắt đầu game, người chơi cần chọn các chế độ chơi thông qua hàm “Chọn chế độ chơi”, sau đó chờ nhấn nút Start để bắt đầu chơi. Tùy với thông số cài đặt mà gọi hàm “Xử lý 1 người chơi” hay “Xử lý 2 người chơi” tương ứng.
Bắt đầu
Chọn chế độ chơi
Nhấn Start
Kết thúc S
Đ
1 người chơi
Xử lý 1 người chơi
Xử lý 2 người chơi Đ
S
Hình 4-11. Lưu đồ chọn chế độ chơi.
Đầu tiên người chơi sẽ chọn chế độ chơi bằng các chạm vào màn hình được thiết kế từ trước với các lựa chọn bao gồm:
Loại banh: Xanh lá, Hồng, Xanh dương.
Số lượng người chơi: 1 hoặc 2.
Cấp độ: Dễ, bình thường hoặc khó.
Sau đó người chơi sẽ nhấn nút Start trên PS2 để bắt đầu vào Game. Tiếp theo ta vẽ lưu đồ để xử lý nếu như chọn 1 người chơi:
Bắt đầu
Chạm màn hình Vẽ giao diện
Kiểm tra tọa độ Thiết lập biến
Cài đặt xong
Kết thúc S
Đ
Đ S
Hình 4-12. Lưu đồ xử lý 1 người chơi.
Với chế độ 1 người chơi thì sẽ di chuyển thanh ngang bằng cách nhấn nút Right/Left trên PS2. Mỗi lần banh chạm vào cạnh màn hình hoặc thanh ngang sẽ đổi hướng di chuyển ngược lại. Đến khi banh chạm cạnh dưới màn hình và vượt ra ngoài thanh ngang thì người chơi thua cuộc tạm dừng Game để chờ xử lý xem chơi lại hay chọn Game mới bằng nút Start hoặc Select với hàm xử lý thua.
Bắt đầu
Đọc trạng thái PS2
Nhấn Right Bar chưa chạm
cạnh phải
Di chuyển Bar qua phải
Nhấn Left Bar chưa chạm
cạnh trái
Di chuyển Bar qua trái Ngắt Timer 2
Thay đổi tọa độ banh
Banh chạm cạnh Đảo chiều
banh
Cạnh dưới 1
1
Thông báo thua
2 2
Kết thúc S
S
S
S
S Đ
Đ
Đ
Đ
Đ
Banh nằm ngoài thanh ngang
3
3
S Đ
Xử lý thua
Còn nếu như chọn chế độ 2 người chơi thì lưu đồ như sau:
Hình 4-13. Lưu đồ xử lý 2 người chơi.
Đối với chế độ 2 người chơi thì người chơi thứ 2 sẽ di chuyển thanh ngang
Bắt đầu
Nhấn Right Bar chưa chạm
cạnh phải
Di chuyển Bar1 qua
phải
Nhấn Left Bar chưa chạm
cạnh trái
Di chuyển Bar1 qua
trái Chạm màn
hình
Di chuyển thanh Bar 2
Banh chạm cạnh
Đảo chiều banh
Banh nằm trong bar
1
1
Thông báo thua 2
Kết thúc S
S
S
S Đ
Đ
Đ
Đ Ngắt timer 2
Thay đổi tọa độ banh
2 S
Đ
S
S Đọc trạng thái PS2
Xử lý thua Cạnh trên/
dưới Đ
Đ
thay đổi thanh ngang tương ứng. Ngoài ra các thao tác còn lại giống như chế độ 1 người chơi.
Trong đó lưu đồ xử lý thua dùng để kiểm tra xem người chơi muốn chơi lại hay thoát Game:
Bắt đầu
Kết Thúc Đ
S Nhấn Start
Reset biến Quay lại bước 1
Nhấn Select
Reset biến GAME Thoát Game
Đ S
Hình 4-14. Lưu đồ xử lý thua.
c. Game Flappy Bird:
Game này tương tự như Game Flappy Bird của tác giá Nguyễn Hà Đông chỉ khác cách thao tác. Người chơi sẽ điều khiển nhân vật game tạm gọi là Bird vượt qua các trụ tre.
Khi bắt đầu Bird sẽ rơi tự do từ trên xuống, người chơi sẽ nhấn nút X trên trên PS2 để Bird bay lên 1 khoảng, sau đó Bird tiếp tục rơi. Các trụ sẽ liêc tục chạy từ phải qua trái.
Hình 4-15. Lưu đồ chính game Flappy Bird.
Nếu như Bird chạm vào trụ hoặc rơi xuống đất thì người chơi thua cuộc trò chơi kết thúc. Để chơi lại thì nhấn nút Start hoặc nhấn Select nếu muốn đổi Game.
Từ đó ta thiết kế lưu đồ cho Game như sau
Game này sử dụng 3 timer để định thời bao gồm:
-Timer2: điều khiển Bird bay xuống.
-Timer3: điều khiển Bird bay lên.
-Timer5: điều khiển di chuyển các trụ tre.
Bắt đầu
Ngắt timer2
Kết thúc Cấu hình timer2,3,5
Vẽ màn hình Cho phép timer2, 5
Ngắt timer5
Di chuyển
trụ
Nhấn X
Lưu trạng thái nhấn Tắt timer2 Cho phép timer3
1
1
Ngắt timer3
Di chuyển bird lên
Kiểm tra thua 2
Thua
2
Xử lý thua
Tắt timer3 Cho phép timer2 Xóa trạng thái nhấn S
Đ
S
Đ
Đ S
Đ
S
Đ S
Di chuyển bird xuống
Do tính chất trên nên khi Timer2 hoạt động thì Timer3 sẽ dừng và ngược lại.
Với mỗi lần Timer 2 ngắt sẽ cho Bird giảm độ cao, nếu như người chơi nhấn nút X trên PS sẽ cho hoạt động Timer 3 chờ ngắt để tăng độ cao Bird. Timer 5 sẽ hoạt động liên tục để các trụ tre liên tục di chuyển. Sau mỗi lần xử lý sẽ kiểm tra toa độ của Bird so với các trụ tre để xem có thua hay không. Các hàm con xử lý được hiết kế như sau:
Hình 4-16. Lưu đồ di chuyển trụ.
Lưu đồ này mỗi lần thực hiện sẽ giảm tọa độ trụ về phía bên trái của màn hình. Nếu như trụ chạm vào cạnh trái màn hình thì xóa trụ đó đi tạo tọa độ trụ mới.
Hình 4-17. Kiểm tra thua.
Lưu đồ này sẽ so sánh tọa độ của Bird so với đất và trụ. Nếu như Bird chạm 1 trong 2 đối tượng trên thì xem như thua cuộc và trả về trạng thái “Thua” để xử lý phía sau.
Tiếp theo ta có lưu đồ dùng để di chuyển Bird lên. Đối với di chuyển xuống ta chỉ giảm tọa độ liên tục và và gọi hàm Kiểm tra thua là được. Khi di chuyển lên ta phải so sánh với tọa độ cao nhất của màn hình nếu nhỏ hơn mới di chuyển.
Bắt đầu
Kết thúc Tọa độ trụ giảm sang trái
Trụ chạm cạnh trái
Xóa trụ Tạo tọa độ trụ mới
Vẽ trụ mới S
Đ
Bắt đầu
Kết thúc Bird chạm đất
Trả về kết quả Thua Bird chạm trụ
Trả về kết quả chưa Thua S
S Đ
Đ
Hình 4-18. Lưu đồ di chuyển Bird lên.
d. Game Stick Hero:
Game này ở màn hình chính bao gồm 1 nhân vật Hero và 2 trụ nằm cách nhau 1 khoảng cách. Người chơi sẽ di chuyển nhân vật từ trụ trái qua trụ phải bằng cách nhấn giữ vào nút X trên PS2 để tạo ra 1 cây cầu để nối giữa 2 trụ với nhau.
Đây là game có thao tác đơn giản nhưng đòi hỏi ngươi chơi phải canh khoảng cách chuẩn để có thể vượt qua các thử thách. Mỗi lần vượt thử thách sẽ chia làm 5 bước nhỏ bao gồm:
Bước 1: Vẽ cầu.
Bước 2: Thả cầu đến khi chạm trụ phải.
Bước 3: Hero di chuyển đến cuối cầu.
Bước 4: Kiểm tra thắng thua.
Bước 5: Tạo chướng ngại vật mới.
Lưu đồ của game được thiết kế như sau:
Bắt đầu
Bird chạm cạnh trên
Kết thúc S
Đ
Di chuyển Bird lên trên
Hình 4-19. Lưu đồ chính game Stick Hero.
Lưu đồ chính game Stick Hero
Game sẽ chạy theo trình tự từ bước 1 đến bước 4, bước 4 là bước kiểm tra thua. Nếu như kiểm tra chưa thua thì sẽ chạy tới bước 5 rồi quay về bước 1.
Hình 4-20. Lưu đồ bước 1.
Lưu đồ bước 1.
Bước đầu tiên là bước vẽ cầu, người chơi sẽ nhấn giữ nút X trên PS2 để cầu dài ra liên tục. Người chơi cần canh sao cho cầu bắt vừa đủ, không dư, không thiếu. Chiều dài tối đa có thể vẽ là từ vị trí của Hero đến cạnh phải màn hình.
Thả nút X để qua bước 2.
Bắt đầu
Kết Thúc S
Khởi tạo tọa độ Hero, 2 trụ
Bước 1
Bước 2
Bước 3
Bước 4
Bước 5
Bắt đầu
Nhấn X
Kết thúc S
Đ
Tăng chiều dài cầu Vẽ cầu
Nhấn X Đ
S
Hình 4-21. Lưu đồ bước 2.
Bước này dùng để xoay cầu từ thẳng đứng sang nằm ngang để nối đến vị trí Hero cần di chuyển tới. Hết bước 2 chuyển sáng bước kế tiếp.
Hình 4-22. Lưu đồ bước 3.
Bước 3 là bước Hero di chuyển từ trụ đang đứng sang trụ mới bằng cầu vừa xoay ở bước 2. Hero đi đến cuối cầu sẽ dừng lại chuyển sang bước 4.
Bắt đầu
Cầu chạm trụ phải
Kết Thúc S Đ
Xóa cầu Tính toán tọa độ mới
Vẽ cầu mới
Bắt đầu
Hero tới cuối cầu
Kết Thúc S Đ
Xóa Hero Tính toán tọa độ mới
Vẽ Hero mới
Hình 4-23. Lưu đồ bước 4.
Lưu đồ bước 4.
Bước này dùng để kiểm tra xem Hero có đứng ngoài trụ mới hay không bằng cách so sánh tọa độ của 2 đối tượng với nhau.
Nếu như Hero đứng ngoài trụ mới thì xem như người chơi thua và gọi hàm “ Xử lý thua”.
Hàm xử lý thua đã trình bày ở phần trước.
Hình 4-24. Lưu đồ bước 5.
Lưu đồ bước 5.
Nếu như vượt qua được bước 4 thì bước 5 sẽ tạo ra màn mới bằng cách di chuyển Hero và trụ hiện tại về bên trái sau đó tạo tọa độ trụ mới và quay về bước 1.
Bắt đầu
Cầu > cạnh phải trụ phải
Kết Thúc S
Đ
Cầu < cạnh trái trụ
phải Xử lý thua
Đ
S
Bắt đầu
Kết Thúc Đ
S
Dời Hero, trụ qua trái
Tọa độ Hero < tọa độ gốc
e. Game Ai Là Triệu Phú:
Đây là 1 game không còn xa lạ đối với mọi người. Người chơi sẽ phải vượt qua 15 câu hỏi để đạt được kết quả cao nhất. Trong mỗi câu hỏi sẽ thiết kế phần phát tiếng sao cho càng giống với thực tế càng tốt để tạo sự thích thú với người chơi. Lưu đồ của game:
Bắt đầu
Kết Thúc Chạm nút Bắt Đầu
Đ
S Vẽ màn hình Vẽ nút Bắt đầu
Hiện câu hỏi Đọc câu hỏi Hiện đáp án Đếm ngược
Chọn đáp án
Đáp án đúng
Thông báo đúng
1
Hết thời gian 1
Thông báo sai
Thay đổi câu hỏi Reset Biến
2
2
Nhấn Select
Reset Biến GAME Thoát Game
Reset Biến
2 Đ
Đ Đ
Đ S
S S
S
Hình 4-25. Lưu đồ game Ai là triệu phú.
f. Game Vòng Quay Sát Phạt:
Đây là game thiết kế riêng cho người chơi sử dụng trong các cuộc liên hoàn với nội dung trong vòng quay bao gồm các hình thức phạt như bắt uống gấp đôi, gấp ba hoặc được ăn mồi... Mỗi lượt người chơi sẽ chạm vào màn hình để quay, thời điểm dừng là hoàn toàn ngẫu nhiên. Lưu đồ được thiết kế:
Hình 4-26. Lưu đồ chính Game Vòng Quay Sát Phạt.
Bắt đầu
Khởi tạo timer2,5 Tạo góc
Vẽ màn hình Vẽ kim Tốc độ =1 Chiều quay = tăng
Xử lý góc Xử lý tốc độ quay
Tốc độ > 0
Xử lý kết quả theo góc
Thông báo kết quả
1
1
Chạm màn hình
Reset biến Nhấn Select
Reset biến GAME Thoát Game
Kết thúc
S Đ
S S
Đ Đ
Game này sẽ sử dụng timer 2 cho việc định thời gian để thay đổi thông số góc và thay đổi tốc độ quay, timer 5 để tạo ra thời gian delay ngẫu nhiên để tạo tính ngẫu nhiên cho trò chơi. Khi tốc độ đạt tối đa thì bắt đầu cho timer 5 hoạt động. Sau khi tốc độ về 0 thì xét thông số góc từ đó đưa ra thông báo về vị trí đạt được của lượt quay đó.
Tiếp theo là lưu đồ chương trình con xử lý góc và xử lý tốc độ quay của kim:
Hình 4-27. Lưu đồ xử lý góc và tốc độ quay.
Như đã trình bày, khi bắt đầu thì mỗi lần timer 2 ngắt sẽ cho tăng tốc độ quay của kim lên và cùng lúc đó thay đổi giá tị góc của kim để đạt vị trí mới. Cho đến
Bắt đầu
Tăng tốc độ Ngắt timer2
Tốc độ < tốc độ tối đa Chiều quay=tăng
Thay đổi góc Vẽ kim
Tốc độ = tốc độ max
Tốc độ > 0 Chiều quay=giảm
Giảm tốc độ
Cho phép timer 5
Ngắt timer 5
Chiều quay = giảm Tắt timer 5
Kết thúc 1
1
2
2
S
Đ
Đ
S
S
Đ
Đ
S
S
Đ
khi tốc độ đạt tối đa thì kích hoạt timer 5 với thời gian đếm được tạo ra 1 cách ngẫu nhiên. Tiếp theo là lưu đồ thông báo kết quả:
Dựa vào vị trí góc của kim mà đưa ra các thông báo về kết quả tương ứng Hình 4-28. Lưu đồ thông báo kết quả.
Bắt đầu
Kết thúc 0<góc<=pi/4
Pi/4<góc<=pi/2
Pi/2<góc<=3pi/4
3pi/3<góc<=pi
pi<góc<=5pi/4
5pi/4<góc<=6pi/4
6pi/4<góc<=7pi/4 Đ
S
Đ
S
Đ
S
Đ
S
Đ
S
Đ
S
Đ
S
Kết quả 1
Kết quả 2
Kết quả 3
Kết quả 4
Kết quả 5
Kết quả 6
Kết quả 7
Kết quả 8
g. Game Pika Pika:
Chắc hẳn ai cũng đã chơi qua trò khủng long T-Rex vượt chướng ngại vật của trình duyệt web khi rớt mạng, T-Rex sẽ lần lượt nhảy qua các chướng ngại vật (CNV). Pika Pika cũng hoạt động dựa trên cơ chế đó, nhân vật chính của game là pikachu, trong game thì pikachu sẽ liên tục chạy trên đường nền, mỗi khi gặp CNV thì người chơi nhấn nút X trên PS2 để pikachu nhảy lên vượt qua. Nếu như pikachu chạm vào CNV xem như thua cuộc. Từ đó lưu đồ của game được thiết kế như sau:
Hình 4-29. Lưu đồ chính game Pika Pika.
Bắt đầu
Khởi tạo ngoại vi Khởi tạo giá trị biến
Vẽ Pikachu Vẽ CNV
Nhấn X
Ngắt timer5
Xử lý CNV Pikachu nhảy
Kiểm tra thua
Kết Thúc
1
1
Thua
Thông báo
Xử lý thua Đ
S
S
Đ
S
Đ
Như lưu đồ trên, mỗi lần người chơi nhấn X sẽ gọi hàm “Pikachu nhảy ” để
xử lý cho pikachu nhảy lên và hàm xử lý cho CNV di chuyển liên tục.
Bắt đầu
Tăng độ cao Pikachu Vẽ Pikachu
Độ cao < độ cao đỉnh
Giảm độ cao Pikachu Vẽ Pikachu
Độ cao = đất
Kết thúc Đ
S
S
Đ
Bắt đầu
Tọa độ CNV > 0
Di chuyển CNV sang trái Vẽ CNV
Tạo tọa độ CNV mới Vẽ CNV
Kết thúc
S Đ
Bắt đầu
Pikachu chạm CNV
Trả kết quả thua
Kết thúc Đ S
Hình 4-31.Lưu đồ di chuyển CNV.
Hình 4-32. Lưu đồ kiểm tra pika có đụng CNV hay không.
Hình 4-30. Lưu đồ xử lý pikachu nhảy lên.