Khoa Công Nghệ Thông Tin LỚN họa máy tính Đề tài 6: Viết chương trình mô phỏng sự va đập của một trái bóng trên màn hình.... Lời nói đầuĐồ họa máy tính là một lĩnh vực của khoa học máy t
Trang 1Khoa Công Nghệ Thông Tin
LỚN
họa máy tính
Đề tài 6: Viết chương trình mô phỏng sự va đập của một
trái bóng trên màn hình
Giáo viên hướng dẫn:Nguyễn Thị Cẩm Ngoan Sinh viên thực hiện:
1 Ngô Văn Linh
2 Chu Văn Thân
3 Ngô Thế Ánh
Hà Nội 2-2013
Trang 2Lời nói đầu
Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên
cứu về cơ sở toán học, các thuật toán cũng như các kĩ thuật cho phép
tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính Đồ họa
máy tính liên quan ít nhiều đến một số lĩnh vực như đại số, hình học
giải tích và hình học họa hình, quang học…… và kĩ thuật máy tính và
đặc biệt là chế tạo phần cứng ( các loại màn hình, các thiết bị nhập
xuất, các vi mạch đồ họa)
Nghiên cứu các phép biến đổi hình học trong không gian thực
hai chiều là một trong những nội dung quan trọng
Qua thời gian tìm hiểu nhóm quyết định trọn đề tài Viết chương
trình mô phỏng sự va đập của một trái bóng trên màn hình (Nếu gặp
đường biên màn hình thì đổi hướng chuyển động theo định luật phản
xạ ánh sang) nhằm mô phỏng cơ chế va đập của quả bóng trong không
gian thực hai chiều
Do quá trình tìm hiểu còn nhiều thiếu sót nên chương trình còn
nhiều hạn chế, nhóm thực hiện rất mong nhận được ý kiến đóng góp
từ phía cô giáo và các bạn để phần mềm được hoàn thiện hơn
Hà Nội, ngày 05 tháng 02 năm 2013
Trang 3MỤC LỤC
PHẦN 1: KHẢO SÁT 4
1 Mục đích nghiên cứu 4
2 Đối tượng nghiên cứu 4
3 Khảo sát 4
4 Hướng giải quyết 4
PHẦN 2: PHÂN TÍCH 5
1 Yêu cầu đề tài 5
2 Các hàm sử dụng 5
2.1 Hàm vẽ trái bóng 5
2.2 Hàm khởi tạo đồ họa 5
2.3 Chương trình chính 6
PHẦN 3: CÀI ĐẶT CHƯƠNG TRÌNH 8
1 Giao diện chương trình 8
2 Cài đặt chương trình 8
3 Demo chương trình 11
Trang 4PHẦN 1: KHẢO SÁT
1 Mục đích nghiên cứu
Tạo ra những quả bóng có thể di chuyển và có sự va đập theo
định luật phản xạ ánh sáng Giúp màn hình chờ máy tính có thêm một
tính năng, người dùng có thêm nhiều sự lựa chọn hơn
2 Đối tượng nghiên cứu
Hướng đến tất cả mọi người sử dụng máy tính, đặc biệt là
những người tuổi nhỏ đang tuổi học hỏi Giúp họ thấy thú vị và
hứng thú khi thấy sự va đập trong thế giới ảo, khiến họ tiềm hiểu
về chủ đề này
3 Khảo sát
Qua khảo sát trên các máy tính sử dụng hệ điều hành Windows,
trên win xp thì không có hiệu ứng màn hình chờ quả bóng có sự va
đập trên màng hình, còn win 7,8 thì cũng đã có nhưng xuất hiện nhiều
quả bóng và một quả không tồn tại mãi
Khảo sát cũng cho thấy trên hệ điều hành Windows 7,8 có hiệu
ứng sự va đập nhưng có sự xuất hiện của nhiều quả bóng Trên hai hệ
điều hành này còn có thêm hiệu ứng gió thổi nên sẽ không thấy sự ổn
định chuyển động của quả bóng
4 Hướng giải quyết
Khi máy không được sử dụng trong khoảng một thời gian mà
do người sử dụng quy định thì hiệu ứng của một quả bóng sẽ phát
huy tác dụng Nó là phần mềm tiết kiệm tài nguyên, điện cho máy
tính Một phần mềm gọn nhẹ giúp người sử dụng có những phút
thư giãn nhẹ nhàng
Trang 5PHẦN 2: PHÂN TÍCH
1 Yêu cầu đề tài
Viết chương trình mô phỏng sự va đập của một trái bóng
trên màn hình (Nếu gặp đường biên màn hình thì đổi
hướng chuyển động theo định luật phản xạ ánh sáng)
2 Các hàm sử dụng
2.1 Hàm vẽ trái bóng
void ve(int n) {
setcolor(n);
//setbkcolor(3);
//floodfill(x,y,n);
circle(x,y,r);
}
2.2 Hàm khởi tạo đồ họa
void khoitao()// ham khoi tao che do do hoa { int gd,gmode;
gd=DETECT;
initgraph(&gd,&gmode,"c:\\tc\\bgi");//goi ham khoi tao che do do hoa voi duong dan den tap tin BGI
int error;
error=graphresult();// lay ket qua cua thao tac khoi tao
if(error!=0) {
Trang 6cout<<"loi khi khoi tao do hoa\n";
getch();
exit(0);
} }
2.3 Chương trình chính
int main() {
khoitao();
x=0;y=0;r=40;dy=20;dx=20;
xx=40;yy=10;dxx=10;dyy=12;
do{
setcolor(12);
outtextxy(getmaxx()/2-100,80,"ket thuc khi nhan phim bat ki!");
outtextxy(getmaxx()/2-100,getmaxy()/2,"writing by nhom 6!");
ve(12);
delay(50);
ve(0);
y=y+dy;
x=x+dx;
xx+=dxx;yy+=dyy;
if(xx>=getmaxx()-100) dxx=-dxx;
if(yy>getmaxx()-100) dyy=-dyy;
if(xx<=0) dxx=-dxx;
if(yy<=0) dyy=-dyy;
if(y>=getmaxy()) dy=-dy;
Trang 7if(y<=0) dy=-dy;
if(x>=getmaxx()) dx=-dx;
if(x<=0) dx=-dx;
/* if(xx==x&&yy==y){
dx=-dx;
dxx=-dxx;
dyy=-dyy;
dy=-dy;
} */
}while(!kbhit());
getch();
closegraph();
return 0;
}
Trang 8PHẦN 3: CÀI ĐẶT CHƯƠNG TRÌNH
1 Giao diện chương trình
Thông qua menu chương trình chính để ta lựa chọn các thuật toán như các
phép biến hình cơ bản và các phép biến hình kết hợp…bằng cách nhấn các số từ
1→4 để lựa chọn Minh họa màn hình giao diện xuất hiện như sau:
Đây là giao diện để vẽ một đa giác n đỉnh.
Danh sách các thành viên trong nhóm
Sau đó người dùng quay lại menu chính bằng cách nhấn phím số 1 hoặc số
2 để lựa chọn các phép biến hình
2 Cài đặt chương trình
#include <graphics.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
int x,y,dx,dy,r,xx,yy,dxx,dyy;
void khoitao();
void ve(int);
int main()
{
khoitao();
x=0;y=0;r=40;dy=20;dx=20;
xx=40;yy=10;dxx=10;dyy=12;
do{
Trang 9outtextxy(getmaxx()/2-100,80,"ket thuc khi nhan phim bat ki!");
outtextxy(getmaxx()/2-100,getmaxy()/2,"nhom 6!");
ve(13);
delay(50);
ve(0);
y=y+dy;
x=x+dx;
xx+=dxx;yy+=dyy;
if(xx>=getmaxx()-100)
dxx=-dxx;
if(yy>getmaxx()-100)
dyy=-dyy;
if(xx<=0)
dxx=-dxx;
if(yy<=0)
dyy=-dyy;
if(y>=getmaxy())
dy=-dy;
if(y<=0)
dy=-dy;
if(x>=getmaxx())
dx=-dx;
if(x<=0)
dx=-dx;
/* if(xx==x&&yy==y){
dx=-dx;
dxx=-dxx;
dyy=-dyy;
Trang 10dy=-dy;
} */
}while(!kbhit());
getch();
closegraph();
return 0;
}
void khoitao()
{ int gd,gmode;
gd=DETECT;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
int error;
error=graphresult();
if(error!=0)
{
cout<<"loi khi khoi tao do hoa\n";
getch();
exit(0);
}
}
void ve(int n)
{
setcolor(n);
circle(x,y,r);
}
Trang 113 Demo chương trình
Trang 13TỰ ĐÁNH GIÁ
Ưu điểm : - Thiết thực dễ dàng sử dụng và nâng cấp
- Chiếm ít tài nguyên của máy
-Tiết kiệm điện khi máy không được sử dụng
Khuyết điểm : Còn thiếu 1 số chức năng.
Hướng phát triển : Trao đổi thông tin trên mạng.
KẾT LUẬN
Qua quá trình tìm hiểu và phân tích đề tài “Viết chương trình
mô phỏng sự va đập của một trái bóng trên màn hình (Nếu gặp đường
biên màn hình thì đổi hướng chuyển động theo định luật phản xạ ánh
sang).” chúng em đã hiểu được cách phân tích và thiết kế một phần
mềm Tuy nhiên do kiến thức còn hạn hẹp nên chúng em chưa thể
phân tích được sâu sắc hơn và đưa ra được một phần mềm hoàn chỉnh,
nhưng em mong rằng qua đề tài này các bạn có thể hiểu thêm về cách
mô phỏng sự va đập của một trái bóng trên màn hình