青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天地之靈學習小組
我們學習小組的OpenGL學習筆記 大家一定要互相折磨呀~~
posts - 150,  comments - 156,  trackbacks - 0
代碼進化到324行。
今天不標記行號了,方便大家copy paste,希望能稍微地給大家點幫助。
瓶口的二值圖已經畫好了,今天晚上畫蟲子的二值圖,稍后再畫醫生的彩圖,或者,嘿嘿,能不能麻煩糖糖畫了咱們一起用,我就偷懶一下。然后今晚的任務就是學怎樣讀取二值圖和彩圖,明天把move函數完成并debug,簡易的瑪麗醫生就差不多可以完成了,之后慢慢添加功能,做的完善點兒。
我恨杭電,更恨我的菜。我想徹底放棄ICPC了,我不像貓什么都很強,做做算法還蠻好的。現在我的水平,最好還是老老實實地,一次只做好一件事。
//需要蟲子的二值圖,瓶口的二值圖,醫生的彩色圖,bmp格式
//需要學會讀取bmp格式圖片并處理
//move函數的代碼,預計50行左右

#include 
<GL/glut.h>
#include 
<ctime>
#include 
<cstdlib>
#include 
<cstdio>

static const int WindowWidth = 640;
static const int WindowHeight = 480;

int count = 0;
int speed = 8;
bool dead = false;

enum GridType
{
    NOTHING, CAPSULE, WORM
};

enum Connect
{
    NOT_CONNECTED, LEFT, RIGHT, UP, DOWN
};

enum Color
{
    BLACK, YELLOW, BLUE, RED
};

enum DoctorDirect
{
    DD_NODIRECT, DD_UP, DD_DOWN, DD_LEFT, DD_RIGHT
};

void setColor( Color color )
{
    
switch (color)
    {
    
case BLACK:
        glColor3f( 
0.0f0.0f0.0f );
        
break;
    
case YELLOW:
        glColor3f( 
1.0f1.0f0.0f );
        
break;
    
case BLUE:
        glColor3f( 
0.0f0.0f1.0f );
        
break;
    
case RED:
        glColor3f( 
1.0f0.0f0.0f );
        
break;
    
default:
        
break;
    }
}

class Bottle
{
private:
    
int b_x,b_y; //bottle可以容納藥丸的最左上角位置
    GridType b_grid_type[16][8]; //每個格子20像素長寬
    Color b_color[16][8];
    Connect b_connect[
16][8];
public:
    
int getx( void )
    {
        
return b_x;
    }
    
int gety( void )
    {
        
return b_y;
    }
    
void drawBottle( void )
    {
        
int i,j;
        glColor3f( 
0.0f1.0f1.0f );//青色
        
//**************先畫瓶口再畫瓶身******
        
//畫瓶子的內部,根據b_x,b_y和瓶子的內容物
        for ( i = 0; i < 16++i )
        {
            
for ( j = 0; j < 8++j )
            {
                setColor( b_color[i][j] );
                
if ( b_grid_type[i][j] == WORM )
                    drawWorm( b_x
+i*20, b_y+j*20 );
                
else if ( b_grid_type[i][j] == CAPSULE )
                {
                    drawCapsule( b_x
+i*20+10, b_y+i*20+1010, b_connect[i][j] );
                }
            }
        }
    }
    
    
void drawCapsule( int x, int y, int r, Connect connect )
    {
        
//將相連的部分畫上
        switch ( connect )
        {
        
case LEFT:
            glRectf( x
-10, y-10, x, y+10 );
            
break;
        
case RIGHT:
            glRectf( x, y
-10, x+10, y+10 );
            
break;
        
case UP:
            glRectf( x
-10, y-10, x+10, y );
            
break;
        
case DOWN:
            glRectf( x
-10, y, x+10, y+10 );
            
break;
        
default:
            
break;
        }
        
//***********畫圓并填充*********
    }

    
void drawWorm( int x, int y )
    {
        
//*************從坐標x,y開始畫蟲子,20像素長寬*******************
    }

    Bottle( 
int level, int xx, int yy )
    {
        
int i; //vc6這點真恨人
        b_x = xx;
        b_y 
= yy;
        
for ( i = 0; i < 16++i )
        {
            
for ( int j = 0; j < 8++j )
            {
                b_grid_type[i][j] 
= NOTHING;
                b_color[i][j] 
= BLACK;
                b_connect[i][j] 
= NOT_CONNECTED;
            }
        }
        
for ( i = 0; i < level*4++i )
        {
            
int x = rand()%16;
            
int y = rand()%8;
            Color color 
= (Color)(rand()%3);
            
if ( ok( x, y, color, level ) )
            {
                b_grid_type[x][y] 
= WORM;
                b_color[x][y] 
= color;
            }
            
else
                
--i;
        }
    }
    
bool ok( int x, int y, Color color, int level )
    {
        
if ( level < 15 && x <= 6 ) return false;
        
if ( ((level+1)>>1)+3+< 16 ) return false;
        
if ( x-2 >= 0 && b_grid_type[x-1][y] == WORM && b_color[x-1][y] == color 
            
&& b_grid_type[x-2][y] == WORM && b_color[x-2][y] == color ) return false;
        
if ( x+2 < 8 && b_grid_type[x+1][y] == WORM && b_color[x+1][y] == color 
            
&& b_grid_type[x+2][y] == WORM && b_color[x+2][y] == color ) return false;
        
if ( y+2 < 16 && b_grid_type[x][y+1== WORM && b_color[x][y+1== color 
            
&& b_grid_type[x][y+2== WORM && b_color[x][y+2== color ) return false;
        
if ( b_grid_type[x][y-1== WORM && b_color[x][y-1== color 
            
&& b_grid_type[x][y-2== WORM && b_color[x][y-2== color ) return false;
        
return true;
    }
};

class Doctor
{
private:
    
int d_x,d_y; //活動藥丸(左下角)相對于瓶子的位置,不是像素點
    bool d_state; //橫的false,豎的true
    Color d_color[2]; //倆藥丸的顏色
    DoctorDirect d_direct;
public:
    
void drawDoctor( void )
    {
        
//***************畫醫生的形象*******************
        if ( d_state )
        {
            bottle
->drawCapsule( bottle->getx()+20*d_x+10, bottle->gety()+20*d_y+10, UP );
            bottle
->drawCapsule( bottle->getx()+20*d_x+10, bottle->gety()+20*d_y-10, DOWN );
        }
        
else
        {
            bottle
->drawCapsule( bottle->getx()+20*d_x+10, bottle->gety()+20*d_y+10, RIGHT );
            bottle
->drawCapsule( bottle->getx()+20*(d_x+1)+10, bottle->gety()+20*d_y+10, LEFT );
        }
    }
    Doctor( 
void )
    {
        d_x 
= 3; d_y = 0
        d_state 
= false
        d_direct 
= DD_NODIRECT;
        d_color[
0= (Color)(rand()%3);
        d_color[
1= (Color)(rand()%3);
    }
    
void move( void )
    {
        
//*****************偽碼*********************
        /*
        if 下移
        {
            if 落地,也就是不能下移
            {
                if 可消
                {
                    消除;
                    與消去相連的部分落地;
                }
                產生新藥;
            }
        }
        else 其它方向
            判斷是否可移,可移則移,不可移不移
        
*/
    }
    
void fall( void )
    {
        d_direct 
= DD_DOWN;
        move();
    }
    
void setDirect( DoctorDirect direct )
    {
        d_direct 
= direct;
    }
};

static Bottle* bottle = NULL;
static Doctor* doctor = NULL;

void init( void )
{
    bottle 
= new Bottle( 3320160 );
    doctor 
= new Doctor();
}

void key( unsigned char key_char, int not_use, int not_use_1 )
{
    
switch ( key_char )
    {
    
case 'w':
    
case 'W':
        doctor
->setDirect( DD_UP );
        
break;
    
case 's':
    
case 'S':
        doctor
->setDirect( DD_DOWN );
        
break;
    
case 'a':
    
case 'A':
        doctor
->setDirect( DD_LEFT );
        
break;
    
case 'd':
    
case 'D':
        doctor
->setDirect( DD_RIGHT );
        
break;
    
default:
        doctor
->setDirect( DD_NODIRECT );
        
break;
    }
}


void step( void )
{
    
if ( dead ) return ;
    doctor
->move();
    
++count; if ( count == speed ) { count = 0; doctor->fall(); }
}

void timer( int not_use )
{
    step();
    glutPostRedisplay();
    
if ( !dead() )
    {
        glutTimerFunc( 
1000/speed, timer, 0 );
    }
}

void drawBG( void )
{
    
int i,j;
    glColor3f( 
0.0f0.0f0.7f );
    
for ( i = 0; i < 32++i )
    {
        
for ( j = 0; j < 30++j )
        {
            
if ( ((i+j)&1== 0 )
                glRectf( i
*20, j*16, (i+1)*20, (j+1)*16 );
        }
    }
}

void draw( void )
{
    drawBG();
    bottle
->drawBottle();
    doctor
->drawDoctor();
}

void display( void )
{
    glClear( GL_COLOR_BUFFER_BIT );
    draw();
    glutSwapBuffers();
}

int main( int argc, char * argv[] )
{
    srand( (unsigned 
int)time(NULL) );
    glutInit( 
&argc, argv );
    glutInitDisplayMode( GLUT_RGBA
|GLUT_DOUBLE );
    glutInitWindowPosition( 
5050 );
    glutInitWindowSize( WindowWidth, WindowHeight );
    glutCreateWindow( 
"Dr Mario By PureMilk" );
    glutDisplayFunc( display );
    glutKeyboardFunc( key );
    glutTimerFunc( 
1000/speed, timer, 0 );
    gluOrtho2D( 
0, WindowWidth, WindowHeight, 0 );
    glutMainLoop();
    
    
return 0;
}



<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(6)

隨筆分類(149)

隨筆檔案(150)

同道中人

搜索

  •  

積分與排名

  • 積分 - 50617
  • 排名 - 457

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女国内精品自产拍在线播放| 久久综合色综合88| 欧美视频国产精品| 亚洲综合日韩中文字幕v在线| 一本色道久久| 国产精品看片你懂得| 性久久久久久久久| 性欧美xxxx大乳国产app| 国产一级揄自揄精品视频| 久久人人97超碰国产公开结果| 久久精品91久久香蕉加勒比| 伊人久久大香线蕉综合热线| 欧美 日韩 国产一区二区在线视频 | 国内精品久久久久久久97牛牛| 久久久久久久久久久久久9999| 久久精品一区二区三区中文字幕 | 亚洲国产精品一区二区久| 欧美高清视频一区| 欧美日韩免费在线观看| 欧美在线免费观看亚洲| 久久综合999| 亚洲香蕉网站| 久久精品30| 日韩亚洲欧美在线观看| 亚洲男人第一网站| 在线国产精品一区| 亚洲一区在线直播| 亚洲黄色天堂| 亚洲欧美日韩另类| 亚洲精品网站在线播放gif| 亚洲免费视频一区二区| 亚洲黄网站黄| 欧美一区二区视频网站| 一区二区三区精品视频在线观看 | 最新国产成人在线观看| 欧美日韩一区二区欧美激情| 久久久久一区| 国产精品一区在线观看你懂的| 欧美电影电视剧在线观看| 国产精品一卡| 亚洲精品影院在线观看| 尤物视频一区二区| 亚洲欧美国产日韩中文字幕 | 国产精品国色综合久久| 欧美v日韩v国产v| 国产视频综合在线| 亚洲天堂av电影| 一本色道久久88精品综合| 久久精品在线免费观看| 午夜视频一区| 国产精品久久久久久久久久妞妞| 欧美激情久久久久| 激情一区二区三区| 欧美怡红院视频| 欧美影院成人| 国产麻豆日韩| 亚洲视频免费在线| 亚洲一区二区视频在线| 欧美激情一区二区三级高清视频| 久久亚洲国产精品日日av夜夜| 国产日产高清欧美一区二区三区| 一区二区三区欧美激情| 一本色道久久综合| 欧美人与禽猛交乱配视频| 亚洲国产老妈| 日韩午夜中文字幕| 欧美日本成人| 日韩视频第一页| 亚洲综合导航| 国产精品试看| 欧美一区二区在线看| 久久国产精品毛片| 国产亚洲成年网址在线观看| 性欧美办公室18xxxxhd| 久久亚洲综合色一区二区三区| 禁久久精品乱码| 久久在线免费观看| 亚洲国产日韩综合一区| 一区二区久久| 国产精品夜夜夜| 久久久精品午夜少妇| 欧美黄色免费网站| 中国女人久久久| 国产精品亚洲产品| 欧美在线视屏| 亚洲国内自拍| 午夜精品美女自拍福到在线 | 国产精品亚洲精品| 久久精品一区二区三区四区| 欧美凹凸一区二区三区视频| 亚洲精品小视频| 国产精品ⅴa在线观看h| 欧美一区二区三区婷婷月色 | 一区二区不卡在线视频 午夜欧美不卡'| 欧美成人午夜激情| 一区二区三区视频在线观看| 久久精品首页| 一本久道久久综合狠狠爱| 国产精品乱码一区二三区小蝌蚪| 欧美一乱一性一交一视频| 亚洲国产精品一区二区久| 亚洲综合社区| 亚洲人体大胆视频| 国产精品免费一区豆花| 免费观看亚洲视频大全| 亚洲视频一区在线观看| 欧美成人一区二区在线 | 国一区二区在线观看| 欧美激情一区二区久久久| 亚洲欧美一区二区三区久久| 亚洲第一网站| 久久国产精品99久久久久久老狼| 亚洲精品日韩在线观看| 国产一区观看| 国产精品美腿一区在线看| 欧美1区3d| 欧美在线看片| 亚洲在线第一页| 亚洲欧洲一区二区在线观看| 久久在线精品| 欧美有码在线视频| 亚洲性线免费观看视频成熟| 亚洲国产精品福利| 国产亚洲成精品久久| 国产精品久久久久久久电影| 美女诱惑一区| 久久天天狠狠| 欧美在线国产| 午夜精品一区二区三区电影天堂 | 夜夜夜久久久| 亚洲高清视频中文字幕| 久久一区二区三区四区五区| 欧美亚洲日本国产| 亚洲欧美日韩一区二区| 在线亚洲自拍| 亚洲少妇在线| 中日韩午夜理伦电影免费| 99riav久久精品riav| 亚洲三级国产| 亚洲精品欧美日韩| 亚洲免费高清| 日韩写真视频在线观看| 亚洲精品乱码视频| 日韩视频中午一区| 一区二区三区波多野结衣在线观看| 亚洲国产高清一区二区三区| 永久免费精品影视网站| 在线观看中文字幕亚洲| 一色屋精品视频在线看| 亚洲高清久久网| 亚洲欧洲一区二区在线观看 | 欧美偷拍另类| 国产精品久久久久久久久免费| 欧美四级剧情无删版影片| 欧美午夜一区二区三区免费大片 | 久久亚洲私人国产精品va| 久久久www成人免费精品| 久久综合免费视频影院| 欧美99久久| 欧美亚州在线观看| 国产精品系列在线| 狠狠色丁香婷婷综合| 亚洲经典三级| 亚洲免费在线观看| 久久精品国产第一区二区三区最新章节 | 国产精品福利在线观看网址| 国产精品视区| 亚洲第一精品福利| 中文欧美字幕免费| 欧美一区国产一区| 欧美福利视频在线| 一区二区三区产品免费精品久久75| 中文在线资源观看网站视频免费不卡| 亚洲免费视频一区二区| 久久久综合激的五月天| 欧美日韩国产色视频| 国产欧美一区二区精品忘忧草| 亚洲第一成人在线| 亚洲性xxxx| 欧美成人午夜激情在线| 一本到12不卡视频在线dvd| 久久av免费一区| 欧美日韩aaaaa| 一区二区自拍| 亚洲欧美日本视频在线观看| 美女视频黄免费的久久| 日韩视频不卡| 另类春色校园亚洲| 国产伦精品一区二区三区视频黑人 | 欧美视频在线免费| 樱桃视频在线观看一区| 亚洲一区二区影院| 欧美电影免费观看高清| 亚洲免费在线播放| 欧美日韩精品免费在线观看视频 | 免费欧美日韩| 国产亚洲欧美日韩精品| 在线视频欧美一区| 亚洲福利视频一区| 久久成人精品无人区|