1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thực tập cơ bản mô phỏng trò chơi bắn máy bay

22 389 1

Đ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 22
Dung lượng 123,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thực tập cơ bản mô phỏng trò chơi bắn máy bay

Trang 2

LỜI NểI ĐẦU

Trong bối cảnh công nghệ thông tin ngày càng phát triển, việc sửdụng rộng rãi máy tính không chỉ bó hẹp trong viện nghiên cứu, cáctrờng đại học, các trung tâm máy tính mà còn mở rộng ra cơ quan, xínghiệp, nhà máy Song song với quá trình phát triển trên, việc giảngdạy tin học trong các trờng đại học, trung học và một bớc trong các tr-ờng phổ thông cũng đợc đẩy mạnh đi đôi với việc tăng cờng trangthiết bị máy vi tính

Cùng với việc sáng tạo ra công cụ mới là máy tính điện tử, con

ng-ời cũng tâp trung trí tuệ từng bớc xây dựng ngành khoa học tơng ứng

để đáp ứng những yêu cầu khai thác tài nguyên thông tin

Để đảm bảo đợc việc học tập tốt Mỗi học sinh, sinh viên đềuphải nỗ lực học tập và rèn luyện Không những học tập tại lớp do thầy côgiáo hớng dẫn giảng dạy, và truyền đạt những gì cần thiết cho việchọc tập Chúng ta cần tìm hiểu thêm về các bài tập liên quan đếnkiến thức đã đợc học, để hiểu rõ hơn về kiến thức mà mình đã học

đợc ở trên lớp cũng nh là ở ngoài xã hội Do đó việc tự học của học sinhsinh viên là một điều rất quan trọng bởi vì ở trên lớp các thầy cô sẽkhông có đủ thời gian để giảng dạy, truyền đạt hết tất cả các kiếnthức cho chúng ta Nếu chúng ta chỉ học các kiến thức ở trên lớp màkhông tìm hiểu thêm ở bên ngoài thì sẽ không đủ cho việc học tậpcủa chúng ta ngay lúc đó cũng nh học tập sau này Để có thể đạt

đựơc kết quả tốt trong học tập thì chúng ta phải làm bài tập thậtnhiều, để có phần nào cha hiểu có thể hỏi các thầy cô, khi đó ta sẽ cóthêm một số kiến thức mới mà ta vẫn còn cha biết

Trang 3

Em rất chân thành cảm ơn các thầy cô đã giao cho em đề tài này Nó giúp em hiểu thêm rất nhiều về phần lập trình đồ hoạ trong

C, phần mà em vẫn cha đợc học ở trên lớp Nhất là trong việc lập trình các trò chơi giải trí

Em rất cảm ơn cô giáo Lê Thị Hờng, cô giáo Hà Thị Bích Ngọc, thầy giáo Tô Hải Thiên Các thầy, cô đã hớng dẫn em tận tình và chi tiết để có thể giúp em hoàn thành đề tài mà các thầy cô đã giao cho

MỤC LỤC

Lời núi đầu 2

NỘI DUNG 5

Tổng quan về bài toán 5

Chơng I : Tổng quan về bài toán 5

1 Bài toán : Mô phỏng trò chơi bắn máy bay 5

2 Yêu cầu của bài toán : 5

3 Phạm vi giải quyết 5

4 Khó khăn 6

Chơng II : Phân tích và giải thuật 7

1 Hớng giải quyết : 7

2 Giải thuật của các chức năng chính trong chơng trình : 7

Chơng III : Cấu trúc chơng trình 11

1.Cấu trúc chơng trình theo sơ đồ khối : 11

2 Một số hàm, thủ tục, và biến quan trọng 12

3 Các unit chính 12

4 Mã chơng trình : 12

5 Hớng giải quyết 25

6.Kết luận 25

Trang 4

Chơng I : Tổng quan về bài toán

1 Bài toán : Mô phỏng trò chơi bắn máy bay.

2 Yêu cầu của bài toán :

- Vẽ bầu trời có đầy sao

- Vẽ bom, mỏy bay

- Vẽ bệ súng và nòng súng theo toạ độ tâm

- Nòng súng di chuyển bằng 2 phím left (ỗ) và phím right (ố)

- Máy bay xuất hiện ngẫu nhiên từng tốp từ 3à5 chiếc

- Máy bay sẽ thả bom

- Đạn bắn theo hớng của bệ súng, và khi có lệnh bắn bằng phímSPACE thi đạn sẽ bắn ra khỏi lòng súng

- Khi máy bay và bom bị trúng đạn thì sẽ nổ

Trang 5

-Mỗi lần chơi sẽ có 100HP

- Sau khi chơi hết số HP thì sẽ hiện ra số điểm mà ngời chơi

đạt đợc.(Cách tính điểm : số máy bay bị bắn trúng * số điểmcủa mỗi máy bay đẫ đợc định sẵn +số bom bị bắn chúng *số

điểm mỗi quả bom)

-Khi HP<100 nếu bắn trỳng một mỏy bay thỡ sẽ được cộng thờm 5HP

đợc bài toán khó này

4 Khó khăn.

-Trong quá trình học, sinh viên không đợc học phần đồ họa trong

C, chỉ đợc học phần căn bản của C mà thôi, vì vậy việc vẽ và làm chomáy bay, bom, nòng súng, đạn di chuyển đợc là một việc vô cùng khó -Chúng ta phải đọc sách thêm để có thể hoàn thành tốt bài toán

đựơc giao

Trang 6

Chơng II : Phân tích và giải thuật

1 Hớng giải quyết :

Để có thể giải quyết đợc bài toán trước tiên ta khởi tạo chế độ đồhoạ để chơng trình có thể thực hiên các lệnh vẽ Sau đó ta sử dụngcác lệnh line, putpixel, fillellpse để vẽ bầu trời, máy bay, đạn, bệ súng.(Lu ý là dùng mảng để lu trữ đạn và máy bay, chú ý đền góc và vậntốc.)

Dùng lệnh outtextxy để đa ra màn hình các thông tin về trò chơi nh

số điểm đạt đợc, tên ngời chơi

Trang 7

2 Gi¶i thuËt cña c¸c chøc n¨ng chÝnh trong ch¬ng tr×nh :

-Đầu tiên là khởi tạo chế độ đồ họa

printf("\n KHONG THAY TRINH DIEU KHIEN DO HOA!");

printf("\n CHUONG TRINH KHONG THE THUC HIEN! ");

-Dùng các hàm về đồ họa để vẽ máy bay, súng , bom, nền trời …

void drawFighter(int x, int y)

{

setcolor(WHITE);

moveto(x,y);

linerel(-36,0); linerel(0,-7); linerel(-6,-7); linerel(6,0);

linerel(12,7); linerel(12,0); linerel(12,7);

Trang 9

void destroy() //TAO CAC VU NO TREN MAN HINH

if(rate[i]>2) floodfill(xdestroy[i],ydestroy[i],RED);

Trang 10

} }

Trang 11

Đạn = Máy BayĐạn = Bom

Nổ

Điểm

Quit Game

BayTrue

False

Trang 12

2 Mét sè hµm, thñ tôc vµ biÕn quan träng.

int xmax,ymax,HP=100,SCORE=0;

int xFighter[5],yFighter[5],bombFighter1[5],bombFighter2[5]; int booleanBomb[9],xBomb[9],yBomb[9];

Trang 13

int xFighter[5],yFighter[5],bombFighter1[5],bombFighter2[5]; int booleanBomb[9],xBomb[9],yBomb[9];

{

closegraph();

Trang 14

printf("\n \t\t _GAME BAN MAY BAY ");

printf("\n \t\tLE QUOC DUYET.\n");

Trang 15

bombFighter1[i]=random(xmax/2); bombFighter2[i]=random(xmax/2); }

for(i=1; i<=8; i++) booleanBomb[i]=0;

for(i=1; i<=10; i++) booleanAmmo[i]=0;

for(i=1; i<=20; i++) rate[i]=0;

for(i=1; i<=200; i++)

{

xStar[i]=random(xmax);

yStar[i]=random(ymax);

colorStar[i]=random(getmaxcolor()); }

return 0;

} }

// NHOM HAM DIEU KHIEN DO HOA _

void drawFighter(int x, int y)

{

setcolor(WHITE);

moveto(x,y);

linerel(-36,0); linerel(0,-7); linerel(-6,-7); linerel(6,0);

linerel(12,7); linerel(12,0); linerel(12,7);

Trang 16

void drawBomb(int x, int y)

Trang 17

} }

void controlBomb() //DIEU KHIEN BOM

xdestroy[j]=xBomb[i];

ydestroy[j]=yBomb[i];

Trang 18

HP-=10;

break;

} booleanBomb[i]=0; }

} }

xAmmo[i]=xmax/2-for(j=1; j<=4; j++)

{ if((yAmmo[i]<=yFighter[j])&&(yAmmo[i]>=yFighter[j]- 14))

42<xAmmo[i])&&(xFighter[j]>xAmmo[i]))

if((xFighter[j]-{

for(k=1; k<=20; k++)

Trang 19

if(rate[k]==0) {

break;

} }

for(j=1; j<=8; j++)

if(booleanBomb[j]) if((yAmmo[i]<=yBomb[j])&&(yAmmo[i]>=yBomb[j]-18))

if((xAmmo[i]<=xBomb[j]

+3)&&(xAmmo[i]>=xBomb[i]-3))

{

for(k=1; k<=20; k++) if(rate[k]==0)

{ rate[k]=10;

xdestroy[k]=xBomb[j]; ydestroy[k]=yBomb[j]-9;

Trang 20

SCORE=SCORE+5; booleanBomb[j]=0;

break;

} booleanAmmo[i]=0;

break;

} if((xAmmo[i]<0)||(xAmmo[i]>640)||(yAmmo[i]<0))

booleanAmmo[i]=0;

} }

drawGun(xGun,yGun);

for(i=1; i<=5; i++)

Trang 21

if(booleanAmmo[i]) drawAmmo(xAmmo[i],yAmmo[i]);

if(HP<=0)

{

} }

Một thiếu sút nữa là thiếu về phần õm thanh

Do vậy, hớng phát triển chính của chơng trình là cải thiện

đợc các nhợc điểm trên có thể có đợc một chơng trình hoànthiện

Trang 22

6.Kết luận

Qua đợt thực tập này em đã củng cố đợc rất nhiều kiến thức

đã đợc học trong nhà trờng cũng nh vận dụng những kiến thức

đó vào đề tài thực tập.

Từ bài thực tập này, chúng ta có thể coi đây là một bớc cơ bản, đặt nền móng cho các bài thực tập khác với mức độ kiến thức cao hơn.

Vĩnh Yên, ngày 9 tháng 2 năm 2012

Sinh viên

Lê Quốc Duyệt

Ngày đăng: 24/11/2015, 11:06

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w