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 r[r]
NỘI DUNG BÁO CÁO
Cơ sở lý thuyết
- 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.
- Tạo logo SNAKE và YOU LOST trên giao diện trò chơi.
- Tạo các Menu GameLoad, SaveGame, About,….
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.
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 của trò chơi con rắn và thông tin liên quan vào file theo đường dẫn chỉ định, bao gồm cả tên file Sử dụng hàm fprintf() để ghi dữ liệu ra tệp văn bản; nếu quá trình ghi thành công, hàm sẽ trả về số byte đã ghi.
Hàm fopen() được sử dụng để mở một tệp với kiểu truy cập là "r+b", cho phép mở tệp mới để đọc và ghi theo kiểu nhị phân Nếu tệp đã tồn tại, nó 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()).
Hàm fopen() được sử dụng để mở một tệp với kiểu truy cập là "r+b", cho phép mở tệp mới với chế độ đọc/ghi theo kiểu nhị phân Tệp cần phải tồn tại, nếu không sẽ xuất hiện 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():
Create, display, and deactivate the resume, save, load, control, help, about, and exit buttons by inheriting the functions VarButton(), ShowButton(), ClickButton(), EffectClick(), along with the Menu creation function in the Game Initialization Module.
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. f Modul KiemTraRanDie():
Nếu biến KiemTraRanDungThanRan có giá trị True, thì rắn sẽ chết; nếu là False, rắn sẽ sống Modul DieuChinhToaDoConRan có nhiệm vụ điều chỉnh tọa độ của con rắn mỗi khi nó di chuyển Modul MenuSaveGame cho phép người chơi lưu lại tiến trình chơi.
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():
Menu này bao gồm các mục để tải thông tin người chơi từ Save, bao gồm Ổ đĩa, SaveName, Ok và Cancel.
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():
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(). 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:
#define M_DOWN 4 int KetThucGame=0; typedef struct
}Point; char KLEFTu, KRIGHTw, KUPr, KDOWN, PAUSEY; int KL=0, KR=0, KU=0, KD=0, P=0;
Point ThucAn; int len; int head,tail; int score=0; int level=1; int speed00; int DiemTangLevel; int HuongDi=2; typedef struct
{ int xbutton; int ybutton; char *name; int statusbutton;
}Button; void VarButton(Button &B,char *s,int x,int y)
{ textbackground(15); gotoxy(B.xbutton,B.ybutton); textcolor(LIGHTRED); cprintf("%s",B.name); textbackground(BLACK);
{ textbackground(15); gotoxy(B.xbutton,B.ybutton); textcolor(LIGHTGRAY); cprintf("%s",B.name);
} int ClickButton(Button B, int xchuot, int ychuot)
{ if(xchuot>=(B.xbutton-1)*8&&xchuot