đồ án lập trình căn bản đại học cần thơđồ án lập trình cđồ án lập trìnhđại học cần thơđồ án lập trình căn bảnMỤC LỤCI. GIỚI THIỆU ĐỀ TÀI:.............................................................................................................31. Lí do chọn đề tài..............................................................................................................32. Mục tiêu..........................................................................................................................33. Yêu cầu...........................................................................................................................3 4. Giới hạn..........................................................................................................................35. Hướng giải quyết............................................................................................................3II. THIẾT KẾ...............................................................................................................................31. Giải thuật lưu đồ..............................................................................................................32. Chương trình chi tiết.....................................................................................................15III. KẾT LUẬN..........................................................................................................................291. Kết quả đạt được...........................................................................................................29 2. Ưu điểm........................................................................................................................30 3. Hạn chế cần khắc phục.................................................................................................30IV. TÀI LIỆU THAM KHẢO..................................................................................................30I. GIỚI THIỆU ĐỀ TÀI1. Lí do chọn đề tàiHoạt động về game đã xuất hiện ở Việt Nam rất lâu và nó bắt nguồn từ game trên điện thoại và dần dần xuất hiện trên máy tính . Càng ngày nó càng thu hút người chơi và trở thành một bộ môn thể thao điện tử của nước ta. Và Snake cũng không ngoại lệ cũng từng là 1 game đình đám cả trên điện thoại lẫn đến máy tính. Vì thế chúng em chọn nó để làm đề tài cho đồ án này.2. Mục tiêu Mô phỏng trò chơi Snake (Rắn săn mồi) trên phần mềm Dev C++ bằng ngôn ngữ C.3. Yêu cầuGồm 8 công việc:1. In ra số lần số lần đã chơi game khi mở chương trình. 2. Tạo menu game.3. Khởi tạo , hiển thị con rắn và thức ăn.4. Điền khiển con rắn theo các hướng (lên , xuống, qua trái , qua phải).5. Xử lí tình huống rắn chạm biên và tự ăn chính mình.6. Xử lí tốc độ và chiều dài của rắn khi ăn được hoa quả.7. Trở về menu game khi người chơi thua cuộc.8. Hiển thị số điểm người chơi sau mỗi lần ăn được thức ăn và mỗi màn chơi. 4. Giới hạnMột tuần lên ý tưởng và thực hiện.Số lượng thành viên trong nhóm: 8 người.5. Hướng giải quyếtCác thành viên ôn lại các kiến thức đã học trên lớp.Tham khảo tài liệu từ internet, giáo trình, sách tại trung tâm học liệu, thư viện khoa,...Lên kế hoạch họp nhóm và phân công công việc cụ thểII. THIẾT KẾ1. Giải thuật lưu đồ1.1. Chương trình chính 1.2. Chương trình con1.2.1. Bộ đếm 1.2.2. Logo 1 1.2.3. Logo 2 1.2.4. Hiển thị 1.2.5. Control1.2.6. Xử lí 1.2.7. Menu 1.2.8. int main 1.2.9. About 2. Chương trình chi tiết Do an lap trinh ngon ngu C: Game SNAKE Nhom 4: TEN MSSV LOP Tran Huu Nghi B1609401 TN16Y8A1 Pham Van Phúc B1609409 TN16Y8A1 Ho Tuan Kiet B1609171 TN16Y5A2 Le Khanh Linh B1609394 TN16Y8A1 Nguyen Ngoc Tung B1609503 TN16Y8A2 Nguyen Trong Khanh B1609391 TN16Y8A1 Luu Thien Phat B1609476 TN16Y8A2 Nguyen Du Nguyen Chuong B1609441 TN16Y8A2 ==========================INCLUDE LIBRARY=========================includeincludeincludeincludeinclude=========================KHAI BAO HANG SO=========================define consoleWidth 90define consoleHeight 29define MAX_LIST 3=========================KHAI BAO HAM SCREEN=====================void clrscr() XOA MAN HINH{CONSOLE_SCREEN_BUFFER_INFOcsbiInfo; HANDLEhConsoleOut;COORDHome = {0,0};DWORDdummy;hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);GetConsoleScreenBufferInfo(hConsoleOut,csbiInfo);
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BÁO CÁO ĐỒ ÁN MÔN: LẬP TRÌNH CĂN BẢN
Nhóm 05
ĐỀ TÀI: GAME SNAKE (RẮN SĂN MỒI)
Trang 2MỤC LỤC
TÀI: 3
1 Lí do chọn đề tài 3
2 Mục tiêu 3
3 Yêu cầu 3
4 Giới hạn 3
5 Hướng giải quyết 3
II THIẾT KẾ 3
1 Giải thuật lưu đồ 3
2 Chương trình chi tiết 15
III KẾT LUẬN 29
1 Kết quả đạt được 29
2 Ưu điểm 30
3 Hạn chế cần khắc phục 30
IV TÀI LIỆU THAM KHẢO 30
Trang 3I GIỚI THIỆU ĐỀ TÀI
1 Lí do chọn đề tài
Hoạt động về game đã xuất hiện ở Việt Nam rất lâu và nó bắt nguồn từ game trênđiện thoại và dần dần xuất hiện trên máy tính Càng ngày nó càng thu hút người chơi và trởthành một bộ môn thể thao điện tử của nước ta Và Snake cũng không ngoại lệ cũng từng là 1game đình đám cả trên điện thoại lẫn đến máy tính Vì thế chúng em chọn nó để làm đề tài cho
1 In ra số lần số lần đã chơi game khi mở chương trình
2 Tạo menu game
3 Khởi tạo , hiển thị con rắn và thức ăn
4 Điền khiển con rắn theo các hướng (lên , xuống, qua trái , qua phải)
5 Xử lí tình huống rắn chạm biên và tự ăn chính mình
6 Xử lí tốc độ và chiều dài của rắn khi ăn được hoa quả
7 Trở về menu game khi người chơi thua cuộc
8 Hiển thị số điểm người chơi sau mỗi lần ăn được thức ăn và mỗi màn chơi
4 Giới hạn
-Một tuần lên ý tưởng và thực hiện
-Số lượng thành viên trong nhóm: 8 người
5 Hướng giải quyết
Trang 4printf ("Game Over!!Click gotoXY(92,15)
đúng
sai đúng
Kết thúc return 0;
Snake snake; HoaQua hq;
HienThi(snake,hq,score);Control(snake
);
Trang 61.2 Chương trình con
1.2.1 Bộ đếm
if(a>0||a<8) int i=1
printf("\n\n\n\n\n\n>>The Snake Game has run %d times!\n",b)
Trang 71.2.2 Logo 1
LOGO 1 Nocursortype();
printf(“text”);
Trang 8printf("%c",196);
i < 120
i = 0 TextColor(7);
Trang 9i < snake.n
printf("%c%c",219,219);
gotoXY (snake.dot[0].x, snake.dot[0].y); TextColor(13); printf("%c%c",219,219); gotoXY(hq.td.x,hq.td.y) TextColor(14);
Trang 10i i > 0
int i = snake.n - 1
ĐÚNG
SAI
Trang 13hq.td.y = rand() % consoleHeight;
Trang 141.2.7 Menu
Trang 16int i=0
i<120 i++
printf("%c",196);
Trang 172 Chương trình chi tiết
/* Do an lap trinh ngon ngu C: Game SNAKE
Nhom 4:
TEN MSSV LOP
Tran Huu Nghi B1609401 TN16Y8A1
Pham Van Phúc B1609409 TN16Y8A1
Ho Tuan Kiet B1609171 TN16Y5A2
Le Khanh Linh B1609394 TN16Y8A1
Nguyen Ngoc Tung B1609503 TN16Y8A2
Nguyen Trong Khanh B1609391 TN16Y8A1
Luu Thien Phat B1609476 TN16Y8A2
Nguyen Du Nguyen Chuong B1609441 TN16Y8A2
//=========================KHAI BAO HAM SCREEN=====================
void clrscr() //XOA MAN HINH
{
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
Trang 18int whereX() //GET X
Trang 19file=fopen("D:\\SnakeProject\\BODEM.dat","ab"); //TAO RA FILE DATA:
BODEM.DAT TRONG O DIA E ; ab: NOI VAO TAP TIN NHI PHAN
fseek(file,0,SEEK_END); // THIET LAP VI TRI FILE TOI OFFSET DA CHO: TEN,
SO BYTE DE OFFSET, VI TRI OFFSET THEM VAO: PHAN CUOI FILE
b=ftell(file)/sizeof(int); //TRA VE VI TRI FILE HIEN TAI
Trang 20printf("\n ssssssssssssssss nnnnnn nnnnnn aaaaaaaa kkkkkk kkkkkk ssssssssssssssssss ");
TextColor(12);
printf("\n ssssssssssssssssss nnnnnnn nnnnnn aaaaaaaaaa kkkkkk kkkkkk ssssssssssssssssss ");
Trang 21TextColor(13);
printf("\n ssssssssssssssss nnnnnn nnnnnn aaaaaaaa kkkkkk kkkkkk ssssssssssssssssss ");
Sleep(50);
TextColor(12);
printf("\n ssssssssssssssssss nnnnnnn nnnnnn aaaaaaaaaa kkkkkk kkkkkk ssssssssssssssssss ");
Sleep(50);
TextColor(8);
Trang 22printf("\n ssssss nnnnnn nnnnnnnnn aaaaaa aaaaaa kkkkkk kkkkkkssssss ");
Trang 23printf("%c",196);
}TextColor(10);
printf("\n\n\t\t\t\t\t The Snake Game is written by 5Team!"); // THONG CO BAN CUA GAME: NHOM LAP TRINH, TEN GAME, CHUONG TRINH HO TRO, NGUOI HUONG DAN
printf("\n\n\t\t\t\t\t\tThe members of 5Team:"); // THONG TIN THANH VIEN NHOM LAP TRINH
Trang 24printf("\n\t\t\t\t\t\tNguyen Du Nguyen Chuong\n");
snake.n = 3; // KHOI TAO CON RAN BAN DAU CO 3 DOT
snake.dot[0].x = 46; //VI TRI BAN DAU CUA CON RAN TREN TRUC X
snake.dot[0].y = 13; //VI TRI BAN DAU CUA CON RAN TREN TRUC X
snake.tt = RIGHT; //CON RAN DI CHUYEN SANG PHAI KHI CHAY CHUONG TRINH
hq.td.x = 62; //TOA DO BAN DAU CUA THUC AN
hq.td.y = 23;
}
void HienThi (Snake snake, HoaQua hq,int &score) //HIEN THI CON RAN VA THUC AN LEN MAN HINH
Trang 25//**************************DIEU KHIEN CON RAN****************************void Control (Snake &snake)
int key = _getch();
if (key == 'A' || key == 'a') //DIEU KHIEN DAU CON RAN
Trang 26// tra ve -1 neu thua game
int XuLy (Snake &snake, HoaQua &hq, int &Delay, int &score)
{
if (snake.dot[0].x < 0 || snake.dot[0].x >= 90 || // XU LY KHI RAN CHAM BIEN
snake.dot[0].y < 0 || snake.dot[0].y >= 30)
return -1;
for (int i = 1; i < snake.n; i++)
if (snake.dot[0].x == snake.dot[i].x && // XU LY KHI RAN CHAM THAN
hq.td.x = rand() % consoleWidth; //SINH RA THUC AN MOI KHI THUC AN
CU BI CON RAN AN O MOT VI TRI KHAC
Trang 27Delay -= 5;
}return 0;
int score=0; // XU LY DIEM
int Delay = 250; // TOC DO BAN DAU CUA CON RAN(Ms)
}Sleep (Delay);
}
Trang 28logo2();
}char* menu[]={"NEW GAME" , "ABOUT" , "EXIT"};
int pointer = 0; //CON TRO
if(pointer == i){
Nocursortype();
TextColor(14);
printf("\n\t\t\t\t\t\t\t",menu[i]);
}else{
TextColor(7);
printf("\n\t\t\t\t\t\t\t",menu[i]);
}printf("%s\n",menu[i]);
}bodem();
//XU LY KHI CLICK TU BAN PHIM
while(1){
if(kbhit()) //PHAT HIEN NHAN VAO PHIM BAT KY, LUU LAI DE
XU LY
{
char key = getch();
if(key==72) //UP{
if(pointer>0){
Trang 29pointer = MAX_LIST-1;
}break;
}if(key==80) //DOWN{
if(pointer < MAX_LIST){
++pointer;
}else{
pointer = 0;
}break;
}if(key==13) //ENTER{
switch(pointer){
case 2:
enter = -1;
break;
default:
Trang 30printf("\n\n\t\t\t\tTHE MEMBERS OF THE 5TEAM WERE HAPPY TO
BE ABLE TO CREATED IT!");
}}
//=======================THUC HIEN CHUONG TRINH====================int main()
- Hoàn thành 7/8 công việc đã đề ra:
+In ra số lần số lần đã chơi game khi mở chương trình
+Tạo menu game
+Khởi tạo , hiển thị con rắn và thức ăn
+Điền khiển con rắn theo các hướng (lên , xuống, qua trái , qua phải).+Xử lí tình huống rắn chạm biên và tự ăn chính mình
+Xử lí tốc độ và chiều dài của rắn khi ăn được hoa quả
+Trở về menu game khi người chơi thua cuộc
- Củng cố các kiến thức về chương trình con, vòng lặp, lệnh điều kiện, kiểu cấu
Trang 323 Hạn chế cần khắc phục (Nhược điểm)
-Chưa thiết lập được chế độ tiếp tục chơi màn cũ cho game khi mở lại chươngtrình
-Chưa thiết lập được chế độ Pause (tạm dừng) khi đang chơi
-Chưa tính được số điểm người chơi đạt được sau mỗi lần ăn hoa quả và sau mỗimàn chơi
IV TÀI LIỆU THAM KHẢO
[1] Nguyễn Văn Linh, Giáo trình Tin Học Đại Cương A, Khoa Công Nghệ Thông Tin,
Đại học Cần Thơ, 1991
[2] Nguyễn Đình Tê, Hoàng Đức Hải, Giáo trình lý thuyết và bài tập ngôn ngữ C; Nhà
xuất bản Giáo dục, 1999
[3] Nguyễn Cẩn, C- Tham khảo toàn diện, Nhà xuất bản Đồng Nai, 1996.
[4] Võ Văn Viện, Giúp tự học Lập trình với ngôn ngữ C, Nhà xuất bản Đồng Nai, 2002 [5] Trần Đan Thư, Nguyễn Thanh Phương, Đinh Bá Tiến, Trần Minh Triết, Nhập môn
lập trình, Nhà xuất bản Khoa học và Kỹ thuật, 2011
[6] www.lms.cit.ctu.edu.vn