Lập trình trò chơi bắn máy bay

44 731 4
Lập trình trò chơi bắn máy bay

Đ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

Lập Trình Trò Chơi Bắn Máy Bay Mục lục Lời nói đầu Phần I: Phân tích toán.4 Bài toán Phân tích toán Phần II: Phân rã chức .6 Mô tả trò chơi Sơ đồ modul hoá Phân rã chức Phần III: Tổ chức liệu cho chơng trình Các biến toàn cục Các biến cục bộ10 Phần IV: Thiết kế giải thuật.11 Giải thuật vẽ máy bay 11 a T tởng giải thuật 11 b Giải thuật11 Giải thuật vẽ nòng súng.11 a T tởng giải thuật11 b Lu đồ 12 c Giải thuật.12 Giải thuật vẽ viên đạn13 a T tởng giải thuật13 b Giải thuật 13 Giải thuật kiểm tra xem đạn có trúng máy bay không?.13 a T tởng giải thuật13 b Lu đồ .13 c Giải thuật.14 Giải thuật vẽ đờng viên đạn 15 a T tởng giải thuật15 b Giải thuật.15 Giải thuật làm nổ máy bay.16 a T tởng giải thuật16 Lập Trình Trò Chơi Bắn Máy Bay b Lu đồ 16 c Giải thuật.18 Phần V: Một số giao diện chơng trình..19 Giao diện trò chơi.19 Màn hình thiết lập thông số cho chơng trình.19 Hộp thoại thoát chơng trình.20 Phần VI: Mã nguồn chơng trình21 Lập Trình Trò Chơi Bắn Máy Bay LờI NóI ĐầU Trong thời đại công nghệ thông tin ngày nay, tin học đợc áp dụng vào hầu hết ngành nghề, lĩnh vực nh kinh tế, văn hoá, xã hội Trong lĩnh vực giải trí công nghệ thông tin đợc ứng dụng mạnh mẽ hơn, Game lên với trò chơi đầy hấp dẫn nội dung, hình ảnh âm Qua năm học tập rèn luyện giảng đờng Khoa Công Nghệ Tin Học - Viện Đại Học Mở Hà Nội với dạy dỗ bảo tận tình thầy cô giáo khoa, em trang bị cho đợc số kiến thức định ngành công nghệ thông tin Những kiến thức hành trang giúp em đứng vững trơng đóng góp phần nhỏ bé trình tin học hoá công phát triển đất nớc Hiện em hoàn thành chơng trình học trờng khoa đề ra, đến lúc em phải đối mặt với thử thách mới, tập tốt nghiệp với đề tài Lập trình trò chơi bắn máy bay viết ngôn ngữ Turbo C mà khoa giao cho Với hớng dẫn thầy giáo Thạc Sỹ Lơng Cao Đông với kiến thức nỗ lực thân, em hoàn thành tập tốt nghiệp Em xin trân trọng cảm ơn thầy cô Khoa Công Nghệ Tin Học Viện Đại Học Mở Hà Nội, tất bạn bè ngời giúp đỡ, bảo năm qua, đặc biệt em chân thành cảm ơn thầy giáo Lơng Cao Đông quan tâm tới em trình học tập, rèn luyện trờng giúp đỡ, bảo em trình làm tập tốt nghiệp Tuy nhiên hạn chế thời gian bớc ban đầu nên chơng trình em tránh khỏi thiếu sót mặt hạn chế Em mong đợc đóng góp ý kiến thầy cô giáo toàn thể ngời Em xin trân trọng cảm ơn ! Lập Trình Trò Chơi Bắn Máy Bay Phần I: Phân Tích Bài Toán 1.BàiToán: Đề bài: Lập trình trò chơi bắn máy bay Yêucầu: + Các máy bay xuất ngẫu nhiên toạ độ ngẫu nhiên đỉnh hình + Dùng phím -> 1/2 số máy bay xuất + Phím ESC để kết thúc trò chơi + Có phím nóng cho phép chơi lại, thoát, khai báo tham số cho trò chơi + Thông báo kết tỷ lệ bắn trúng máy bay Phân tích toán Để xây dựng đợc chơng trình này, ta phân chia toán thành modul nhỏ (có thể chia theo chức chơng trình), tìm giải thuật cho modul Từ yêu cầu toán đa số modul ban đầu nh: + Vẽ máy bay + Vẽ đạn + Vẽ súng + Chuyển động nòng súng + Kiểm tra va chạm + Xử lý bắn đạn + Xử lý kết thúc trò chơi + Thông báo kết Trong modul có modul khác, để giải đợc yêu cầu ta cần tổ chức liệu cho modul viết đợc giải thuật cho modul, phải biết cách sử dụng số phơng pháp: + Sử dụng số hàm, thủ tục th viện đồ hoạ graphics.h nh: thủ tục khởi tạo đồ hoạ, vẽ hình chữ nhật, vẽ đờng thẳng, tô màu, đặt màu, cắt dán ảnh để vẽ giao diện chơng trình + Dùng vòng lặp để bắt phím + Sử dụng định lý Pitago tam giác để tính toạ độ điểm + Sử dụng phơng trình đờng thẳng để vẽ đờng chuyển động đạn + Lấy xử lý thời gian hệ thống + Sử dụng phơng pháp cắt dán ảnh để vẽ đạn máy bay Lập Trình Trò Chơi Bắn Máy Bay Sau xây dựng đợc giải thuật cho modul bắt tay vào việc viết mã cho chơng trình tơng ứng với modul Kết nối, xử lý chơng trình xử lý tình để có đợc chơng trình hoàn thiện Lập Trình Trò Chơi Bắn Máy Bay Phần II: Phân Rã Chức Năng Mô tả trò chơi Trong trò chơi máy bay xuất ngẫu nhiên hình Ngời chơi dùng phím quy định để chơi trò này, lần tiêu diệt máy bay đợc tính điểm, bắn trợt không đợc điểm nhng không bị trừ điểm (vì trò chơi vào thời gian chơi không vào số đạn bắn để qua bài) Khi bắn đạn đạn trúng máy bay làm nổ báy bay phát âm Trong chơi ngời chơi đặt lại thông số cho chơng trình nh: + Tốc độ di chuyển nòng súng + Độ khó trò chơi (Thực chất quy định thời gian máy bay biến mất) + Thời gian kết thúc chơi Và ngời chơi bắt đầu chơi hay ngừng chơi phím nóng đợc hớng dẫn bên dới hình Nếu ngời chơi qua đợc sau khó trớc (máy bay biến nhanh trớc đó) Trong chơi có số cho phép ngời chơi biết bắn lần, đợc điểm, máy bay xuất lần thời gian lại chơi Khi ngời chơi chiến thắng hay thất bại tức kết thúc trò chơi có bảng tổng kết thành tích ngời đạt đợc qua tất chơi Sơ đồ modul hoá (trang bên) Lập Trình Trò Chơi Bắn Máy Bay Trò Bắn Máy Bay Khởi tạo ban đầu Vẽ giao diện Vẽ Vẽ khung khung Vẽ bệ chơi thông súng Game báo Kiểm tra chơi tiếp / thoát Vẽ lại nòng súng Giới thiệu Vẽ nòng súng Xử lý chương trình Xử lý phím Kiểm tra bắn trúng Xử lý qua Xử lý bắn trúng Nổ máy bay Đếm thời gian Kiểm tra bắn Vẽ lại Kiểm bệ súng tra chơi lại Tăng điểm Thông báo kết Vẽ đư ờng đạn đếm máy bay Vẽ lại máy bay Kiểm soát chơi Thông báo chơi Xử lý qua Vẽ máy bay Sơ Đồ Modul Hoá Phân rã chức Để đáp ứng đợc yêu cầu trò chơi đáp ứng đợc chức toán ta phân chia thành số mudul sau: Lập Trình Trò Chơi Bắn Máy Bay + Khởi tạo ban đầu: Mo dul làm nhiệm vụ khởi tạo biến tham số ban đầu cho chơng trình + Vẽ máy bay: Modul thực chức vẽ máy bay lên hình, lu hình ảnh máy bay vào biến trỏ (pmb) biến toàn cục sau xoá hình Modul đợc gọi lần chơng trình + Vẽ đạn: Thực chức vẽ viên đạn lu hình ảnh viên đạn vào biến trỏ toàn cục (pdan), sau xoá hình + Vẽ đờng đạn: Tính toán toạ độ viên đạn đờng chuyển động sử dụng biến trỏ pdan để vẽ hình ảnh đạn chuyển động + Vẽ nòng súng Chức sử dụng số tham số có sẵn với công thức toán học để tính toạ độ nòng súng vẽ nòng súng, sử dụng tham số truyền vào màu tô để tô màu cho nòng súng + Vẽ giao diện: Gọi tới chức vẽ khung chơi vẽ khung thông báo với vẽ bệ súng dán ảnh nòng súng để tạo hinh chơi game + Kiểm tra đạn có bắn trúng máy bay Modul kiểm tra vị trí thời viên đạn máy bay viên đạn có trúng máy bay không? Nếu trúng trả giá trị gọi tới modul làm nổ máy bay sau nhảy tới đoạn chơng trình xử lý phím Nếu không trúng trả giá trị + Làm máy bay nổ Tạo hình ảnh âm nổ máy bay + Chơi Lại Là modul cho phép ngời chơi chơi lại chơi + Đặt thông số cho chơng trình: Khi ngời chơi ấn phím quy định chức đợc gọi Modul gọi số chơng trình 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 trả giá trị Ngời chơi thay đổi tham số chơng trình hộp tuỳ chọn option Những thay đổi đợc ghi vào biến toàn cục để modul khác có thẻ sử dụng đợc + Thông báo kết quả: Modul sử dụng kết xử lý số modul nh: cộng điểm, đếm máy bay để đa kết ngời chơi hình Modul đợc gọi ngời chơi chọn mục ngừng chơi, hay ngời chơi thua thắng Lập Trình Trò Chơi Bắn Máy Bay Phần III: Tổ Chức Dữ Liệu Cho Chơng Trình Để lu trữ liêu, chơng trình có sử dụng biến toàn cục biến cục bộ, số modul có sử dụng mảng chiều mảng chiều Các biến toàn cục: + goc_lech: biến có kiểu số thực có chức lu giữ giá trị góc lệch (tính độ) 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ạ độ điểm nòng súng Trừ biến xs1,ys1 đựơc tính toán theo vị trí đặt bệ súng biến không thay đổi chơng trình, ngợc lại giá trị biến lại thay đổi liên tục chơng trình + int danbay; Cho biết trạng thái viên đạn Nếu viên đạn hình đợc gán giá trị=1 ngợc lại giữ giá trị =0; + int xd,yd; Cho biết tọa độ trái viên đạn bay, giá trị biến thờng xuyên thay đổi + int xmb,ymb; Là hai biến nguyên lu trữ toạ độ trái máy bay Toạ độ thờng xuyên thay đổi chơng trình + int dmb, rmb; Chiều dài rộng máy bay Giá trị hai biến không thay đổi toàn chơng trình, nhng chúng đợc sử dụng nhiều modul khác nên phải 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, tổng số lần máy bay xuất hiện, giá trị ban đầu chúng + int rtime,goctang,dokho; Là ba biến nguyên rtime số thời gian (tính phút) bài, goctang giá trị tính độ biết lần di chuyển nòng súng tăng hay giảm độ, dokho lu tr giá trị để quy định mức độ khó trò chơi.(Khó dokho = 1), dokho số giây máy bay hình + int ytach; Tọa độ đờng phân cách vùng Game vùng Thông báo, giá trị ytach đợc dùng chơng trình khác nh ve_be_sung + int x1box,y1box,x2box,y2box; Toạ độ hộp thoại Exitbox để xem ngời chơi có muốn thoát khỏi chơng trình không Lập Trình Trò Chơi Bắn Máy Bay + char *cban,*ctrung,*cdemmb, *tgian; Là biến trỏ có tác dụng lu trữ xâu ký tự + char *pmb, *pdan, *pmsg; Ba Biến trỏ lu hình ảnh máy bay , đạn hộp thoại exit Những biến yêu cầu phải tồn xuyên suốt chơng trình, kết thúc trò chơi đợc giải phóng + char *ptam; Là biến trỏ để lu trữ hình ảnh mà dùng xong giải phóng khỏi nhớ Các biến cục Các chơng trình việc sử dụng biến toàn cục chơng trình sử dụng vài biết cục phục vụ cho riêng nh biến đếm, biến trung gian Phần IV: Thiết Kế Giải Thuật Lập Trình Trò Chơi Bắn Máy Bay xd=(yd-ys1)*(xs2-xs1)/(ys2-ys1)+xs1; putimage(xd,yd,pdan,XOR_PUT); delay(1); putimage(xd,yd,pdan,XOR_PUT); yd=yd-1;// cho vien dan bay ve phia tren mh if ( ban_trung(xmb,ymb) ) { if (tam!=demmb1) { tam=demmb1; putimage(xmb,ymb,pmb,XOR_PUT); //xoa mb no_may_bay(xmb,ymb); no=1; danbay=0; setcolor(9); itoa(trung1,ctrung,10); //Xoa outtextxy(xx,ytach+5,ctrung); trung1+=1; itoa(trung1,ctrung,10); setcolor(WHITE); // Viet lai outtextxy(xx,ytach+5,ctrung); } } if (xd=5) bar(xd+1,yd+1,xd+7,yd+7); else if(dokho>=3) bar(xb+1,yb+1,xb+7,yb+7); else // dokho=5) rectangle(xd,yd,xd+8,yd+8); else if(dokho>=3) rectangle(xb,yb,xb+8,yb+8); else //dokho=5) { pri=6; dokho=4; break; } else if(dokho>=3) { pri=4; dokho=2; break; } else //dokho if (kt=='K') kt='T'; break; case 9: //phim TAB if (kt=='T') kt='K'; else kt='T'; break; case 27: trave=0; goto TRA_VE; case 13: okbox=0; break; } //End of switch if(kt!=tam) { putimage(xb1,yb1,pmsg,XOR_PUT);//xoa free(pmsg); exitbox(dai,rong,kt);// ve lai m=imagesize(xb1,yb1,xb2,yb2); pmsg=(char*)malloc(m); getimage(xb1,yb1,xb2,yb2,pmsg); } } // End while(okbox) if (kt=='T') // neu Thoat trave=1; if(kt=='K') // neu Khong thoat trave=0; TRA_VE: putimage(xb1,yb1,pmsg,XOR_PUT);//xoa free(pmsg); if( (xmb+dmb>xb1) & (ymb+rmb>yb1) & (xmb[...]... line(xmb+35-ax[i],ymb+5-ay[i],xmb+35+ax[i],ymb+15+ay[i]); } } Phần V: Một số giao diện của chơng trình 1 Giao diện của trò chơi Lập Trình Trò Chơi Bắn Máy Bay 2 Màn hình thiết lập thông số cho chơng trình 3 Hộp thoại khi thoát chơng trình Lập Trình Trò Chơi Bắn Máy Bay Phần VI: Mã Nguồn Của Chơng Trình Lập Trình Trò Chơi Bắn Máy Bay #include #include #include #include #include... 3 Toạ độ điểm trên trái của máy bay (xmb, ymb) F viên đạn nằm bên trong máy bay + Một viên đạn bắn trúng máy bay nếu toạ độ của ydan>=ymb b Lu đồ T ydan=xmb)&(xdan=ymb)&(yd=10 end i =i +1 Lập Trình Trò Chơi Bắn Máy Bay c Giải thuật void no_may _bay( int xmb,int ymb) { int i, ax[12],ay[12],mau[15]; Lập Trình Trò Chơi Bắn Máy Bay sound(100);delay(200); sound(200);delay(100); nosound(); for(i=1 ;i0); 6 Giải thuật làm nổ máy bay Lập Trình Trò Chơi Bắn Máy Bay a T tởng... outtextxy(xx,ytach+20,cdemmb); } } if(danbay) // neu dan van tren mh { Lập Trình Trò Chơi Bắn Máy Bay xd=(yd-ys1)*(xs2-xs1)/(ys2-ys1)+xs1; putimage(xd,yd,pdan,XOR_PUT); delay(1); putimage(xd,yd,pdan,XOR_PUT); yd=yd-1;// cho vien dan bay ve phia tren mh if ( ban_trung(xmb,ymb) ) { if (tam!=demmb1) { tam=demmb1; putimage(xmb,ymb,pmb,XOR_PUT); //xoa mb no_may _bay( xmb,ymb); no=1; danbay=0; setcolor(9); itoa(trung1,ctrung,10);... ve_be_sung(void); void ve_nong_sung(int mau); void ve_dan(int mau); //ve va luu anh vien dan vao bien tro pdan int ban_trung(int xmb,int ymb); //kiem tra dan co trung may bay khong? void no_may _bay( int xmb,int ymb); Lập Trình Trò Chơi Bắn Máy Bay void thong_bao(char *s,int bai) ; //ve ra hop message box void run(void); //ket noi cac chuong trinh con va xu ly cac tinh huong void tongket(void); // Thong bao... if(!danbay) { yd=ys2; danbay=1; sound(7000); delay(60); nosound(); setcolor(9); itoa(ban1,cban,10); outtextxy(xx,ytach+35,cban); //xoa ban1+=1; itoa(ban1,cban,10); setcolor(WHITE); outtextxy(xx,ytach+35,cban); } break; case 61: // F3 (Option) option(350,180); break; case 68:case 27: case 107: //F10, ESC hoac ALT+F4 de thoat if (kt_thoat()) { tieptuc=0; ok=0; goto CONG_DON; Lập Trình Trò Chơi Bắn Máy Bay. .. /* */ void no_may _bay( int xmb,int ymb) { int i, ax[12],ay[12],mau[15]; sound(900);delay(100); sound(300);delay(100); nosound(); for(i=1 ;i

Ngày đăng: 23/06/2016, 16:59

Từ khóa liên quan

Mục lục

  • Mục lục

  • Lời nói đầu.....3

  • Phần I: Phân tích bài toán.4

  • LờI NóI ĐầU

    • Phần II: Phân Rã Chức Năng

    • Phần III: Tổ Chức Dữ Liệu Cho Chương Trình

    • Phần V: Một số giao diện của chương trình

Tài liệu cùng người dùng

Tài liệu liên quan