Tải bản đầy đủ (.docx) (13 trang)

ĐỀ TÀI VẼ HÌNH CON RỒNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (387.86 KB, 13 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN
MÔN ĐỒ HỌA MÁY TÍNH
ĐỀ TÀI: VẼ HÌNH CON RỒNG
Giảng viên hướng dẫn: ThS. Nguyễn Thị Cẩm Ngoan
Nhóm thực hiện: NHÓM 5
Thành viên:
Nguyễn Tuấn Anh - Mã sv: 0441360034
Nguyễn Trung Kiên - Mã sv: 0441260057
sv Hà Nội, tháng 6 năm 2011
Mục lục…………………………………………………………………………
I . Khảo sát………………………………………………………………………3
II . Phân tích, thiết kế ………………………………………………………… 4
III . Giao diện và Source Code………………………………………………….4
IV . Kết luận……………………………………………………………………11
V . Tài liệu tham khảo…………………………………………………………11
I . Khảo sát
1 . Định nghĩa.
Rồng là một loài vật xuất hiện trong thần thoại phương Đông và phương Tây. Trong cả
phương Đông lẫn phương Tây, hình ảnh loài rồng đều được biểu thị cho loài linh vật
huyền thoại có sức mạnh phi thường. Rồng ở các nước châu Á có nhiều khác biệt với rồng
ở các nước châu Âu và châu Mỹ. Tại một số nước châu Á, rồng có mình rắn, vảy cá, bờm sư
tử, sừng hươu và biết bay. Đa số các nước châu Á coi rồng là con vật linh thiêng trong khi
các nước châu Âu lại coi rồng là biểu tượng của cái ác và sự hung dữ.
2 . Khảo sát.
Đối với ngành công nghệ thông tin, đặc biệt là trong lĩnh vực lập trình đồ hoạ thì hình ảnh
con rồng được sử dụng nhiều. Bạn có thể thấy hình rồng xuất hiện trong một số game như:
Dragon Hunt ( game bắn rồng), Hiệp sĩ Rồng, Diablo , warcraft, Gunny, Heroes, …


Một số hình ảnh đồ hoạ hình rồng:
II . Phân tích, thiết kế
1 . Phần thân chương trình
1.1 Các hằng số
1.2 Hệ thống xử lý
2 . Phần đầu chương trình
2.1 Tạo chế độ đồ hoạ
2.2 Tạo 10 con rồng và gọi hàm
III. Giao diện và code
1 . Giao diện
2. Source Code (mã nguồn)
a. Phần thân
#include <stdlib.h>
#include "SGA.h"
#include <GODragon.h>

//****************************************************
//** Constants – Các hằng số
//****************************************************
struct GCellFrame
{
int mNextRow;
int mNextCol;
};
//////////////////////////////////////////////////////
static const GCellFrame GActionList[2][6]=
{
{ {0,1},{0,0},{0,0},{0,4},{0,5},{0,3} },
{ {1,1},{1,2},{1,0},{1,4},{1,5},{1,3} }
};

//****************************************************
//** Implementation – Hệ thống xử lý
//****************************************************
void GODragon::ClearObject(void)
{
mSurface=NULL;
mSound=NULL;
mCellRow=0;
mCellCol=0;
mPosX=0;
mPosY=0;
mVelX=0;
mVelY=0;
}
//////////////////////////////////////////////////////
void GODragon::OnMoveStart(void)
{
SGASoundPlay(mSound,SGAFALSE);
}
//////////////////////////////////////////////////////
void GODragon::OnMove(void)
{
// move to the next cell - Di chuyển đến các ngăn tiếp theo
const GCellFrame *list=&(GActionList[mCellRow][mCellCol]);
mCellRow=list->mNextRow;
mCellCol=list->mNextCol;
// Move to the next position – Di chuyển đến các vị trí tiếp theo
mPosX=(mPosX + mVelX);
mPosY=(mPosY + mVelY);
if(mPosX<=0 || mPosX>=640)

{ SetVelocity(-mVelX,mVelY); }
if(mPosY<=0 || mPosY>=480)
{ SetVelocity(mVelX,-mVelY); }
if(rand()%30==0)
{
SGASoundPlay(mSound,SGAFALSE);
}
if(SGAKeyboard(SGA_KEY_SPACE)==SGATRUE)
{ SetVelocity(-mVelX,mVelY); }
}
///////////////////////////////////////////////////////
void GODragon::OnDraw(void)
{
// Draw the mSurface – Vẽ bề mặt
SGASurfaceBlit(mSurface,mPosX,mPosY,mCellRow,mCellCol);
}
//////////////////////////////////////////////////////
GODragon::GODragon(void)
{ ClearObject(); }
//////////////////////////////////////////////////////
GODragon::~GODragon(void)
{ Destroy(); }
//////////////////////////////////////////////////////
bool GODragon::Create(int x,int y,int vx,int vy,int height)
{
Destroy();
// Load the surface – Tải bề mặt
mSurface=SGASurfaceLoad("GODragon.bmp",6*height,2*height,2,6);
if(mSurface==NULL)
{

// Unable to load surface
Destroy(); return false;
}
// Load the sound – Tải âm thanh
mSound=SGASoundLoad("GODragon.wav");
if(mSound==NULL)
{
//Unable to load the sound - Khong the tai am thanh
Destroy(); return false;
}
// Set the surface key - Thiet lap khoa be mat
SGASurfaceColorKey(mSurface,0xFFFFFF,0xFFFFFF);
// Set state of object - Thiet lap trang thai cua doi tuong
mPosX=x;
mPosY=y;
mVelX=vx;
mVelY=vy;
// Set Direction of object - Thiet lap huong doi tuong
if(mVelX>0)
{ mCellRow=1; mCellCol=3; }
else if(mVelX<0)
{ mCellRow=1; mCellCol=0; }
else if(mVelY==0)
{ mCellRow=0; mCellCol=0; }
else
{ mCellRow=0; mCellCol=3; }
return true;
}
//////////////////////////////////////////////////////
bool GODragon::Destroy(void)

{
if(mSurface!=NULL)
{
SGASurfaceUnload(mSurface);
mSurface=NULL;
}
if(mSound!=NULL)
{
SGASoundUnload(mSound);
mSound=NULL;
}
ClearObject();
return true;
}
////////////////////////////////////////////////////
bool GODragon::SetPosition(int x,int y)
{
mPosX=x; mPosY=y;
return true;
}
////////////////////////////////////////////////////
bool GODragon::SetVelocity(int vx,int vy)
{
mVelX=vx; mVelY=vy;
if(mVelX>0)
{ mCellRow=1; mCellCol=3; }
else if(mVelX<0)
{ mCellRow=1; mCellCol=0; }
else if(mVelY==0)
{ mCellRow=0; mCellCol=0; }

else
{ mCellRow=0; mCellCol=3; }
return true;
}
2. Phần đầu
#include <stdio.h>
#include <stdlib.h>
#include "SGA.h"
#include "GODragon.h"
///////////////////////////////////////////////
int main(int argn,const char *argv[])
{
if(SGACreate(argn,argv,1024,768,32)==SGAFALSE)
{
printf("Khong the khoi tao che do do hoa\n");
return 1;
}
// Create 10 Dragons going in random directions
// Tạo 10 con rồng di chuyển theo các hướng bất kỳ
int i;
for(i=0;i<10;++i)
{
// Allocate space in object engine for dragon
// Phân bổ không gian cơ cấu đối tượng rồng
GODragon *dragon=SGAObjectCreate(GODragon(),100,rand()%50+20);
if(dragon==NULL)
{
SGADebug("Khong the phan phoi khong gian cho GODragon");
SGADestroy(); return 1;
}

// Init the dragon – Khởi tạo rồng
if(dragon->Create(rand()%400+100,rand()%200+100,rand()%10-5
,rand()%10-5,rand()%50+50)==false)
{
SGADebug("Khong the khoi tao rong");
// Remove Object from engine – Lược bỏ đối tượng cơ cấu
SGAObjectDestroy(dragon);
return 1;
}
}
while(SGAEventProcess()==SGATRUE)
{
SGASurfaceClear(0x000000);
SGASurfacePrint(100,100,"Chuyen dong va tieng cua Rong");
SGASurfaceFlip();
}
SGADestroy();
return 0;
}
IV . Kết luận
Với những hình ảnh và chuyển động đã đạt được thì theo ý kiến của nhóm chương trình đã
đạt được yêu cầu của đề tài. Nhưng trong quá trình vẽ rồng, nhóm đã có rất cố gắng nhưng
còn nhiều thiếu sót mong các bạn cũng như cô góp ý thêm.
V . Tài liệu tham khảo
Giáo trình đồ hoạ và slide từ giảng viên: Ths: Nguyễn Thị Cẩm Ngoan
Wikipedia – link : />Web:

×