Lập trình trò chơi bắn máy bay viết trên ngôn ngữ Turbo C - pdf 18

Download miễn phí Đề tài Lập trình trò chơi bắn máy bay viết trên ngôn ngữ Turbo C



MỤC LỤC
 
 
Lời nói đầu . .3
 
Phần I: Phân tích bài toán .4
1. Bài toán .4
2. Phân tích bài toán .4
 
Phần II: Phân rã chức năng . .6
1. Mô tả trò chơi .6
2. Sơ đồ modul hoá .6
3. Phân rã chức năng . 7
 
Phần III: Tổ chức dữ liệu cho chương trình . 9
1. Các biến toàn cục . 9
2. Các biến cục bộ 10
 
Phần IV: Thiết kế giải thuật .11
1. Giải thuật vẽ máy bay . 11
a. Tư tưởng của giải thuật . 11
b. Giải thuật 11
2. Giải thuật vẽ nòng súng .11
a. Tư tưởng của giải thuật 11
b. Lưu đồ .12
c. Giải thuật . 12
3. Giải thuật vẽ viên đạn 13
a. Tư tưởng của giải thuật 13
b. Giải thuật 13 4. Giải thuật kiểm tra xem đạn có trúng máy bay không? .13
a. Tư tưởng của giải thuật 13
b. Lưu đồ .13
c. Giải thuật .14
5. Giải thuật vẽ đường đi của viên đạn . 15
a. Tư tưởng của giải thuật 15
b. Giải thuật . 15
6. Giải thuật làm nổ máy bay . 16
a. Tư tưởng của giải thuật 16
b. Lưu đồ .16
c. Giải thuật . 18
Phần V: Một số giao diện của chương trình . .19
1. Giao diện của trò chơi .19
2. Màn hình thiết lập thông số cho chương trình .19
3. Hộp thoại khi thoát chương trình .20
 
Phần VI: Mã nguồn của chương trình 21
 
 
 
 
 
 
 
 
 
 
 
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

thông báo cùng với vẽ bệ súng và dán ảnh nòng súng để tạo màn hinh chơi game.
+ Kiểm tra đạn có bắn trúng máy bay.
Modul này sẽ kiểm tra tại vị trí hiện thời của viên đạn và của máy bay thì viên đạn có trúng máy bay không? Nếu trúng thì sẽ trả về giá trị 1 và gọi tới modul làm nổ máy bay sau đó sẽ nhảy tới đoạn chương trình xử lý phím. Nếu không trúng thì sẽ trả về giá trị 0.
+ Làm máy bay nổ
Tạo hình ảnh và âm thanh khi nổ máy bay.
+ Chơi Lại.
Là modul cho phép người chơi có thể chơi lại bài mình đang chơi.
+ Đặt thông số cho chương trình:
Khi người chơi ấn phím quy định nào đó thì chức năng này sẽ được gọi. Modul này sẽ gọi một số chương trình con khác như: chương trình vẽ hộp tuỳ chọn, chương trình tạo nhập số liệu từ bàn phím và trả về giá trị đó . Người chơi sẽ thay đổi các tham số chương trình trên hộp tuỳ chọn option. Những thay đổi này sẽ được ghi vào các biến toàn cục để các modul khác đều có thẻ sử dụng được.
+ Thông báo kết quả:
Modul này sẽ sử dụng kết quả xử lý của 1 số modul như: cộng điểm, đếm máy bay để đưa kết quả của người chơi ra màn hình. Modul này sẽ được gọi khi người chơi chọn mục ngừng chơi, hay người chơi đã thua hay đã thắng.
Phần III: Tổ Chức Dữ Liệu Cho Chương Trình
Để lưu trữ dữ liêu, trong chương trình có sử dụng cả biến toàn cục và biến cục bộ, ở một số modul có sử dụng mảng 1 chiều và mảng 2 chiều.
1. Các biến toàn cục:
+ goc_lech: là biến có kiểu số thực có chức năng lưu giữ giá trị của góc lệch (tính bằng độ) của nòng súng so với phương ngang 0x
+ int xs1,ys1,xs2,ys2, xs3,ys3, xs4,ys4 ;
Là tám biến kiểu nguyên giữ giá trị toạ độ của 4 điểm của nòng súng. Trừ 2 biến xs1,ys1 là đựơc tính toán theo vị trí đặt bệ súng và 2 biến này không thay đổi trong chương trình, ngược lại giá trị của 6 biến còn lại thay đổi liên tục trong chương trình.
+ int danbay;
Cho biết trạng thái của viên đạn. Nếu viên đạn vẫn ở trên màn hình thì nó được gán giá trị=1 ngược lại nó luôn giữ giá trị =0;
+ int xd,yd;
Cho biết tọa độ trên trái của viên đạn khi bay, giá trị của 2 biến này thường xuyên thay đổi.
+ int xmb,ymb;
Là hai biến nguyên lưu trữ toạ độ trên trái của máy bay. Toạ độ này thường xuyên thay đổi trong chương trình.
+ int dmb, rmb;
Chiều dài và rộng của máy bay. Giá trị của hai biến này là không thay đổi trong toàn bộ chương trình, nhưng chúng được sử dụng trong nhiều modul khác nhau nên nó phải là biến toàn cục.
+ int ban,trung,demmb;
Là ba biến nguyên để đếm tổng số lần bắn, số lần bắn trúng, và tổng số lần máy bay xuất hiện, giá trị ban đầu của chúng đều bằng 0.
+ int rtime,goctang,dokho;
Là ba biến nguyên trong đó rtime là số thời gian (tính bằng phút) của 1 bài, goctang là giá trị tính bằng độ để cho biết mỗi lần di chuyển nòng súng nó sẽ tăng hay giảm bao nhiêu độ,
dokho lưu trư giá trị để quy định mức độ khó của trò chơi.(Khó nhất là dokho = 1), dokho chính là số giây máy bay hiện trên màn hình.
+ int ytach;
Tọa độ đường phân cách giữa vùng Game và vùng Thông báo, giá trị ytach còn được dùng trong các chương trình khác như ve_be_sung
+ int x1box,y1box,x2box,y2box;
Toạ độ của hộp thoại Exitbox để xem người chơi có muốn thoát khỏi chương trình không
+ char *cban,*ctrung,*cdemmb, *tgian;
Là các biến trỏ có tác dụng lưu trữ một xâu ký tự
+ char *pmb, *pdan, *pmsg;
Ba Biến trỏ lưu hình ảnh của máy bay , của đạn và của hộp thoại exit. Những biến này yêu cầu phải tồn tại xuyên suốt chương trình, chỉ khi kết thúc trò chơi nó mới được giải phóng.
+ char *ptam;
Là biến trỏ để lưu trữ những hình ảnh mà dùng xong có thể giải phóng khỏi bộ nhớ luôn.
2. Các biến cục bộ
Các chương trình con ngoài việc sử dụng các biến toàn cục thì chương trình nào cũng sử dụng một vài biết cục bộ phục vụ cho riêng nó như các biến đếm, các biến trung gian.
Phần IV: Thiết Kế Giải Thuật
1. Giải thuật vẽ máy bay.
a. Tư tưởng của giải thuật:
Giả sử ta vẽ máy bay với n điểm, ta lưu các điểm của máy bay vào hai mảng một chiều. Trong đó có một mảng chứa hoành độ x[n] và một mảng chứa tung độ y[n] của từng điểm đó. Như vậy nếu một điểm thứ m trong dãy các điểm của máy bay sẽ có toạ độ (x[m],y[m]).
Dùng một vòng lặp để nối lần lượt các điểm này với nhạu: điểm[1] nối với điểm[2], điểm[2] nối điểm[3], ….., điểm[n-1] nối điểm[n] . Kết thúc vòng lặp ta sẽ nối nốt điểm[n] với điểm[1].
Dùng hàm đồ hoạ để tô màu cho máy bay.
b. Giải thuật:
setcolor(màuvẽ);
for (i=1;i< n;i++)
Line(x, y, x[i+1], y[y+1]);
Line (x[1], y[1], x[1], y[1]);
2. Giải thuật vẽ nòng súng.
a. Tư tưởng của giải thuật.
+ Ta sẽ vẽ một nòng súng có hình chữ nhật với 4 điểm (x1,y1), (x2,y2), (x3,y3), (x4,y4). Trong chương trình nòng súng này sẽ quay xung quanh điểm (x1,y1).
+ Những dữ kiện đã biết:
Điểm (x1,y1) đã biết trước (tính được do nó nằm trong bệ súng) và nó là cố định, không đổi.
Chiều cao(cao_sung) và chiều rộng(rong_sung) của nòng súng là một hằng số.
Góc lệch à là góc tạo bởi véc tơ đi qua (x1,y1) (x2,y2) với trục 0x(phương ngang).
+ Yêu cầu đặt ra ở đây là tính được toạ độ của 3 điểm còn lại (x2,y2); (x3,y3); ( x4,y4).
+ Phương Pháp: ta sẽ dùng định lý Pitago trong tam giác để tính.
+ Tính (x2,y2):
x2=x1+AB ;
Û x2=x1+(dài*cos(à) );
y2=y1-AC ;
Û y2=y1-(dài*sin(à) );
+ Tính (x3,y3):
Tương tự cách tính (x2,y2) ở trên
ta sẽ tính được x3 và y3:
x3=x1+(rộng*cos(90-à) );
y3=y1+ (rộng*sin(90-à) );
+ Tính (x4,y4):
x4 = x2+(x3-x1);
y4= y2+ (y3-y1);
+ Vẽ:
Dùng một mảng 10 phần tử: m[ ] để lưu lần lượt toạ độ của các đỉnh sau đó dùng thủ tục drawpoly(int n, int far *s) để vẽ nòng súng, và dùng thủ tục fillpoly để tô màu cho nòng súng.
Chú ý: Trong chương trình phải đổi góc à ra đơn vị radian.
b. Lưu đồ.
begin
end
Cao,dài, à, x1, y1
x2=x1+(dài*cos(à) ); y2=y1-(dài*sin(à) ); x3=x1+(rộng*cos(90-à) ); y3=y1+ (rộng*sin(90-à) ); x4 = x2+(x3-x1); y4= y2+ (y3-y1);
setcolor(màuvẽ); m[0]=x1; m[1]=y1; m[2]=x2; m[3]=y2; m[4]=x4;
m[5]=y4; m[6]=x3; m[7]=y3; m[8]=x1 ; m[9]=y1;
drawpoly(5,m); setfillstyle(1,màutô); fillpoly(4,m);
c. Giải thuật:
setcolor(màuvẽ);
int m[9];
m[0]=x1; m[1]=y1; m[2]=x2; m[3]=y2;
m[4]=x4; m[5]=y4; m[6]=x3; m[7]=y3; m[8]=x1 ; m[9]=y1;
drawpoly(5,m);
setfillstyle(1,màutô);
fillpoly(4,m);
3. Giải thuật vẽ viên đạn
a. Tư tưởng của giải thuật:
Viên đạn ở đây chỉ đơn giản là một hình tròn nhỏ bán kính r được tô màu. Do vậy để vẽ viên đạn đơn giản ta chỉ cần dùng thủ tục circle(int x,int y, int r) để vẽ 1 hình tròn sau đó dùng thủ tục floodfill(int x,int y,int màuviền) để tô màu cho viên đạn.
b. Giải thuật:
setcolor(màuvẽ);
circle(x,y,r);
setfillstyle(1,màutô);
floodfill(x,y,màuvẽ);
4. Giải thuật kiểm tra đạn có trúng máy bay không?
a. Tư tưởng của giải thuật:
+ Tại mỗi vị trí mới của viên đạn(xdan,ydan) ta sẽ kiểm tra xem tại đó viên đạn có trúng máy bay không. Nếu có thì sẽ trả về giá trị 1 còn không thì trả về giá trị 0.
*) Các dữ kiện đã biết:
Toạ độ hiện thời của viên đạn (xdan,ydan).
Chiều rộng của máy bay và chiều dài của máy bay (rộngmb,dà...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status