Lưu đồ giải thuật

Một phần của tài liệu Thiết kế game mini trên kit STM32F746G discovery (Trang 47 - 71)

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.

Một phần của tài liệu Thiết kế game mini trên kit STM32F746G discovery (Trang 47 - 71)

Tải bản đầy đủ (PDF)

(84 trang)