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 (1.04 MB, 11 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<i><b>LỜI NÓI ĐẦU...1</b></i>
<i><b>CHƯƠNG 1: GIỚI THIỆU CHUNG...2</b></i>
<b><small>1.1 Giới thiệu về chủ đề...2</small></b>
<b><small>1.2 Khó khăn và thách thức...2</small></b>
<b><small>1.3 Mục tiêu của đề tài...3</small></b>
<i><b>CHƯƠNG 2: PHÂN TÍCH BÀI TỐN...3</b></i>
<b><small>2.1 Tổng qt...3</small></b>
<b><small>2.2 Sơ đồ hoạt động (Class Diagram)...3</small></b>
<b><small>2.3 Mơ tả chi tiết chức năng...4</small></b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Thời đại ngày nay, công nghệ thông tin càng ngày càng phổbiến, sau cuộc cách mạng công nghiệp năm 2013, cơng nghệngày càng phát triển và đặc biệt giải trí bằng cơng nghệ đãkhơng phải là việc gì hiếm lạ gì nữa. Vì muốn tạo cho mình mộtcơ sở để bắt đầu vào việc tạo ra nhiều game hay hơn, có thểtăng sự hứng thú của mọi người, giảm stress sau khi lao độngvất vả hay có thể làm một game về trí tuệ.
Chính vì thế em xin được bắt đầu với một demo game (dùchưa được hoàn chỉnh) có thể giúp mọi người có thể vui vẻ saukhi làm việc vất vả. Trong quá trình thực hiện đề tài này, em đãcố gắng thực hiện thật tốt, nhưng có lẽ, do vốn kiến thức cịnhạn hẹp cũng như những yếu tố khách quan khác mà khôngtránh khỏi những sai sót. Chúng em rất mong nhận được sựđóng góp ý kiến, phê bình và hướng dẫn thêm của thầy cơ.
Cuối cùng thì em xin gửi lời cảm ơn đến PGS.TS Trần ThịThanh Hải đã hướng dẫn tận tình, giảng giải những kiến thứcgiúp em hoàn thành bài tập lớn này.
<b>Chúng em xin chân thành cảm ơn! </b>
<small>P a g e | 1</small>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Ngày nay công nghệ thông tin trở thành một lĩnh vực mũinhọn trong công cuộc phát triển kinh tế xã hội. Cùng với côngnghệ sinh học và năng lượng mới, công nghê thông tin (CNTT)vừa là công cụ, vừa là động lực thúc đẩy q trình cơng nghiệphóa, hiện đại hóa đất nước.
Có thể nói game đã và đang trở thành một nhu cầu giải tríthiết yếu trong cuộc sống của con người hiện nay. Game bắntrứng khủng long hay là game bắn gà đã khơng cịn xa lạ gìnữa. Game địi hỏi người chơi phải khéo léo cũng như khả năngquan sát để có thể được điểm cao, vượt qua vơ số vật cản cómức độ từ dễ đến khó. Một đặc điểm nổi bật của game này làcấu hình nhẹ, dễ sử dụng đối với người dùng. Cũng từng là mộtngười chơi game này đến mức nghiện thì em muốn có thể pháttriển game này. Nhưng hiện tại kiến thức còn chưa đủ nên emchỉ mới làm ra một phần demo đơn giản. Tên gọi của nó là“ShotPlane”.
Trong quá trình thực hiện viết chương trình game, em cũngđã gặp khơng ít khó khăn cũng như thách thức về nội dung, kỹthuật.
Ngay cả lúc add thư viện SDL em đã làm khơng chính xácdẫn đến nhiều kết quả sai lệch. Và đây sẽ là bài học đáng nhớcho em để có thể cẩn thận và tỉ mỉ nhiều hơn.
Để tạo nên một chương trình hồn thiện, chất lượng và cóthể sử dụng trong thực tiễn thì địi hỏi chúng ta phải có kiếnthức nền tảng về ngơn ngữ lập trình C++ một cách chắc chắn,đầy đủ và chính xác, đặc biệt là lập trình hướng đối tượng (OOP)nhằm đảm bảo tính bảo mật cao, dễ dàng quản lý code khi cósự thay đổi và góp phần tiết kiệm tài ngun hiệu quả. Thêmvào đó, chương trình game khi được thực hiện phải được chuẩnbị kỹ, sẵn sàng thực hiện các thao tác hợp lý, chính xác, chương
<small>P a g e | 2</small>
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">trình phải được tối ưu, cần phải tính tốn và điều chỉnh phù hợpcác giá trị thực tế như các hàm để tính trọng lực, khoảng cách…của các vật thể cũng như là nhân vật người chơi mà đây là mộtcông việc đòi hỏi sự tỉ mỉ, độ nhanh nhạy, chuẩn xác cao.
Bên cạnh đó, việc tìm lỗi và sửa lỗi trong chương trình cũnggặp rất nhiều khó khăn khơng mong muốn của người lập trình,sẽ khiến cho việc thực hiện chương trình bị ảnh hưởng, dẫn đếnchương trình chạy khơng đúng ý người lập trình hoặc chạy saichức năng.
Ngồi ra, chương trình cũng phải đáp ứng các yêu cầu nhưdễ dàng sử dụng, thuận tiện cho người dùng, phải nhẹ, phù hợpvới mọi loại thiết bị và đảm bảo tính giải trí, đáp ứng nhu cầucủa người dùng.
+ Chia sẻ một tựa game phù hợp cho mọi lứa tuổi giúp thưgiãn vào lúc rảnh rỗi, giảm bớt các căng thẳng trong học tậpcũng như là công việc, ...
+ Việc học ở cấp độ đại học có thể nói là rất căng thẳng nênđề tài game này có thể một phần nào đó giúp các bạn sinh viênBách Khoa nói riêng và các bạn học sinh sinh viên nói chung cóthể giải trí, kích thích trí não, và luyện phản xạ mắt sau nhữnggiờ học ở trường.
1. Thiết lập hình nền hay gọi là thế giới cho game2. Thiết lập nhân vật chính (Player)
3. Thiết lập các mối đe dọa (Threats)
4. Thiết lập những hiệu ứng của nhân vật chính và mối đedọa
- Di chuyển thơng qua bàn phím (Left – Right – Top –Bottom)
<small>P a g e | 3</small>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">- Bắn đạn (Bullet) thông qua con chuột (Mouse)5. Thiết lập những hiệu ứng khi va chạm
- Nhân vật chính trúng đạn hay đụng vô mối đe dọa sẽ tửvong và các mối đe dọa trúng đạn sẽ biến mất.
6. Thiết lập âm thanh cho các vụ nổ (Explosion)7. Thiết lập màn hình có thể di chuyển
- Tạo khơng gian và có nhiều điều thú vị trong thế giớicủa game
8. Thiết lập số mạng cho nhân vật chính
1. Class Common_Function.h: chứa những dữ liệu cứng để cóthể thay thế nhanh gọn khi cần thiết và chứa những hàm xử líhình ảnh (input và output background, player và threats, vụ nổ).
2. Class BaseObject.h: Là class chứa các hàm xử lí tọa độxuất hiện của nhân vật chính và các mối đe dọa và update liêntục màn hình.
3. Class MainObject: Là class kế thừa của BaseObject chứanhững hàm xử lí những vấn đề liên quan đến nhân vật chính:nhận sự kiện từ bàn phím tạo ra những di chuyển, nhận sự kiệntừ chuột để bắn đạn.
4. Class ThreatsObject: Là class kế thừa của BaseObject chứanhững hàm xử lí những vấn đề liên quan đến mối đe dọa: cácmối đe dọa sẽ xuất hiện ngẫu nhiên và cũng liên tục bắn đạn vàquỹ đạo di chuyển đều là đường thẳng.
5. Class BulletObject: Là class kế thừa của BaseObject chứanhững hàm xử lí vẫn đề liên quan đến đạn: đạn của nhân vậtchính xuất hiện lúc nào và đi đến đâu sẽ biến mất.
6. Class ExplosionObject: Là class xử lí vụ nổ, khi nhân vậtchính bị đạn của mối đe dọa hay mối đe dọa đụng đến thì sẽ cómột vụ nổ diễn ra.
<small>P a g e | 4</small>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">7. Class Playerpower: Là class xử lí về số mạng của nhân vậtchính.
Quá trình phần mềm chạy:
Đầu tiên khi phần mềm được khởi chạy, chưa được hồnthiện nên chưa có giao diện của trị chơi, nên khi khởi chạy sẽbắt đầu ln vơ game chính, sau đó sử dụng phím (Right – left –bottom – top) để di chuyển mỗi lần nhấn nút, màn hình sẽ đượcupdate liên tục và cũng sẽ giải phóng bộ nhớ liền. Và khi nhânvật chính sử dụng hết số mạng sẽ gặp cửa sổ “Game Over”. Vàkhi đó kết thúc.
+ Nền của trò chơi (bao gồm hình ảnh bầu trời, con đường)+ Hình ảnh người chơi: máy bay
+ Thanh cơng cụ tính điểm.
+ Các loại vật cản được thiết kế là các máy bay tiến đến ởmột tọa độ ngẫu nhiên.
Trò chơi được thiết kế để người chơi thư giãn và luyện phảnxạ. Mục tiêu của trò chơi được lấy cảm hứng từ game bắn gà,với lối chơi là né tránh các vật cản và sống sót càng lâu càngtốt.
Cách chơi rất đơn giản, người chơi sử dụng các phím (Right –Left – Top – Bottom) để điều khiển nhân vật và sử dụng nhấnchuột trái (Laser) và phải (đạn cầu) để tiêu diệt mối đe dọa. Các vật cản sẽ ngẫu nhiên xuất hiện và di chuyển nhanh vềphía người chơi dựa trên độ khó hiện tại của game. Trị chơi diễnra càng lâu, độ khó sẽ ngày càng tăng. Từ đó, điểm số ngườichơi nhận được sẽ tỉ lệ thuận với độ khó.
Khi người chơi va chạm với vật cản, người chơi sẽ bị nổ vàmất một mạng, và đến khi nhân vật chính sử dụng hết số mạng
<small>P a g e | 5</small>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">mình có (hiện tại em để là 3 mạng), màn hình kết thúc sẽ xuấthiện. “GameOver”.
Để tạo nên trò chơi này, chúng em đã sử dụng những kiếnthức học được ở trên lớp và sự hỗ trợ của SDL cùng với nhữngthư viện khác <vector> hay <string> để tạo ra những Classkhác nhau đảm nhận từng chức năng cụ thể trong trò chơi. Tuynhiên, vì hạn chế về mặt kiến thức và chưa đủ nghiên cứu nêntrị chơi vẫn chưa được hồn thiện và cịn rất nhiều điều có thểphải hồn thiện nữa.
+ Nhằm tạo ra một tựa game để mọi người giải trí miễn phí,em đưa ra phương pháp để giải quyết mục tiêu là: tạo ra mộtgame với Gameplay đơn giản, mối đe dọa đơn giản và tên chonó là “ShotPlane”.
+ Sử dụng các thuật tốn dùng ngơn ngữ lập trình C/C++ đểthực hiện viết chương trình và tạo nên ứng dụng. (Mơi trường –Visual Studio 2022).
+ Sử dụng mơi trường lập trình thơng minh, thuận tiện đểphát triển nhanh các chương trình một cách dễ dàng và tạođược các chương trình một cách nhanh chóng dựa trên ngơnngữ lập trình C/C++.
+ Dựa vào những kiến thức về lập trình C/C++ đã được họctrên lớp, sự hỗ trợ của giảng viên bộ môn và cùng tham khảo tàiliệu trên mạng internet, từ đó viết được chương trình theo mụctiêu: Sử dụng thư viện SDL, một số hàm đơn giản sẵn có để pháttriển lối chơi và tạo hình ảnh trong game.
+ Sau khi tạo lập ứng dụng thì dùng thử và sửa lỗi (nếu có).+ Viết bài cáo về game từ các bước thực hiện, phương pháp,mục tiêu, kết quả.
<small>P a g e | 6</small>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Sơ lược lý thuyết của phương pháp:
+ Từ các chức năng có sẵn trong mơi trường lập trình như mẫu(Templates lớp (Class) kết hợp với ngôn ngữ C++ (con trỏ, chuỗi,mảng...).
+ Sử dụng các lý thuyết cơ bản về lập trình hướng đối tượngđể tạo ra cấu trúc hợp lý cho phần mềm.
+ Tạo ra giao diện trò chơi và hệ thống vẽ trò chơi với sự trợgiúp của thư viện SDL.
+ Cuối cùng là thử nghiệm ứng dụng và khắc phục các lỗi(nếu có).
+ Bản đầy đủ của game có thể được cài đặt trên nền tảngWindows
+ Mã nguồn của game có thể được sử dụng để build game cóthể chạy được trên Windows sau khi cài đặt một số thư viện vàphần mềm.
Hiện tại em chưa đưa game này lên được. Vì thế nếu có thểtrong thời gian tới em sẽ cố gắng hoàn thiện và phát triển hơnrồi đưa lên ạ.
Khơng có.
Sau khi kết thúc quá trình làm kết quả đạt được:
- Xây dựng được gameplay đơn giản, giúp người chơi dễ tiếpcận.
- Thiết kế giao diện gần gũi, hài hước.
<small>P a g e | 7</small>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">- Hồn thiện trị chơi với hầu hết các chức năng cơ bản củamột tựa game 2D.
- Phần mềm được xây dựng với cấu trúc cực kì khoa học,giúp cho việc phát triển và sửa lỗi được dễ dàng hơn. Chúng emđạt được việc này với sự trợ giúp của những lý thuyết cơ bản vềlập trình hướng đối tượng.
Menu game và có boss cuối của game nếu chiến thắng sẽqua cửa.
Sẽ thêm về vấn đề thời gian.
Sẽ thêm về vấn đề level cấp của game.
Chúng em hy vọng, cơ có thể giới thiệu thêm nhiều chủ đề bàitập lớn hơn trong quá trình giảng dạy.
Chúng em xin gửi lời cảm ơn đến PGS.TS Trần Thị Thanh Hảiđã hướng dẫn tận tình, giảng giải những kiến thức, giúp chúngem hiểu rõ hơn những kiến thức về lập trình C/C++ qua nhữngbài giảng lí thú, hấp dẫn đối với sinh viên chúng em.
<small>P a g e | 8</small>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">[1] Giáo trình C++ và lập trình hướng đối tượng (2018) – Nhàxuất bản Bách Khoa Hà Nội – Phạm Văn Ất
[2] Phát Triển Phần Mềm 123AZ - Sức Mạnh Của Đam Mê(phattrienphanmem123az.com) trang web làm game.
[3] Thư viện SDL : Thư viện SDL_Input - Tải xuống (onworks.net)
<small>P a g e | 9</small>
</div>