A. LỜI MỞ ĐẦU 2 I. Giới thiệu khái quát về đề tài: 2 II. Trình bày khái quát kế hoạch kiến tập của nhóm: 2 1. Mục đích kiến tập: 2 2. Địa điểm kiến tập: 2 3. Thời gian kiến tập: 2 4. Nội dung hoạt động kiến tập: 2 5. Lịch trình hoạt động kiến tập: 3 6. Cán bộ hướng dẫn kiến tập: 3 B. NỘI DUNG BÁO CÁO 3 I. Cơ sở lý thuyết: 3 1. Ngôn ngữ sử dụng: 3 2. Những kiến thức mới mà nhóm hoặc cá nhân nghiên cứu tìm hiểu được ngoài bài giảng của giáo viên: 3 II. Những việc đã làm và kết quả đạt được trong thời gian kiến tập: 3 1. Nhiệm vụ được phân công trong thời gian kiến tập: 3 2. Đánh giá kết quả: (đoạn code) 6 3. Hướng dẫn sử dụng và giới thiệu sản phẩm: 32 III. Kết luận: 34 1. Đánh giá chung: 34 2. Bài học kinh nghiệm: 34 3. Hướng phát triển: 34 IV. Kiến nghị: 34 A. LỜI MỞ ĐẦU I. Giới thiệu khái quát về đề tài: Trong thời đại công nghệ thông tin ngày càng phát triển như ngày nay, nhiều ngành tin học đã được ứng dụng rộng rãi trong cuộc sống. Nhờ đó con người giải quyết nhiều công việc một cách dễ dàng, nhanh chóng, chính xác, tiết kiệm thời gian và tiền bạc. Hàng ngày, hàng giờ, hàng phút, thậm chí là hàng giây, thế giới cho ra nhiều phần mềm vô cùng tiện ích, đáp ứng nhu cầu giải trí ngày càng cao của con người. Với mơ ước muốn trở thành nhà lập trình viên trong tương lai tạo ra các phần mềm phục vụ cuộc sống, vì thế nhóm chúng tôi đã quyết định chọn đề tài dùng ngôn ngữ lập trình CC++ để làm ra một trò chơi với mục đích trước tiên là kiểm tra tư duy lập trình, ôn lại những kiến thức đã học và kỹ năng lập trình, qua đó học hỏi thêm những kiến thức mới, và từ những cái mà mình đã làm được nhóm chúng tôi sẽ phát triển cao hơn nữa, tạo ra những sản phẩm hoàn thiện hơn. Nhóm đã chọn đề tài Game Rắn Săn Mồi được viết trên ngôn ngữ lập trình CC++ giúp mọi người giảm stress sau những giờ làm việc, học tập căng thẳng. Phần mềm sử dụng cho đề tài này là phần mềm Turbo C với ngôn ngữ lập trình CC++. Nhóm chúng tôi đã dùng các chương trình âm thanh, đồ họa và một số chương trình hỗ trợ khác có trong ngôn ngữ để hoàn thành đề tài này. II. Trình bày khái quát kế hoạch kiến tập của nhóm: 1. Mục đích kiến tập: Nhằm kiểm tra kết quả, đánh giá trình độ học tập, khả năng tiếp thu kiến thức của sinh viên trong khoảng thời gian học tại trường, khả năng vận dụng kiến thức đã học vào trong thực tế, đánh giá chất lượng giảng dạy của giảng viên. Trong quá trình nghiên cứu, hoàn thiện đề tài, sinh viên ít nhiều cũng gặp những khó khăn để từ đó có biện pháp giải quyết vấn đề linh hoạt, nhanh chóng, có hiệu quả, tìm cách vượt qua khó khăn, đồng thời tích lũy thêm nhiều kinh nghiệm, học hỏi, chiếm lĩnh thêm nhiều kiến thức mới cho bản thân. Bên cạnh đó, việc được tiếp xúc với thực tế nhiều hơn sẽ tạo cho sinh viên một tác phong làm việc có khoa học và trong quá trình làm việc theo nhóm sinh viên ý thức được vai trò của mỗi thành viên trong nhóm, thể hiện tinh thần tự giác, tích cực, quyền tự do sáng tạo, bày tỏ quan điểm, đóng góp ý kiến của mỗi cá nhân. Trang bị cho sinh viên một nền tảng kiến thức khoa học, kinh nghiệm làm việc vững chắc khi ra trường có thể áp dụng ngay vào trong cuộc sống. 2. Địa điểm kiến tập: Nhóm chúng tôi tiến hành tìm hiểu thực tế và tiến hành làm đề tài tại trường Cao Đẳng Bình Định dưới sự chỉ dẫn của giảng viên bộ môn – thầy Nguyễn Dư Nghĩa. 3. Thời gian kiến tập: Thời gian bắt đầu từ ngày 10022013 đến hết ngày 01052013 4. Nội dung hoạt động kiến tập: Nhóm chúng tôi đã đi tìm hiểu thực tế về nội dung, mục đích, yêu cầu của đề tài, tìm hiểu thêm những kiến thức về ngôn ngữ C trên Ebook, sách tham khảo trên thư viện trường. Sau đó tiến hành họp nhóm cùng nhau phân tích đề tài, định hướng công việc cần làm, đưa ra thuật toán cụ thể cho đề tài. Để đồng nhất dữ liệu nhóm, nhóm trưởng phân công công việc cụ thể cho từng thành viên trong nhóm. Trong quá trình tiến hành công việc đã được phân công, các thành viên trong nhóm nếu gặp phải những khó khăn, thắc mắc thì tiến hành thảo luận nhóm, cùng nhau giải quyết vấn đề. Nếu không giải quyết được thì nhờ đến giáo viên hướng dẫn để phân tích, đưa ra biện pháp tốt nhất. 5. Lịch trình hoạt động kiến tập: Do nhóm làm đề tài trong thời gian cả nhóm đi thực tập sư phạm 2 nên nhóm ít tổ chức họp nhóm, làm việc thường xuyên với nhau được, nhóm trưởng phân công công việc cụ thể cho từng thành viên trong nhóm về nhà tự làm và trao đổi với nhau chủ yếu qua Email và điện thoại. Hai tuần một lần nhóm tiến hành họp nhóm cùng nhau nhận xét công việc của mỗi thành viên, góp ý kiến, chia sẻ kinh nghiệm và các kiến thức cho nhau, cùng nhau giải quyết những thắc mắc liên quan đến đề tài. 6. Cán bộ hướng dẫn kiến tập: Họ và tên: Nguyễn Dư Nghĩa. Chức danh: Giảng viên bộ môn Lập trình C, khoa CNTT, trường Cao Đẳng Bình Định. B. NỘI DUNG BÁO CÁO I. Cơ sở lý thuyết: 1. Ngôn ngữ sử dụng: Ngôn ngữ sử dụng để thực hiện đề tài game Rắn Săn Mồi là ngôn ngữ lập trình C. Tài liệu tham khảo: Giáo trình Turbo CC++ của PGS.TS Bùi Thế Tâm – Nhà xuất bản giao thông vận tải Hà Nội, 2003. 2. Những kiến thức mới mà nhóm hoặc cá nhân nghiên cứu tìm hiểu được ngoài bài giảng của giáo viên: Các hàm ngắt của Bios, Dos. Tạm dừng và thoát khi đang chơi. Lưu tên người chơi. Tạo logo SNAKE và YOU LOST trên giao diện trò chơi. Tạo các Menu GameLoad, SaveGame, About,…. II. Những việc đã làm và kết quả đạt được trong thời gian kiến tập: 1. Nhiệm vụ được phân công trong thời gian kiến tập: 1.1. Nguyễn Thị Bích Trầm (Trưởng nhóm), đảm nhận công việc: a. Modul LayKeyBanPhim(): Lấy key của bàn phím cho các phím di chuyển rắn: lên, xuống, trái, phải và một số nút chức năng khác: Space, Enter. Dùng hàm Toupper () dùng để chuyển đổi chữ thường sang chữ hoa. b. Modul HienThiKyTu(): Sau khi lấy key từ bàn phím, hàm HienThiKyTu sẽ giúp in ra các ký tự vừa được lấy. Case 32: Mã của phím Space cho phép người chơi dừng trò chơi lại khi đang chơi. Case 13: Mã của phím Ent
MỤC LỤC 1 A. LỜI MỞ ĐẦU I. Giới thiệu khái quát về đề tài: Trong thời đại công nghệ thông tin ngày càng phát triển như ngày nay, nhiều ngành tin học đã được ứng dụng rộng rãi trong cuộc sống. Nhờ đó con người giải quyết nhiều công việc một cách dễ dàng, nhanh chóng, chính xác, tiết kiệm thời gian và tiền bạc. Hàng ngày, hàng giờ, hàng phút, thậm chí là hàng giây, thế giới cho ra nhiều phần mềm vô cùng tiện ích, đáp ứng nhu cầu giải trí ngày càng cao của con người. Với mơ ước muốn trở thành nhà lập trình viên trong tương lai tạo ra các phần mềm phục vụ cuộc sống, vì thế nhóm chúng tôi đã quyết định chọn đề tài dùng ngôn ngữ lập trình C/C++ để làm ra một trò chơi với mục đích trước tiên là kiểm tra tư duy lập trình, ôn lại những kiến thức đã học và kỹ năng lập trình, qua đó học hỏi thêm những kiến thức mới, và từ những cái mà mình đã làm được nhóm chúng tôi sẽ phát triển cao hơn nữa, tạo ra những sản phẩm hoàn thiện hơn. Nhóm đã chọn đề tài Game Rắn Săn Mồi được viết trên ngôn ngữ lập trình C/C++ giúp mọi người giảm stress sau những giờ làm việc, học tập căng thẳng. Phần mềm sử dụng cho đề tài này là phần mềm Turbo C với ngôn ngữ lập trình C/C+ +. Nhóm chúng tôi đã dùng các chương trình âm thanh, đồ họa và một số chương trình hỗ trợ khác có trong ngôn ngữ để hoàn thành đề tài này. II. Trình bày khái quát kế hoạch kiến tập của nhóm: 1. Mục đích kiến tập: Nhằm kiểm tra kết quả, đánh giá trình độ học tập, khả năng tiếp thu kiến thức của sinh viên trong khoảng thời gian học tại trường, khả năng vận dụng kiến thức đã học vào trong thực tế, đánh giá chất lượng giảng dạy của giảng viên. Trong quá trình nghiên cứu, hoàn thiện đề tài, sinh viên ít nhiều cũng gặp những khó khăn để từ đó có biện pháp giải quyết vấn đề linh hoạt, nhanh chóng, có hiệu quả, tìm cách vượt qua khó khăn, đồng thời tích lũy thêm nhiều kinh nghiệm, học hỏi, chiếm lĩnh thêm nhiều kiến thức mới cho bản thân. Bên cạnh đó, việc được tiếp xúc với thực tế nhiều hơn sẽ tạo cho sinh viên một tác phong làm việc có khoa học và trong quá trình làm việc theo nhóm sinh viên ý thức được vai trò của mỗi thành viên trong nhóm, thể hiện tinh thần tự giác, tích cực, quyền tự do sáng tạo, bày tỏ quan điểm, đóng góp ý kiến của mỗi cá nhân. Trang bị cho sinh viên một nền tảng kiến thức khoa học, kinh nghiệm làm việc vững chắc khi ra trường có thể áp dụng ngay vào trong cuộc sống. 2. Địa điểm kiến tập: Nhóm chúng tôi tiến hành tìm hiểu thực tế và tiến hành làm đề tài tại trường Cao Đẳng Bình Định dưới sự chỉ dẫn của giảng viên bộ môn – thầy Nguyễn Dư Nghĩa. 3. Thời gian kiến tập: Thời gian bắt đầu từ ngày 10/02/2013 đến hết ngày 01/05/2013 4. Nội dung hoạt động kiến tập: Nhóm chúng tôi đã đi tìm hiểu thực tế về nội dung, mục đích, yêu cầu của đề tài, tìm hiểu thêm những kiến thức về ngôn ngữ C trên Ebook, sách tham khảo trên thư viện trường. Sau đó tiến hành họp nhóm cùng nhau phân tích đề tài, định hướng công việc cần làm, đưa ra thuật toán cụ thể cho đề tài. Để đồng nhất dữ liệu nhóm, nhóm trưởng phân công công việc cụ thể cho từng thành viên trong nhóm. Trong quá trình tiến hành công việc đã được phân công, các thành viên trong nhóm nếu gặp phải những khó khăn, thắc mắc thì tiến hành 2 thảo luận nhóm, cùng nhau giải quyết vấn đề. Nếu không giải quyết được thì nhờ đến giáo viên hướng dẫn để phân tích, đưa ra biện pháp tốt nhất. 5. Lịch trình hoạt động kiến tập: Do nhóm làm đề tài trong thời gian cả nhóm đi thực tập sư phạm 2 nên nhóm ít tổ chức họp nhóm, làm việc thường xuyên với nhau được, nhóm trưởng phân công công việc cụ thể cho từng thành viên trong nhóm về nhà tự làm và trao đổi với nhau chủ yếu qua Email và điện thoại. Hai tuần một lần nhóm tiến hành họp nhóm cùng nhau nhận xét công việc của mỗi thành viên, góp ý kiến, chia sẻ kinh nghiệm và các kiến thức cho nhau, cùng nhau giải quyết những thắc mắc liên quan đến đề tài. 6. Cán bộ hướng dẫn kiến tập: Họ và tên: Nguyễn Dư Nghĩa. Chức danh: Giảng viên bộ môn Lập trình C, khoa CNTT, trường Cao Đẳng Bình Định. B. NỘI DUNG BÁO CÁO I. Cơ sở lý thuyết: 1. Ngôn ngữ sử dụng: - Ngôn ngữ sử dụng để thực hiện đề tài game Rắn Săn Mồi là ngôn ngữ lập trình C. - Tài liệu tham khảo: Giáo trình Turbo C/C++ của PGS.TS Bùi Thế Tâm – Nhà xuất bản giao thông vận tải Hà Nội, 2003. 2. Những kiến thức mới mà nhóm hoặc cá nhân nghiên cứu tìm hiểu được ngoài bài giảng của giáo viên: - Các hàm ngắt của Bios, Dos. - Tạm dừng và thoát khi đang chơi. - Lưu tên người chơi. - Tạo logo SNAKE và YOU LOST trên giao diện trò chơi. - Tạo các Menu GameLoad, SaveGame, About,…. II. Những việc đã làm và kết quả đạt được trong thời gian kiến tập: 1. Nhiệm vụ được phân công trong thời gian kiến tập: 1.1. Nguyễn Thị Bích Trầm (Trưởng nhóm), đảm nhận công việc: a. Modul LayKeyBanPhim(): Lấy key của bàn phím cho các phím di chuyển rắn: lên, xuống, trái, phải và một số nút chức năng khác: Space, Enter. Dùng hàm Toupper () dùng để chuyển đổi chữ thường sang chữ hoa. b. Modul HienThiKyTu(): Sau khi lấy key từ bàn phím, hàm HienThiKyTu sẽ giúp in ra các ký tự vừa được lấy. Case 32: /*Mã của phím Space*/ cho phép người chơi dừng trò chơi lại khi đang chơi. Case 13: /*Mã của phím Enter*/ cho phép người chơi tiếp tục trò chơi khi đang dừng trò chơi. Case 72: /*Mã của phím mũi tên lên*/ cho phép người chơi điều khiển rắn lên trên. Case 75: /*Mã của phím mũi tên trái*/ cho phép người chơi điều khiển rắn về bên trái. Case 77: /*Mã của phím mũi tên phải*/ cho phép người chơi điều khiển rắn về bên phải. 3 Case 80: /*Mã của phím mũi tên xuống*/ cho phép người chơi điều khiển rắn xuống dưới. c. Modul Save(): Lưu trạng thái con rắn và thông tin game vào file có đường dẫn link (bao gồm tên). Có sử dụng hàm fprintf() để ghi ra tệp văn bản, nếu thành công hàm trả về số byte ghi ra tệp. Có sử dụng hàm fopen() mở một tệp. Kiểu truy nhập là một xâu có dạng: r+b: mở tệp mới đã đọc/ghi theo kiểu nhị phân nếu tệp tồn tại sẽ bị xóa. Hàm fclose() hàm đóng tệp: hàm cho 0 nếu thành công, cho EOF nếu có lỗi. d. Modul Load(): Load các thông tin vừa lưu vào file có đường dẫn link (bao gồm các thông tin có trong Save()). Có sử dụng hàm fopen() mở một tệp. Kiểu truy nhập là một xâu có dạng: r+b: mở tệp mới đã đọc/ghi theo kiểu nhị phân, tệp cần tồn tại nếu không sẽ báo lỗi. Hàm fclose() hàm đóng tệp: hàm cho 0 nếu thành công, cho EOF nếu có lỗi. Có sử dụng hàm fprintf() để ghi ra tệp văn bản, nếu thành công hàm trả về số byte ghi ra tệp. e. Modul ShowMessenger(): Hiển thị thông báo khi rắn chết: YOU LOST. f. Modul HideMessenger(): Ẩn thông báo YOU LOST khi đang chơi. g. Modul MenuWinLose(): Hiển thị hệ thống các nút again, exit khi chơi thắng hoặc game over. Có sử dụng hàm unsigned char() dùng để lưu các số nguyên dương từ 0 đến 255. h. Modul ThuTucChucNangGame(): Tạo, biểu diễn và tắt các nút resume, save, load, control, help, about, exit thông qua việc kế thừa các hàm VarButton(), ShowButton(), ClickButton(), EffectClick() và các hàm tạo Menu i. Modul KhoiDongGame(): Khởi động game trước khi chơi bằng cách click chuột vào nút Start Game. j. Modul ResetGame(): Tạo chương trình con hỗ trợ chức năng chơi lại từ đầu khi hết màn hoặc rắn chết. 1.2. Nguyễn Thị Diễm, đảm nhận công việc: a. Modul KhoiTaoConRan(): Khởi tạo con rắn ban đầu với 1 đốt. b. Modul KiemTraThuocThanConRan(): Kiểm tra kích thước của con rắn hiện tại trước khi rắn ăn được mồi. c. Modul VeConRan(): Vẽ và tô màu cho con rắn (đầu rắn là chữ @, thân rắn là các khối hình chữ nhật màu xanh). d. Modul XoaConRan(): Xóa rắn khi rắn di chuyển tới tọa độ tiếp theo. e. Modul KiemTraRanDungThanRan(): Kiểm tra nếu đầu rắn đụng thân rắn thì rắn chết. 4 f. Modul KiemTraRanDie(): Kiểm tra nếu KiemTraRanDungThanRan là True thì rắn chết, ngược lại False thì rắn không chết. g. Modul DieuChinhToaDoConRan(): Điều chỉnh lại tọa độ con rắn khi rắn di chuyển. h. Modul MenuSaveGame(): Trong Menu này gồm có các mục dùng để lưu thông tin của người chơi bao gồm các mục Ổ đĩa, SaveName, Ok, Cancel. Sử dụng hàm unsigned char() dùng để lưu các số nguyên dương từ 0 đến 255. Hàm setcursortype() dùng để thiết lập kiểu con trỏ. Sử dụng các hàm VarButton(), ShowButton(), ClickButton(), EffectClick() để xây dựng các nút. Sử dụng hàm strcat nối các chuỗi thành phần thành chuỗi chung. Thủ tục clreol(): Xóa các ký tự từ vị trí con trỏ đến hết dòng. i. Modul MenuLoadGame(): Trong Menu này gồm có các mục dùng để load thông tin của người chơi đã được tạo trong Save bao gồm các mục Ổ đĩa, SaveName, Ok, Cancel. j. Modul MenuAbout(): Thông tin chương trình gồm có: người viết, tên chương trình, chức năng kèm theo (save, load, pause, resume game). k. Modul MenuControl(): Gồm có các phím xử lý trong game: M_UP, M_DOWN, M_LEFT, M_RIGHT và các nút chọn save all, default, cancel. l. Modul MenuHelp(): Trợ giúp cách chơi. 1.3. Đặng Thị Mai Hồng, đảm nhận công việc: a. Modul GanToaDo(): Gán tọa độ cho rắn. b. Modul HienThiLogo(): Hiển thị logo của trò chơi SNAKE. c. Modul VeBanDo(): Vẽ bốn bức tường giới hạn phạm vi di chuyển của rắn. d. Modul TaoThucAn(): Tạo thức ăn ngẫu nhiên sử dụng hàm randomize(). e. Modul VeThucAn(): Vẽ thức ăn ra màn hình. f. Modul XoaThucAn(): Xóa thức ăn ra khỏi màn hình. g. Modul AnThucAn(): Biểu diễn rắn ăn thức ăn, mỗi lần rắn ăn được thức ăn kích thước rắn, số điểm tăng lên. Tạo thức ăn mới ngẫu nhiên. 1.4. Hà Thị Bích Liễu, đảm nhận công việc: a. Modul VarButton(): Hàm tạo các nút. b. Modul ShowButton(): Hiển thị các nút vừa tạo ở hàng VarButton(). c. Modul EnableButton(): Kích hoạt các nút vừa tạo ở hàng VarButton(). 5 d. Modul DisableButton(): Tắt các nút vừa tạo ở hàng VarButton(). e. Modul ClickButton(): Hàm xác nhận để Click chuột. f. Modul EffectClick(): Hiệu ứng các nút khi rê chuột vào đổi màu. g. Modul EffectClickNonButton(): Tắt hiệu ứng của các nút. h. Modul SetLevelScore(): Có 7 cấp độ, khi người chơi đạt được 10 điiểm qua mỗi level thì điểm sẽ tăng dần. i. Modul BangBaoLevel(): Bao gồm level, số điểm và tốc độ. 2. Đánh giá kết quả: (đoạn code) 2.1. Đoạn kết cụ thể cho sản phẩm: #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<dos.h> #include<stdlib.h> #include<ctype.h> #include"mouse.inc" #define LEFT 5 #define RIGHT 75 #define TOP 6 #define BOTTOM 36 #define M_LEFT 1 #define M_RIGHT 2 #define M_UP 3 #define M_DOWN 4 int KetThucGame=0; typedef struct { int x,y; }Point; char KLEFT=75, KRIGHT=77, KUP=72, KDOWN=80, PAUSE=59; int KL=0, KR=0, KU=0, KD=0, P=0; Point SNACK[100]; Point ThucAn; int len; int head,tail; int score=0; int level=1; int speed=300; int DiemTangLevel=10; int HuongDi=2; typedef struct 6 { int xbutton; int ybutton; char *name; int statusbutton; }Button; void VarButton(Button &B,char *s,int x,int y) { B.xbutton=x; B.ybutton=y; B.statusbutton=1; B.name=s; } void ShowButton(Button B) { if(B.statusbutton==1) { textbackground(15); gotoxy(B.xbutton,B.ybutton); textcolor(LIGHTRED); cprintf("%s",B.name); textbackground(BLACK); } } void EnableButton(Button& B) { B.statusbutton=1; } void DisableButton(Button& B) { textbackground(15); gotoxy(B.xbutton,B.ybutton); textcolor(LIGHTGRAY); cprintf("%s",B.name); B.statusbutton=0; textbackground(BLACK); } int ClickButton(Button B, int xchuot, int ychuot) { if(B.statusbutton==1) { if(xchuot>=(B.xbutton-1)*8&&xchuot<=(B.xbutton+strlen(B.name)-1- 1)*8&&ychuot==(B.ybutton-1)*8) return 1; 7 } return 0; } void EffectClick(Button B) { gotoxy(B.xbutton, B.ybutton); textcolor(LIGHTCYAN+BLINK); cprintf("%s",B.name); delay(200); ShowButton(B); } void EffectClickNonButton(int x, int y) { gotoxy(x, y); textbackground(WHITE); textcolor(WHITE); cprintf("."); textbackground(BLACK); delay(200); } void GanToaDo(Point &P, int xx, int yy) { P.x=xx; P.y=yy; } void HienThiLoGo(int x, int y, int color) { gotoxy(x,y); textcolor(color); cprintf("ÛßßßßÛ Û Û ÛßßÛ Ûßßß Û Üß Ûßßß"); gotoxy(x,y+1); textcolor(LIGHTRED); cprintf("ÈÍÍÍÍ» ºßÜ º ÌÍ͹ Û ºÛ ÌÍ"); gotoxy(x,y+2); textcolor(color); cprintf("ÛÜÜÜÜÛ Û ßÛ Û Û ÛÜÜÜ Û ßÜ ÛÜÜÜ"); } void VeBanDo() { int i,j; for(i=LEFT; i<=RIGHT; i++) for(j=TOP; j<=BOTTOM; j++) 8 { if((j==TOP||j==BOTTOM)&&i>LEFT&&i<RIGHT) { gotoxy(i,j); textcolor(7); cprintf("%c",205); } if((i==LEFT||i==RIGHT)&&j>TOP&&j<BOTTOM) { gotoxy(i,j); textcolor(7); cprintf("%c",186); } } gotoxy(LEFT,TOP); textcolor(LIGHTRED); cprintf("%c", 219); gotoxy(RIGHT,TOP); textcolor(LIGHTRED); cprintf("%c", 219); gotoxy(LEFT,BOTTOM); textcolor(LIGHTRED); cprintf("%c", 219); gotoxy(RIGHT,BOTTOM); textcolor(LIGHTRED); cprintf("%c", 219); } void KhoiTaoConRan() { len=2; head=0; tail=len-1; GanToaDo(SNACK[tail],LEFT+1, TOP+1); GanToaDo(SNACK[head],LEFT+2, TOP+1); } int KiemTraThuocThanConRan(Point P) { int i; i=1; for(i=1; i<=tail; i++) { if(P.x==SNACK[i].x&&P.y==SNACK[i].y) { return 1; break; 9 } } return 0; } void TaoThucAn()//tao thuc an va ve thuc an ra man hinh { ThucAn=SNACK[head]; randomize(); while(KiemTraThuocThanConRan(ThucAn)==1|| (ThucAn.x==SNACK[head].x&&ThucAn.y==SNACK[head].y)) { GanToaDo(ThucAn,LEFT+1+random(RIGHT-1-LEFT- 2),TOP+1+random(BOTTOM-1-TOP-2)); } } void VeThucAn() { gotoxy(ThucAn.x,ThucAn.y); textcolor(LIGHTRED); cprintf("%c",3); } void XoaThucAn() { gotoxy(ThucAn.x, ThucAn.y); textcolor(BLACK); cprintf(" "); } void VeConRan() { int i; for(i=head; i<=tail; i++) { if(i==head) { gotoxy(SNACK[i].x,SNACK[i].y);textcolor(LIGHTRED);cprintf("@"); } else { gotoxy(SNACK[i].x,SNACK[i].y); if(i%2==0) textcolor(15); if(i%2!=0) textcolor(LIGHTBLUE); cprintf("%c",254); } } } 10 [...]... if(ClickButton(RESUME,xm,ym)) { EffectClick(RESUME); break; } if(ClickButton(SAVE,xm,ym)) { EffectClick(SAVE); MenuSaveGame(25,42); } if(ClickButton(LOAD,xm,ym)) { EffectClick(LOAD); MenuLoadGame(25,42); } if(ClickButton(CONTROL,xm,ym)) { EffectClick(CONTROL); MenuControl(15,42); } if(ClickButton(HELP,xm,ym)) { EffectClick(HELP); MenuHelp(); } if(ClickButton(ABOUT,xm,ym)) { EffectClick(ABOUT); MenuAbout(); } if(ClickButton(EXIT,xm,ym))... trí ổ đĩa c n lưu - SaveName: Tên người chơi Menu Control gồm c c nút chỉ hướng theo ý muốn c a người chơi Menu Help: Hướng dẫn c ch chơi 31 Menu About: Thông tin chương trình III Kết luận: 1 Đánh giá chung: - Ngôn ngữ lập trình mà chúng tôi sử dụng là ngôn ngữ C/ C++ Tuy nhiên c c hàm c trong C+ + thì lại không sử dụng đư c trong C, vì thế chúng tôi đã gặp không ít khó khăn trong vi c chọn hàm cho phù... LayKeyBanPhim(char &c) { do { c= toupper(getch()); if (c= =0) { c= getch(); if (c= =75| |c= =77| |c= =72| |c= =80) { return 0; break; } } else { if( (c> =65& &c . ResetGame() { KhoiTaoConRan(); TaoThucAn(); score=0; level=1; DiemTangLevel=10; HuongDi=2; speed=300; } //============CAC CHUC NANG CAP CAO CHO GAME. int LayKeyBanPhim(char & ;c) { do { c= toupper(getch()); if (c= =0) { c= getch(); if (c= =75| |c= =77| |c= =72| |c= =80) { return 0; break; } } else { if( (c& gt;=65&& ;c& lt;=90)| |c= =32| |c= =13) . Modul EffectClick(): Hiệu ứng c c nút khi rê chuột vào đổi màu. g. Modul EffectClickNonButton(): Tắt hiệu ứng c a c c nút. h. Modul SetLevelScore(): C 7 c p độ, khi người chơi đạt đư c 10 điiểm. setcursortype() dùng để thiết lập kiểu con trỏ. Sử dụng c c hàm VarButton(), ShowButton(), ClickButton(), EffectClick() để xây dựng c c nút. Sử dụng hàm strcat nối c c chuỗi thành phần thành chuỗi