Tải bản đầy đủ (.docx) (33 trang)

Ung dung ngon ngu CC xay dung Game Snake

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.24 MB, 33 trang )

<span class='text_page_counter'>(1)</span>MỤC LỤC. 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. B.. 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. 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.

<span class='text_page_counter'>(2)</span> 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.

<span class='text_page_counter'>(3)</span> 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..

<span class='text_page_counter'>(4)</span> 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. 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():.

<span class='text_page_counter'>(5)</span> 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. 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..

<span class='text_page_counter'>(6)</span> 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(). 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;.

<span class='text_page_counter'>(7)</span> 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 { 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;.

<span class='text_page_counter'>(8)</span> 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)-11)*8&&ychuot==(B.ybutton-1)*8) return 1; } 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("ÛÜÜÜÜÛ Û ßÛ Û Û ÛÜÜÜ Û ßÜ ÛÜÜÜ"); }.

<span class='text_page_counter'>(9)</span> void VeBanDo() { int i,j; for(i=LEFT; i<=RIGHT; i++) for(j=TOP; j<=BOTTOM; j++) { 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;.

<span class='text_page_counter'>(10)</span> for(i=1; i<=tail; i++) { if(P.x==SNACK[i].x&&P.y==SNACK[i].y) { return 1; break; } } 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-LEFT2),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);.

<span class='text_page_counter'>(11)</span> } } } void XoaConRan() { int i; for(i=head;i<=tail;i++) { gotoxy(SNACK[i].x,SNACK[i].y);textcolor(BLACK);cprintf(" "); } } int KiemTraRanDungThanRan() { int i; for(i=1;i<len;i++) { if(SNACK[0].x==SNACK[i].x&&SNACK[0].y==SNACK[i].y) break; } if(i<len-1) return 1; else return 0; } int KiemTraRanDie() { if(SNACK[head].x>LEFT&&SNACK[head].x<RIGHT&&SNACK[head].y> TOP&&SNACK[head].y<BOTTOM&&KiemTraRanDungThanRan()==0) return 0;//khong chet else return 1;//rắn chết } void DieuChinhToaDoConRan() { int i; for(i=len-1;i>0;i--) { SNACK[i]=SNACK[i-1]; } } void SetLevelScore() { score++; if(score>=DiemTangLevel&&level<10) { level++; DiemTangLevel+=10; if(level<7) speed-=50; if(level==7) speed-=15; if(level==8) speed-=10; if(level==9) speed-=15; }.

<span class='text_page_counter'>(12)</span> } void BangBaoLevel(int x,int y,int z) { gotoxy(1,38);textcolor(GREEN); cprintf("LEVEL: %3d",x); gotoxy(1,39);textcolor(GREEN); cprintf("SCORE: %3d",y); gotoxy(1,40);textcolor(GREEN);cprintf("SPEED: %3d",z); } void AnThucAn() { Point temp; GanToaDo(temp,SNACK[tail].x-1,SNACK[tail].y); len++; tail=len-1; SNACK[tail]=temp; SetLevelScore(); TaoThucAn(); }. void 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>=65&&c<=90)||c==32||c==13) {.

<span class='text_page_counter'>(13)</span> return 1; break; } } }while(1); } void HienThiKiTu(char c) { switch(c) { case 32:cprintf("SPACE");break; case 13:cprintf("ENTER");break; case 72:cprintf("KEYUP");break; case 80:cprintf("KEYDOWN");break; case 75:cprintf("KEYLEFT");break; case 77:cprintf("KEYRIGHT");break; default:cprintf("%c",c); } } int Save(char* link)//luu trang thai con ran va thong tin game vao file co duong dan link (bao gom ten) { FILE* file=fopen(link,"w+b"); if(file!=NULL) { fprintf(file,"%d %d %d %d %d %d %d %d ",level,score,speed,HuongDi,DiemTangLevel,ThucAn.x,ThucAn.y,len); //luu giu cac bien trang thai. for(int i=0;i<len;i++) { fprintf(file,"%d %d ",SNACK[i].x,SNACK[i].y); } fclose(file); return 1; } return 0; } int Load(char* link) { int i,ii; FILE* file=fopen(link,"r+b"); if(file==NULL){ fclose(file);return 0;}//khong luu dc. else { XoaConRan(); XoaThucAn(); //luu giu cac bien trang thai..

<span class='text_page_counter'>(14)</span> fscanf(file,"%d%d%d%d%d%d%d %d",&level,&score,&speed,&HuongDi,&DiemTangLevel,&ThucAn.x,&ThucAn. y,&len); for(i=0;i<len;i++) { fscanf(file,"%d%d",&SNACK[i].x,&SNACK[i].y); } head=0; tail=len-1; fclose(file); return 1; } } void MenuSaveGame(int x,int y) { unsigned char lbutton,rbutton; int xmouse,ymouse; char c; char tenodia[2]; char tenfile[6]; int i,j; _setcursortype(0); MOUSE_THERE=1; Button ODIA,SAVENAME,CANCEL,OK; VarButton(ODIA,"O Dia:",x,y); VarButton(SAVENAME,"SaveName:",x,y+2); VarButton(OK,"[OK]",x+25,y+3); VarButton(CANCEL,"[CANCLE]",x+30,y+3); //=======phan do hoa giao dien======================== for(i=x-1;i<=x+38;i++) { if(i==x-1) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",201); gotoxy(i,y+4);textcolor(WHITE);cprintf("%c",200); } if(i==x+38) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",187); gotoxy(i,y+4);textcolor(WHITE);cprintf("%c",188); } if(i!=(x-1)&&i!=(x+38)) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",205); gotoxy(i,y+4);textcolor(WHITE);cprintf("%c",205); } } gotoxy((39-strlen("Save Game Menu"))/2+x-1,y1);textcolor(YELLOW);cprintf("Save Game Menu");.

<span class='text_page_counter'>(15)</span> //-------------------------------------------------------------------------------------------------------------------------do { ShowButton(ODIA); ShowButton(SAVENAME); ShowButton(OK); ShowButton(CANCEL); do { if(kbhit()) getch(); get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse); }while(lbutton==0); if(ClickButton(ODIA,xmouse,ymouse)) { _setcursortype(1); EffectClick(ODIA); do{ c=toupper(getch()); }while(c<=65&&c>=90); tenodia[0]=c;tenodia[1]=NULL; gotoxy(x+6,y);textcolor(YELLOW);cprintf("%s",tenodia); _setcursortype(0); } if(ClickButton(SAVENAME,xmouse,ymouse)) { _setcursortype(1); EffectClick(SAVENAME); gotoxy(x+9,y+2);textcolor(15); i=-1; int DaGoXong=0; do { do { c=toupper(getch()); j=1; if((c>=65&&c<=90&&j==1)|| (c>=48&&c<=57&&j==1)||((c==13||c==8)&&j==1)) break; }while(1); if(((c>=65&&c<=90&&j==1)|| (c>=48&&c<=57&&j==1))&&i<1) //go ki tu abcdef.....w..z { tenfile[++i]=c; gotoxy(x+9+i,y+2);textcolor(15);cprintf("%c",tenfile[i]); } if(c==8&&j==1&&i!=-1) { gotoxy(x+9+i,y+2);textcolor(15);cprintf("%c",32);gotoxy(x+9+i,y+2); tenfile[i]=NULL;.

<span class='text_page_counter'>(16)</span> --i; } if(c==13&&j==1&&i>=0) { tenfile[++i]=NULL; DaGoXong=1; } }while(DaGoXong==0); gotoxy(x+9,y+2);textcolor(YELLOW);cprintf("%s",tenfile); _setcursortype(0); } if(ClickButton(OK,xmouse,ymouse)) { EffectClick(OK); char* s1=""; char* s=""; s1=strcat((char*)tenodia,":\\"); s=strcat(s1,tenfile); s=strcat(s,".RTA"); gotoxy(1,50);clreol(); if(Save(s)==1) { gotoxy((80-strlen("Save Thanh Cong"))/2,50);textcolor(BLUE);cprintf("Save Thanh Cong"); } else { gotoxy((80-strlen("Save That Bai"))/2,50);textcolor(BLUE);cprintf("Save That Bai"); } delay(500); break; } if(ClickButton(CANCEL,xmouse,ymouse)) { EffectClick(CANCEL); break; } }while(1); gotoxy(x-1,y-1);clreol(); gotoxy(x,y);clreol(); gotoxy(x,y+2);clreol(); gotoxy(x,y+3);clreol(); gotoxy(x-1,y+4);clreol(); gotoxy(1,50);clreol(); } void MenuLoadGame(int x,int y) { unsigned char lbutton,rbutton; int i,j,xmouse,ymouse;.

<span class='text_page_counter'>(17)</span> char c; char tenodia[2]; char tenfile[6]; _setcursortype(0); MOUSE_THERE=1; Button ODIA,SAVENAME,CANCEL,OK; VarButton(ODIA,"O Dia:",x,y); VarButton(SAVENAME,"SaveName:",x,y+2); VarButton(OK,"[OK]",x+20,y+3); VarButton(CANCEL,"[CANCLE]",x+27,y+3); //=======phan do hoa giao dien======================== for(i=x-1;i<=x+35;i++) { if(i==x-1) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",201); gotoxy(i,y+4);textcolor(WHITE);cprintf("%c",200); } if(i==x+35) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",187); gotoxy(i,y+4);textcolor(WHITE);cprintf("%c",188); } if(i!=(x-1)&&i!=(x+35)) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",205); gotoxy(i,y+4);textcolor(WHITE);cprintf("%c",205); } } gotoxy((36-strlen("Load Game Menu"))/2+x-1,y1);textcolor(YELLOW);cprintf("Load Game Menu"); //-------------------------------------------------------------------------------------------------------------------------do { ShowButton(ODIA); ShowButton(SAVENAME); ShowButton(OK); ShowButton(CANCEL); do { if(kbhit()) getch(); get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse); }while(lbutton==0); if(ClickButton(ODIA,xmouse,ymouse)) { _setcursortype(1); EffectClick(ODIA); do{ c=toupper(getch()); }while(c<=65&&c>=90);.

<span class='text_page_counter'>(18)</span> tenodia[0]=c;tenodia[1]=NULL; gotoxy(x+6,y);textcolor(YELLOW);cprintf("%s",tenodia); _setcursortype(0); } if(ClickButton(SAVENAME,xmouse,ymouse)) { _setcursortype(1); EffectClick(SAVENAME); gotoxy(x+9,y+2);textcolor(LIGHTBLUE); i=-1; int DaGoXong=0; do { do { c=toupper(getch()); if(c==0){ c=getch();j=0;} else j=1; if((c>=65&&c<=90&&j==1)|| (c>=48&&c<=57&&j==1)||((c==13||c==8)&&j==1)) break; }while(1); if(((c>=65&&c<=90&&j==1)|| (c>=48&&c<=57&&j==1))&&i<1) //go ki tu abcdef.....w..z { tenfile[++i]=c; gotoxy(x+9+i,y+2);textcolor(15);cprintf("%c",tenfile[i]); } if(c==8&&j==1&&i>=0) { gotoxy(x+9+i,y+2);textcolor(15);cprintf("%c",32);gotoxy(x+9+i,y+2); tenfile[i]=NULL; i=i-1; } if(c==13&&j==1&&i>=0) { tenfile[++i]=NULL; DaGoXong=1; } }while(DaGoXong==0); gotoxy(x+9,y+2);textcolor(YELLOW);cprintf("%s",tenfile); _setcursortype(0); } if(ClickButton(OK,xmouse,ymouse)) { EffectClick(OK); char* s1=""; char* s=""; s1=strcat(tenodia,":\\"); s=strcat(s1,tenfile); s=strcat(s,".RTA");.

<span class='text_page_counter'>(19)</span> gotoxy(1,50);clreol(); if(Load(s)==1) { BangBaoLevel(level,score,speed); VeThucAn(); gotoxy((80-strlen("Load Game Cong"))/2,50);textcolor(BLUE);cprintf("Load Game Thanh Cong"); } else { gotoxy((80-strlen("Load Game Bai"))/2,50);textcolor(BLUE);cprintf("Load Game That Bai"); } delay(500); break; } if(ClickButton(CANCEL,xmouse,ymouse)) { EffectClick(CANCEL); break; } }while(1); gotoxy(x-1,y-1);clreol(); gotoxy(x,y);clreol(); gotoxy(x,y+2);clreol(); gotoxy(x,y+3);clreol(); gotoxy(x-1,y+4);clreol(); gotoxy(1,50);clreol(); }. Thanh. That. void MenuControl(int x,int y) { unsigned char lbutton,rbutton; int xmouse,ymouse; char tempUP=KUP,tempDOWN=KDOWN,tempLEFT=KLEFT,tempRIGHT=KRIGH T; int tempu=KU,tempd=KD,templ=KL,tempr=KR,i; MOUSE_THERE=1; Button U,D,L,R,OK,DEFAULT,CANCEL; VarButton(U,"[ M_UP ]",x,y); VarButton(D,"[ M_DOWN ]",x,y+2); VarButton(L,"[ M_LEFT ]",x,y+4); VarButton(R,"[M_RIGHT ]",x+25,y+2); VarButton(OK,"[SAVE ALL]",x+25,y+4); VarButton(DEFAULT,"[DEFAUTL]",x+36,y+4); VarButton(CANCEL,"[CANCEL]",x+46,y+4); //=======phan do hoa giao dien======================== _setcursortype(0); for(i=x-1;i<=x+54;i++) { if(i==x-1).

<span class='text_page_counter'>(20)</span> { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",201); gotoxy(i,y+5);textcolor(WHITE);cprintf("%c",200); } if(i==x+54) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",187); gotoxy(i,y+5);textcolor(WHITE);cprintf("%c",188); } if(i!=(x-1)&&i!=(x+54)) { gotoxy(i,y-1);textcolor(WHITE);cprintf("%c",205); gotoxy(i,y+5);textcolor(WHITE);cprintf("%c",205); } } gotoxy((55-strlen("Menu CONTROL"))/2+x-1,y1);textcolor(YELLOW);cprintf("Menu Control"); //-------------------------------------------------------------------------------------------------------------------------do { ShowButton(U); ShowButton(D); ShowButton(L); ShowButton(R); ShowButton(OK); ShowButton(DEFAULT); ShowButton(CANCEL); do { if(kbhit()) getch(); //chan fim rac get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse); }while(lbutton==0); if(ClickButton(U,xmouse,ymouse)) { EffectClick(U); _setcursortype(1); gotoxy(x+12,y);textcolor(BLACK);cprintf(" "); gotoxy(x+12,y);textcolor(YELLOW); KU=LayKeyBanPhim(KUP); HienThiKiTu(KUP); } if(ClickButton(D,xmouse,ymouse)) { EffectClick(D); _setcursortype(1); gotoxy(x+12,y+2);textcolor(BLACK);cprintf(" "); gotoxy(x+12,y+2);textcolor(YELLOW); KD=LayKeyBanPhim(KDOWN); HienThiKiTu(KDOWN); }.

<span class='text_page_counter'>(21)</span> if(ClickButton(L,xmouse,ymouse)) { EffectClick(L); _setcursortype(1); gotoxy(x+12,y+4);textcolor(BLACK);cprintf(" gotoxy(x+12,y+4);textcolor(YELLOW); KL=LayKeyBanPhim(KLEFT); HienThiKiTu(KLEFT); } if(ClickButton(R,xmouse,ymouse)) { EffectClick(R); _setcursortype(1); gotoxy(x+37,y+2);textcolor(BLACK);cprintf(" gotoxy(x+37,y+2);textcolor(YELLOW); KR=LayKeyBanPhim(KRIGHT); HienThiKiTu(KRIGHT);. ");. ");. } if(ClickButton(OK,xmouse,ymouse)) { EffectClick(OK); _setcursortype(0); break; } if(ClickButton(DEFAULT,xmouse,ymouse)) { EffectClick(DEFAULT); _setcursortype(0); KLEFT=75;KRIGHT=77;KUP=72;KDOWN=80; KL=0,KR=0,KU=0,KD=0; break; } if(ClickButton(CANCEL,xmouse,ymouse)) { EffectClick(CANCEL); _setcursortype(0); KLEFT=tempLEFT;KRIGHT=tempRIGHT;KUP=tempUP;KDOWN=tempDOW N; KL=templ,KR=tempr,KU=tempu,KD=tempd; break; } _setcursortype(0); }while(1); gotoxy(x-10,y-1);clreol(); gotoxy(x,y);clreol(); gotoxy(x,y+2);clreol(); gotoxy(x,y+4);clreol(); gotoxy(x-1,y+5);clreol(); }.

<span class='text_page_counter'>(22)</span> void MenuAbout() { unsigned char lbutton,rbutton; int i,j,xmouse,ymouse; char c; char tenodia[2]; char tenfile[10]; MOUSE_THERE=1; Button BACK; VarButton(BACK,"BACK TO MAIN MENU",6,48); _setcursortype(0); //=======phan do hoa giao dien======================== for(i=5;i<=75;i++) { if(i==5) { gotoxy(i,41);textcolor(WHITE);cprintf("%c",201); gotoxy(i,49);textcolor(WHITE);cprintf("%c",200); } if(i==75) { gotoxy(i,41);textcolor(WHITE);cprintf("%c",187); gotoxy(i,49);textcolor(WHITE);cprintf("%c",188); } if(i!=5&&i!=75) { gotoxy(i,41);textcolor(WHITE);cprintf("%c",205); gotoxy(i,49);textcolor(WHITE);cprintf("%c",205); } } gotoxy((70-strlen("Thong Tin Chuong Trinh"))/2+5,41);textcolor(YELLOW);cprintf("Thong Tin Chuong Trinh"); //-------------------------------------------------------------------------------------------------------------------------textcolor(LIGHTGREEN); gotoxy(6,43);cprintf("Nguoi viet:NHOM SINH VIEN LOP CT9B"); gotoxy(6,44);cprintf("CAO DANG BINH DINH"); gotoxy(6,46);cprintf("Ten chuong trinh:SNAKE - Ran San Moi"); gotoxy(6,47);cprintf("Chuc nang kem theo:save,load game,pause,resumegame..."); d { ShowButton(BACK); do { if(kbhit()) getch(); get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse); }while(lbutton==0); if(ClickButton(BACK,xmouse,ymouse)) { EffectClick(BACK);.

<span class='text_page_counter'>(23)</span> break; } }while(1); gotoxy(1,41);clreol(); gotoxy(1,43);clreol(); gotoxy(1,44);clreol(); gotoxy(1,45);clreol(); gotoxy(1,46);clreol(); gotoxy(1,47);clreol(); gotoxy(1,48);clreol(); gotoxy(1,49);clreol(); } void MenuHelp() { unsigned char lbutton,rbutton; int i,j,xmouse,ymouse; MOUSE_THERE=1; Button BACK; VarButton(BACK,"BACK TO MAIN MENU",20,49); _setcursortype(0); //=======phan do hoa giao dien======================== for(i=5;i<=75;i++) { if(i==5) { gotoxy(i,41);textcolor(WHITE);cprintf("%c",201); gotoxy(i,50);textcolor(WHITE);cprintf("%c",200); } if(i==75) { gotoxy(i,41);textcolor(WHITE);cprintf("%c",187); gotoxy(i,50);textcolor(WHITE);cprintf("%c",188); } if(i!=5&&i!=75) { gotoxy(i,41);textcolor(WHITE);cprintf("%c",205); gotoxy(i,50);textcolor(WHITE);cprintf("%c",205); } } gotoxy((70-strlen("Tro Giup CachChoi"))/2+5,41);textcolor(YELLOW);cprintf("Tro Giup Cach Choi"); //-------------------------------------------------------------------------------------------------------------------------textcolor(LIGHTGREEN); gotoxy(6,43);cprintf("Su dung 4 phim:%c %c %c %c de di chuyen con ran.Ban co the chinh",24,25,26,27); gotoxy(6,44);cprintf("lai phim khac neu ban muon.Trong luc choi game F1 de pause game lai "); gotoxy(6,45);cprintf("Tren thanh Menu co 1 so tinh nang nhu:save,load,control,resume...");.

<span class='text_page_counter'>(24)</span> gotoxy(6,46);cprintf("Nhan Resume de tiep tuc choi game."); gotoxy(6,47);cprintf("Game co tat ca 7 cap do choi.Hihi.Chuc vui ve nha."); do { ShowButton(BACK); do { if(kbhit()) getch(); get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse); }while(lbutton==0); if(ClickButton(BACK,xmouse,ymouse)) { EffectClick(BACK); break; } }while(1); gotoxy(1,41);clreol(); gotoxy(1,43);clreol(); gotoxy(1,44);clreol(); gotoxy(1,45);clreol(); gotoxy(1,46);clreol(); gotoxy(1,47);clreol(); gotoxy(1,48);clreol(); gotoxy(1,49);clreol(); gotoxy(1,50);clreol(); } void ShowMessenger(int x,int y,int loai) { switch(loai) { case 1: textcolor(LIGHTGREEN); gotoxy(x+3,y);cprintf("Û Û ÛßßßÛ Û Û Û Û Û Û Û"); gotoxy(x+3,y+1);cprintf(" ßÜß º º º º ºÜßܺ º ºßÜ º"); gotoxy(x+3,y+2);cprintf(" Û ÛÜÜÜÛ ÛÜÜÜÛ Ûß ßÛ Û Û ßÛ"); break; case 0: textcolor(LIGHTGREEN); gotoxy(x,y);cprintf("Û Û ÛßßßÛ Û Û Û ÛßßßÛ ÛßßßÛ Ûßß"); gotoxy(x,y+1);cprintf(" ßÜß º º º º º º º ÈÍÍÍ» ÌÍ"); gotoxy(x,y+2);cprintf(" Û ÛÜÜÜÛ ÛÜÜÜÛ ÛÜÜ ÛÜÜÜÛ ÛÜÜÜÛ ÛÜÜ"); break; } } void HideMessenger(int x,int y) { textcolor(BLACK); gotoxy(x,y);clreol();.

<span class='text_page_counter'>(25)</span> gotoxy(x,y+1);clreol(); gotoxy(x,y+2);clreol(); } int MenuWinLose(int x,int y,int loai) { unsigned char lbutton,rbutton; int xmouse,ymouse; Button AGAIN,EXIT; VarButton(AGAIN,"[PLAY AGAIN]",x+8,y+5); VarButton(EXIT,"[EXIT GAME]",x+5+18,y+5); ShowMessenger(x,y,loai); do { ShowButton(AGAIN); ShowButton(EXIT); do { MOUSE_THERE=1; if(kbhit()) getch(); get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse); }while(lbutton==0); MOUSE_THERE=0; if(ClickButton(AGAIN,xmouse,ymouse)) { EffectClick(AGAIN); XoaConRan(); if(SNACK[head].y==TOP||SNACK[head].y==BOTTOM){ gotoxy(SNACK[head].x,SNACK[head].y);textcolor(7);cprintf("%c",205);} if(SNACK[head].x==LEFT||SNACK[head].x==RIGHT){ gotoxy(SNACK[head].x,SNACK[head].y);textcolor(7);cprintf("%c",186); } gotoxy(ThucAn.x,ThucAn.y);cprintf(" "); ResetGame(); VeThucAn(); HideMessenger(x,y); gotoxy(1,y+5);clreol(); return 1; } if(ClickButton(EXIT,xmouse,ymouse)) { EffectClick(EXIT); HideMessenger(x,y); gotoxy(1,y+5);clreol(); return 0; } }while(1); }.

<span class='text_page_counter'>(26)</span> void ThuTucChucNangGame() { unsigned char lbut,rbut; int xm,ym; int xmouse,ymouse; Button RESUME,SAVE,LOAD,CONTROL,HELP,ABOUT,EXIT; VarButton(SAVE,"[SAVE]",21,38); VarButton(LOAD,"[LOAD]",28,38); VarButton(CONTROL,"[CONTROL]",35,38); VarButton(HELP,"[HELP]",45,38); VarButton(ABOUT,"[ABOUT]",52,38); VarButton(RESUME,"[RESUME]",60,38); VarButton(EXIT,"[EXIT]",69,38); int i=0; do { gotoxy(1,50);clreol(); gotoxy((80-strlen("[RESUME] De Tiep Tuc Choi Game."))/2,50);textcolor(BLUE);cprintf("[RESUME] De Tiep Tuc Choi Game."); ShowButton(SAVE); ShowButton(LOAD); ShowButton(CONTROL); ShowButton(HELP); ShowButton(ABOUT); ShowButton(RESUME); ShowButton(EXIT); MOUSE_THERE=1; do { if(kbhit()) getch(); get_mouse_button(&lbut,&rbut,&xmouse,&ymouse); }while(lbut==0); xm=xmouse; ym=ymouse; 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)) {.

<span class='text_page_counter'>(27)</span> 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)) { EffectClick(EXIT); KetThucGame=1; break; } }while(1); DisableButton(SAVE); DisableButton(LOAD); DisableButton(CONTROL); DisableButton(HELP); DisableButton(ABOUT); DisableButton(RESUME); DisableButton(EXIT); } void KhoiDongGame(int x,int y) { unsigned char lbutton,rbutton; int xmouse,ymouse; Button START; VarButton(START,"[ START GAME ]",x,y); ShowButton(START); MOUSE_THERE=1; do { do { if(kbhit()) getch(); get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse); }while(lbutton==0); if(ClickButton(START,xmouse,ymouse)) { EffectClick(START); break; } }while(1); gotoxy(x,y);textcolor(BLACK);cprintf(" ");.

<span class='text_page_counter'>(28)</span> } void main() { char key; int TrangThaiKey=1; clrscr(); textmode(C4350); _setcursortype(0); HienThiLoGo(25,2,15); VeBanDo(); ResetGame(); BangBaoLevel(level,score,speed); KhoiDongGame(30,20); VeThucAn(); VeConRan(); do { gotoxy(1,50);clreol(); gotoxy((80-strlen("F1 De Pause Game Va Hien Thi Menu Chuc Nang Game"))/2,50);textcolor(BLUE);cprintf("F1 De Pause Game Va Hien Thi Menu Chuc Nang Game"); XoaConRan(); if(kbhit()) { key=toupper(getch()); if(key==0) { key=getch(); TrangThaiKey=0; } else TrangThaiKey=1; if(key==KLEFT&&TrangThaiKey==KL&&HuongDi!=2) HuongDi=4; if(key==KRIGHT&&TrangThaiKey==KR&&HuongDi!=4) HuongDi=2; if(key==KUP&&TrangThaiKey==KU&&HuongDi!=3) HuongDi=1; if(key==KDOWN&&TrangThaiKey==KD&&HuongDi!=1) HuongDi=3; if(key==PAUSE&&TrangThaiKey==P) { ThuTucChucNangGame(); if(KetThucGame==1) break; } } DieuChinhToaDoConRan(); switch(HuongDi) { case SNACK[head].x,SNACK[head].y);break;. 4:GanToaDo(SNACK[head],--.

<span class='text_page_counter'>(29)</span> case 2:GanToaDo(SNACK[head],+ +SNACK[head].x,SNACK[head].y);break; case 1:GanToaDo(SNACK[head],SNACK[head].x,-SNACK[head].y);break; case 3:GanToaDo(SNACK[head],SNACK[head].x,+ +SNACK[head].y);break; } VeConRan(); if(ThucAn.x==SNACK[head].x&&ThucAn.y==SNACK[head].y) { AnThucAn();VeThucAn();BangBaoLevel(level,score,speed); if(level==10) { if(MenuWinLose(20,42,1)==0) break; } } if(KiemTraRanDie()==1) { if(MenuWinLose(20,42,0)==0) break; } delay(speed); }while(1); } 2.2.. Những mặt hạn chế và nguyên nhân: - Do thời gian làm đề tài trùng với thời gian đi thực tập sư phạm 2 và kiến thức còn giới hạn nên đề tài còn một số mặt hạn chế: + Chưa tạo được Menu mức độ dễ, trung bình, khó để cho người chơi lựa chọn. + Chưa xuất hiện bảng thông báo khi qua mỗi Level. + Chưa cho phép người chơi trong một khoảng thời gian xác định. + Chưa điều chỉnh được tốc độ nhanh chậm của rắn mà tốc độ của rắn tự động tăng dần qua mỗi Level. 2.3. Kết quả đạt được: Sau thời gian kiến tập chúng tôi đã đạt được những kết quả như sau: - Sử dụng đồ họa tạo được logo của trò chơi. - Hiển thị được số điểm, level, tốc độ trong khi chơi. - Tạo được các thanh menu hỗ trợ cho người chơi. Tóm lại, về cơ bản chúng tôi đã viết được một chương trình game tương đối hoàn chỉnh..

<span class='text_page_counter'>(30)</span> 3. Hướng dẫn sử dụng và giới thiệu sản phẩm: Giao diện trò chơi gồm:. -. Logo trò chơi: SNAKE. Nút Start Game để bắt đầu trò chơi. Bảng báo level, Score, Speed.. Màn hình khi đang chơi rắn săn mồi..

<span class='text_page_counter'>(31)</span> Menu Save và menu Load gồm: - Ổ đĩa: vị 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.. 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ù hợp. - Vì thời gian và lượng kiến thức còn hạn chế nên chương trình game của chúng tôi chưa được hoàn thiện như đúng ý tưởng đã đặt ra ban đầu, mặc dù vậy nhưng một số chức năng cần thiết và cần có của một trò chơi vẫn được chúng tôi đảm bảo đáp ứng tốt. 2. Bài học kinh nghiệm:.

<span class='text_page_counter'>(32)</span> Trong thời gian kiến tập vừa qua, nhóm chúng tôi đã tìm hiểu tình hình thực tế, học hỏi các anh chị đi trước, đồng thời cùng với sự hướng dẫn của giáo viên đã đem lại cho nhóm chúng tôi những kết quả mà chúng tôi mong đợi. Đầu tiên là quá trình làm việc theo nhóm đã tạo cho chúng tôi phong cách làm việc công nghiệp, được tiếp xúc với thực tế để tạo một nền tảng cho công việc sau khi ra trường. Bên cạnh đó nó còn giúp mỗi cá nhân trong nhóm phất huy được tính tự giác, sang tạo, tư duy và biết được những khuyết điểm của chính mình để điều chỉnh cho hoàn thiện hơn. Làm việc theo nhóm còn giúp cho mỗi người học hỏi thêm nhiều kiến thức, kinh nghiệm từ những thành viên trong nhóm. Và thông qua thời gian kiến tập chúng tôi tự củng cố và nâng cao kiến thức, đã biết sử dụng ngôn ngữ C/C++ để viết nên một chương trình game tương đối hoàn chỉnh, biết được mục đích, chức năng của câu lệnh, hàm và sử dụng nó một cách phù hợp. 3. Hướng phát triển: Trong thời gian tới với những đòi hỏi, yêu cầu cao về công nghệ - kỹ thuật, nhóm chúng tôi đã đặt ra một số hướng phát triển cho chương trình game Rắn Săn Mồi để đáp ứng nhu cầu giải trí của mọi người: - Chỉ cho phép người chơi trong một khoảng thời gian xác định. - Điều chỉnh được tốc độ nhanh chậm của rắn theo ý muốn của người chơi. - Xa hơn nữa, nhóm chúng tôi mong muốn sẽ tạo chương trình game Rắn Săn Mồi với hình ảnh 3D. IV. Kiến nghị: 1. Đối với giáo viên: Chúng tôi cần được sự hướng dẫn nhiều hơn từ giáo viên. 2. Đối với khoa Công nghệ thông tin: Tổ chức nhiều buổi hướng dẫn hơn nữa tạo điều kiện cho giáo viên và sinh viên trao đổi qua lại để hoàn thành đề tài tốt hơn. 3. Đối với trường Cao Đẳng Bình Định. 4. …. Giáo viên hướng dẫn Người viết báo cáo. Nguyễn Dư Nghĩa. Nguyễn Thị Bích Trầm. LỜI CẢM ƠN …..œ&….. Lời đầu tiên chúng tôi xin chân thành cảm ơn thầy Nguyễn Dư Nghĩa, người đã trực tiếp hướng dẫn chúng tôi hoàn thành tốt bài tập này một cách tận tình, chu đáo. Thầy đã bỏ nhiều thời gian và nhiệt tình giúp đỡ chúng tôi xây dựng và hoàn chỉnh đề tài này. Thầy đã giúp chúng tôi học hỏi, hiểu biết thêm về kiến thức thực tế của môn học để từ đó dựa trên cơ sở lí thuyết để xây dựng nên chương trình này..

<span class='text_page_counter'>(33)</span> Và một nhân tố không thể không kể đến để làm nên thành công của chương trình này là sự giúp đỡ của các bạn sinh viên Khoa Công Nghệ Thông Tin đã đóng góp cho chúng tôi những kiến thức bổ ích. Nhóm chúng tôi mặc dù đã có những cố gắng nhưng do thời gian cũng như là trình độ năng lực còn hạn chế nên không tránh khỏi những thiếu soát, kính mong quý thầy cô cùng các bạn đóng góp ý kiến giúp đỡ để chúng tôi có thể hoàn thiện và rút kinh nghiệm cho những đề tài sau. Một lần nữa chúng tôi xin chân thành cảm ơn. Quy Nhơn, ngày 01 tháng 05 năm 2013 Sinh viên thực hiện Nguyễn Thị Bích Trầm Hà Thị Bích Liễu Nguyễn Thị Diễm Đặng Thị Mai Hồng.

<span class='text_page_counter'>(34)</span>

×