1. Trang chủ
  2. » Giáo án - Bài giảng

Ứng dụng ngôn ngữ C/C++ xây dụng Game Snake

33 739 8

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 1,74 MB

Nội dung

Với mơ ước muốn trở thành nhà lậptrì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

Trang 1

MỤC LỤC

Trang 2

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ôngviệ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ậptrì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 đíchtrướ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 sinhviê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 trongthự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ànthiệ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ếtvấ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ũythê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êncạ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àmviệ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ủamỗ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ứckhoa 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 trongcuộ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ìmhiể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ôngviệ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 đã đượcphâ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

Trang 3

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áoviên hướng dẫn để phân tích, đưa ra biện pháp tốt nhất.

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ấtbả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àigiả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:

Trang 4

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ắnxuố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ồmtê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

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 đến255

h Modul ThuTucChucNangGame():

Tạo, biểu diễn và tắt các nút resume, save, load, control, help, about, exit thôngqua việc kế thừa các hàm VarButton(), ShowButton(), ClickButton(),EffectClick() và các hàm tạo Menu

Trang 5

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

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

Trang 6

Bao gồm level, số điểm và tốc độ.

2 Đánh giá kết quả: (đoạn code)

Trang 7

if(xchuot>=(B.xbutton-1)*8&&xchuot<=(B.xbutton+strlen(B.name)-1-return 1;

Trang 9

if((j==TOP||j==BOTTOM)&&i>LEFT&&i<RIGHT){

Trang 10

gotoxy(SNACK[i].x,SNACK[i].y);textcolor(LIGHTRED);cprintf("@");}

else{

}

Trang 12

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);}

return 0;

break;

} }

else{ if((c>=65&&c<=90)||c==32||c==13) {

Trang 13

return 1;

break;

}}}while(1);

Trang 14

//luu giu cac bien trang thai.

fscanf(file,"%d%d%d%d%d%d%d

%d",&level,&score,&speed,&HuongDi,&DiemTangLevel,&ThucAn.x,&ThucAn.y,&len);

Trang 15

gotoxy((39-strlen("Save Game

Menu"))/2+x-1,y-1);textcolor(YELLOW);cprintf("Save Game Menu");

-

gotoxy(x+9+i,y+2);textcolor(15);cprintf("%c",tenfile[i]);}

if(c==8&&j==1&&i!=-1)

Trang 16

tenfile[++i]=NULL;

DaGoXong=1;

} }while(DaGoXong==0);

gotoxy(x+9,y+2);textcolor(YELLOW);cprintf("%s",tenfile); _setcursortype(0);

Trang 17

gotoxy((36-strlen("Load Game

Menu"))/2+x-1,y-1);textcolor(YELLOW);cprintf("Load Game Menu");

-

Trang 18

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);

Trang 19

Bai"))/2,50);textcolor(BLUE);cprintf("Load Game That Bai");

int tempu=KU,tempd=KD,templ=KL,tempr=KR,i;

MOUSE_THERE=1;

Trang 20

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);

CONTROL"))/2+x-1,y

Trang 21

gotoxy(x+12,y);textcolor(BLACK);cprintf(" "); gotoxy(x+12,y);textcolor(YELLOW);

Trang 22

_setcursortype(0);

KLEFT=tempLEFT;KRIGHT=tempRIGHT;KUP=tempUP;KDOWN=tempDOWN;

Trinh"))/2+5,41);textcolor(YELLOW);cprintf("Thong Tin Chuong Trinh");

Trang 23

// -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

Trang 24

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

Trang 25

if(ClickButton(AGAIN,xmouse,ymouse))

{

EffectClick(AGAIN);

Trang 28

if(kbhit()) getch();

get_mouse_button(&lbutton,&rbutton,&xmouse,&ymouse);}while(lbutton==0);

if(ClickButton(START,xmouse,ymouse)){

EffectClick(START);

break;

}}while(1);

Trang 29

gotoxy((80-strlen("F1 De Pause Game Va Hien Thi Menu Chuc NangGame"))/2,50);textcolor(BLUE);cprintf("F1 De Pause Game Va Hien Thi MenuChuc Nang Game");

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;

} }

+SNACK[head].x,SNACK[head].y);break;

case SNACK[head].y);break;

1:GanToaDo(SNACK[head],SNACK[head].x, case 3:GanToaDo(SNACK[head],SNACK[head].x,++SNACK[head].y);break;

{

if(MenuWinLose(20,42,1)==0) break;

} }

if(KiemTraRanDie()==1)

{

Trang 30

+ 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ự độngtă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ànchỉnh

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

Trang 31

Màn hình khi đang chơi rắn săn mồi.

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

Trang 32

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ăntrong 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ôichư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ứcnă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:

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ọchỏ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 chonhó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 theonhó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ântrong 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ểmcủ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ỗingườ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ụngngô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ómchú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ớihì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

Trang 33

4 ….

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ựctiế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

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ìnhnà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úngtô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 giancũ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 mongquý 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 kinhnghiệ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

Ngày đăng: 05/02/2015, 13:00

TỪ KHÓA LIÊN QUAN

w