以前從沒寫過游戲,甚至連大程序都沒嘗試寫過,這一次可謂要突破一下了。昨天晚上一夜都沒睡好,一直都在想著這個游戲。參考了一下俄羅斯方塊,羅列了一些函數,由于能力有限函數的具體功能都沒實現,但是我會盡快補全這些功能的,請大家監督。第一次分析的難免會有很多漏洞與不全,請大家多多指教。
首先是導入各函數庫
#include <.h>
各個全局變量
Static const int Bottle_width 瓶子的寬和高度
Static const int Bottle_height
Static const int Pill_Szie 藥丸的尺寸
Static const int bug_rate 蟲子的幾率
static const int WindowPositionX 窗口位置
static const int WindowPositionY
。
。
。
定義枚舉類型的顏色

Enmu color
{………};
定義瓶子網格的類型
enmu BottleGridType


{
BGT_EMPTY, //空的
BGT_BUG, //蟲子
BGT,MEDICINE //藥片
};

定義瓶子類
class Bottle


{
private :
BottleGrifTYpe **b_ptr;
int b_Width;
int b_Height;
public:
Bottle(int width,int height,intbug_rate)

{
B_Width=width;
B_Height=height;
b_ptr=new BottleGridTYpe*[height];
for(int i=0;i<k;i++)

{
For(int j=0;j<width;j++)

{
對從第0行到第k行進行初始化, 全 部設置成空的,即不包含蟲子。K 根據關數自定義
}
}
For(int i=k;i<height;i++)

{
for(int j=0;j<width;j++)
if(bug_rate>0)

{
如果蟲子出現的幾率>0則根據rate 設置某些網格成蟲子
}
Else

{
設置網格為空
}
}
}
~Bottle() 析構函數

{
for(int i=0; i<m_Height; ++i)
delete[] b_ptr[i];
delete[] b_ptr;
}
Void display()

{
For(int i=0;i<b_Width;i++)

{
For(int j=0;j<b_Height;j++)
Switch(b_ptr[j][i] )

{
Case BGT_EMPTY:

{
}
Case BGT_BUG:

{
}
Case BGT_EMPTY:

{
}
}
}
}
}
}
定義Medicine 類型
enmu Medicine


{
char c[2][2];
int x;
int y;
char color;
char size;
char name;
}
drawBug()


{
畫蟲子
}
drawMedicine()


{
畫藥片
}
canRotate(Medicine mc)


{
判斷藥片是否可以旋轉
Can
Return true;
Not
Return false;
}
Int canMove(Medicine mc)


{
判斷藥片是否可以向左右移動
If(can move to left )
Return 1;
If(can move to right)
Return 2
}
Void display() 顯示函數,


{
glClear(GL_COLOR_BUFFER_BIT);
(Bottle)->display(); //Bottle的一個對象
glutSwapBuffers();
}
Void clearMedicineAndBug()


{
如果垂直或水平相鄰顏色的蟲子或藥丸大于或等于四個,消除。。。。
}
Void keyboard(unsigned char key,int x,int y)


{
Switch(key)


{
Case ‘a’:
Case ‘A’:
If(canMove(Mecidine mc)==1 )
藥片向左移動
Break;
Case ‘d’:
Case ‘D’:
If(canMove(Mecidine mc)==2 )
藥片向右移動
Break;
Case ‘s’:
Case ‘S’:
藥片加速下移
Break;
Case ‘w’:
Case ‘W’:
If(canRotate(Mecidine mc))
藥片旋轉
Break;
Case ‘p’:
Case ‘P’:
暫停,按任意鍵繼續
Break;
}
}
Void init()


{
glClearColor(, , , ,);
。
。
。
}
Int main(int argc,char*argv[])


{
初始化一個瓶子
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_|GLUT_);
glutInitInitWindowSize();
glutInitWindowPosition();
glutCreateWindow(argv);
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}

posted on 2008-10-18 20:19
正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(173)
評論(3) 編輯 收藏 引用 所屬分類:
risky