Vìvậy, với mục đích rèn luyện và kiểm tra khả năng làm việc chung với nhau, kết hợp, ứng dụng những kiến thứcđã học trong môn học, thầy đã đưa ra một dự án rất thực tế với kịch bản đầy đ
Trang 1ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TP.HCM
TRUNG TÂM PHÁT TRIỂN CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN MÔN HỌC
KỸ NĂNG NGHỀ NGHIỆP
ĐỀ TÀI
XÂY DỰNG TRÒ CHƠI RẮN SĂN MỒI
GV hướng dẫn: ThS Nguyễn Văn Toàn
Nhóm sinh viên thực hiện:
TP Hồ Chí Minh, 24.08.2023
Trang 2Mục lục
2.1 HỢP ĐỒNG THÀNH LẬP NHÓM 3
2.1.1 Thông tin chung 3
2.1.2 Thành viên trong nhóm 3
2.1.3 Mục đích thành lập nhóm 3
2.1.4 Phân công nhiệm vụ 4
2.1.5 Nguyên tắc hoạt động nhóm 4
2.1.6 Hiệu lực hợp đồng 5
2.2 ĐỒ ÁN SNAKE GAME 5
2.2.1 Giới thiệu 5
2.2.2 Cấu trúc chương trình 5
2.2.3 Những kỹ năng, kiến thức tâm đắc 6
2.3 ĐÁNH GIÁ HỢP ĐỒNG NHÓM 8
2.3.1 Đánh giá mức độ hoàn thành nhiệm vụ 8
2.3.2 Tiêu chí đánh giá thành viên 9
2.3.3 Kết quả đánh giá thành viên 9
2.3.4 Xác nhận của các thành viên 9
3 KẾT LUẬN 10 3.1 THUẬN LỢI 10
3.2 KHÓ KHĂN 10
3.3 TỔNG KẾT 10
Trang 3Chương 1
MỞ ĐẦU
Trong ngành Công Nghệ Thông Tin, kỹ năng làm việc nhóm là yếu tố cần thiết và bắt buộc phải có Vì vậy, với mục đích rèn luyện và kiểm tra khả năng làm việc chung với nhau, kết hợp, ứng dụng những kiến thức
đã học trong môn học, thầy đã đưa ra một dự án rất thực tế với kịch bản đầy đủ và chi tiết
Với đề tài này, chúng em được lồng ghép thêm những kỹ năng nghề nghiệp thực tế, như phân chia dự
án, phân công công việc bằng các công cụ như Trello, Github Bên cạnh đó, việc tham gia thực hành phát triển
dự án game này, chúng em được trau dồi thêm kiến thức nền về việc làm thế nào để phát triển một dự án, phải xây dựng cấu trúc dự án như thế nào, tiến độ hoàn thành được theo dõi ra sao
Kỹ năng mềm cũng được học tập và hình thành tốt hơn trong quá trình xây dựng đồ án này, chúng em phát triển được kỹ năng giao tiếp, đối thoại và lắng nghe nhau, cách xử lý tình huống khi có bất đồng ý kiến xảy ra, làm thế nào để giải quyết những vấn đề đó
Chúng em rất cám ơn thầy đã theo sát và góp ý trong quá trình chúng em thực hiện đồ án, những góp
ý của thầy rất quý giá và hữu ích đối với nhóm chúng em, làm hành trang cho chúng em sau này
Trân trọng,
Nhóm PPSAL
Trang 4Chương 2
NỘI DUNG
2.1 HỢP ĐỒNG THÀNH LẬP NHÓM
2.1.1 Thông tin chung
Tên nhóm:PPSAL
Link Trello: https://trello.com/b/CbAt9jle/
Link GitHub: https://github.com/HoangPhuc1998HPT/PPSALTEAM/tree/main
2.1.2 Thành viên trong nhóm
Tên thành viên Mã số sinh viên Vai trò Trần Hoàng Phúc 22730091 Trưởng nhóm Nguyễn Nữ Kim Sa 22730092 Phó nhóm Kiều Xuân Ảnh 22730063 Thành viên
Võ Tấn Phát 22730089 Thành viên
Lê Nguyễn Hoàng Bảo Lâm 22730078 Thành viên
2.1.3 Mục đích thành lập nhóm
Hoàn thành Đồ án cuối kỳ - Game Con Rắn - môn Kỹ Năng Nghề Nghiệp
Hoàn thiện kỹ năng làm việc nhóm qua các công cụ như Trello, Git
Hỗ trợ lẫn nhau giữa các thành viên cùng trao đổi kiến thức, kinh nghiệm làm việc
Trang 52.1.4 Phân công nhiệm vụ
Nhiệm vụ Hoàng Phúc Kim Sa Xuân Ảnh Tấn Phát Bảo Lâm
Ghi chú:
X - Phụ trách chính x - Hỗ trợ
Chi tiết nhiệm vụ Xây dưng, phát triển game
1 - Quản lý Trello, Git của nhóm 10.1 - Vẽ tường
2 - Quản lý tiến độ, phân chia công việc 10.2 - Khởi tạo menu
3 - Tổng hợp nội dung 10.3 - Khởi tạo, vẽ con rắn
4 - Báo cáo, phản biện 10.4 - Xử lí di chuyển
5 - Giới thiệu game 10.5 - Xử lí chạm tường
6 - Soạn hợp đồng nhóm 10.6 - Xử lí ăn mồi, độ dài rắn
7 - Đánh giá hợp đồng nhóm 10.7 - Xử lí tốc độ di chuyển
8 - Liên hệ - phát ngôn 10.8 - Xử lí điểm, khung hiển thị điểm
9 - Kiểm thử 10.9 - Xử lí tăng cấp, độ khó
10.10 - Đồ họa, màu sắc
2.1.5 Nguyên tắc hoạt động nhóm
Tất cả thành viên được bình đẳng tham gia các nhiệm vụ theo sự thống nhất phân công của Nhóm
Tôn trọng tất cả các ý kiến đóng góp của các thành viên trong nhóm
Các thành viên hoàn thành công việc được giao đúng thời hạn
Các thành viên hỗ trợ nhau khi gặp sự cố phát sinh, tất cả vì mục đích chung là hoàn thành tốt công việc của nhóm
Nếu có bất đồng ý kiến sẽ giải quyết theo nguyên tắc biểu quyết đa số
Trong trường hợp không thể áp dụng nguyên tắc biểu quyết đa số, quyền quyết định cuối cùng thuộc về trưởng nhóm
Trang 62.1.6 Hiệu lực hợp đồng
Thời gian thành lập nhóm: 17-07-2023
Thời gian kết thúc hợp đồng nhóm: 30-08-2023
Hợp đồng này được lập thành 05 bản có giá trị như nhau, mỗi thành viên giữ 01 bản
Xác nhận của các thành viên:
Nguyễn Nữ Kim Sa Trần Hoàng Phúc Võ Tấn Phát
(đã ký) (đã ký) (đã ký)
Kiều Xuân Ảnh Lê Nguyễn Hoàng Bảo Lâm
(đã ký) (đã ký)
2.2 ĐỒ ÁN SNAKE GAME
2.2.1 Giới thiệu
Snake - tựa game từng thống trị 1 thời trên các thiết bị đồ chơi điện tử, các thiết bị di động đời đầu của Nokia, Motorola, Sony Erikson, Samsung và là một thời tuổi thơ của rất nhiều người Bằng những kiến thức đã được học, nhóm PPSAL đã tái hiện lại trò chơi này bằng giao diện Console của ngôn ngữ C++ quen thuộc Nội dung trò chơi được xây dựng xung quanh hình ảnh một chú rắn con háu ăn ham lớn, chú đi khắp nơi tìm thức ăn để nhanh lớn, nhanh dài ra Tuy nhiên, càng ăn càng lớn, chú rắn lại cố di chuyển nhanh hơn
để tìm những con mồi mới, những miền đất mới, điều đó khiến chú đôi lúc có những màn đăng xuất đi vào vũ trụ vô cùng bất ngờ Mời bạn tham gia chuyến hành trình trở về tuổi thơ và cùng nhau trải nghiệm sự tinh nghịch của chú rắn háu ăn này cùng nhóm PPSAL
2.2.2 Cấu trúc chương trình
Nguyên lý game: Con rắn được điều khiển 4 hướng: lên/xuống/trái/phải để di chuyển tới 1 điểm có thức
ăn, sau khi ăn thức ăn rắn dài ra thêm Và được giới hạn bới 4 bức tường
Điều kiện game: người chơi thất bại khi rắn tự cắn mình hoặc chạm tường
Dựa theo nguyên lý trên, ta có các bước tiến hành như sau:
– Bước 1 : Khởi tạo 01 con rắn
– Bước 2: Làm cho rắn di chuyển được
– Bước 3: Tạo thức ăn cho rắn
– Bước 4: Xử lý các thao tác di chuyển cho rắn khi rắn ăn mồi phải dài thêm 1 đơn vị
– Bước 5: Xây tường cho rắn, các khung có thể thêm màu sắc
– Bước 6: Xây dựng các điều kiện để thắng và thua
– Bước 7: Kiểm tra trò chơi, chơi thử và cải tiến
Nội dung các bước:
– Bước 1: Tạo 1 con rắn thông qua hàm “void Khoitaotoadoran(int toadox[]”, int toadoy[]) và hàm vẽ rắn “void VeRan (int toadox[] , int toadoy[])” sau khi khởi tạo ta có 1 hình mẫu rắn tùy ý định nghĩa
có thể là 0ooo hoặc Xxxx khi in rắn ra sau lệnh lập Khởi tạo main cho chạy khi màn hình xuất hiện
là đạt yêu cầu
– Bước 2 : làm cho rắn di chuyển được thông qua các hàm:
* void Xoavitricu (int toadox[] , int toadoy[]);
* void Dichuyeran(int toadox[],int toadoy[], int x , int y,int &toadothucanx,int &toadothucany);
* void them(int a[] , int x );
* void Xoa (int a[] , int vt);
Lúc này, rắn đã có thể di chuyển được theo 1 hướng Cần tạo các phương thức nhận lại điều khiển từ bàn phím Sau khi tạo xong ta có thể di chuyển rắn theo hướng chúng ta muốn Sau bước xử lý này các chức năng cơ bản của rắn đã được hình thành Các vấn đề phát sinh sẽ được xử lý dần ở main – Bước 3 + Bước 4:
Trang 7* Bước này khá phức tạp và rối ren, gây rất nhiều lỗi Từ việc mồi xuất hiện 2 lần xong biến mất, rắn ăn mồi xong không dài thêm Rắn ăn mồi xong dài gấp đôi đơn vị
* Phần khởi tạo các hàm cũng rất quan trọng nên đồng bộ ngay từ đầu vì chương trình này không viết theo dạng hướng đối tượng
· void KhoiTaoToaDoThucAn(int toadoranx[], int toadorany[],int &toadothucanx, int &toadothu-cany);
· bool checkRanDeLenThucAn (int toadoranx[], int toadorany[],int toadothucanx, int toadothu-cany);
· bool XuLyRanAnThucAn (int toadoranx, int toadorany,int toadothucanx, int toadothucany);
* Sau khi khởi tạo tọa độ thức ăn ta tạo theo hướng cho hàm chạy tọa độ x, y ngẫu nhiên theo thời gian thực
* Tạo tiếp hàm xử lý rắn sau khi ăn thức ăn cho rắn ăn thức ăn bằng cách kiêm tra tọa độ của rắn có trùng với thức ăn hay không Sau đó gán ngược hàm lên vị trí hàm xử lý di chuyển của rắn mục đích sau khi ăn quả rắn dài thêm 1 đơn vị
* Tại vị trí gán hàm này sẽ phát sinh 1 lỗi: sau khi rắn ăn quả đầu tiên thì tăng lên 2 đơn vị hiện chưa giải thích được nên lấy độ dài rắn trừ đi 1 để giảm lại đúng kích thước
* Sau khi đạt được điều kiện rắn đã ăn thức ăn ta cho tọa độ thức ăn khởi tạo lại
* Cùng lúc tích hợp chức năng tăng tốc độ rắn “tocdochay = tocdochay – 10” thực tế là từ hàm sleep ra có tạo thêm điều kiện gán thay vì cho chỉnh tốc độ ở main
* Hàm sleep này có 1 nhược điểm khi tốc độ bị trừ về tới 0 thì rắn tự chết Chưa xử lý tối ưu được nên tạm xem đây là 1 chức năng Khi rắn đạt mức điểm quá cao sẽ chết, tạo ra điều kiện để qua màn tiếp theo Sau khi tính toán lại thì phải viết lại toàn bộ chương trình theo dạng hướng đối tượng mới xử lý được chức năng này Nên nhóm thống nhất lại giới hạn mức điểm của trò chơi – Bước 5: Xây tường cho rắn, có thể thêm màu cho các khung
* Thực tế đây là bước đơn giản nhất, được tạo trước cả bước tạo con rắn Nhưng để hợp lý toàn
bộ trò chơi nên nhóm đưa nó xuống thành bước 5 sau khi các chức năng hoàn chỉnh Vì các chức năng không hoàn chỉnh thì bước này cũng vô nghĩa
* Ta tạo các hàm vẽ tường bằng cách cho chạy lệnh vòng lặp theo phương x hoặc phương y Cố định và giới hạn điều kiện Sau đó gom tất cả lại trong 1 hàm void VeTuong();
– Bước 6: Xây dựng các điều kiện để thắng và thua
Sau khi có đủ các chức năng hình thành con rắn, việc tiếp theo là xử lý các chức năng để kết thúc trò chơi
* bool RanChamTuong (int toadox , int toadoy );
* bool Ranchamduoi (int toadox[], int toadoy[] );
* bool checkdieukienGameover (int toadox[] , int toadoy[] );
Ban đầu các điều kiện này được viết trên main Sau khi phát sinh lên mọi người đã đưa thành hàm
để dễ kiểm soát
– Bước 7: Kiểm tra trò chơi, chơi thử và cải tiến
Việc kiểm tra chơi thử phát sinh rất nhiều lỗi qua các lần chỉnh sửa trực tiếp trên thân hàm Và cũng đã được tích hợp lại vào các bước cho đỡ phần nghiệp dư Trên thực tế khi tạo xong hàm xử lý răn di chuyển phát sinh các lỗi cực kì khó chịu như: rắn bị đè khi gán hàm rắn ăn thức ăn vào, rắn vừa ăn xong thì end cả game v.v
2.2.3 Những kỹ năng, kiến thức tâm đắc
Qua đồ án này, chúng em học được nhiều kỹ năng và kiến thức hơn, sau đây, chúng em xin tổng hợp lại những điều tâm đắc đã học được
Phát triển 1 chương trình:
Quá trình thực hiện đồ án game này giúp chúng em cải thiện khả năng lập trình và tổ chức chương trình của cá nhân cũng như tập thể, sao cho chương trình dễ hiểu, dễ chạy thử, đặc biệt là sự kết hợp code của từng thành viên lại với nhau
Trello: Đây là công cụ khá hữu ích trong việc phân chia công việc của từng thành viên Tại đây, chúng
em chia công việc thành 3 phần chính:
– Cần làm: là những việc đang cần thực hiện, phân công cho ai, mốc thời gian hoàn thành
Trang 8– Đang làm: là mục thể hiện tiến độ làm việc của các thành viên trong nhóm Mỗi thành viên sẽ cập nhật liên tục tình trạng hoàn thành công việc của mình, để những thành viên khác xem và góp ý thêm, nhóm trưởng dễ dàng theo dõi tiến độ này
– Đã hoàn thành: phần này là những việc đã hoàn thành xong của các thành viên
Hình 2.1: Bảng theo dõi công việc bằng công cụ Trello
Git và Github: Là một hệ thống quản lý dự án phiên bản code, Github là công cụ cần thiết và hữu ích với chúng em Với tính năng “Pull”, chúng em dễ dàng kéo đồ án về máy cá nhân Chúng em được thực hành
“commit” code sau khi code từng công đoạn, từng phần của mình, sau đó là “Push” lên cho mọi người theo dõi tiến độ
Được tìm hiểu về Git và Github, chúng em có thêm kiến thức về việc quản lý code cá nhân cũng như tập thể, đây là kỹ năng thiết yếu cho chúng em trên con đường phát triển trong ngành sau này
Hình 2.2: Biểu đồ thể hiện quá trình làm việc trên Git của từng thành viên
Latex: Việc soạn thảo văn bản bằng Latex giúp chúng em chuyên nghiệp hơn trong việc trình bày văn
Trang 9bản, dễ dàng phân chia bố cục của văn bản, định dạng văn bản cũng rõ ràng, logic, nhất quán và đẹp mắt hơn
Ngoài những kỹ năng bổ ích trên, chúng em được thực hành những bài học trong môn Kỹ năng nghề nghiệp như cách tổ chức nhóm, phân chia vai trò, và quá trình làm việc nhóm
2.3 ĐÁNH GIÁ HỢP ĐỒNG NHÓM
2.3.1 Đánh giá mức độ hoàn thành nhiệm vụ
Nhiệm vụ Hoàng Phúc Kim Sa Xuân Ảnh Tấn Phát Bảo Lâm
Mức độ hoàn thành (%)
Ghi chú: X - Phụ trách chính x - Hỗ trợ
Chi tiết nhiệm vụ Xây dưng, phát triển game
1 - Quản lý Trello, Git của nhóm 10.1 - Vẽ tường
2 - Quản lý tiến độ, phân chia công việc 10.2 - Khởi tạo menu
3 - Tổng hợp nội dung 10.3 - Khởi tạo, vẽ con rắn
4 - Báo cáo, phản biện 10.4 - Xử lí di chuyển
5 - Giới thiệu game 10.5 - Xử lí chạm tường
6 - Soạn hợp đồng nhóm 10.6 - Xử lí ăn mồi, độ dài rắn
7 - Đánh giá hợp đồng nhóm 10.7 - Xử lí tốc độ di chuyển
8 - Liên hệ - phát ngôn 10.8 - Xử lí điểm, khung hiển thị điểm
9 - Kiểm thử 10.9 - Xử lí tăng cấp, độ khó
10.10 - Đồ họa, màu sắc
Đánh giá tổng thể: đã hoàn thành ước tính 90 % nhiệm vụ đặt ra trong hợp đồng nhóm
Trang 102.3.2 Tiêu chí đánh giá thành viên
Tiêu chí Nổi bật Tốt Bình thường Kém
Thái độ làm việc Chủ động nhận
và hoàn thành tốt nhệm vụ
Hoàn thành nhiệm vụ được giao
Hoàn thành nhiệm vụ sau khi được nhắc nhở
Không hoàn thành nhiệm vụ được giao Quản lý thời gian Hoàn thành
nhiệm vụ trước hạn hoặc đúng hạn theo lịch phân công
Hoàn thành nhiệm vụ đúng hạn hoặc trễ không quá 12h theo lịch phân
công-Hoàn thành nhiệm vụ trễ không quá 24h theo lịch phân công
Không hoàn thành nhiệm vụ hoặc trễ quá 24h theo lịch phân công
Giải quyết vấn
đề được giao
Chủ động tìm kiếm giải pháp giải quyết vấn đề
Tìm kiếm giải pháp vấn đề theo phân công
Không tìm được giải pháp nhưng
có tìm kiếm và góp ý kiến
Không tham gia giải quyết vấn đề
Đóng góp ý kiến Chủ động đưa ra
ý kiến, ý tưởng
Chỉ nêu ý kiến liên quan phần việc cá nhân
Chỉ đưa ý kiến khi được hỏi
Không tham gia góp ý cho nhóm
Giữ liên lạc Chủ động liên lạc
với các thành viên trong nhóm
Luôn giữ liên lạc với nhóm
Thỉnh thoảng mất liên lạc với nhóm trong 24h
Không liên lạc được
2.3.3 Kết quả đánh giá thành viên
Thành
viên
Tiêu chí
Thái độ làm việc
Quản lý thời gian
Giải quyết vấn đề được giao
Đóng góp ý kến
Giữ liên lạc
Đánh giá chung (*)
Hoàng Phúc Nổi bật Tốt Nổi bật Nổi bật Nổi bật Nổi bật Kim Sa Nổi bật Nổi bật Tốt Nổi bật Nổi bật Nổi bật Xuân Ảnh Nổi bật Tốt Nổi bật Nổi bật Tốt Nổi bật Tấn Phát Tốt Tốt Bình Thường Tốt Bình
Thường
Tốt
Bảo Lâm Tốt Tốt Tốt Tốt Bình
Thường
Tốt
(*) Kết quả đánh giá dựa trên ý kiến các thành viên theo nguyên tắc đồng thuận đa số như đã cam kết trong hợp đồng
2.3.4 Xác nhận của các thành viên
-Các thành viên đồng ý với bản đánh giá hợp đồng nhóm và ký xác nhận ngày 21-8-2023
Nguyễn Nữ Kim Sa Trần Hoàng Phúc Võ Tấn Phát
(đã ký) (đã ký) (đã ký) Kiều Xuân Ảnh Lê Nguyễn Hoàng Bảo Lâm
(đã ký) (đã ký)
Trang 11Chương 3
KẾT LUẬN
3.1 THUẬN LỢI
Tất cả các thành viên luôn cầu thị, cố gắn, chia sẻ kiến thức, tích cực học hỏi
Luôn luôn cố gắn hoàn thành thời hạn đề ra
Hoàn thành công việc đúng chỉ tiêu
Đoàn kết, mọi thành viên đều được đóng góp ý kiến và được lắng nghe
3.2 KHÓ KHĂN
Tiếp cận nhiều kiến thức mới, những công cụ mới nên các thành viên còn nhiều bỡ ngỡ
Các thành viên đều vừa đi học, vừa đi làm, nên thời gian còn hạn chế và khó thống nhất thời gian với nhau
3.3 TỔNG KẾT
Đồ án hoàn thành tốt đẹp là kết quả của việc hợp tác, cùng nhau tìm tòi, học hỏi, nỗ lực, chia sẻ kiến thức cùng nhau của các thành viên
Hình thức học trực tuyến có ưu điểm cho phép sinh viên linh động giờ giấc học tập, nhưng cũng mang lại cho chúng em những trở ngại không nhỏ Ngoài những giờ học tập trên lớp trực tuyến, chúng em không
có nhiều cơ hội giao lưu, trò chuyện, học tập cùng với nhau bên ngoài Do đó, việc chúng em có cơ hội được làm việc chung trong môn học này là một niềm vui, một trải nghiệm thú vị Ngoài những kiến thức chia sẻ với nhau, những kinh nghiệm rút ra khi cùng nhau làm việc, còn là những sự đồng cảm, giúp đỡ, cùng vượt qua khó khăn của tất cả các thành viên
Cuối cùng, chúng em trân trọng cảm ơn thầy ThS Nguyễn Văn Toàn đã tận tình giảng dạy, tạo cơ hội
và hướng dẫn nhóm chúng em hoàn thành đồ án này Trong lần đầu tiên tiếp cận những điều mới mẻ để hoàn thành đồ án này, chúng em không thể tránh khỏi những thiếu sót Do đó, những ý kiến góp ý của thầy là rất quý giá, là hành trang tương lai cho chúng em sau này
Nhóm PPSAL