Báo cáo này được thực hiện trong khuôn khổ môn học Đồ họa Máy Tính, với mục tiêu thiết kế và phát triển một phiên bản trò chơi rắn săn mồi, tích hợp các tính năng và cải tiến mới để nâng
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
ĐỒ HỌA MÁY TÍNH
ĐỀ T I: Mô Tả Trò Chơi Snake
Sinh viên thực hiện : PHẠM VĂN CÔNG Giảng viên hướng dẫn : NGÔ NGỌC TH NH
Trang 2PHIẾU CHẤM ĐIỂM Sinh viên thực hiện:
Trang 3MỤC LỤC
LỜI MỞ ĐẦU
Trang 4Trong thời đại công nghệ số hiện nay, trò chơi điện tử đã trở thành một phần không thể thiếu trong đời sống giải trí và giáo dục Chúng không chỉ cung cấp những phút giây thư giãn mà còn thúc đẩy sự phát triển tư duy logic và kỹ năng giải quyết vấn đề Trong bối cảnh đó, trò chơi rắn săn mồi, một biểu tượng của thể loại trò chơi đơn giản nhưng đầy thử thách, đã giữ được sự phổ biến và sức hút của mình qua nhiều thập kỷ Trò chơi này không chỉ đơn thuần là một trò chơi giải trí mà còn là một công cụ học tập hữu ích trong việc phát triển các kỹ năng lập trình và thiết kế phần mềm Báo cáo này được thực hiện trong khuôn khổ môn học Đồ họa Máy Tính, với mục tiêu thiết kế và phát triển một phiên bản trò chơi rắn săn mồi, tích hợp các tính năng và cải tiến mới để nâng cao trải nghiệm người chơi Đề tài này không chỉ nhằm mục đích tạo ra một sản phẩm phần mềm hoàn chỉnh mà còn cung cấp cái nhìn sâu sắc về quy trình phát triển trò chơi, từ việc lên kế hoạch và thiết kế đến việc triển khai và đánh giá hiệu quả Trong phần mở đầu này, em sẽ trình bày tổng quan về trò chơi rắn săn mồi,nêu rõ lý do chọn đề tài và mục tiêu của dự án Trò chơi rắn săn mồi, với lối chơi đơn giản nhưng đầy thử thách, đã được lựa chọn vì tính khả thi và sự phổ biến của nó Em tin rằng việc phát triển một phiên bản hiện đại của trò chơi này không chỉ là cơ hội để nâng cao kỹ năng lập trình mà còn để hiểu sâu hơn về các khái niệm trong đồ họa máy tính và thiết kế trò chơi.
Mục tiêu chính của dự án là xây dựng một trò chơi rắn săn mồi có thể chạy trên nền tảng Dev-C++ với các tính năng bổ sung như nhiều chế độ chơi, bảng xếp hạng điểm số và hệ thống điều khiển linh hoạt Em sẽ sử dụng các công cụ và thư viện đồ họa để hiện thực hóa ý tưởng và mang đến cho người chơi một trải nghiệm thú vị và hấp dẫn
Báo cáo này sẽ chi tiết hóa từng bước trong quá trình phát triển, từ việc thiết kế cấu trúc trò chơi cho đến việc triển khai và đánh giá Em hy vọng rằng kết quả của dự án này sẽ không chỉ đáp ứng được yêu cầu của môn học mà còn góp phần tạo ra một sản phẩm chất lượng, có thể mang lại giá trị thực tiễn trong việchọc tập và giải trí
CHƯƠNG 1: GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH
Trang 51.1 Lịch sử phát triển
- Graphics những năm 1950-1960:
+ Năm 1959 Thiết bị đồ hoạ đầu tiên là màn hình xuất hiện tại Đức
+ Năm 1960 - SAGE (Semi-Automatic Ground Environment System) xuất hiệnbút sáng thao tác với màn hình
+ Năm 1960 William Fetter nhà khoa học người Mỹ, ông đang nghiên cứu xâydựng mô hình buồng lái máy bay cho hãng Boeing của Mỹ Ông đã dựa trênhình ảnh 3 chiều của mô hình ngườiphi công trong buồng lái của máy bay đểxây dựng nên một mô hình tối ưu cho buồng lái máy bay Phương pháp này chophép các nhà thiết kế quan sát một cách trực quan vị trí của người lái trongkhoang Ông đặt tên cho phương pháp này là đồ hoạ máy tính (ComputerGraphics)
+ Màn hình là thiết bị thông dụng nhất trong hệ đồ hoạ, các thao tác của hầu hếtcác màn hình đều dựa trên thiết kế ống tia âm cực CRT (Cathode ray tube) Khi
đó giá để làm tươi màn hình là rất cao, máy tính xử lý chậm, đắt và không chắcchắn (không đáng tin cậy)
- Graphics: 1960-1970
+ Năm 1963 Ivan Sutherland (hội nghị Fall Joint Computer - lần đầu tiên có khảnăng tạo mới, hiển thị và thay đổi được thực hiện trong thời gian thực trên mànCRT)
+ Hệ thống này được dùng để thiết kế mạch điện: CRT, LightPen (bút sáng),computer (chứa chương trình xử lý thông tin) Người sử dụng có thể vẽ mạchđiện trực tiếp lên màn hình thông qua bút sáng
- Graphics:1970-1980
+ Raster Graphics (đồ hoạ điểm) Bắt đầu chuẩn đồ hoạ ví dụ như:GKS(Graphics Kernel System): European effort (kết quả của châu âu),Becomes ISO 2D standard
- Graphics: 1980-1990
+ Mục đích đặc biệt về phần cứng, thiết bị hình học đồ hoạ Silicon Xuất hiệncác chuẩn công nghiệp: PHIGS (Programmers Hierarchical Interactive GraphicsStandard) xác định các phương pháp chuẩn cho các mô hình thời gian thực vàlập trình hướng đối tượng
+ Giao diện người máy Human-Computer Interface (HCI)
- Computer Graphics: 1990-2000
Trang 6+ OpenGL API (Application Program Interface – giao diện chương trình ứngdụng).
+ Completely computer-sinh ra ngành điện ảnh phim truyện (Toy Story) rấtthành công Các tiềm tàng phần cứng mới: Texture mapping (dán các ảnh củacảnh thật lên bề mặt của đối tượng), blending (trộn màu)
- Computer Graphics: 2000- nay
+ Ảnh hiện thực, các cạc đồ hoạ cho máy tính (Graphics cards for PCs), gameboxes and game players
+ Công nghiệp phim ảnh nhờ vào đồ hoạ máy tính (Computer graphicsbecoming routine in movie industry): Maya (thế giới vật chất tri giác được)
1.2 Khái niệm đồ họa máy tính và các kỹ thuật đồ họa
1.2.1 Đồ họa máy tính là gì?
- Đồ họa máy tính là một ngành khoa học Tin học chuyên nghiên cứu về cácphương pháp và kỹ thuật để có thể mô tả và thao tác trên các đối tượng của thếgiới thực bằng máy tính
- Về bản chất: đó là một quá trình xây dựng và phát triển các công cụ trên cả hailĩnh vực phần cứng và phần mềm hổ trợ cho các lập trình viên thiết kế cácchương trình có khả năng đồ họa cao
- Với việc mô tả dữ liệu thông qua các hình ảnh và màu sắc đa dạng của nó, cácchương trình đồ họa thường thu hút người sử dụng bởi tính thân thiện, dể dùng, kích thích khả năng sáng tạo và nâng cao năng suất làm việc
1.2.2 Các kỹ thuật đồ họa
1.2.2.1 Kỹ thuật đồ họa điểm
- Các mô hình, hình ảnh của các đối tượng được hiển thị thông qua từng pixel(từng mẫu rời rạc)
- Đặc điểm: Có thể thay đổi thuộc tính
+ Xoá đi từng pixel của mô hình và hình ảnh các đối tượng
+ Các mô hình hình ảnh được hiển thị như một lưới điểm (grid) các pixel rờirạc,
+ Từng pixel đều có vị trí xác định, được hiển thị với một giá trị rời rạc (sốnguyên)
các thông số hiển thị (màu sắc hoặc độ sáng)
Trang 7+ Tập hợp tất cả các pixel của grid cho chúng ta mô hình, hình ảnh đối tượng
mà
chúng ta muốn hiển thị
- Phương pháp để tạo ra các pixel:
+ Phương pháp dùng phần mềm để vẽ trực tiếp từng pixel một
+ Dựa trên các lý thuyết mô phỏng (lý thuyết Fractal, v.v) để xây dựng nênhình ảnh mô phỏng của sự vật
+ Phương pháp rời rạc hoá (số hoá) hình ảnh thực của đối tượng
+ Có thể sửa đổi (image editing) hoặc xử lý (image processing) mảng các pixelthu được theo những phương pháp khác nhau để thu được hình ảnh đặc trưngcủa đối tượng
1.2.2.2 Kỹ thuật đồ họa Vector
- Xây dựng mô hình hình học cho hình ảnh đối tượng, xác định các thuộc tínhcủa mô hình hình học, sau đó dựa trên mô hình này để thực hiện quá trình tô trát
để hiển thị từng điểm của mô hình, hình ảnh của đối tượng
- Kỹ thuật này chỉ lưu trữ mô hình toán học của các thành phần trong mô hìnhhình học cùng với các thuộc tính tương ứng mà không cần lưu lại toàn bộ tất cảcác pixel của hình ảnh đối tượng
- So sánh giữa Đồ họa điểm và Đồ họa Vector:
- Hình ảnh và mô hình của các vật thể
được biểu diễn bởi tập hợp các điểm
của lưới (grid)
- Thay đổi thuộc tính của các pixel =>
thay đổi từng phần và từng vùng của
1.3 Phân loại của đồ họa máy tính
Trang 81.3.1 Phân loại theo các lĩnh vực của đồ họa máy tính
* Kỹ thuật đồ họa:
- Kiến tạo đồ họa gồm:
+ Các hệ CAD/CAM (Computer Aided Design/Computer Aided ManufactureSystem): kỹthuật đồ hoạ tập hợp các công cụ, các kỹ thuật trợ giúp cho thiết kếcác chi tiết và các hệ thống khác nhau: hệ thống cơ, hệ thống điện, hệ thốngđiện tử…
+ Đồ hoạ minh hoạ (Presentation Graphics): gồm các công cụ giúp hiển thị các
số liệu thí nghiệm một cách trực quan, dựa trên các mẫu đồ thị hoặc các thuậttoán có sẵn
+ Đồ hoạ hoạt hình và nghệ thuật: bao gồm các công cụ giúp cho các hoạ sĩ, cácnhà thiết kế phim hoạt hình chuyên nghiệp làm các kỹ xảo hoạt hình, vẽ tranh
Ví dụ: phần mềm 3D Studio, 3D Animation, 3D Studio Max
- Xử lý đồ họa gồm :
+ Kỹ thuật xử lý ảnh (Computer Imaging): sau quá trình xử lý ảnh cho ta ảnh sốcủa đối tượng Trong quá trình xử lý ảnh sử dụng rất nhiều các kỹ thuật phứctạp: kỹ thuật khôi phục ảnh, kỹ thuật làm nổi ảnh, kỹ thuật xác định biên ảnh.+ Kỹ thuật nhận dạng (Pattern Recognition): từ những ảnh mẫu có sẵn ta phânloại theo cấu trúc, hoặc theo các tiêu trí được xác định từ trước và bằng cácthuật toán chọn lọc để có thể phân tích hay tổng hợp ảnh đã cho thành một tậphợp các ảnh gốc, các ảnh gốc này được lưu trong một thư viện và căn cứ vàothư viện này ta xây dựng được các thuật giải phân tích và tổ hợp ảnh
+ Kỹ thuật tổng hợp ảnh (Image Synthesis): là lĩnh vực xây dựng mô hình vàhình ảnh của các vật thể dựa trên các đối tượng và mối quan hệ giữa chúng
1.3.2 Phân loại theo hệ tọa độ
- Kỹ thuật đồ họa:
+ Kỹ thuật đồ họa 2 chiều: là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ haichiều (hệ toạ độ phẳng), sử dụng rất nhiều trong kỹ thuật xử lý bản đồ, đồ thị.+ Kỹ thuật đồ họa 3 chiều: : là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ bachiều, đòi hỏi rất nhiều tính toán và phức tạp hơn nhiều so với kỹ thuật đồ hoạhai chiều
CHƯƠNG 2: GIẢI QUYẾT B I TOÁN
Trang 92.1 Phát biểu bài toán
- Sau khi được thầy cô hướng dẫn và tìm hiểu về OpenGL em đã quyết định
thực hiện với đề tài từ những kiến thức đã học
2.1.1 Liên hệ giữa môn học và dự án trò chơi snake
Dự án trò chơi rắn săn mồi áp dụng nhiều kiến thức và kỹ thuật được học trong môn học Đồ họa Máy tính, cụ thể như sau:
Nguyên lý cơ bản của đồ họa máy tính:
o Sử dụng hệ tọa độ để xác định vị trí của rắn và mồi trên màn hình
o Áp dụng màu sắc để hiển thị rắn, mồi và nền
Các thuật toán vẽ hình:
o Sử dụng thuật toán vẽ đường thẳng để tạo ra các đường biên và lưới cho bản đồ trò chơi
o Vẽ các hình chữ nhật hoặc hình vuông để biểu diễn rắn và mồi
Biến đổi và chiếu hình:
o Áp dụng các biến đổi hình học để di chuyển và xoay rắn trong trò chơi
o Sử dụng phép chiếu để hiển thị các đối tượng 2D trên màn hình
Hiệu ứng và xử lý hình ảnh:
o Áp dụng các hiệu ứng đơn giản như đổ bóng để tạo chiều sâu cho rắn và mồi
o Sử dụng ánh sáng và kết cấu để cải thiện giao diện người dùng
Thư viện đồ họa và công cụ:
o Sử dụng các thư viện đồ họa như winbgim.h, conio.h để phát triển
và hiển thị trò chơi
o Sử dụng Dev-C++ để biên dịch và chạy chương trình
2.1.2 Mô tả trò chơi snake
Luật chơi:
Bắt đầu trò chơi:
Trang 10o Khi bắt đầu, người chơi sẽ điều khiển một con rắn với chiều dài ban đầu là một số ô nhất định.
Điều khiển rắn:
o Người chơi sử dụng các phím mũi tên hoặc phím WASD để điều khiển rắn di chuyển lên, xuống, trái hoặc phải
Ăn mồi:
o Mồi sẽ xuất hiện ngẫu nhiên trên bản đồ Khi rắn ăn mồi, rắn sẽ dài
ra và điểm số của người chơi sẽ tăng lên
Kết thúc trò chơi:
o Trò chơi kết thúc khi rắn đụng vào tường hoặc đụng vào chính thânmình Khi đó, điểm số cuối cùng sẽ được hiển thị và người chơi có thể chọn chơi lại hoặc thoát khỏi trò chơi
o Di chuyển rắn đến vị trí của mồi để ăn mồi và tăng điểm số
o Mỗi lần ăn mồi, rắn sẽ dài thêm một đoạn
4 Kết thúc trò chơi:
o Nếu rắn va chạm vào tường hoặc thân mình, trò chơi sẽ kết thúc
o Điểm số cuối cùng sẽ được hiển thị và người chơi có thể chọn chơi
o lại hoặc thoát khỏi trò chơi
2.1.3 Các yếu tố chính trong trò chơi
1 Rắn (Snake):
Đầu rắn: Là phần đầu tiên của rắn, thường có màu sắc hoặc ký hiệu đặc
biệt để dễ phân biệt với thân rắn
Trang 11 Thân rắn: Bao gồm nhiều đoạn nối tiếp nhau Mỗi lần rắn ăn mồi, một
đoạn mới sẽ được thêm vào thân rắn
2 Mồi (Food):
Vị trí: Xuất hiện ngẫu nhiên trên bản đồ.
Hình dạng và màu sắc: Thường là một hình vuông hoặc hình tròn nhỏ
Hiển thị: Thường hiển thị ở góc trên của màn hình.
Tính điểm: Mỗi lần rắn ăn mồi, điểm số sẽ tăng lên Điểm số càng cao,
độ khó của trò chơi càng tăng
5 Tốc độ (Speed):
Tốc độ di chuyển: Rắn sẽ di chuyển với một tốc độ nhất định Tốc độ có
thể tăng lên mỗi khi rắn ăn mồi hoặc sau một khoảng thời gian nhất định
để tăng độ khó của trò chơi
6 Giao diện người dùng (User Interface):
Menu: Bao gồm các tùy chọn như bắt đầu trò chơi, xem điểm cao, hướng
dẫn cách chơi, và thoát
Thông báo: Hiển thị các thông báo khi trò chơi kết thúc hoặc khi người
chơi đạt được điểm số cao
2.2 Thiết kế tổng quan
2.2.1 Kiến trúc tổng quan:
Main Loop: Vòng lặp chính của trò chơi, quản lý các cập nhật trạng thái
và vẽ hình
Trang 12 Game State: Trạng thái của trò chơi, bao gồm vị trí của rắn, vị trí của mồi, điểm số, v.v.
Input Handling: Xử lý các sự kiện nhập từ bàn phím để điều khiển rắn
Rendering: Vẽ rắn, mồi và các thành phần khác lên màn hình
2.3 Cài đặt thuật toán
Hướng dẫn sử dụng: Tiến hành cài đặt thư viện Graphics cần thiết thực hiện:Bước 1: Nếu bạn cài Dev C++ 32bit thì bỏ qua bước này, còn nếu là 64bit thì các bạn chọn trình biên dịch là
TDM-GCC 32bit ứng với phiên bản Dev C++ bạn cài đặt (Đây là bước bắt buộc
và phải làm từ đầu, nếu không
thì sẽ không chạy được đồ họa)
Ví dụ: Nếu Dev C++ 5.6.3 64bit thì bạn sẽ chọn trình biên dịch là "TDM-GCC 4.8.1 32bit Release"
Bước 2: Tạo một Project mới bằng cách chọn File -> New -> Project + Chọn Console Graphics Application
+ Tick vào ô C++ Project
+ Gõ tên Project vào ô Name
Trang 132.3.2 Mã nguồn:
Dưới đây là hướng dẫn từng bước để cài đặt trò chơi rắn săn mồi
Bước 1: Cài đặt môi trường phát triển
1 Cài đặt Dev-C++:
o Tải và cài đặt Dev-C++ từ trang chủ hoặc nguồn tin cậy
o Sau khi cài đặt, mở Dev-C++ và cấu hình các thư viện đồ họa như winbgim.h, conio.h, libbgi.a, libconio.a vào các thư mục tương ứngcủa Dev-C++
Bước 2: Tạo cấu trúc dự án
1 Tạo thư mục dự án:
o Tạo một thư mục mới cho dự án, ví dụ: SnakeGame
2 Tạo thư mục con:
o Trong thư mục SnakeGame, tạo các thư mục con như sau
Trang 143 Nội dung các tệp tin:
src/main.cpp:
src/game.cpp:
Trang 15 src/game.h:
Trang 16 assets/sound/
Trang 17Lưu các file âm thanh beep.wav, eatFood.wav, endGame.wav, faded.wav, start.wav.
docs/report.docx:
Viết báo cáo mô tả trò chơi, cách thức thực hiện, các thuật toán được
sử dụng, và các bước triển khai
README.md:
Makefile (tùy chọn, nếu bạn muốn sử dụng Makefile để biên dịch):
2.4 Kết Quả
Trang 18 Giao diện ban đầu của trò chơi snake:
Trang 19 Màn hình chính của trò chơi snake:
Cách điều khiển con rắn:
Người chơi sử dụng các phím mũi tên trên bàn phím để điều khiển hướng di chuyển của con rắn:
o Mũi tên lên (↑): Di chuyển lên
o Mũi tên xuống (↓): Di chuyển xuống
o Mũi tên trái (←): Di chuyển sang trái
o Mũi tên phải (→): Di chuyển sang phải
Trang 20o Thêm các chướng ngại vật xuất hiện ngẫu nhiên trên bản đồ.
o Rắn phải tránh các chướng ngại vật này trong khi cố gắng ăn thức ăn
o Thức ăn có thể xuất hiện ở các vị trí khó tiếp cận hơn và có thể
di chuyển
o
Trang 21 Tính năng pause của trò chơi snake:
Trang 22 Kết thúc trò chơi:
Tương tác người dùng:
Người chơi chỉ cần khởi động trò chơi và sử dụng các phím mũi tên để điều khiển rắn
Trò chơi sẽ tự động theo dõi và cập nhật điểm số
Khi trò chơi kết thúc, người chơi có thể nhấn phím bất kỳ để bắt đầu lại hoặc thoát trò chơi
Trang 23Hiển thị điểm số và bảng xếp hạng:
Điểm số:
o Mỗi lần rắn ăn được thức ăn, điểm số của người chơi sẽ tăng lên
o Điểm số hiện tại sẽ được hiển thị ở góc trên của màn hình trò chơi
Bảng xếp hạng:
o Sau khi trò chơi kết thúc, điểm số của người chơi sẽ được so sánh với điểm số cao nhất (High Score) và lưu trữ nếu điểm số mới cao hơn
o Bảng xếp hạng sẽ hiển thị top các điểm số cao nhất từ trước đến nay, giúp người chơi có thể so sánh và cố gắng vượt qua kỷ lục cũ