天地之灵学习小组
我们学习小组的OpenGL学习笔记 大家一定要互相折磨呀~~
posts - 150,  comments - 156,  trackbacks - 0
这篇随笔保证只有一句废话。 
init Xiaofangkuai()                           //小方块的初始化
{
    color
=random(RED,GREEN,BLUE);
    x
=x0;y=y0;                                    //动态坐标,几何中心坐标
}

XiaofangkuanKuMade()                 //构建一个小方块库,容积1000,超过500胶囊还没死那就过关吧
{
    
for(i=0;i<1000;i++)
        ku[i]
=Xiaofangkuai;
}

JiaonangMade()                             //创建胶囊      if (key.isdown(key.DOWN)) {
{
    left
=ku[i];right=ku[i+1];            //胶囊分两块儿,左右各为一个小方块
    ku[i
+1].x=ku[i].x+a;                    //两个小方块的横坐标之间相差边长a
}

init Pingzi();                                    //用小方块构建瓶子
{
    
for()
    
{
       ku[i].color
=WHITE;              //为以后不与普通小方块产生混淆,更改颜色为白色
       ku[i];
}

}
上面是元件的构建,应该没落下什么东西吧。下面实现函数。
int hitTest()                                    //检测碰撞
{
    
for(m=0;m<i;m++)                     //比较ku[i]小方块和之前所有小方块的横纵坐标。
        
{
            Mx[m]
=ku[m].x;
               My[m]=ku[m].y;
            
if(ku[i].x==Mx[m]&&ku[i].y==My[m]+a)    //如果ku[i]的横坐标和之前的小方块的横坐标相等,纵坐标相差一个边长
                
break;return ture;                                        //跳出这个函数,直接返回真
            
else continue;
        }

    
return false;                                                            //最后如果都不符合,返回假,即没有遇到
}

drop()
{
    
if(!hitTest)
    
{Jiaonang.left.y-=a;
    Jiaonang.right.y
-=a;}

}
下面推出的是按键检测函数
按键检测函数先不要写了,弄不明白它跟键盘是怎么交互的。
下面说这个难度最大的四块相消吧。
fourinvisiable()
{
    
for(m=i;m>0;m--)                                           //判断四个相接的色块是不是同色
    
{
        M[m]
=ku[m].color;
        
if(M[m]==ku[i].color&&Mx[m]==k[i].x&&My[m]=ku[i].y+a){                   //判断最新的色块和与其相接的色块是不是同色
        
for(n=m;n>0;n--)
        
{
            
if(M[n]==ku[m].color&&Mx[n]==k[m].x&&My[n]=ku[m].y+a)                      //如果同色判断该色块和与其相接的色块是不是同色
        
{
            
for(p=n;p>0;p--)                                                                                                       //如果同色判断该色块和与其相接的色块是不是同色

                
{
                    
if(M[p]==ku[n].color&&Mx[p]==k[n].x&&My[p]=ku[n].y+a)                 //如果同色判断该色块和与其相接的色块是不是同色

                          
{                                                                                                             //至此四个色块同色,消掉
                           delet M[i],M[m],M[n],M[p];
                          }

                }

        }

        }

}

if(剩下两种情况)  ;                                                                                                               //其他两种情况为最新的色块落在一排三个同色色块的右面以及落在一排三个同色色块的左面
         
 }

}
结束判断
bool GameOver()
{
    
if (ku[i].y>=hight)
    
return ture;
}
bool GameFinished()
{
    
if (i>1000)
    
return ture;
}
主函数
main()
{
    JiaonangMade();
    PingziMade();
    
for(i=0;i<1000;i++)
        
{
                if(GameOver)
                cout<<"You Lose"<<endl;
               if(GameFinished)
               cout<<"YouPass"<<endl;
            
if(!hitTest)
                
{
                    Jiaonang[i].drop();
                    Jiaonang.key();
                    FourInvisiable();
                }

            
else break;
        }

}


FeedBack:
# re: 10月14日_玛丽医生的伪码_By 筱筱殿下[未登录]
2008-10-14 21:58 | missdeer
这些名字好可爱  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(6)

随笔分类(149)

随笔档案(150)

同道中人

搜索

  •  

积分与排名

  • 积分 - 35773
  • 排名 - 524

最新随笔

最新评论

阅读排行榜

评论排行榜