Đồ họamá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ácthuậ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 ảnhtrên màn hình máy tính.
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 MÔN ĐỒ HOẠ MÁY TÍNH
ĐỀ T I:
L M GAME TETRIS
Sinh viên thực hiện : PHAN TIẾN HUY
NGUYỄN XUÂN ĐỨC PHÙNG THÁI SƠN Giảng viên hướng dẫn : NGÔ NGỌC TH NH
Hà Nội, tháng 5 năm 2023
Trang 2PHIẾU CHẤM ĐIỂM
ST
T
Họ và tên sinh viên Nội dung thực hiện Điểm Chữ ký
1 Phan Tiến Huy
Trang 3MỤC LỤC
LỜI MỞ ĐẦU 1
CHƯƠNG 1: GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH 2
1.1 Lịch sử phát triển 2
1.2 Khái niệm đồ họa máy tính và các kỹ thuật đồ họa 3
1.2.1 Đồ họa máy tính là gì? 3
1.2.2 Các kỹ thuật đồ họa 4
1.2.2.1 Kỹ thuật đồ họa điểm 4
1.2.2.2 Kỹ thuật đồ họa Vector 4
1.3 Phân loại của đồ họa máy tính 5
1.3.1 Phân loại theo các lĩnh vực của đồ họa máy tính 5
1.3.2 Phân loại theo hệ tọa độ 6
CHƯƠNG 2: GIẢI QUYẾT BÀI TOÁN 7
2.1 Thông tin cơ bản về chương trình 7
2.2 Ý tưởng 7
2.2.1 Các ô vuông 7
2.2.2 Thả rơi ô vuông 11
2.2.3 Xử lý cột đầy 11
2.2.4 Khởi tạo 12
2.2.5 Lắng nghe thao tác người dùng 14
Chương 3: CODE 16
KẾT LUẬN 25
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ữngtrải nghiệm mới mẻ, chân thực
Vậy đồ họa máy tính là gì: Đồ 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ọamá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ácthuậ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 ảnhtrê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ựcnhư đạ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áytí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
họa Graphics đ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ànchỉnh nhất, còn có những thiếu xót 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ể
1
Trang 6CHƯƠNG 1: GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH
1.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ấthiện bú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ứuxây dựng mô hình buồng lái máy bay cho hãng Boeing của Mỹ Ông đã dựatrên hìnhảnh 3 chiều của mô hình ngườiphi công trong buồng lái của máybay để xây dựng nên một mô hình tối ưu cho buồng lái máy bay Phươngphá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ủangười lái trong khoang Ông đặt tên cho phương pháp này là đồ hoạ máytính (Computer Graphics)
+ 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ầuhết các màn hình đều dựa trên thiết kế ống tia âm cực CRT (Cathode raytube) 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ắc chắ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ựctrê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
Trang 7- Graphics: 1980-1990
+ Mục đích đặc biệt về phần cứng, thiết bị hình học đồ hoạ Silicon Xuấthiện các chuẩn công nghiệp: PHIGS (Programmers Hierarchical InteractiveGraphics Standard) xác định các phương pháp chuẩn cho các mô hình thờigian 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: 2000 - nay
+ Ảnh hiện thực, các card đồ 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ớithự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ảhai lĩ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ác chươ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
3
Trang 81.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)
+ Tập hợp tất cả các pixel của grid cho chúng ta mô hình, hình ảnh đốitượ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ácpixel thu được theo những phương pháp khác nhau để thu được hình ảnh đặctrưng củ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ính củ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ình hìnhhọ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ácpixel của hình ảnh đối tượng
Trang 9- 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
1.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 (ComputerAidedDesign/ ComputerAided 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ácthuật toá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ác nhà 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ức tạ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
5
Trang 10+ Kỹ thuật nhận dạng (Pattern Recognition): từ những ảnh mẫu có sẵn taphân loại theo cấu trúc, hoặc theo các tiêu trí được xác định từ trước và bằngcác thuật toán chọn lọc để có thể phân tích hay tổng hợp ảnh đã cho thànhmột tập hợ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ào thư 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
Trang 11CHƯƠNG 2: GIẢI QUYẾT B I TOÁN
2.1 Thông tin cơ bản về chương trình
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
Connect Color là một trò chơi điện tử thú vị và gây nghiện Mục tiêu của tròchơi là kết nối các điểm có cùng màu với nhau bằng cách vẽ các đường nối màu.Khi bắt đầu trò chơi, bạn sẽ được hiển thị một lưới hoặc bảng chứa các ô vuông cómàu sắc khác nhau Mỗi ô vuông chứa một màu đặc biệt Nhiệm vụ của bạn là kếtnối tất cả các ô vuông cùng màu lại với nhau bằng cách vẽ các đường nối Bạn cóthể vẽ các đường nối bằng cách chọn một ô vuông và sau đó chọn một ô vuôngkhác cùng màu để tạo đường nối giữa chúng Đường nối có thể được vẽ dọc, nganghoặc chéo, nhưng không thể đi qua các ô vuông khác mà không cùng màu Khi bạnkết nối tất cả các ô vuông cùng màu lại với nhau và không còn ô vuông trống, bạn
sẽ hoàn thành trò chơi
2.2 Ý tưởng
2.2.1 Các ô vuông
Giả sử chúng ta có hai mảng A và B đều có N phần tử mỗi mảng Giả sử A
và B đang chơi một trò chơi trên một bàn cờ có số ô được đánh số từ 1 đến N VàN-1 con đường Đường đang kết nối hai tế bào Vậy đường thứ i nối A[i] vớiB[i] Mọi ô có thể được tiếp cận từ mọi ô khác bằng cách di chuyển liên tục đếnmột ô liền kề Ban đầu, ô 1 được đánh dấu là màu đen và ô N là màu trắng Các ôkhác không tô màu A chơi trước, và họ chơi xen kẽ A chọn một ô không tô màuliền kề với ô màu đen và tô màu đen B chọn một ô không màu liền kề với một ômàu trắng và tô màu trắng Khi một người chơi không thể tô một ô, anh ta sẽthua Chúng ta phải tìm ra người chiến thắng
7
Trang 12line(800, 300, 800, 700);
line(900, 300, 900, 700);
Với hàm “rectangle” t sẽ tạo một ô vuông lớn Trong đó ta sẽ dùng hàm line để
kể các dòng thành các ô vuông nhỏ ở trong, dữ liệu như sau:
Ví dụ trong đoạn code này :
Trang 13Nhưng chúng ta không lưu trữ mảng gạch theo toạ độ mà lưu trữ vị trí thứ tự của ôvuông
9
Trang 14Chúng ta sẽ lưu như sau từng các ô màu theo ô thả xuống mà nó khác màutrong 8 ô vuông còn lại
Chúng ta sẽ truy cập từng ô vuông theo thứ tự từ cho sẵn như sau :
Lúc này các ô vuông này sẽ được chơi như game xóa màu Chúng ta chỉ việc thảcác màu giống nhau xuông các ô vuông còn lại ở dưới
Để xử lý được các ô vuông đó hiện màu ra ngẫu nhiên ta sử dụng hàm:
Trang 15setfillstyle(SOLID_FILL, x);
floodfill(a + 5, d - 5, 15);
}
Với biến sẽ được ngẫu nhiên từ 4 màu Toán tử “%” được sử dụng để lấy
phần dư của phép chia giữa mỗi giá trị trong figures[n][i], điều này hiệu quả trích
xuất tọa độ X của điểm (vì tọa độ x được biểu diễn bởi bit ít nhất của mỗi giá trị)
Trang 16Chúng ta khởi tạo các ô vuông sẽ sử dụng trong chương trình gồm có:
Khung của vị trí xếp ô vuong là
Trang 17Trong đoạn code trên chung ta dùng vòng lặp để kiểm tra xem các ô vuông có di chuyển hợp lý hay không Nếu mà ô vuông vượt qua khung cho phép sẽ trả về
Trang 182.2.5 Lắng nghe thao tác người dùng
Trong khi chạy chương trình chúng ta sẽ thao dõi thao tác của người dùng.Các thao tác trong chương trình chỉ sử dụng phím mũi tên
Trang 19phải) thì sẽ dịch chuyển ô vuông sang bên phải, nếu phím được nhấn là (ô vuôngM
sẽ ở giữa) thì ô vuông sẽ ở giữa
15
Trang 21settextstyle(10, 0, 3);
outtextxy(20, 100, "dat ben trai '1'"); outtextxy(20, 200, "dat ben phai '3'"); outtextxy(20, 300, "dat o giua '2'");
Trang 22
x = (rand() % (up - low + 1)) + low; setfillstyle(SOLID_FILL, x); floodfill(a + 5, d - 5, 15);
delay(200);
setfillstyle(SOLID_FILL, BLACK); floodfill(a - 55, d - 5, 15);
rectangle(a - 100, lb - 100,
c - 100, lb);
setfillstyle(SOLID_FILL, x); floodfill(a - 5, lb - 5, 15);
lb = lb - 100;
Trang 23floodfill(a - 5, lb - 105, 15); score = score + 10;
floodfill(a - 5, lb - 105, 15); score = score + 10;
Trang 24floodfill(a - 5, lb - 5, 15);
floodfill(a - 5, lb - 105, 15); score = score + 10;
floodfill(a - 5, lb - 105, 15); score = score + 10;
Trang 25rectangle(a + 150, b, c + 150, d); floodfill(a + 155, d - 5, 15);
delay(200);
setfillstyle(SOLID_FILL, BLACK); floodfill(a + 155, d - 5, 15);
rectangle(a + 100, rb - 100,
c + 100, rb);
setfillstyle(SOLID_FILL, x); floodfill(a + 105, rb - 5, 15);
j = 0;
right[1] = 0;
}
21
Trang 26else if (right[1] == right[2]) {
rb = 600;
setfillstyle(SOLID_FILL, BLACK); floodfill(a + 105, rb - 5, 15); floodfill(a + 105, rb - 105, 15); score = score + 10;
j = 3;
Trang 28setfillstyle(SOLID_FILL, BLACK); floodfill(a + 5, mb - 5, 15); floodfill(a + 5, mb - 105, 15); score = score + 10;
k = 3;
mid[4] = 0;
}
Trang 2925
Trang 30}
Trang 31cleardevice();
menu(box_color,text_color);arrow_1(arrow_color);}
27
Trang 32}
if(GetAsyncKeyState(VK_UP)){
cleardevice();
menu(box_color,text_color);arrow_1(arrow_color);
check = 1;
}
if(GetAsyncKeyState(VK_DOWN)){
cleardevice();
menu(box_color,text_color);arrow_2(arrow_color);
check = 0;
}
if(GetAsyncKeyState(VK_RETURN)){if(check==0){
closegraph();
exit(0);
}else if(check==1){
closegraph();
Trang 34KẾT LUẬN
Qua việc thực hiện nghiên cứu đề tài “game connect color” Nhóm chúng
em đã được biết thêm rất nhiều về môn Đồ họa máy tính Bên cạnh đó, việc làmnghiên cứu giúp chúng em đoàn kết hơn, rèn luyện cho chúng em kỹ năng làm việcnhóm
Trong quá trình thực hiện đề tài có rất nhiều ý tưởng hay, độc đáo Nhưng
do kiến thức của chúng em hạn hẹp và thời gian không cho phép nên chúng emchưa thể thực hiện được những ý tưởng đó Tuy nhiên chúng em đã cố gắng để xâydựng một chương trình hoàn chỉnh nhất, đẹp nhất Trong quá trình xây dựngchương trình nhóm chúng em khó tránh khỏi những sai sót Vì vậy em rất mongrằng thầy và các bạn cùng góp ý với nhóm em để có thể hòa thành sản phẩm mộtcách hoàn trỉnh nhất