发表于 2015-3-8 18:42

申请会员ID:秋水悠悠

1、申 请 I D:秋水悠悠
2、个人邮箱:627086057@qq.com
3、原创技术文章:
本人学习C++,希望加入论坛~~学习点破解汇编,求各位牛人支持,希望要求不要太高~~望大家好评!


附上两个作品和源码片段,由于代码没有商业意义,只能学习,没有发上来,有需要学习的可以联系我!
//移动视图
//视图不能往右移
void GAMEMAP::MoveView()
{
//只有一屏宽,不移动视图
if(mapinfo.viewmax == 1)
return;

if(rmain.xpos - viewx > 150)
{
viewx+=ROLE_STEP;
if(viewx>(mapinfo.viewmax-1)*GAMEW*32)
   viewx=(mapinfo.viewmax-1)*GAMEW*32;

//设置人物移动的最大范围
rmain.SetLimit(viewx, GAMEW*32*MAX_PAGE);
}bmSky.SetPos(BM_USER,viewx,0);
}void GAMEMAP::ShowBkObj(MYANIOBJ & bmobj)
{
int i;
int xstart,ystart;for(i=0;i<iMapBkObjNum;i++)
{
ystart=MapBkArray.y*32;
xstart=MapBkArray.x*32;
bmobj.DrawItem(xstart,ystart,MapBkArray.id,ibkobjframe);
}
}
void GAMEMAP::ShowInfo(HDC h)
{
char temp={0};SetTextColor(h, TC_WHITE);
SetBkColor(h, TC_BLACK);sprintf(temp, "LIFE: %d",iLife);
TextOut(h, 220,100,temp,strlen(temp));sprintf(temp, "WORLD : %d",iMatch+1);
TextOut(h, 220,130,temp,strlen(temp));
}void GAMEMAP::ShowOther(HDC h)
{
char temp={0};
int xstart;//show money
sprintf(temp,"MONEY: %d",iMoney);
TextOut(h,viewx+20,20,temp,strlen(temp));//显示攻击对象生命值
if(iAttackLife)
{
TextOut(h,viewx+ATTACK_TO_TEXT_X,
   ATTACK_TO_TEXT_Y,AttackName,strlen(AttackName));

//画生命条
xstart=viewx+ATTACK_TO_X-iAttackMaxLife*10;bmMap.DrawItemNoMaskWidth(xstart-1, ATTACK_TO_Y-1,ID_MAP_HEALTH_BK,
   iAttackMaxLife*BMP_WIDTH_HEALTH, 0);

bmMap.DrawItemNoMaskWidth(xstart, ATTACK_TO_Y,ID_MAP_HEALTH,
   iAttackLife*BMP_WIDTH_HEALTH, 0);
}
}void GAMEMAP::ShowAniObj(MYANIOBJ & bmobj)
{
int i;
int xstart,ystart;//显示金币,和其他物品
for(i=0;i<iCoinNum;i++)
{
ystart=MapCoinArray.y;
xstart=MapCoinArray.x;
bmobj.DrawItem(xstart,ystart,MapCoinArray.id, MapCoinArray.iframe);
}//显示敌人
for(i=0;i<MAX_MAP_OBJECT;i++)
{
if (MapEnemyArray.show)
{
   bmobj.DrawItem(MapEnemyArray.x,MapEnemyArray.y,
    MapEnemyArray.id,MapEnemyArray.iframe);
}
}//显示子弹,魔法攻击
for(i=0;i<MAX_MAP_OBJECT;i++)
{
if (FireArray.show)
{
   ystart=FireArray.y;
   xstart=FireArray.x;
   
   switch(FireArray.id)
   {
   case ID_ANI_FIRE:
    bmobj.DrawItem(xstart,ystart,FireArray.id,FireArray.iframe);
    break;   case ID_ANI_FIRE_MAGIC:
    bmMagic.DrawItem(xstart,ystart, 0, FireArray.iframe);
    break;   default:
    bmobj.DrawItem(xstart,ystart,FireArray.id,FireArray.iframe);
    break;
   }
}
}
//显示爆炸效果
for(i=0;i<MAX_MAP_OBJECT;i++)
{
if (BombArray.show)
{
   ystart=BombArray.y;
   xstart=BombArray.x;
   bmobj.DrawItem(xstart,ystart,BombArray.id, BombArray.iframe);
}
}
}// 返回0,不能走;1,能走
int GAMEMAP::RoleCanMove(int xoff, int yoff)
{
int canmove=1;
int i;


for(i=0;i<iMapObjNum;i++)
{
if( RECT_HIT_RECT(rmain.xpos+xoff,
   rmain.ypos+yoff,
   32,
   32,
   MapArray.x*32,
   MapArray.y*32,
   MapArray.w*32,
   MapArray.h*32)
   )
{
   canmove=0;
   if(yoff<0)
   {
    //碰到了上面的物体要向下落
    rmain.movey=1;
   }
   if(yoff>0)
   {
    //碰到了下面的物体,要停止下落
    rmain.jumpheight=0;
    rmain.movey=0;
    rmain.ypos=MapArray.y*32-32;//纵坐标要修正
   }
   break;
}
}

return canmove;
}//检查人物水平移动过程中,是否走出地图物体边界
int GAMEMAP::CheckRole()
{
int i;

//角色的检查
if(rmain.movey == 0 )
{
//在水平移动,
//检测角色是否站在某个物体上
for(i=0;i<iMapObjNum;i++)
{
   //下方线
   if( LINE_ON_LINE(rmain.xpos,
    rmain.ypos+32,
    32,
    MapArray.x*32,
    MapArray.y*32,
    MapArray.w*32)
    )
   {   
    return 1;
   }
}
//角色开始下落
rmain.movey=1;
rmain.jumpx=0;//此时要清除跳跃速度,否则将变成跳跃,而不是落体
return 0;
}return 0;
}void GAMEMAP::ChangeFrame(int itimeclip)
{
int i;///////////// 帧控制 ////////////////
if(0 == itimeclip% ENEMY_SPEED)
{
//敌人移动
for(i=0;i<MAX_MAP_OBJECT;i++)
{
   if(MapEnemyArray.show)
   {
    //帧控制
    MapEnemyArray.iframe=(MapEnemyArray.iframe+1)%MapEnemyArray.iframemax;




链接:http://pan.baidu.com/s/1hqIik0s 密码:elvc链接:http://pan.baidu.com/s/1c00Fskw 密码:glcl
















   
   

Hmily 发表于 2015-3-9 10:57


【开放注册公告】吾爱破解论坛2015年3月13日七周年开放注册公告
http://www.52pojie.cn/thread-335163-1-1.html
到时候自己来注册吧。
页: [1]
查看完整版本: 申请会员ID:秋水悠悠