Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
1,58 MB
Nội dung
TRƯỜNG ĐẠI HỌC PHÚ YÊN KHOA KỸ THUẬT – CÔNG NGHỆ TIỂU LUẬN ỨNG DỤNG LẬP TRÌNH DI ĐỘNG TRÊN TRÒ CHƠI TICTACTOE Sinh viên thực : Nguyễn Thị Phúc Loan Thongmaha Soutthida Amnard Sipaserd Giảng viên hướng dẫn : Phú Yên, 2022 h ThS Nguyễn Quốc Dũng TRƯỜNG ĐẠI HỌC PHÚ YÊN KHOA KỸ THUẬT – CÔNG NGHỆ TIỂU LUẬN ỨNG DỤNG LẬP TRÌNH DI ĐỘNG TRÊN TRỊ CHƠI TICTACTOE Sinh viên thực : Nguyễn Thị Phúc Loan Thongmaha Soutthida Amnard Sipaserd Giảng viên hướng dẫn : ThS Nguyễn Quốc Dũng Phú Yên, 2022 h MỤC LỤC A) MỞ ĐẦU Mục tiêu Đối tượng Phạm vi Nội dung B) NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Sơ lược lập trình di động tảng Android 1.2 Phương thức làm việc với sở liệu thời gian thực Firebase 10 CHƯƠNG 2: PHÂN TÍCH BÀI TỐN VÀ KẾT QUẢ .12 2.1 Mơ tả tốn tường minh vấn đề 12 2.1.1 Mơ tả tốn 12 2.1.2 Tường minh chi tiết giải thuật mã chương trình 12 2.2 Phân tích kết cần đạt 24 CHƯƠNG 3: TRIỂN KHAI MƠ HÌNH GIAO DIỆN ỨNG DỤNG TRONG MÃ CHƯƠNG TRÌNH BẰNG NGƠN NGỮ JAVA .25 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 27 h DANH MỤC BẢNG BIỂU, HÌNH ẢNH VÀ CHỮ VIẾT TẮT Hình 1.1 Lập trình android ………………………………………………………………….………… ….7 Hình 1.2 Lập trình java ……………………………………………………………………………….….… Hình 1.3 Lập trình kotlin …………………………………………………….… Hình 1.4 Hình ảnh đại diện cho tảng sở liệu Firebase ……………… 10 Hình 2.1 Hình ảnh biểu diễn cấu trúc thư mục dẫn đến tệp xml hộp thoại 15 Hình 2.2 Hình ảnh biểu diễn nút bắt đầu vịng chơi ………………………… .15 Hình 2.3 Hình biểu diễn bắt đầu khám phá sở liệu Firebase bước đầu 16 Hình 2.4 Hình biểu diễn thêm sở liệu ……………………….… 16 Hình 2.5 Bước tạo sở liệu ………………………………….……….…17 Hình 2.6 Ẩn chia sẻ thơng tin khơng cung cấp liệu đến nhà phân tích Google ……………………………………………………………….………….…17 Hình 2.7 Dựng cung cấp đủ mối liên quan cho sở liệu ……………… 18 Hình 2.8 Biểu diễn hình sẵn sàng để kết nối sở liệu đến ứng dụng miền đơn ……………………………………………………………………………… 18 Hình 2.9 Cài cắm sở liệu tạo vào ứng dụng …………………………… 19 Hình 2.10 Màn hình hiển thị nơi lấy mã ứng dụng ……….………………………19 Hình 2.11 Màn hình đăng ký ứng dụng ………………………………………… 20 Hình 2.12 Tải tệp Google.json …………………………………………….… 20 Hình 2.13 Hình ảnh biểu diễn nạp tệp json phải tồn hệ thống nhận ứng dụng ……………………………………………………………………………… 21 Hình 2.14 Cấu hình phân lớp dựng …………………………………………….…21 Hình 2.15 Màn hình hồn thành tác vụ kết nối sở liệu …………………….22 Hình 2.16 Hình ảnh biểu thị quy tắc thiết lập đọc – ghi child để nạp đẩy liệu …………………………………………………………………………… 23 Hình 2.17 Biểu diễn mã chương trình bổ nghĩa cho phương thức chuyển đổi lượt chơi giao diện ứng dụng trò chơi …………………………………………… 25 h Hình 3.1 Hình ảnh biểu thị hình máy ảo chạy song hanh ………………… 25 Hình 3.2 Hình ảnh hiển thị bên thắng, bên thua ………………………………… 26 Hình 3.3 Hình ảnh hiển thị trực tiếp giá trị kiện lắng nghe nạp đọc-ghi sở liệu thời gian thực Firebase …………………………………………… 26 STT Từ viết tắt Json Id SDK AVD Chữ viết đầy đủ JavaScript Object Notation - kiểu liệu mở JavaScript identification Software Development Kit Android Virtual Device h A) MỞ ĐẦU Mục tiêu - Hiểu biết ứng dụng hàm ngôn ngữ Java tảng lập trình di động Android Tạo trị chơi TicTacToe cho hai người chơi theo địa local Firebase Đối tượng - Mơi trường lập trình ứng dụng di động Android Trị chơi hình thức tốn Các biểu tượng X O đơi cặp đối tượng đôi khác đặt lưới ma trận 3x3 Phạm vi - Dạng thuật toán mức hiểu biết xác suất - Báo cáo dự án dừng mức độ mơ thuật tốn phương pháp trình bày giải toán - Nền tảng di động Android Nội dung CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Sơ lược lập trình di động tảng Android 1.2 Phương thức làm việc với sở liệu thời gian thực Firebase CHƯƠNG 2: PHÂN TÍCH BÀI TỐN VÀ KẾT QUẢ 2.1 Mơ tả tốn tường minh vấn đề 2.2 Phân tích kết cần đạt CHƯƠNG 3: TRIỂN KHAI MƠ HÌNH GIAO DIỆN ỨNG DỤNG TRONG MÃ CHƯƠNG TRÌNH BẰNG NGƠN NGỮ JAVA h B) NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Sơ lược lập trình di động tảng Android Android hệ điều hành điện thoại di động (và số đầu phát HD, HD Player, TV) phát triển Google dựa tảng Linux Lập trình android lập trình ứng dụng di động phổ biến Trước đây, Android phát triển công ty liên hợp Android ( sau Google mua lại vào năm 2005) Các nhà phát triển viết ứng dụng cho Android dựa ngôn ngữ Java Sự mắt Android vào ngày tháng 11 năm 2007 gắn với thành lập liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm viễn thơng nhằm mục đính tạo nên chuẩn mở cho điện thoại di động tương lai Hình 1.1 Lập trình android Kiến trúc hệ điều hành Android gồm phần chứa lớp: - Nhân Linux: Đây nhân tảng mà hệ điều hành Android dựa vào để phát triển Đâu lớp chứa tất thiết bị giao tiếp mức thấp dùng để điều khiển phần cứng khác thiết bị Android Thư viện: Chứa tất mã mà cung cấp cấp tính hệ điều hành Android, đơi với ví dụ SQLite thư viện cung cấp việc hộ trợ làm việc với database dùng để chứa liệu Hoặc Webkit thư viện cung cấp tính cho trình duyệt Web Android runtime: Là tầng với lớp thư viện Android runtime cung cấp tập thư viện cốt lỗi phép lập trình viên phát triển viết ứng dụng việc sử dụng ngơn ngữ lập trình Java Android Runtime bao gốm máy ảo Dalvik(ở version < 4.4, tài phiên máy ảo ART cho h - mạnh mẽ việc xử lý biên dịch) Là để điều khiển hoạt động ứng dụng Android chạy nó(máy ảo Dalvik biên dịch ứng dụng để chạy(thực thi) , tương tự ứng dụng biên dịch máy ảo Java vậy) Ngoài máy ảo giúp tối ưu lượng pin CPU thiết bị Android Android framework: Là phần thể khả khác Android(kết nối, thông báo, truy xuất liệu) cho nhà phát triển ứng dụng, chúng tạo để sử dụng ứng dụng họ Application: Tầng ứng dụng tầng bạn tìm thấy chuyển thiết bị Android Contact, trình duyệt…Và ứng dụng bạn viết nằm tầng Ngôn ngữ lập trình tập ngơn ngữ máy tính, thiết kế chuẩn hóa để truyền thị cho máy có xử lý (CPU), nói riêng máy tính Ngơn ngữ lập trình dùng để lập trình máy tính, tạo chương trình máy nhằm mục đích điều khiển máy tính mơ tả thuật toán để người khác đọc hiểu Nếu bạn muốn phát triển ứng dụng di động android, bạn cần biết ngơn ngữ lập trình để xây dựng Các ngơn ngữ lập trình adroid gồm có: - Java Hình 1.2 Lập trình java Dựa vào số TIOBE, Lập trình Java ngơn ngữ lập trình phổ biến tính đến tháng sáu năm 2017 Nếu bạn có ý định xây dựng ứng dụng Android, tỉ lệ lớn bạn làm việc với Java Với cộng đồng developer lớn mạnh thành lập từ lâu, bạn dễ dàng nhận hỗ trợ giúp đỡ chuyên môn h Vậy nên bạn phát triển ứng dụng di động Java, bạn thỏa sức sáng tạo để xây dựng loại ứng dụng mà bạn muốn Hạn chế sức sáng tạo bạn hay hạn chế kiến thức bạn Java - Kotlin Hình 1.3 Lập trình kotlin Kotlin ngơn ngữ lập trình phát triển JetBrains, cơng ty Cộng Hịa Czech phát triển ItelliJ IDEA, IDE tiếng Đội ngũ lập trình Android Google gần thơng báo việc họ thức thêm hỗ trợ cho Kotlin Kotlin phát triển để giải vài vấn đề tồn Java Theo đa số người ủng hộ việc dùng Kotlin, syntax đơn giản gọn hơn, dẫn tới xảy việc dòng code rườm rà, dài dòng Điều có tác dụng giúp người viết tâp trung việc giải vấn đề cố xoay sở với câu lệnh dài dịng phức tạp Ngồi ra, bạn cịn kết hợp Kotlin Java dùng dự án, khai thác hết mạnh ngôn ngữ h 1.2 Phương thức làm việc với sở liệu thời gian thực Firebase Hình 1.4 Hình ảnh đại diện cho tảng sở liệu Firebase Firebase Realtime database cloud hosted database hỗ trợ đa tảng: Android, IOS Web Tất liệu lưu trữ định dạng JSON với thay đổi liệu có phản hồi lập tức, hiển thị đồng bồ tảng thiết bị Bài hướng dân xây dựng nhằm thể phản hồi theo thời gian tực apps cách đơn giản sử dụng Firebase Realtime database - Dữ liệu lưu trữ - Định dạng Json Firebase realtime database lưu trữ liệu theo định dạng JSON Về toàn liệu JSON tree lớn với nhiều điểm node Nên bạn xây dựng liệu, bạn cần chuẩn bị cấu trúc json để dễ dàng cho việc truy cập tránh việc node bị lồng Dưới ví dụ việc lưu trữ danh sách hồ sơ người dùng viết json Bạn tìm hiểu cấu trúc liệu để thực hành - Dữ liệu offline Firebase cung cấp hỗ trợ tuyệt vời nói đến liệu offline Nó tự động lưu trữ offline khơng có kết nối internet Tuy nhiên cho phép lưu trữ vào ổ đĩa persistence data offline chí ứng dụng restart Ổ đĩa persistence gọi đến dịng code phía 10 h Các biến đầu vào: - Các biến đầu vào MainActivity: private LinearLayout player1Layout, player2Layout; private ImageView image1, image2, image3, image4, image5, image6, image7, image8, image9; // Mục đích việc xếp khai báo biến đầu vào để có hình chơi trị chơi tương thích trực quan với khung kích cỡ ứng dụng điện thoại, bao gồm khung ảnh cho nút ma trận X_O private TextView player1TV, player2TV; // sử dụng để biểu thị cho khung nhập tên người chơi vào private final List combinationsList = new ArrayList(); // khai báo danh sách để biết thắng (danh sách xác định mặc định loạt vị trí thẳng hàng bàn cờ ma trận trò chơi 3x3) private final List doneBoxes = new ArrayList(); // bấm để chọn lưu doneBoxes (có nghĩa danh sách chứa nước hồn thanh) sau nạp vào combinnationList để biết thắng thua private boolean opponentFound = false; // biến tìm thành tố người chơi private String status = "matching"; // biến biểu thị mã trạng thái ghép đối tượng mã người chơi private String opponentUniqueId = "0"; // biến người chơi ban đầu private String playerTurn = ""; // biển trả lời ô bên thứ chọn hình chơi bên người chơi thứ hai private String connectionId =""; // biển để thực thi truy vấn mã kết nối ValueEventListener turnsEventListener, wonEventListener; // kiện giá trị biến để lắng nghe child với sở liệu private final String[]boxesSelectedBy = {"","","","","","","","",""}; //Chuỗi ô ma trận ban đầu thiết lập mặc định trống hồn tồn, để có bàn cờ cho vịng chơi mới, khơng chứa giá trị Chúng tơi xác định mảng số ngun có tên gamestate có giá trị (vì có lưới) Tất chín phần tử mảng khởi tạo thành ''(rỗng) //selected boxes by players empty fields will be replaced by player id private final String[]boxesSelectedBy = {"","","","","","","","",""}; h 13 Chúng tơi có tổng cộng vị trí chiến thắng trị chơi vị trí lưu trữ danh sách có tên “combinationsList” {0,1,2}(ngang),{3,4,5}(ngang),{6,7,8,}(ngang),{0,3,6,}(dọc),{1,4,7}(dọc), (dọc),{0,4,8}(đường chéo),{2,4,6}(đường chéo) {2,5,8,} // rule.Generating winning combinations – Luật phổ ô mặc định cho xác định chiến thắng chung combinationsList.add(new int[]{0,1,2}); combinationsList.add(new int[]{3,4,5}); combinationsList.add(new int[]{6,7,8}); combinationsList.add(new int[]{0,3,6}); combinationsList.add(new int[]{1,4,7}); combinationsList.add(new int[]{2,5,8}); combinationsList.add(new int[]{2,4,6}); combinationsList.add(new int[]{0,4,8}); - Các biến đầu vào PlayerName: final EditText playerNameEt = findViewById(R.id.playerNameEt); // người chơi nhập tên final AppCompatButton startGameBtn = findViewById(R.id.startGameBtn); // người chơi bấm start để bắt đầu game hình đợi vào lượt, vịng chơi (splash screen) final String getPlayerName = playerNameEt.getText().toString(); // biến xác nhận tên người chơi chuyển thành dạng chuỗi - Các biến đầu vào WinDialog: //Lớp hộp thoại thông báo this.message = message; //message – biểu diễn thông điệp gửi đến người chơi vòng chơi (round playing-game) để người chơi biết tình hình hiển thị set chơi họ progressDialog.setMessage("Waiting for Opponent"); this.mainActivity =((MainActivity)context); 14 h private final String message; private final MainActivity mainActivity; final TextView messageTV = findViewById(R.id.messageTV);