LỜI MỞ ĐẦU. VI 7 DANH MỤC CÁC TỪ VI T TẮT. VIII 8 DANH MỤC BẢNG BIỂU. IX 9 DANH MỤC HÌNH ẢNH.
X Chƣơng 1: TỔNG QUAN. Lịch sử máy chơi game. Lý do chọn ề tài. Mục tiêu của ề tài.
Đối tƣợng và phạm vi nghiên cứu. 12 Chƣơng 2: CƠ SỞ LÝ THUY T. Ngôn ngữ lập trình Python. Giới thiệu ngôn ngữ lập trình Python.
Lý do chọn Python. Lập trình hƣớng ối tƣợng trong Python. Lập trình hƣớng ối tƣợng là gì?. S khác biệt giữa lập trình hƣớng thủ tục và hƣớng ối tƣợng.
Khái niệm và cách khai báo Class trong Python. Board mạch nhúng Arduino Uno R3. Phần cứng Arduino UNO R3. Các ngõ ra vào của Arduino UNO R3.
Cảm biến MPU6050. 21 VI do an 2. Thông số kỹ thuật. Chuẩn giao tiếp I2C.
Cấu tạo và nguyên lý hoạt ộng. Trình t truyền bit. 23 Chƣơng 3: PHẦN CỨNG. Sơ ồ nguyên lý và chức năng.
26 Chƣơng 4: PHẦN MỀM. Lập trình GUI với Tkinter Python. Giới thiệu giao diện game. Giao tiếp giữa ngƣời dùng với “Menu Game” và “Play Game”.
Xây d ng Class Diagram ể quản lý game. Luồng xử lý tạo một ối tƣợng Bird. Luồng xử lý của Frame Game và Frame Menu. Thêm ối tƣợng mới.
39 Chƣơng 5: K T QUẢ. Kết quả thi công. Đánh giá kết quả. 44 Chƣơng 6: K T LUẬN VÀ HƢỚNG PHÁT TRIỂN.
Hƣớng phát triển. Thêm ngƣời chơi. 46 10 TÀI LIỆU THAM KHẢO .48 VII do an 7 DANH MỤC CÁC TỪ VIẾT TẮT GPIO General Purpose Input Output ADC Analog to Digital Converter PWM Pulse Width Modulation UART Universal Asynchronous Receiver – Transmitter I2C Inter-Integrated Circuit SPI Serial Peripheral Interface CAN Controller Area Network USB Universal Serial Bus RTC Real-time Clock VIII do an 8 DANH MỤC BẢNG BIỂU Bảng 2.1 Bảng thông số Arduino UNO R3 .2 Bảng thông số MPU6050 .1 Thuộc tính và phƣơng thức của class “CFactoryBird” .2 Thuộc tính và phƣơng thức của class “CBaseObject”.3 Thuộc tính của class “CBaseBird” .4 Thuộc tính của class “CPlayer” .5 Thuộc tính của class “CGun” .35 IX do an 9 DANH MỤC HÌNH ẢNH Hình 2.1 Board mạch Arduino Uno R3 .2 Sơ ồ chân Arduino UNO R3 .3 Cảm biến MPU6050 .5 Chuẩn giao tiếp I2C .6 Trình t truyền nhận bit .7 Điều kiện Start Stop .1 Sơ ồ khối hệ thống .2 Sơ ồ nguyên lý hệ thống.3 Góc quay theo 3 trục .4 Chƣơng trình chính .5 Chƣơng trình ngắt .1 Giao diện “Menu Game” .2 Giao diện “Play Game” .6 Giao tiếp giữa ngƣời dùng với 2 Frame .8 Đối tƣợng Canvas.9 Luồng xử lý tạo GunBird .10 Trạng thái bay của ối tƣợng Bird .11 Trạng thái di chuyển của ối tƣợng Bird .12 Luồng xử lý của Frame Menu .13 Luồng xử lý của Frame Game .15 Trạng thái của một ối tƣợng .16 Class diagram khi thêm mới một ối tƣợng .17 Xử lý khi thêm một ối tƣợng mới .1 Chƣơng trình game.2 Hồng tâm di chuyển theo di chuyển của ngƣời chơi 1.3 Hồng tâm di chuyển theo di chuyển của ngƣời chơi 2.43 X do an Hình 5.4 Xác xuất tạo “GunBird” .5 Template setting game .6 Sử dụng Visual Basic trong Excel .7 Template XML setting game .1 Thiết kế phần cứng 2 ngƣời chơi .2 Thiết kế phần cứng cho 3 ngƣời chơi trở lên .47 XI do an Chƣơng 1: TỔNG QUAN 1. Lịch sử máy chơi game.
Với s phát triển của công nghệ thông tin, game ã trở thành hình thức giải trí rất phổ biến trên thế giới với sức lôi cuốn ặc biệt .Qua nhiều thời kỳ, các thể loại game không ngừng thay ổi áp ứng nhu cầu a dạng của ngƣời chơi. Douglas ã phát triển trò chơi OXO, mà tiếng Việt gọi là trò cờ ca-rô, ể minh hoạ cho luận văn về s tƣơng tác của con ngƣời với máy tính.Đầu thập kỷ 80, công nghệ sản xuất game cho máy thùng ã trở nên "tinh tế" và ủ sức mang lại ồ hoạ và âm thanh chất lƣợng tốt, tuy nhiên vẫn còn khá "cơ bản" .Thành công của game loại này là d a trên tính ơn giản và s giải trí nhẹ nhàng .Game "xèng" ã phát triển rộng khắp trên Bắc Mỹ và Nhật Bản. Lý do chọn đề tài. Trong cuộc sống ngày nay các thiết bị iện tử óng vai trò rất lớn .Mọi ngƣời có thể thấy ƣợc nhiều ứng dụng của iện tử vào các lĩnh v c nhƣ y tế, nông nghiệp, giao thông, ngân hàng … .Đặc biệt là giải trí nhƣ phim, nhạc số và game .Vì mong muốn hiểu thêm về cách hoạt ộng của một game nên ngƣời th c hiện quyết ịnh chọn ề tài “Thiết kế và thi công hệ thống trò chơi trò chơi bắn vịt trời”.
Mục tiêu của đề tài. Xây d ng ƣợc một hệ thống trò chơi giải trí hoàn chỉnh, gồm game ƣợc lập trình theo hƣớng ối tƣợng trên Windows sử dụng ngôn ngữ Python, ngƣời chơi co thể tƣơng tác với game bằng các hành ộng xoay trái, xoay phải ể di chuyển ƣợc hông tâm của súng ể bắn hạ các chú chim. Đối tƣợng và phạm vi nghiên cứu. Đề tài sẽ tập trung nghiêm cứu về lập trình hƣớng ối tƣợng ể lập trình game ở m c ộ cơ bản tƣơng tác với ngƣời dùng thông qua board mạch Arduino Uno R3 kết hợp với cảm biến MPU6050.
Bố cục ồ án gồm 6 chƣơng, cụ thể nhƣ sau: Chƣơng 1: Tổng quan Chƣơng 2: Cơ sơ ly thuyết Chƣơng 3: Phần cứng Chƣơng 4: Phần mềm Chƣơng 5: Kết quả Chƣơng 6: Kết luận và hƣớng phát triển 12 do an Chƣơng 2: CƠ SỞ LÝ THUY T 2. Ngôn ngữ lập trình Python. Giới thiệu ngôn ngữ lập trình Python. Python là ngôn ngữ lập trình cấp cao ƣợc tạo ra vào cuối những năm 1980 và ƣợc ặt tên theo nhóm kịch Monty Python, ƣợc sử dụng nhiều trong việc kiểm thử các vi mạch, viết các ứng dụng, cho tới việc làm các video game.
Python có thể chạy ƣợc trên nhiều hệ iều hành nhƣ Window, Linux, MAC OS, Unix, MS DOS,… 2. Lý do chọn Python. Python có cú pháp dễ ọc, dễ học, vừa hƣớng ối tƣợng, vừa hƣớng thủ tục, có khả năng chạy trên nhiều nền tảng khác nhau .Thêm vào ó Python có một cộng ồng ngƣời sử dụng rất lớn, là nơi ể những ngƣời mới bắt ầu tìm kiếm s giúp ỡ khi gặp khó khăn, và cũng là nơi chia sẽ những mã nguồn bổ ích với nhau .Hầu nhƣ tất cả thƣ viện hỗ trợ ều tập hợp ở trang wed https://pypi. Python còn ƣợc sử dụng nhiều trong các công nghệ “HOT” hiện nay nhƣ: OpenCV, AI,.Đƣơng nhiên các ngôn ngữ khác vẫn có thể sử dụng trong các công nghệ trên nhƣng Python giúp ta nhanh chóng tiếp cận và xây d ng các ứng dụng một cách hiệu quả.
Lập trình hƣớng đối tƣợng trong Python. Lập trình hƣớng đối tƣợng là gì? Lập trình hƣớng ối tƣợng hay còn ƣợc gọi OOP(Object Oriented Programming) ƣợc phát triển từ những năm 2000 nhằm thay thế lập trình thủ tục. Giúp ngƣời lập trình ơn giản hóa công việc xây d ng và quản lý phần mềm, hƣớng ến các ối tƣợng trong th c tế và mô tả ối tƣợng ó bằng các phƣơng thức và thuộc tính. Sự khác biệt giữa lập trình hƣớng thủ tục và hƣớng đối tƣợng.
Trong lập trình hƣớng thủ tục thì chƣơng trình ƣợc chia nhỏ thành các chƣơng trình con (các hàm) mỗi chƣơng trình con th c hiện một công việc xác ịnh.Chƣơng trình sẽ gọi ến chƣơng trình con theo một giải thuật hoặc một cấu trúc ƣợc xác ịnh trong chƣơng trình chính. Nhƣng khi phát triển một phần mềm lớn hơn khối lƣợng hàm và dữ liệu tăng nhiều lần thì lập trình hƣớng thủ tục lại bộc lộ ra nhiều iểm yếu, nhƣ việc số hàm quá nhiều cộng thêm s truy cập t do không bị bất cừ ràng bộc nào dẫn ến việc bảo mật dữ liệu yếu kém, quản lý một dữ liệu lớn ở lập trình hƣớng thủ tục gặp cũng nhiều khó khăn vì không có tính óng gói, kế thừa nên khi nâng cấp, bảo trì, sửa chữa phải mất rất nhiều thời gian. 13 do an Vậy nên ể khắc phục những hạn chế này khi giải quyết những bài toán lớn, ngƣời ta xây d ng 1 phƣơng pháp tiếp cận mới là lập trình hƣớng ối tƣợng nhằm mục ích óng gói các dữ liệu ể hạn chế truy nhập t do vào dữ liệu và cho phép sử dụng lại mã nguồn, hạn chế việc viết lại mã từ ầu cho các chƣơng trình. Hầu hết các ngôn ngữ lập trình hƣớng ối tƣợng ều ảm bảo 4 tính chất sau: 1.
Tính trừu tƣợng: Tính trừu tƣợng trong lập trình hƣớng ối tƣợng là tìm ra các ặc trƣng về phƣơng thức và thuộc tính từ các mô tả chức năng của chƣơng trình ể trừu tƣợng hóa thành các ối tƣợng các class. Tính óng gói: Tính óng gói có thể hiểu là việc ảm bảo toàn vẹn dữ liệu, ảm bảo cho dữ liệu ƣợc bảo mật. Để làm ƣợc iều này thì lập trình hƣớng ối tƣợng cho phép ngƣời dùng giới hạn truy cập (access modifier) bằng các từ khóa public, private, protected (C++). Tính kế thừa: Tính kế thừa cho phép ngƣời dùng tái sử dụng các mã nguồn ã có sẵn, dễ dàng nâng cấp, sữa chữa phần mềm.
Tính a hình: Tính a hình cho phép một ối tƣợng có hình thái khác nhau. Để hiểu rõ hơn về 4 tính trên mời mọi ngƣời cùng i tìm hiểu ở phần tiếp theo. Khái niệm và cách khai báo Class trong Python. Class là một kiểu dữ liệu mới do ngƣời dùng t ịnh nghĩa, cũng là một iểm mới so với lập trình thủ tục không có ƣợc .Một Class gồm có các thuộc tính (biến) và phƣơng thức (hàm) .Các thuộc tính và phƣơng thức thành viên của một lớp ƣợc truy cập thông qua toán tử dot (dấu chấm) .Dƣới ây là các khai báo một class trong Python: class Sinhvien: # Hàm khởi tạo def __init__(self, Ten, MSSV): self.ten = Ten self.mssv = MSSV # Hàm hiển thị thông tin sinh viên def HienThiSinhvien(self): print "Ten : ", self.ten, ", MSSV: ", self.mssv Nhƣ vậy, ngƣời th c hiện vừa tạo xong một class SinhVien, với các thuộc tính là “ten”, “mssv” và phƣơng thức “HienThiSinhVien” , “__init__”.
14 do an Hàm “__init__” là constructor của lớp, hàm này ƣợc gọi khi bạn tạo ra một instance, cụ thể ở class “Sinhvien” khi mọi ngƣời tạo ra một instance ở class này thì bắt buộc phải cung cấp tên sinh viên (thuộc tính “Ten”) và mã số sinh viên (“MSSV”), sau ó các thông tin này sẽ lƣu lại trong biến thành viên của class (“self.ten” và “self. Hàm “HienThiSinhVien” là một phƣơng thức thành viên của lớp, hàm này không có ối số ầu vào, nhiệm vụ chỉ là in tên và mã số sinh viên ra màn hình khi ƣợc gọi .