Tải bản đầy đủ (.pdf) (17 trang)

Bài Tập Lớn Hệ Nhúng Đề Tài Trò Chơi Bắn Máy Bay Spaceshooter.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (667.4 KB, 17 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC BÁCH KHOA HÀ NỘI</b>

<b>BÀI TẬP LỚN HỆ NHÚNGĐề tài: Trị chơi bắn máy bay</b>

<b>Nhóm: 3</b>

Trần Văn Báu 20204813Phạm Mạnh Cường 20204819Nguyễn Huy Toàn 20204796

<b>Giảng viên hướng</b>

<b>dẫn:</b> <sup>TS. Ngô Lam Trung</sup>

<b>Trường:</b> Công nghệ thông tin và truyền thông

<b>HÀ NỘI, 10/8/2023</b>

Ch ký c a GVHDữ ủ

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>TÀI LI U THAM KH OỆẢ ...16</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>LỜI CẢM ƠN</b>

Chúng em xin dành những dòng này để bày tỏ lòng biết ơn chân thành đến thầy TS. Ngô Lam Trung - người đã vô cùng tận tâm và hướng dẫn chúng em trong suốt quá trình thực hiện bài tập lớn mơn Hệ Nhúng. Thầy là nguồn động viên quý báu, luôn tạo điều kiện thuận lợi cho chúng em để tiếp cận kiến thức một cách sâu sắc hơn và hiểu rõ hơn về lý thuyếtcũng như thực tiễn của hệ nhúng. Sự chia sẻ từ thầy đã giúp chúng em vượt qua những khó khăn, đồng thời khám phá ra nhiều hướng đi mới mẻ. Chúng em xin bày tỏ lòng biết ơn sâu sắc và chân thành về tất cả những kiến thức mà thầy đã truyền đạt. Những bài học và lời khuyên của thầy giúp chúng em không chỉ hiểu sâu về mơn học mà cịn xây dựng cho chúng em một nền tảng lý thuyết và thực hành vững chắc cho tương lai.

Một lần nữa, chúng em xin gửi lời cảm ơn chân thành đến thầy Ngô Lam Trung vì tất cả những gì thầy đã làm cho chúng em. Chúng em xin kính chúc thầy dồi dào sức khỏe và thành công trong công việc.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>MỞ ĐẦU</b>

Trong thời đại cơng nghệ hiện đại, trị chơi điện tử khơng chỉ là mộthình thức giải trí, mà cịn là một nền văn hố, nơi con người có thể tươngtác, khám phá và thách thức bản thân thông qua những trải nghiệm ảođầy sáng tạo. Trong bối cảnh đó, việc phát triển trị chơi khơng chỉ địi hỏikiến thức về lập trình và thiết kế, mà cịn u cầu sự hiểu biết về hệnhúng - một lĩnh vực quan trọng để tạo ra những trải nghiệm trò chơitương tác và mượt mà.

Trong bài báo cáo này, chúng em xin trình bày về quá trình pháttriển và thực hiện trò chơi SpaceShooter - một trò chơi thú vị mà chúngem đã xây dựng trong mơn học "Hệ Nhúng". Trị chơi SpaceShooter khôngchỉ là sản phẩm của sự sáng tạo và đam mê của chúng em, mà còn là kếtquả của những kiến thức và kỹ thuật mà chúng em đã học được từ mônhọc này. Chúng em sẽ bắt đầu bằng việc giới thiệu tổng quan về trò chơiSpaceShooter và mục tiêu của dự án. Sau đó, chúng em sẽ trình bày vềquá trình thiết kế và phát triển trò chơi, bao gồm việc áp dụng các nguyêntắc hệ nhúng vào việc tạo ra trải nghiệm chơi game mượt mà và thú vị.Chúng em cũng sẽ trình bày về các thử nghiệm và kiểm tra hiệu năng củatrò chơi. Cuối cùng, chúng em sẽ tổng kết những kết quả đạt được vànhững học thức đã học được trong quá trình phát triển trị chơi này.

Bài báo cáo hy vọng sẽ là một cái nhìn tổng quan về quá trình pháttriển trò chơi SpaceShooter và cách chúng em đã ứng dụng kiến thức vềhệ nhúng vào dự án này. Chúng em mong rằng thông qua bài báo cáonày, chúng em sẽ truyền tải được đầy đủ kiến thức mà chúng em đã họcđược ở kì vừa rồi.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>DANH MỤC HÌNH ẢNH</b>

Figure 1: Kit STM32F429...10

<b>dfdsfsdfdfdfds</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>PHÂN CHIA CÔNG VIỆC</b>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>CHƯƠNG I: TỔNG QUAN ĐỀ TÀI</b>

<b>1. Mô tả đề tài</b>

Đề tài tập trung vào việc phát triển trò chơi SpaceShooter trên kit STM32F429i.

Thể loại game: PvE (Người với máy)

Mơ tả trị chơi: Người chơi có thể điều khiển máy bay lên, xuống, trái, phải, đồng thời máy bay bắn ra những tia đạn tiêu diệt địch. Sau khi tiêu diệt địch, người chơi sẽ được thưởng điểm để nâng độ khó trị chơi sau mỗi 5 điểm. Độ khó đạt tối đa là 3, sau đó người chơi sẽ chiến đấu với Boss cuối để dành chiến thắng chung cuộc. Trong quá trình chiến đấu, người chơi sẽ có 3 mạng, và mất một với mỗi lần trúng đạn của kẻ địch. Nếu người chơi đã hết 3 mạng mà chưa thể hạ gục Boss cuối, người chơi sẽ thất bại, người chơi có thể bấm màn hình để chơi lại.

Làm quen với các cơng cụ lập trình mới như STM32Cube IDE, TouchGFX, …

Sử dụng các tính năng của hệ điều hành FreeRTOS áp dụng vào lập trình trị chơi

Sử dụng kiến thức về lập trình hệ nhúng để tối ưu hóa mã nguồn trị chơi, bao gồm việc quản lý tài nguyên hệ thống như bộ nhớ và xử lý, để đảm bảo trò chơi hoạt động mượt mà và không gây tốn nhiều nguồn tài nguyên.

Làm quen với các cơng cụ lập trình mới như STM32CubeIDE, TouchGFX,…

Với những mục tiêu trên, chúng em mong muốn tạo ra một trị chơi SpaceShooter hồn chỉnh và thú vị, đồng thời áp dụng kiến thức hệ nhúng vào việc phát triển trò chơi trên kit STM32F429i.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>CHƯƠNG II: NỘI DUNG</b>

<b>1. Tìm hiểu phần cứng</b>

<i>1.1. Chip STM32F429</i>

Chip STM32F429 thuộc dòng STM32 của STMicroelectronics, là một dòng vi xử lý nhúng phổ biến dựa trên kiến trúc ARM Cortex-M4. STM32F429 là một trong các mẫu chip điều khiển STM32 mạnh và phù hợp với nhiều chương trình.

Một số đặc điểm nổi bật của STM32F429:

Bộ nhớ và Flash lớn: STM32F429 đi kèm với bộ nhớ Flash lên đến vài trăm KB và RAM lên đến vài chục KB, cho phép lưu trữ mã chương trìnhvà dữ liệu một cách dễ dàng.

Giao tiếp đa dạng: STM32F429 hỗ trợ nhiều giao tiếp như SPI, I2C, UART, USB và nhiều giao tiếp khác, làm cho nó phù hợp cho nhiều ứng dụng.

Màn hình cảm ứng: Một số phiên bản của STM32F429 có khả năng điềukhiển màn hình cảm ứng, cho phép xây dựng các ứng dụng giao diện người dùng tương tác.

Hỗ trợ peripherial phong phú: Chip điều khiển này đi kèm với nhiều peripherial như GPIO, ADC, DAC, PWM và nhiều tính năng khác.

<i>1.2. Kit stm32f429i-discovery </i>

Kit STM32F429I-DISCO là một bộ phát triển (development board) dành chovi điều khiển STM32F429 của STMicroelectronics. Bộ kit này được thiết kếđể giúp các nhà phát triển dễ dàng thử nghiệm và phát triển ứng dụngnhúng trên nền tảng vi điều khiển STM32F429.

Một số đặc điểm và tính năng của kit STM32F429I-DISCO:

Vi điều khiển STM32F429: Kit được trang bị vi điều khiểnSTM32F429IGT6, với lõi xử lý Cortex-M4 tốc độ cao, bộ nhớ Flash lênđến 1MB và RAM lên đến 256KB.

Màn hình cảm ứng TFT LCD: Kit đi kèm với một màn hình TFT LCD màu2.4 inch, có khả năng cảm ứng, giúp bạn xây dựng các ứng dụng giaodiện người dùng đa dạng.

Giao tiếp đa dạng: Kit hỗ trợ nhiều giao tiếp như USB OTG, UART, SPI,I2C, CAN và nhiều giao tiếp khác, giúp bạn kết nối với các thiết bị vàmodule khác.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Phím bấm và LED: Kit có các phím bấm và LED để thử nghiệm và kiểmtra các chức năng cơ bản của vi điều khiển.

Nút nhấn Reset và User: Có các nút nhấn để thực hiện việc khởi độnglại vi điều khiển (Reset) hoặc thao tác theo dõi từ người dùng (User).

Nguồn cung cấp: Kit có thể được cấp nguồn từ USB hoặc nguồnngoài, cho phép bạn lựa chọn nguồn cung cấp phù hợp với ứng dụngcủa mình.

<i><small>Figure 1: Kit STM32F429</small></i>

<i>1.3. Bảng nút bấm</i>

Bao gồm 4 nút bấm: trái, phải, lên, xuống được hàn sao cho các chân nốt đất nối với nhau, các chân còn lại sẽ được kết nốt với các chân khác nhau của kit.

<i>1.4. Dây nối</i>

Sử dụng các dây nối cái-cái để kết nối kit với bảng nút bấm. Các dây nối này có thể có đầu đực ở một đầu và đầu cái ở đầu còn lại để dễ dàng kết nối với chân cắm của bảng nút bấm và bộ kit.

<i>1.5. Cáp nạp chương trình</i>

Cáp nạp chương trình là một phụ kiện quan trọng khi làm việc với vi điều khiển STM32F429I-DISCO hoặc bất kỳ vi điều khiển STM32 nào. Nó cho phép nạp chương trình vào vi điều khiển từ máy tính của bạn thơng qua cổng USB. Cáp nạp chương trình thường đi kèm với một đầu USB và một đầu micro USB, giúp kết nối vi điều khiển với máy tính để nạp mã chương trình hoặc thực hiện các thao tác khác như gỡ lỗi và theo dõi hoạt động của chip.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>2. Tìm hiểu các cơng cụ lập trình</b>

<i>2.1. STM32Cube IDE</i>

STM32Cube IDE là một mơi trường phát triển tích hợp (IDE) được cung cấpbởi STMicroelectronics cho việc lập trình và phát triển ứng dụng trên các viđiều khiển STM32. Nó cung cấp một loạt các cơng cụ và tích hợp giúp dễ dàng viết mã, nạp chương trình và gỡ lỗi trên các vi điều khiển STM32.Các đặc điểm và tính năng chính của STM32Cube IDE:

Dựa trên Eclipse: STM32Cube IDE được xây dựng trên nền tảng Eclipse,cung cấp mơi trường lập trình quen thuộc và linh hoạt.

Tích hợp STM32CubeMX: STM32Cube IDE tích hợp sẵn cơng cụ STM32CubeMX, giúp dễ dàng cấu hình vi điều khiển và tạo mã mẫu.

Nạp chương trình và gỡ lỗi dễ dàng: IDE hỗ trợ nạp chương trình và gỡ lỗi trực tiếp từ giao diện người dùng, giúp tiết kiệm thời gian và tối ưu hóa quy trình phát triển.

Hỗ trợ lập trình nhiều ngơn ngữ: STM32Cube IDE hỗ trợ nhiều ngơn ngữ lập trình như C và C++, cho phép viết mã theo phong cách ưa thích.

Hỗ trợ thư viện HAL và LL: IDE tích hợp các thư viện phần cứng HAL (Hardware Abstraction Layer) và LL (Low-Level) giúp quản lý phần cứng dễ dàng hơn.

<i>2.2 TouchGFX</i>

TouchGFX là một nền tảng giao diện người dùng (UI) dựa trên đồ họa được cung cấp bởi STMicroelectronics. Nó cho phép xây dựng các giao diện người dùng đẹp và tương tác cho các ứng dụng nhúng trên vi điều khiển STM32.

Các đặc điểm và tính năng chính của TouchGFX:

Giao diện người dùng đồ họa: TouchGFX cho phép tạo giao diện người dùng đẹp, với các chức năng tương tác như cảm ứng và điều khiển.

Thư viện đồ họa: TouchGFX cung cấp nhiều thư viện đồ họa sẵn có, giúp người dùng tạo ra các hiệu ứng và đối tượng đa dạng trong giao diện người dùng.

Tùy chỉnh linh hoạt: Người dùng có thể tùy chỉnh giao diện người dùng dễ dàng thông qua việc chỉnh sửa mã và sử dụng công cụ thiết kế.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Hỗ trợ phần cứng tùy chỉnh: TouchGFX hỗ trợ việc tùy chỉnh giao diện cho các màn hình có độ phân giải và kích thước khác nhau.

<b>3. Tìm hiểu hệ điều hành FreeRTOS</b>

FreeRTOS (Free Real-Time Operating System) là một hệ điều hành thời gian thực mã nguồn mở phát triển dựa trên mơ hình tuần tự và hoạt động trên các vi điều khiển nhúng và hệ thống nhúng. Nó cung cấp một giải pháp hệ điều hành nhẹ và hiệu quả cho các ứng dụng yêu cầu độ tin cậy và thời gian thực.

Một số điểm quan trọng về FreeRTOS:

Tuần tự hóa: FreeRTOS hoạt động trên mơ hình tuần tự, nghĩa là nhiều nhiệm vụ (tasks) có thể chạy song song nhau, tạo ra sự đa nhiệm nhẹ.

Quản lý nguồn tài nguyên: FreeRTOS quản lý nguồn tài nguyên như bộ nhớ và xử lý của vi điều khiển, giúp tối ưu hóa hiệu suất hệ thống.

Thời gian thực: FreeRTOS thiết kế để hỗ trợ thời gian thực và các ứngdụng yêu cầu đáp ứng nhanh chóng trong mơi trường nhúng.

Task và Scheduler: Các nhiệm vụ được thực hiện trong FreeRTOS được gọi là tasks. FreeRTOS có một bộ lập lịch (scheduler) quản lý thứ tự thực hiện các tasks theo thời gian và ưu tiên cài đặt.Sự kiện và Semaphore: FreeRTOS cung cấp cơ chế sự kiện và semaphore để đồng bộ và chia sẻ dữ liệu giữa các tasks.

Kiến trúc đa nền tảng: FreeRTOS hỗ trợ nhiều kiến trúc vi điều khiển vàhệ thống khác nhau, giúp dễ dàng sử dụng trong nhiều dự án.

<b>4. Tìm hiểu cơ chế trị chơi</b>

Cơ chế trị chơi là phần quan trọng trong việc hiểu cách trò chơi Space Shooter hoạt động. Space Shooter là một thể loại trị chơi mà người chơi thường đóng vai trị của một máy bay chiến đấu và chiến đấu chống lại đợt tấn cơng của các kẻ thù khơng gian. Nhóm em tìm hiểu được một số cơ chế quan trọng của trò chơi:

Di chuyển và Điều khiển: Trong trò chơi Space Shooter, người chơi có khả năng di chuyển máy bay hoặc tàu vũ trụ theo các hướng: lên, xuống, trái và phải. Điều này thường được thực hiện bằng cách sử dụng các phím bấm trong bảng nút bấm. Việc điều khiển tàu vũ trụ

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

một cách linh hoạt để tránh đạn và tấn công địch là quan trọng để sống sót.

Bắn và Tấn cơng: Một phần quan trọng của cơ chế trò chơi Space Shooter là khả năng bắn hạ kẻ thù. Người chơi có một loạt đạn để tấn cơng. Việc định vị và tấn công kẻ thù để tránh bị tấn công ngược lại là điểm mấu chốt để chiến thắng.

Kẻ địch: Trị chơi Space Shooter thường có nhiều loại kẻ địch với độ khóvà cách tấn cơng khác nhau. Một số kẻ địch có sức sát thương và chống chịu cao hơn, trong khi các kẻ thù khác có chiến thuật tấn công đa dạng. Điều này tạo ra sự thách thức và đa dạng trong trò chơi.

Nâng cấp: Trong trò chơi Space Shooter, người chơi thường có cơ hội thu thập các vật phẩm power-up để cải thiện vũ khí hoặc khả năng tấncơng của họ. Những power-up này có thể cung cấp vũ khí mạnh hơn, tốc độ tấn cơng nhanh hơn, bảo vệ thêm và các tính năng khác giúp người chơi dễ dàng hơn trong việc đối phó với kẻ thù.

Màn chơi và Cấp độ: Trị chơi Space Shooter thường chia thành các màn chơi và cấp độ khác nhau. Mỗi cấp độ thường có độ khó tăng dần,với số lượng và tốc độ của kẻ thù tăng lên. Điều này tạo ra sự tiến bộ và thách thức liên tục cho người chơi.

<b>5. Lập trình trị chơi và kiểm thử</b>

Xác định yêu cầu: Trước hết, nhóm xác định các yêu cầu cơ bản cho trò chơi. Điều này bao gồm quyết định về cơ chế trò chơi, đồ họa, và các tính năng chính khác.

Chọn cơng cụ lập trình: Nhóm sử dụng cơng cụ lập trình STM32Cube IDE kết hợp với TouchGFX.

Thiết kế cấu trúc trò chơi: Thiết kế cấu trúc và logic của trò chơi, bao gồm các chức năng, lớp, và quản lý trạng thái trị chơi.

Xây dựng đồ họa: Tạo các hình ảnh nhân vật, hoạt cảnh và cho trị chơi.

Lập trình gameplay: Bắt đầu viết mã cho các cơ chế gameplay như di chuyển, tấn công, xử lý va chạm, và các tính năng đặc biệt khác.

Kiểm thử liên tục: Trong quá trình lập trình, thường xuyên kiểm thử để đảm bảo các tính năng hoạt động đúng và khơng có lỗi.

Kiểm thử trò chơi:

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Kiểm tra chức năng: Thử nghiệm các chức năng trò chơi như di chuyển, tấn cơng, va chạm và tính năng đặc biệt để đảm bảo chúng hoạt động đúng theo thiết kế.

Kiểm tra độ khó: Đảm bảo độ khó của trị chơi tăng dần theo cấp độ vàtạo ra sự thách thức thích hợp cho người chơi.

Kiểm tra hiệu năng: Đảm bảo trò chơi chạy mượt mà và khơng có sự trễ hẹn không mong muốn trên các thiết bị khác nhau.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>CHƯƠNG III: THIẾT KẾ, XÂY DỰNG SẢN PHẨM</b>

<b>1. Ghép nối phần cứng</b>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Mỗi khi người chơi bắn trúng 1 chiếc máy bay 3 lần chúng sẽ biến mất và cộng cho người chơi một điểm.

Khi người chơi đủ 15 điểm sẽ chuyển sang màn quái khủng.

<i>2.5. Màn quái khủng (Boss cuối)</i>

Sử dụng sức mạnh của tàu bay, tiêu diệt quái khủng và dành chiến thắng.

3.2.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>TÀI LIỆU THAM KHẢO</b>

[1]. Tài liệu 1[2]. Tài liệu 2[3].

</div>

×