I. Ngôn ngữ lập trình C II. Lập trình đồ họa với C III. Sprite IV. Phát hiện va chạm game bắn cung V. Phát âm thanh VI. Tạo Map VII. Vẽ Map Cuộn Map Kiểu dữ liệu cơ bản (giống với C) Có thêm kiểu bool, kích thước các kiểu dữ liệu được mở rộng thêm. Cấu trúc điều khiển (giống với C) Thêm vòng lặp foreach để duyệt mảng Xử lý ngoại lệ Thêm cơ chế bắt lỗi và xử lý lỗi Cấu trúc và lớp
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA ĐIỆN- ĐIỆN TỬ NGÀNH KỸ THUẬT ĐIỆN – ĐIỆN TỬ BÁO CÁO TỐT NGHIỆP Đề tài: ỨNG DỤNG C# TRONG LẬP TRÌNH GAME GVHD: Nguyễn Minh Chương SVTH : Nguyễn Thanh Dâng Đỗ Thanh Sơn Trương Quang Kim Hoàn 1 • I. Ngôn ngữ lập trình C# • II. Lập trình đồ họa với C# • III. Sprite • IV. Phát hiện va chạm & game bắn cung • V. Phát âm thanh • VI. Tạo Map • VII. Vẽ Map & Cuộn Map NỘI DUNG THUYẾT TRÌNH 2 • Kiểu dữ liệu cơ bản (giống với C) – Có thêm kiểu bool, kích thước các kiểu dữ liệu được mở rộng thêm. • Cấu trúc điều khiển (giống với C) – Thêm vòng lặp foreach để duyệt mảng • Xử lý ngoại lệ – Thêm cơ chế bắt lỗi và xử lý lỗi • Cấu trúc và lớp I. NGÔN NGỮ LẬP TRÌNH C# 3 • Cho phép tạo các kiểu dữ liệu riêng của người dùng. • Cấu trúc và lớp gần như giống nhau hoàn toàn. • Điểm khác biệt – Cấu trúc là kiểu giá trị – Lớp là kiểu tham chiếu. Cấu trúc và Lớp 4 • Các biến thành viên • Thuộc tính • Phương thức – Phương thức tạo (mức truy cập là Public, tên phương thức trùng với tên lớp) – Phương thức hủy (mức truy cập là Public, tên phương thức có dạng “~ TênLớp”) Cấu tạo của lớp 5 • C# sử dụng thư viện GDI+ (Graphical Device Interface) cho việc xử lý đồ họa II. Lập trình đồ họa với C# Hình 1. Vai trò của GDI+ Hình 2. GDI+ namespace 6 Hệ tọa độ GDI+ Hình 3. Hệ tọa độ GDI+ 7 • Alpha biểu diễn độ trong suốt của màu – Giá trị 0 nghĩa là màu hoàn toàn trong suốt – và ngược lại. Màu sắc – Lớp Color Hình 4. Các thành phần của màu sắc 8 Kết quả thử nghiệm các hàm đồ họa 9 • Sprite và những vật thể có thể di chuyển và tương tác trong game (người chơi, kẻ thù, …). • Phân biệt nó với các đối tượng tĩnh, tức là những đối tượng cứng không tương tác hay thay đổi trong game III. SPRITE Hình 5. Minh họa Sprite 10 [...]... c c game 2-D đơn giản Thiết kế đư c c c lớp trên C# Tuy nhiên: Vẫn chưa hoàn chỉnh, c n nhiều lỗi c n kh c ph c • Định hướng phát triển Tạo c c tay c m chơi game C i tiến c ng c tạo Map Thêm c c giải thuật điều khiển cho c c nhân vật trong game THE END!!! #include int main() { while(IsLastPage(ThisPage)) { “Xin c m ơn quí thầy c c ng c c bạn sinh viên.” printf( printf("\n");... Dùng c c phần mềm đồ họa c ng với c c phần mềm chuyên dụng để tạo Sprite • Sử dụng c ng c Google tìm kiếm hình ảnh để tìm c c ảnh tạo Sprite bằng từ khóa: “Sprite Sheet” • Trang web sau cung c p c c hình ảnh đồ họa cho vi c lập trình Game: http://www.reinerstilesets.de/2d-grafiken/2d-a nimals/ III SPRITE (tt) • Th c chất ra, Sprite chỉ gồm c c hình ảnh liên tiếp nhau c a một chuyển động, đư c vẽ liên... Do chương trình đư c viết là ứng dụng Windows Form, nếu trong chương trình chứa c c vòng lặp vô tận (endless loop, or super loop) sẽ làm cho Form bị ứng • Phương th c Application.DoEvents() sẽ xử lý tất c c c sự kiện phát sinh do người dùng ho c chương trình kh c t c động lên Form (xử lý phím, chuột, vẽ lại màn hình,…) Kết quả thử nghiệm Sprite IV PHÁT HIỆN VA CHẠM • C n tạo một hình bao hình chữ... trí và kích thư c của Sprite • Dùng phương th c IntersectsWith() c a lớp Rectangle để kiểm tra va chạm Hình 6: Hai hình bao giao nhau => C va chạm Game bắn cung V PHÁT ÂM THANH • Sử dụng âm hệ thống – VD: SystemSound.Beep.Play(); • Sử dụng lớp SoundPlayer trong namespace System.Media Chỉ phát đư c định dạng file wav • Sử dụng Windows Media Player Phát đư c nhiều định dạng hơn VI TẠO MAP • Chúng ta... • Mỗi một chuyển động c n khoảng 8÷10 ảnh • Ảnh nên tách bỏ nền và lưu dưới dạng PNG • Để dễ quản lý, mỗi Sprite chỉ sử dụng một ảnh, mỗi dòng c a ảnh là c c frame c a một hành động Vòng lặp Game Loop” Load _Game( ); while(!p_gameOver) { Update _Game( ); Application.DoEvents(); } Game_ End(); • Vòng lặp Game đư c đặt ở cuối sự kiện Form Load, khi đó tất c dữ liệu đã đư c tải lên Form Application.DoEvents()... thứ tự c a tile – Tọa độ c a tile trên Map – Cho phép Sprite đi qua không (Collidable) – C phải c ng hay không và tọa độ c ng – File Map mà c ng nhảy tới (*) C n phải lưu file Palette chung với file Map VI VẼ MAP VÀ CUỘN MAP Toàn bộ Map (4096x4096) (x,y) Màn hình hiển thị (800x600) VẼ MAP VÀ CUỘN MAP (tt) (x,y) VẼ MAP VÀ CUỘN MAP (tt) Bộ đệm Màn hình hiển thị KẾT LUẬN • Kết luận Tạo đư c c c game 2-D... đư c nhiều định dạng hơn VI TẠO MAP • Chúng ta đã tạo đư c một game đơn giản, với map chỉ đơn giản là một b c hình • Vi c tạo map giống như chúng ta đang lợp gạch (tile) cho nền nhà Với mỗi viên gạch một hoa văn, khi ghép chúng lại với nhau sẽ tạo ra c i sàn nhà đẹp mắt • C c viên gạch (tile) đư c lấy từ một thùng chứa (Palette) và lần lượt đư c đặt ra form VI TẠO MAP (tt) Palette Tile Lưu file MAP