1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài tập lớn i kỹ thuật lập trình chủ đề 1 đồ họa trong c

18 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Khái niệmĐồ họa trong ngôn ngữ lập trình C đề cập đến việc sử dụng các hàm vàthư viện đồ họa để tạo ra các đối tượng hình ảnh, vẽ các đồ thị, hiển thịcác màn hình và thao tác với các đối

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘIKHOA TOÁN - TIN

- -BÁO CÁO BÀI TẬP LỚN I

Môn học: Kỹ thuật lập trìnhChủ đề 1: Đồ họa trong C

Giáo viên hướng dẫn: TS Nguyễn Thị Thanh Huyền Sinh viên thực hiện: Lê Thanh Thảo

Mã số sinh viên: 20227152

Email: Thao.LT227152@sis.hust.edu.vn Lớp: Toán Tin 02 K67

Trang 2

I Khái niệm

Đồ họa trong ngôn ngữ lập trình C đề cập đến việc sử dụng các hàm vàthư viện đồ họa để tạo ra các đối tượng hình ảnh, vẽ các đồ thị, hiển thịcác màn hình và thao tác với các đối tượng đồ họa trên màn hình Dướiđây là một số khái niệm và định nghĩa quan trọng trong đồ họa C:

1 Điểm ảnh (Pixel): Đơn vị nhỏ nhất tạo nên một hình ảnh trên màn

hình Mỗi điểm ảnh có một vị trí cụ thể trên màn hình và được xácđịnh bởi tọa độ (x, y).

2 Tọa độ: Hệ tọa độ được sử dụng để xác định vị trí của các đối

tượng đồ họa trên màn hình Tọa độ (0, 0) thường được đặt ở góctrên bên trái của màn hình.

3 Màu sắc: Trong đồ họa C, màu sắc được biểu diễn dưới dạng các

giá trị số cho các thành phần màu (như RGB hoặc CMYK).

4 Đồ thị: Biểu đồ hình học đại diện cho các quan hệ hoặc dữ liệu

bằng cách sử dụng các đường và điểm.

5 Hình dạng cơ bản: Các đối tượng đồ họa cơ bản như đường

thẳng, hình chữ nhật, hình tròn và hình đa giác được tạo ra và vẽtrên màn hình bằng các hàm đồ họa.

6 Thư viện đồ họa: Các thư viện đồ họa như Graphics.h, OpenGL

và DirectX cung cấp các hàm và cấu trúc dữ liệu để tạo ra các đốitượng đồ họa và thao tác với chúng.

7 Xử lý sự kiện: Xử lý các sự kiện nhập từ bàn phím, chuột hoặc các

thiết bị đầu vào khác để tương tác với các đối tượng đồ họa.Đây là một số khái niệm cơ bản về đồ họa trong ngôn ngữ lập trình C.Việc sử dụng các hàm và thư viện đồ họa cho phép các lập trình viên tạora các ứng dụng đồ họa, trò chơi và giao diện người dùng hấp dẫn.

II Các hàm và thư viện đồ họa trong C

Trong ngôn ngữ lập trình C, có nhiều thư viện và hàm đồ họa khác nhau.Dưới đây là tổng hợp các thư viện và hàm đồ họa trong C:

1 Thư viện Graphics.ha Giới thiệu:

Thư viện Graphics.h là thư viện đồ họa tiêu chuẩn trong C, tuy nhiênkhông phải là một phần của thư viện tiêu chuẩn C Thư viện graphics.hđược sử dụng rộng rãi trong các ứng dụng và bài toán liên quan đến đồhọa 2D cơ bản như:

Trang 3

Vẽ các hình dạng cơ bản (đường thẳng, hình chữ nhật, hình tròn,hình ellipse, đa giác); Thay đổi màu sắc, kích thước và vị trí củacác hình dạng.

Tạo ra các trò chơi 2D đơn giản (Snake, Tetris, Pong, v.v.); Vẽmàn hình trò chơi, di chuyển các đối tượng, xử lý va chạm; Xử lýđầu vào từ người dùng (bàn phím, chuột) để điều khiển trò chơi.

Vẽ các biểu đồ đơn giản (đường, cột, tròn, v.v.); Biểu diễn dữ liệutheo các hình dạng và màu sắc khác nhau; Tạo ra đồ thị cho cácthuật toán như Đường đi ngắn nhất, Cây khung nhỏ nhất, v.v.Ngoài ra, việc ứng dụng thư viện graphics.h còn được ứng dụng vào cácbài toán trực quan hóa trong giáo dục (minh họa các thuật toán và cấutrúc dữ liệu, các nguyên lý vật lý, toán học, v.v.), mô phỏng và dữ liệu ảo(các thuật toán và mô hình toán học), các ứng dụng đồ họa đơn giản.

line(x1, y1, x2, y2): Vẽ một đường thẳng từ điểm (x1, y1) đến điểm(x2, y2)

rectangle(x1, y1, x2, y2): Vẽ một hình chữ nhật với góc trên bêntrái tại (x1, y1) và góc dưới bên phải tại (x2, y2)

circle(x, y, radius): Vẽ một hình tròn với tâm tại (x, y) và bán kínhlà radius

Trang 4

putpixel(x, y, color): Đặt một điểm ảnh với màu color tại tọa độ (x,y).

setcolor(color): Đặt màu hiện tại cho các hàm vẽ tiếp theo.Với “color” được thể hiện bằng các mã như trong bảng dưới đây:

c Một số chương trình ví dụ:

Chương trình vẽ một hình chữ nhật màu đỏ và một đường chéomàu xanh:

Trang 5

Chương trình vẽ một hình tròn màu xanh lá và vẽ 1 điểm ảnh (vớimàu được chọn trong 16 màu đầu tiên trong bảng màu):

Trang 6

2 Thư viện OpenGL (Open Graphics Library):a Giới thiệu:

Thư viện OpenGL (Open Graphics Library) là một thư viện đồ họa mạnhmẽ và đa nền tảng, hỗ trợ đồ họa 2D và 3D OpenGL cung cấp một tậphợp các hàm và công cụ để tạo ra các ứng dụng đồ họa phức tạp và hiệunăng cao Thư viện này được sử dụng rộng rãi trong các lĩnh vực như:

Trang 7

Trò chơi: Xây dựng các trò chơi 3D với đồ họa chất lượng cao,hiệu ứng đặc biệt, ánh sáng và vật liệu.

Khoa học và kỹ thuật: Mô phỏng và trực quan hóa dữ liệu trongcác lĩnh vực như vật lý, hóa học, y tế, kỹ thuật.

Giáo dục: Tạo các ứng dụng giáo dục tương tác với đồ họa 3D, môphỏng môi trường ảo.

Thiết kế và xây dựng: Mô phỏng và trực quan hóa các thiết kế kiếntrúc, kỹ thuật.

Ngoài ra, OpenGL thường được sử dụng kết hợp với các thư viện hỗ trợkhác như GLUT (OpenGL Utility Toolkit) hoặc SDL (SimpleDirectMedia Layer) để tạo cửa sổ và xử lý sự kiện người dùng OpenGLlà một thư viện đồ họa khá phức tạp và yêu cầu kiến thức sâu về lập trìnhđồ họa Tuy nhiên, với khả năng mạnh mẽ của nó, OpenGL là một lựachọn tuyệt vời cho việc xây dựng các ứng dụng đồ họa 3D chuyênnghiệp.

glLoadIdentity(): Đặt ma trận hiện tại thành ma trận đơn vị.glTranslate(), glRotate(), glScale(): Thực hiện các phép biến đổitịnh tiến, xoay và tỷ lệ trên đối tượng đồ họa.

glLight(), glMaterial(): Thiết lập ánh sáng và vật liệu cho các đốitượng 3D.

c Một số chương trình ví dụ:

Trang 8

3 Thư viện SDL (Simple DirectMedia Layer):a Giới thiệu:

Thư viện SDL (Simple DirectMedia Layer) là một thư viện đồ họa đanền tảng, mã nguồn mở, hỗ trợ đồ họa 2D và xử lý sự kiện SDL cungcấp một tập hợp các API đơn giản và hiệu quả để tạo ra các ứng dụng đa

Trang 9

phương tiện, chủ yếu là trong lĩnh vực phát triển trò chơi Thư viện nàyđược sử dụng rộng rãi trong các lĩnh vực như:

Trò chơi: Xây dựng các trò chơi 2D với đồ họa, âm thanh và xử lýđầu vào từ người dùng.

Ứng dụng đa phương tiện: Tạo các ứng dụng đa phương tiện tươngtác, như phát video, phát nhạc, trình chiếu multimedia.

Ứng dụng đồ họa: Tạo các ứng dụng đồ họa 2D, vẽ hình ảnh, xử lýđồ họa vector, v.v.

Mô phỏng và trực quan hóa: Mô phỏng và trực quan hóa các hệthống, mô hình toán học hoặc dữ liệu trong lĩnh vực khoa học vàkỹ thuật.

Sử dụng SDL có thể tạo cửa sổ, xử lý đầu vào từ bàn phím, chuột và cácthiết bị khác, vẽ hình ảnh và đối tượng đồ họa 2D, phát âm thanh vànhạc, quản lý thời gian và nhiều tính năng khác SDL cũng hỗ trợ nhiềuđịnh dạng đa phương tiện phổ biến như PNG, JPEG, WAV, MP3, v.v.SDL được coi là một thư viện đồ họa đơn giản, nhẹ và dễ sử dụng, đặcbiệt phù hợp cho việc phát triển trò chơi và ứng dụng đa phương tiện.

b Một số hàm phổ biến:

SDL_Init(): Khởi tạo thư viện SDL và các phần con của nó.SDL_CreateWindow(): Tạo một cửa sổ mới cho ứng dụng SDL.SDL_PollEvent(): Kiểm tra và lấy sự kiện từ hàng đợi sự kiện.SDL_RenderCopy(): Sao chép một vùng hình ảnh vào trên đích đãđựơc kết xuất.

SDL_RenderPresent(): Cập nhật toàn bộ hình ảnh đã kết xuất lênmàn hình.

SDL_Quit(): Dọn dẹp và thoát khỏi SDL.

c Một số chương trình ví dụ:

Trang 10

4 Một số thư viện khác:

Đây là một số thư viện đồ họa ít phổ biến hơn trong ngôn ngữ lập trìnhC:

Thư viện Cairo

Thư viện GD (GD Graphics Library)

Thư viện FreeGLUT (Free OpenGL Utility Toolkit)Thư viện Allegro

5 Tổng kết:

graphics.h - Đơn giản, dễ sử dụng cho những ứng dụng đồ họa cơ

- Chỉ hỗ trợ chế độ đồ họa cơ bản với độphân giải thấp.

Phù hợp cho việc học tập và làm quen

Trang 11

- Được tích hợp sẵntrong nhiều môi trường lập trình như Turbo C, Dev-C++.

- Phù hợp cho việc học tập và làm quenvới lập trình đồ họa.

- Không hỗ trợ các tính năng đồ họa nâng cao như 3D, GPU acceleration, shaders, vv.- Không đa nền tảng,chỉ hoạt động trên môi trường Windows.

với lập trình đồ họa cơ bản, những ứng dụng đơngiản không đòi hỏi đồ họa phức tạp.

SDL (Simple DirectMediaLayer)

- Đa nền tảng, hỗ trợ nhiều hệ điều hành khác nhau.- Hỗ trợ nhiều tính năng như đồ họa 2D, âm thanh, lập trình mạng, xử lý sự kiện, vv.- Cung cấp giao diện lập trình ứng dụng (API).- Phổ biến, có nhiềutài nguyên hỗ trợ.

- Không hỗ trợ đồ họa 3D nâng cao, cần kết hợp với các thư viện khác như OpenGL hoặc Vulkan.

- Hiệu suất đồ họa cóthể không cao như các thư viện đồ họa chuyên dụng khác.

Phù hợp cho việc phát triển ứng dụng đa nền tảng, đồ họa 2D, trò chơi đơn giản hoặc bất kỳ ứng dụng nàocần đồ họa vàxử lý sự kiện.OpenGL

(Open Graphics Library)

- Đa nền tảng, hỗ trợ nhiều hệ điều hành.

- Phổ biến, có nhiềutài nguyên hỗ trợ.- Hiệu suất đồ họa cao, phù hợp cho các ứng dụng đòi hỏi đồ họa nặng.

- Phức tạp- Không cung cấp giao diện lập trình ứng dụng (API) cho xử lý âm thanh, sự kiện, vv.

- Cần kết hợp với các thư viện khác để xử lý các tính năng khác ngoài đồ họa.

Phù hợp cho việc phát triển trò chơi 3D, mô phỏng, vv với yêu cầu về đồ họa caovà hiệu suất tối ưu.Kết luận: graphics.h phù hợp cho việc học tập và ứng dụng đồ họa cơ bản, SDL là lựa chọn tốt cho đồ họa 2D và xử lý sự kiện trên nhiều nền tảng, còn OpenGL là thư viện mạnh mẽ cho đồ họa 3D nâng cao và hiệu suất cao Lựa chọn thư viện nào phụ thuộc vào yêu cầu cụ thể của dự án và mức độ phức tạp của ứng dụng đồ họa.

Trang 12

III Một số bài toán cụ thể sử dụng đồ họa trong C1 Vẽ hình học cơ bản (mặt cười) (Sử dụng thư viện graphics.h)

Trong ví dụ trên, chúng ta sử dụng initgraph() để khởi tạo môi trường đồhọa, setcolor() để đặt màu cho các hình vẽ, circle() để vẽ mặt tròn vàmắt, arc() để vẽ miệng cười (hình cung tròn) Cuối cùng, getch() để đợingười dùng nhấn một phím trước khi đóng cửa sổ đồ họa bằngclosegraph().

2 Vẽ biểu đồ (hình tròn và hình cột) (Sử dụng thư viện graphics.h)

Giải thích chương trình:

Hàm drawPieChart (vẽ biểu đồ hình tròn) nhận tọa độ tâm, bán kính, mảng dữ liệu và số lượng dữ liệu Hàm này vẽ các phần tử của biểu đồ hình tròn bằng cách sử dụng hàm pieslice của thư viện graphics.h Góc bắt đầu và kết thúc của mỗi phần tử được tính dựa trên tỷ lệ phần trăm của dữ liệu.

Hàm drawBarChart (vẽ biểu đồ hình cột) nhận tọa độ xuất phát, chiều rộng và chiều cao của khu vực vẽ, mảng dữ liệu và số lượng dữ liệu Hàm này vẽ các cột của biểu đồ hình cột bằng cách sử dụng hàm bar của thư viện graphics.h Chiều cao của mỗi cột được tính dựa trên giá trị dữ liệu và giá trị lớn nhất trong mảng dữ liệu.

Trong hàm main, chúng ta khởi tạo đồ họa bằng cách gọi initgraph.

Trang 13

Chúng ta khai báo hai mảng dữ liệu, một cho biểu đồ hình tròn và một cho biểu đồ hình cột.

Gọi hàm drawPieChart để vẽ biểu đồ hình tròn, và gọi hàm drawBarChart để vẽ biểu đồ hình cột.

Đóng đồ họa bằng closegraph và kết thúc.

Trang 14

3 Animation cơ bản (trái tim to nhỏ) (Sử dụng thư viện graphics.h)

Cách chương trình hoạt động:

Trang 15

Chương trình khai báo một hàm drawHeart(x, y, r) để vẽ hình trái tim với tâm tại tọa độ (x, y) và bán kính r.

Trong hàm main(), chương trình khởi tạo đồ họa bằng cách gọi initgraph().

Chương trình xác định tọa độ tâm trái tim (x, y) và bán kính ban đầu r của trái tim.

Chương trình vào một vòng lặp vô hạn, trong đó: - Xóa màn hình bằng cleardevice().

- Vẽ trái tim bằng cách gọi drawHeart(x, y, r).

- Delay một khoảng thời gian nhỏ để tạo hiệu ứng animation.- Thay đổi bán kính r để phóng to hoặc thu nhỏ trái tim.

- Nếu bán kính đạt đến giá trị lớn nhất (r >= 100), đổi hướng thành thu nhỏ.

- Nếu bán kính đạt đến giá trị nhỏ nhất (r <= 25), đổi hướng thành phóng to.

Vòng lặp sẽ tiếp tục cho đến khi người dùng nhấn một phím bất kỳ.Cuối cùng, chương trình đợi người dùng nhấn phím để tiếp tục, đóng đồ họa bằng closegraph() và kết thúc.

Trang 16

4 Tạo menu và xử lý đầu vào từ người dùng (chương trình chọn hình vẽ) (Sử dụng thư viện graphics.h)

Chương trình này sẽ hiển thị một menu đơn giản cho phép người dùng chọn một trong ba hình dạng (hình tròn, hình vuông và hình tam giác) để vẽ lên màn hình.

Cách chương trình hoạt động:

Trang 17

Chương trình bắt đầu bằng việc khai báo các hàm `drawCircle()`, `drawSquare()` và `drawTriangle()` để vẽ hình tròn, hình vuông và hình tam giác tương ứng.

Trong hàm `main()`, chương trình khởi tạo đồ họa bằng cách gọi hàm `initgraph()`.

Sau đó, chương trình hiển thị một menu và nhận đầu vào từ người dùng bằng cách sử dụng hàm `getch()`.

Tùy thuộc vào lựa chọn của người dùng, chương trình sẽ gọi hàm tương ứng để vẽ hình dạng đã chọn.

Sau khi vẽ xong, chương trình sẽ đợi người dùng nhấn phím để tiếptục.

Quá trình này lặp lại cho đến khi người dùng chọn thoát khỏi chương trình.

Cuối cùng, chương trình đóng đồ họa bằng cách gọi hàm `closegraph()`.

5 Trò chơi (rắn săn mồi) (Sử dụng thư viện OpenGL)

Cách chương trình hoạt động:

Chương trình bắt đầu bằng việc khai báo các hàm đồ họa nhưpoint(), wall(), output() và drawstring() để vẽ các đối tượng trênmàn hình.

Hàm frontscreen() hiển thị màn hình bắt đầu của trò chơi, bao gồmthông tin về trò chơi và tác giả.

Hàm startscreen() hiển thị menu chính của trò chơi, cho phépngười chơi chọn chơi mới, đọc hướng dẫn hoặc thoát trò chơi.

Hàm instructions() hiển thị hướng dẫn cho người chơi, bao gồmcách điều khiển, ý nghĩa của các điểm màu và thời gian chơi.

Hàm winscreen() hiển thị màn hình chiến thắng khi người chơi đạtđến điểm đích.

Hàm timeover() hiển thị màn hình khi thời gian chơi đã hết.Hàm SpecialKey() xử lý sự kiện di chuyển của người chơi bằngcách sử dụng các phím mũi tên Chương trình kiểm tra xem nhânvật có thể di chuyển đến vị trí mới hay không bằng cách so sánhtọa độ mới với các bức tường trong mê cung.

Hàm display() vẽ các đối tượng trên màn hình tùy thuộc vào trạngthái của trò chơi Nó gọi các hàm khác nhau để hiển thị màn hìnhbắt đầu, màn hình chính, hướng dẫn, màn hình chiến thắng hoặcmàn hình hết giờ.

Trang 18

Hàm keyboard() xử lý sự kiện nhấn phím từ bàn phím, cho phépngười chơi chọn các tùy chọn trong menu hoặc khởi động lại tròchơi.

Hàm idle() kiểm tra điều kiện chiến thắng và hết giờ trong khi tròchơi đang chạy.

Hàm wall() vẽ các bức tường của mê cung bằng cách sử dụng cácđa giác.

Hàm main() khởi tạo cửa sổ OpenGL, thiết lập các chế độ vẽ, gáncác hàm xử lý sự kiện và bắt đầu vòng lặp chính của trò chơi.Khi chạy chương trình, người chơi sẽ thấy màn hình bắt đầu và có thểchọn chơi mới, đọc hướng dẫn hoặc thoát trò chơi Sau khi chọn chơimới, màn hình chính sẽ hiển thị với mê cung và điểm xuất phát (điểmxanh lá cây) Người chơi có thể sử dụng các phím mũi tên để di chuyểntrong mê cung và cố gắng đạt đến điểm đích (điểm đỏ) trước khi hết thờigian Nếu người chơi đạt đến điểm đích trong thời gian quy định, mànhình chiến thắng sẽ hiển thị Nếu thời gian hết, màn hình hết giờ sẽ hiểnthị Người chơi có thể chọn chơi lại hoặc thoát trò chơi từ các màn hìnhnày.

Ngày đăng: 11/06/2024, 17:41

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w