TRƯỜ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 ĐỀ TI GAME FLAPPY BIRD Hà Nội, ngày 15 tháng 5 năm 2023 1 Sinh viên thực hiện GIANG ỨNG HÙNG PHẠM HẢI NAM N[.]
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ HỌA MÁY TÍNH
ĐỀ TI: GAME FLAPPY BIRD
Hà Nội, ngày 15 tháng 5 năm 2023
Sinh viên thực hiện : GIANG ỨNG HÙNG
: PHẠM HẢI NAM : NGUYỄN ĐỨC HUY Giảng viên hướng dẫn : NGÔ NGỌC THNH
Chuyên ngành : CÔNG NGHỆ PHẦN MỀM
Trang 2PHIẾU CHẤM ĐIỂM Sinh viên thực hiện:
1 Giang Ứng Hùng 20810310343
2 Phạm Hải Nam 20810310333
3 Nguyễn Dức Huy 20810310308
Trang 3Giảng viên chấm:
Giảng viên chấm 1:
Giảng viên chấm 2:
Trang 4MỤC LỤC
LỜI MỞ ĐẦU 4
CHƯƠNG 1 TÌM HIỂU VỀ ĐỒ HỌA MÁY TÍNH 5
1.1 Khái niệm 5
1.2 Lịch sử 7
1.3 Ứng dụng của đồ họa máy tính trong thực tế 8
CHƯƠNG 2 GIỚI THIỆU VÀ HƯỚNG DẪN CÀI ĐẶT THƯ VIỆN GRAPHICS.H 10
2.1 Giới thiệu về thư viện graphics.h 10
2.2 Cài đặt thư viện graphics.h 11
2.2.1 File cài đặt (kèm Dev C/C++ và thư viện đồ họa) 11
2.2.2 Thêm thư viện đồ họa 11
2.2.3 Hướng dẫn sử dụng 12
2.2.4 Lỗi khi cài đặt và sử dụng 13
CHƯƠNG 3 GAME FLAPPY BIRD 14
3.1 Các bước cài đặt 14
3.2 Code chạy chương trình 14
3.3 Kết quả 17
KẾT LUẬN 18
TÀI LIỆU THAM KHẢO 19
Trang 5LỜI MỞ ĐẦU
Như chúng ta đã thấy trong những năm gần đây sự phát triển vượt bậc về công nghệ đồ họa đã mang lại cho con người chúng ta vô vàn sự tiện nghi, những trải nghiệm mới mẻ, chân thực
Đồ họa máy tính là phương pháp và công nghệ dùng trong việc chuyển đổi qua lại giữa dữ liệu và hình ảnh bằng máy tính Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về ở toán học, các thuật toán cũng như các kĩ thuật
để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính Đồ họa máy tính có liên quan ít nhiều đến một số lĩnh vực như đại số, hình học giải tích, hình học họa hình, quang học, và kĩ thuật máy tính, đặc biệt là chế tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập, các vỉ mạch đồ họa )
Là sinh viên khoa Công nghệ thông tin trường Đại học Điện Lực Chúng em cũng được tiếp xúc với môn học đồ họa máy tính do thầy Ngô Ngọc Thành giảng dạy Với những kiến thức em đã được học và được sự hướng dẫn của thầy chúng
em đã thực hiện đề tài “GAME FLAPPY BIRD” Trong quá trình thực hiện nghiên cứu chúng em đã sử dụng thư viện đồ họa openGL đang được sử dụng rộng rãi hiện nay
Có lẽ rằng chương trình và báo cáo của chúng em chưa được chuyên nghiệp, hoàn chỉnh nhất, còn có những thiếu xót do còn thiếu kiến thức và kinh nghiệm Vì thế em rất mong thầy cô và các bạn có thể góp ý để nhóm em xây dựng đề đạt kết quả tốt nhất có thể.Em xin chân thành cảm ơn!!
Trang 6
CHƯƠNG 1 TÌM HIỂU VỀ ĐỒ HỌA MÁY TÍNH
1.1 Khái niệm
Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ
sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính Đồ họa máy tính có liên quan ít nhiều đến một số lĩnh vực như đại số, hình học giải tích, hình học họa hình, quang học, và
kĩ thuật máy tính, đặc biệt là chế tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập, các vỉ mạch đồ họa )
Theo nghĩa rộng hơn, đồ họa máy tính là phương pháp và công nghệ dùng trong việc chuyển đổi qua lại giữa dữ liệu và hình ảnh trên màn hình bằng máy tính Đồ họa máy tính hay kĩ thuật đồ họa máy tính còn được hiểu dưới dạng phương pháp và kĩ thuật tạo hình ảnh từ các mô hình toán học mô tả các đối tượng hay dữ liệu lấy được từ các đối tượng trong thực tế Thuật ngữ "đồ họa máy tính" (computer graphics) được đề xuất bởi một chuyên gia người Mĩ tên là William Fetter vào năm 1960 Khi đó ông đang nghiên cứu xây dựng mô hình buồng lái máy bay cho hãng Boeing William Fetter đã dựa trên các hình ảnh 3 chiều của
mô hình người phi công trong buồng lái để xây dựng nên mô hình buồng lái tối ưu cho máy bay Boeing Đây là phương pháp nghiên cứu rất mới vào thời kì đó Phương pháp này cho phé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 trong khoang buồng lái William Fetter đã đặt tên cho phương pháp của mình là computer graphics
Đồ họa máy tính cung cấp một trong những phương cách tự nhiên nhất cho việc truyền đạt thông tin với máy tính Ngày nay, trong nhiều quá trình thiết kế, cài đặt và xây dựng, thông tin mà hình ảnh mang lại là hầu như không thể thiếu được
Kĩ thuật trực quan (scientific visualization) đã trở nên là một lĩnh vực rất quan
Trang 7trọng từ năm 1980, khi các nhà nghiên cứu khoa học và các kĩ sư nhận ra rằng họ không thể xử lí một lượng dữ liệu khổng lồ phát sinh từ các siêu máy tính mà dữ liệu không được tóm lược và làm nổi bật các xu hướng và hiện tượng qua nhiều loại biểu diễn đồ họa khác nhau
Đồ họa máy tính tương tác là một trong những phương tiện mang lại thêm nhiều sự thuận lợi cho người dùng trong việc phát sinh hình ảnh kể từ khi có phát minh của máy ảnh và truyền hình Với máy tính, chúng ta có thể tạo các hình ảnh không chỉ của các đối tượng cụ thể, thực tế, mà còn của các đối tượng trừu tượng, nhân tạo; các biểu diễn của dữ liệu mà không có tính kế thừa về mặt hình học, như
là kết quả điều tra, khảo sát Hơn nữa, với đồ họa máy tính chúng ta không bị giới hạn trong các ảnh tĩnh Các ảnh động thông thường mang lại nhiều hiệu quả hơn so với ảnh tĩnh, đặc biệt là với các hiện tượng biến đổi theo thời gian, cả thực tế (như
sự đổi hướng của cánh máy bay siêu âm, hay sự phát triển của khuôn mặt người từ lúc trẻ thơ tới lúc già) và trừu tượng (như là xu hướng phát triển của việc sử dụng năng lượng, gia tăng dân số, …)
Có nhiều cách tiếp cận trong việc học môn đồ họa, trải rộng từ việc nghiên cứu phần cứng tới việc học để sử dụng đồ họa máy tính chỉ trong một lĩnh vực chuyên biệt nào đó như là thiết kế mạch tích hợp cao (VLSI – very large scale integrated circuit) Ở đây chúng ta tiếp cận từ góc độ của người lập trình ứng dụng,
đó là người sử dụng tất cả các hỗ trợ của phần cứng, các công cụ phần mềm để xây dựng nên các ứng dụng
Tuy nhiên để có thể thiết kế và cài đặt các chương trình ứng dụng đồ họa được tốt, ngoài việc tìm hiểu các khả năng của công cụ lập trình, chúng ta cũng cần phải nắm vững các khái niệm về phần cứng; các vấn đề, các nguyên lí liên quan đến cài đặt phần mềm, các thuật toán, các ứng dụng, …
Trang 81.2 Lịch sử
Lịch sử của đồ họa máy tính vào thập niên 1960 còn được đánh dấu bởi dự án SketchPad được phát triển tại Học viện Công nghê Massachusetts (MIT) bởi Ivan Sutherland Các thành tựu thu được đã được báo cáo tại hội nghị Fall Joint Computer và đây cũng chính là sự kiện lần đầu tiên người ta có thể tạo mới, hiển thị và thay đổi được dữ liệu hình ảnh trực tiếp trên màn hình máy tính trong thời gian thực Hệ thống Sketchpad này được dùng để thiết kế hệ thống mạch điện và bao gồm những thành phần sau:
CRT màn hình
Bút sáng và một bàn phím bao gồm các phím chức năng
Máy tính chứa chương trình xử lý các thông tin Với hệ thống này, người sử dụng có thể vẽ trực tiếp các sơ đồ mạch điện lên màn hình thông qua bút sáng, chương trình sẽ phân tích và tính toán các thông số cần thiết của mạch điện do người dùng vẽ nên
Kỹ thuật đồ họa được liên tục hoàn thiện vào thập niên 1970 với sự xuất hiện của các chuẩn đồ họa làm tăng cường khả năng giao tiếp và tái sử dụng của phần mềm cũng như các thư viện đồ họa
Sự phát triển vượt bậc của công nghệ vi điện tử và phần cứng máy tính vào thập niên 1980 làm xuất hiện hàng loạt các vỉ mạch hỗ trợ cho việc truy xuất
đồ họa đi cùng với sự giảm giá đáng kể của máy tính cá nhân làm đồ họa ngày càng đi sâu vào cuộc sống thực tế
1.3 Ứng dụng của đồ họa máy tính trong thực tế
Đồ họa máy tính có rất nhiều ứng dụng trong máy tính vì ước tính đến 80% thông tin xử lý là hình ảnh Một số ứng dụng tiêu biểu của đồ họa máy tính như là:
Tạo mô hình, hoạt cảnh (game, giải trí, )
Hỗ trợ thiết kế đồ họa
Trang 9 Mô phỏng hình ảnh, chẩn đoán hình ảnh (trong y tế)
Huấn luyện đào tạo ảo (quân sự, hàng không, )
- Hỗ trợ thiết kế:
Một trong những ứng dụng lớn nhất của đồ họa máy tính là hỗ trợ thiết kế (CAD – computer-aided design) Ngày nay CAD đã được sử dụng hầu hết trong việc thiết kế các cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, và rất nhiều sản phẩm khác.Sử dụng các chương trình này, đầu tiên các đối tượng được hiển thị dưới dạng các phác thảo của phần khung (wireframe outline),
mà từ đó có thể thấy được toàn bộ hình dạng và các thành phần bên trong của các đối tượng Sử dụng kĩ thuật này, người thiết kế sẽ dễ dàng nhận thấy ngay các thay đổi của đối tượng khi tiến hành hiệu chỉnh các chi tiết hay thay đổi góc nhìn, … Một khi đã thiết kế xong phần khung của đối tượng, các mô hình chiếu sáng, tô màu và tạo bóng bề mặt sẽ được kết hợp để tạo ra kết quả cuối cùng rất gần với thế giới thực
- Biểu diễn thông tin:
Đây là các ứng dụng sử dụng đồ họa máy tính để phát sinh các biểu đồ, đồ thị,
… dùng minh họa mối quan hệ giữa nhiều đối tượng với nhau Các ứng dụng này thường được dùng để tóm lược các dữ liệu về tài chính, thống kê, kinh tế, khoa học, toán học, … giúp cho việc nghiên cứu, quản lí, … một cách có hiệu quả
- Lĩnh vực giải trí, nghệ thuật:
Trong lĩnh vực nghệ thuật, các chương trình máy tính như Paint Shop Pro, Adobe Photoshop, 3D Studio, … hỗ trợ rất đắc lực cho các họa sĩ, các nhà tạo mẫu trong việc thiết kế các hình ảnh sống động, và rất thực Với các chương trình này, người họa sĩ được máy tính tạo cho cảm giác y như đang làm việc ngoài đời thực bằng cách cung cấp các công cụ như khung vẽ, giá vẽ, bảng pha màu, các hiệu ứng
ba chiều, … làm cho họ cảm thấy rất thoải mái và tiện lợi.Ngoài ra đồ họa máy tính còn giúp tạo ra các chương trình trò chơi, giải trí; hỗ trợ cho các kĩ xảo điện
Trang 10ảnh, cho các nhà làm phim Có nhiều bộ phim rất nổi tiếng nhờ vào kĩ xảo điện ảnh như : Công viên Khủng long kỉ Jura (Jurassic Park), Titanic, Thế giới nước (Water World), …
- Giao tiếp giữa máy tính và người dùng:
Mọi ứng dụng đều phải có giao diện giao tiếp với người dùng Giao diện đồ họa thực sự là một cuộc cách mạng mang lại sự thuận tiện và thoải mái cho người dùng ứng dụng Các ứng dụng dựa trên hệ điều hành MS Windows là một minh họa rất trực quan của giao diện đồ họa Các chức năng của các ứng dụng này được thiết kế cho người dùng làm việc thông qua các biểu tượng mô tả chức năng đó Ví
dụ, chức năng lưu tập tin được hiểu thông qua biểu tượng đĩa mềm, chức năng in
ấn được hiểu thông qua biểu tượng máy in, … Để chọn các chức năng, người dùng
sử dụng chuột trỏ đến và nhấn vào các biểu tượng tương ứng Điểm thuận lợi chính khi dùng biểu tượng là kích thước không gian mà nó chiếm ít hơn nhiều so với dùng văn bản để mô tả cho cùng một chức năng, ngoài ra việc nắm bắt các chức năng qua các biểu tượng sẽ dễ dàng hơn rất nhiều khi người dùng gặp trở ngại về mặt ngôn ngữ.Các ứng dụng có giao diện đồ họa còn cho phép người dùng khả năng làm việc dễ dàng với nhiều cửa sổ với nhiều dạng tài liệu khác nhau cùng một lúc
- Giáo dục và đào tạo:
Hiện nay các chương trình mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng hóa học, hoạt động của các gói tin trên mạng máy tính, … được dùng rất nhiều trong việc hỗ trợ giảng dạy.Trong đào tạo, các ứng dụng mô phỏng được dùng để kiểm tra trình độ người lái, huấn luyện phi công, điều khiển giao thông, …
Trang 11CHƯƠNG 2 GIỚI THIỆU V HƯỚNG DẪN CI ĐẶT THƯ VIỆN GRAPHICS.H
2.1 Giới thiệu về thư viện graphics.h
Graphics.h hay tên chính xác và đầy đủ là Borland Graphics Interface (BGI)
là một thư viện đồ họa rất phổ biến trên DOS và các máy tính chạy hệ điều hành Windows thời kì đầu như Windows 95, Windows 98
Thư viện này cung cấp cho người dùng 2 file: graphics.h và graphics.lib để có thể sử dụng được với C/C++ cũng như module graph nếu người dùng sử dụng ngôn ngữ Pascal Bộ thư viện này đi kèm với IDE Borland C++ 3.1 (1992)
Một trong những điểm mạnh của thư viện này là việc khởi tạo cũng như sử dụng rất đơn giản, vì vậy dù ra đời rất lâu nhưng hiện tại vẫn có rất nhiều trường đại học sử dụng cho mục đích giảng dạy
2.2 Cài đặt thư viện graphics.h
Do thư viện đồ họa graphics và winbgim không được tích hợp sẵn trong thư viện của phần mềm Dev C/ C++ nên ta phải tự thêm 2 thư viện đồ họa nếu muốn sử dụng để lập trình đồ họa
2.2.1 File cài đặt (kèm Dev C/C++ và thư viện đồ họa)
https://drive.google.com/file/d/1UK0316yZEZorN-MWCqxgIGBH79os6vvC/view 2.2.2 Thêm thư viện đồ họa
Đường dẫn (Path);
Với Windows 32 bit: Path=”C:\Program Files\Dev-Cpp”
Với Windows 64 bit: Path=”C:\Program Files (x86)\Dev-Cpp”
Hướng dẫn cài đặt:
Sau khi giải nén file gốc, ta cần làm theo các bước sau:
Đối với Dev C++ 32 bit:
Trang 12 Bước 1: Copy 2 file “graphics.h” và “winbgim.h” vào thư mục (Path)\ MinGV32\include”
Bước 2: Copy file “libbgi.a” vào thư mục “(Path)\MinGV32\lib”
Bước 3: Copy 2 file “6-ConsoleAppGraphics.template” và
“ConsoleApp_cpp_graph.txt” vào thư mục “(Path)\Templates”
Đối với Dev C++ 64 bit:
Bước 1: Copy 2 file “graphics.h” và “winbgim.h” vào thư mục “(Path)\ MinGW64\x86_64-w64-mingw32\include”
Bước 2: Copy file “libbgi.a” vào thư mục “(Path)\MinGW64\x86_64-w64-mingw32\lib”
Bước 3: Copy 2 file “6-ConsoleAppGraphics.template” và
“ConsoleApp_cpp_graph.txt” vào thư mục “(Path)\Templates”
2.2.3 Hướng dẫn sử dụng
Sau khi cài đặt theo các bước như hướng dẫn ở trên, các bạn mở Dev C++ lên Bước 1: Nếu bạn cài Dev C++ 32 bit thì bỏ qua bước này, còn nếu là 64 bit thì các bạn chọn trình biên dịch là TDM-GCC 32 bit ứ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.9.2 64 bit thì bạn sẽ chọn trình biên dịch là “TDM-GCC
Trang 13Bướ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
Click Ok và chọn vị trí lưu
Bước 3: Tiến hành lập trình đồ họa và chạy thử
2.2.4 Lỗi khi cài đặt và sử dụng
- Lỗi Access is denied : thì các bạn cấu hình lại devc++ và phân quyền cho thư mục (admin)
- Lỗi Makefile.win : có thể do bạn chưa đặt compiler tdm gcc 32bit
Trang 14CHƯƠNG 3. GAME FLAPPY BIRD
3.1 Các bước cài đặt
Bước 1: Khai báo các thư viện cần thiết và thư viện đồ họa graphics.h
Bước 2: Khởi tạo các biến cần sử dụng
Bước 3: Viết hàm vẽ cột và vẽ chim (bao gồm cả vẽ cánh chim, đuôi chim, chân chim)
Bước 4: Viết hàm main
3.2 Code chạy chương trình
#include <iostream>
#include <graphics.h>
#include <conio.h>
#include <windows.h>
#include <ctime>
using namespace std ;
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "" );
int x = 100 , y = 100 ; // Toa do con chim
int pipeX = 400 ; // Vi tri dau tien cua cot
int pipeY = 0 ; // Chieu cao cot
int pipeGap = 150 ; // Khoang cách giua cot trên và duoi
int pipeWidth = 50 ; // Chieu rong cot
int pipeSpeed = 20 ; // Toc do di chuyen cua cot
int score = 0 ; // Ðiem so
bool isGameOver = false; // Trang thai ket thuc game
setbkcolor(CYAN);
char scoreStr[ 50 ];
while (true) { // Vòng lap while de reset game khi nguoi dung bam phim bat ki //Thiet lap các thong so ban dau
x = 100 ;
y = 100 ;
pipeX = 400 ;
pipeY = 0
score = 0