⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 象棋游戏开发代码.手机游戏代码,在eclipse环境下开发.
💻
📖 第 1 页 / 共 2 页
字号:
      }
     }
     if(g==0){changTwoChessNum(m,n,selectedX,selectedY);}
    
       } 
    }
    protected void theRuleOfMa(int m,int n,int selectedX,int selectedY)//马的规则
    {
  if(n<9){
    if(point[n+1][m]==0)
    {
     if(selectedX-m==1){if(selectedY-n==2){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
  if(n>0){
    if(point[n-1][m]==0)
    {
    if(m-selectedX==1){if(n-selectedY==2){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
  if(n<9){
    if(point[n+1][m]==0)
    {
     if(selectedX-m==-1){if(selectedY-n==2){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
  if(n>0){
    if(point[n-1][m]==0)
    {
    if(m-selectedX==-1){if(n-selectedY==2){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
        if(m<8){
    if(point[n][m+1]==0)
    {
     if(selectedX-m==2){if(selectedY-n==1){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
  if(m>0){
    if(point[n][m-1]==0)
    {
    if(m-selectedX==2){if(n-selectedY==1){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
  if(m<8){
    if(point[n][m+1]==0)
    {
     if(selectedX-m==2){if(selectedY-n==-1){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
  if(m>0){
    if(point[n][m-1]==0)
    {
    if(m-selectedX==2){if(n-selectedY==-1){changTwoChessNum(m,n,selectedX,selectedY);}}
    }
  }
    }
    protected void theRuleOfPao(int m,int n,int selectedX,int selectedY,int g1)//炮的规则
    {
      g=0;
        if(m==selectedX)
        {
       if(n>selectedY)
       {
         for(i=1;i         {
          if(point[selectedY+i][m]!=0){g++;}
         }
       }
       else
       {
         for(i=1;i         {
          if(point[n+i][m]!=0){g++;}
         }
       }
       if(g==g1){changTwoChessNum(m,n,selectedX,selectedY);}
    
       }
       if(n==selectedY)
       {
        if(m>selectedX)
       {
         for(i=1;i         {
          if(point[n][i+selectedX]!=0){g++;}
         }
       }
       else
       {
         for(i=1;i         {
          if(point[n][m+i]!=0){g++;}
         }
       }
       if(g==g1){changTwoChessNum(m,n,selectedX,selectedY);}
    
       } 
    }
    protected void theRuleOfXiang(int m,int n,int selectedX,int selectedY)//相的规则
    {
  if(n<9&m<8){if(point[n+1][m+1]==0){if((selectedX-m==2)&(selectedY-n==2)){changTwoChessNum(m,n,selectedX,selectedY);}}}
  if(n>0&m<8){if(point[n-1][m+1]==0){if((selectedX-m==2)&(selectedY-n==-2)){changTwoChessNum(m,n,selectedX,selectedY);}}}
  if(n<9&m>0){if(point[n+1][m-1]==0){if((selectedX-m==-2)&(selectedY-n==2)){changTwoChessNum(m,n,selectedX,selectedY);}}}
  if(n>0&m>0){if(point[n-1][m-1]==0){if((selectedX-m==-2)&(selectedY-n==-2)){changTwoChessNum(m,n,selectedX,selectedY);}}}
    }
    protected void theRuleOfShi(int m,int n,int selectedX,int selectedY)//士的规则
    {
  if((m>2&m<6)&(selectedX>2&selectedX<6)&(n>=7&n<=9)&(selectedY>=7&selectedY<=9))
  {
 
   if((selectedX-m==1)&(selectedY-n==1)){changTwoChessNum(m,n,selectedX,selectedY);}
 
   if((selectedX-m==1)&(selectedY-n==-1)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==-1)&(selectedY-n==1)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==-1)&(selectedY-n==-1)){changTwoChessNum(m,n,selectedX,selectedY);} 
  }
  if((m>2&m<6)&(selectedX>2&selectedX<6)&(n>=0&n<3)&(selectedY>=0&selectedY<3))
  {
   if((selectedX-m==1)&(selectedY-n==1)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==1)&(selectedY-n==-1)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==-1)&(selectedY-n==1)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==-1)&(selectedY-n==-1)){changTwoChessNum(m,n,selectedX,selectedY);} 
  }
    }
    protected void theRuleOfShuai(int m,int n,int selectedX,int selectedY)//帅的规则
    {
  if((m>2&m<6)&(selectedX>2&selectedX<6)&(n>=7&n<=9)&(selectedY>=7&selectedY<=9))
  {
   if((selectedX-m==1)&(selectedY-n==0)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==-1)&(selectedY-n==0)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==0)&(selectedY-n==1)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==0)&(selectedY-n==-1)){changTwoChessNum(m,n,selectedX,selectedY);} 
  }
  if((m>2&m<6)&(selectedX>2&selectedX<6)&(n>=0&n<3)&(selectedY>=0&selectedY<3))
  {
   if((selectedX-m==1)&(selectedY-n==0)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==-1)&(selectedY-n==0)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==0)&(selectedY-n==1)){changTwoChessNum(m,n,selectedX,selectedY);}
   if((selectedX-m==0)&(selectedY-n==-1)){changTwoChessNum(m,n,selectedX,selectedY);}  
  }
    }
    protected void theRuleOfZu(int m,int n,int selectedX,int selectedY)//卒的规则
    {  
 if(point[n][m]<17)
  {
    if(selectedY>=n)
    {
      if(n<5)
      {
      if((selectedY-n==1)&(selectedX-m==0)){changTwoChessNum(m,n,selectedX,selectedY);}
      }
      else
      {
      if((selectedY-n==1)&(selectedX-m==0)){changTwoChessNum(m,n,selectedX,selectedY);}
      if((selectedY-n==0)&(selectedX-m==1)){changTwoChessNum(m,n,selectedX,selectedY);}
      if((selectedY-n==0)&(selectedX-m==-1)){changTwoChessNum(m,n,selectedX,selectedY);}
      }
    }
  }
  else
  {
    if(selectedY<=n)
    {
      if(n>4)
      {
      if((selectedY-n==-1)&(selectedX-m==0)){changTwoChessNum(m,n,selectedX,selectedY);}
      }
      else
      {
      if((selectedY-n==-1)&(selectedX-m==0)){changTwoChessNum(m,n,selectedX,selectedY);}
      if((selectedY-n==0)&(selectedX-m==1)){changTwoChessNum(m,n,selectedX,selectedY);}
      if((selectedY-n==0)&(selectedX-m==-1)){changTwoChessNum(m,n,selectedX,selectedY);}
      }
    }
  }
 
    }
       public void commandAction(Command c, Displayable d) 
 {
         if (c == exitCmd) {
             game.destroyApp(false);
             game.notifyDestroyed();
         }
  }
    protected synchronized void keyPressed(int keyCode) //处理按键
    {
        int action = getGameAction(keyCode);
            
        if (action == Canvas.LEFT ) 
      {
            selectedX=(--selectedX+8+1)%(8+1);     
        }
        else if (action == Canvas.RIGHT)
        {
              selectedX=(++selectedX)%(8+1);
        }
        else if (action == Canvas.UP) 
        {
               selectedY=(--selectedY+9+1)%(9+1);
        }
        else if (action == Canvas.DOWN)
        {
            selectedY=(++selectedY)%(9+1);
        }
        else if (action == Canvas.FIRE)//这里的FIRE键我分成了两种情况:一是选种棋子,
        {                              //二是当选择了棋子后,让棋子走到下面选择的位置
                                           
                guard=guard+1;//每按下FIRE一次,GUARD就加一,用来判断FIRE是被选种还是选种后走下不棋
    if(guard%2==1)  //这时是当选种某一个棋子时,调用choosChess函数,选择棋子
    { 
      if(point[selectedY][selectedX]!=0)
      {
      guard1=selectedX;
      guard2=selectedY;
      }
   
    }
          
    if(guard%2==0)//这种情况是当棋子被选种后
          {
                     if(point[selectedY][selectedX]!=point[n][m])//当走的下一步不是自身,也就是玩家选过
         {                                           //一个棋子,又不想选了,这只需什么都不做
                         if((point[n][m]==1)|(point[n][m]==9)|(point[n][m]==17)|(point[n][m]==25))//当选定的棋子是车的时候
            {                                      //repaint就OK了
         if(point[selectedY][selectedX]==0)//当下一步走的是空格,则改变选种的格子和下一步所
           {                                 //走的格子的point[][]和word[][]的植,然后repaint就OK
            theRuleOfChe(m,n,selectedX,selectedY);
         }
        else//当下一步是想吃对方的子的,则把下一步格子的值变为刚才选定的格子的值,而
        {                              //刚才选定的格子的值则便为零
               if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                 {    
            theRuleOfChe(m,n,selectedX,selectedY);
                                             
                      }
              }
            }
      if((point[n][m]==2)|(point[n][m]==8)|(point[n][m]==18)|(point[n][m]==24))//当选定的棋子是马的时候
      {       
    if(point[selectedY][selectedX]==0)
        {     
             theRuleOfMa(m,n,selectedX,selectedY);
        }
        else
        {
              if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                  {    
            theRuleOfMa(m,n,selectedX,selectedY);
                                             
                       }
        }
      }
      if((point[n][m]==10)|(point[n][m]==11)|(point[n][m]==26)|(point[n][m]==27))//当选定的棋子是炮的时候
      {       
        if(point[selectedY][selectedX]==0)
        {     
     g1=0;
              theRuleOfPao(m,n,selectedX,selectedY,g1);
        }
        else
        {     
     g1=1;
              if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                  {    
             theRuleOfPao(m,n,selectedX,selectedY,g1);
                                             
                       }
        }
      }
      if((point[n][m]==3)|(point[n][m]==7)|(point[n][m]==19)|(point[n][m]==23))//当选定的棋子是相的时候
      {       
    if(point[selectedY][selectedX]==0)
        {     
              theRuleOfXiang(m,n,selectedX,selectedY);
        }
        else
        {
              if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                  {    
            theRuleOfXiang(m,n,selectedX,selectedY);
                                             
                       }
        }
      }
      if((point[n][m]==4)|(point[n][m]==6)|(point[n][m]==20)|(point[n][m]==22))//当选定的棋子是士的时候
      {       
    if(point[selectedY][selectedX]==0)
        {     
              theRuleOfShi(m,n,selectedX,selectedY);
        }
        else
        {
              if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                  {    
            theRuleOfShi(m,n,selectedX,selectedY);
                                             
                       }
        }
      }
      if((point[n][m]==5)|(point[n][m]==21))//当选定的棋子是帅的时候
      {       
    if(point[selectedY][selectedX]==0)
        {     
              theRuleOfShuai(m,n,selectedX,selectedY);
        }
        else
        {
              if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                  {    
             theRuleOfShuai(m,n,selectedX,selectedY);
                                             
                       }
        }
      }
      if((point[n][m]>11&point[n][m]<17))//当选定的棋子是红方卒的时候
      {       
    if(point[selectedY][selectedX]==0)
        {     
              theRuleOfZu(m,n,selectedX,selectedY);
        }
        else
       {
              if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                  {    
            theRuleOfZu(m,n,selectedX,selectedY);
                                             
                       }
        }
      }
      if(point[n][m]>27)//当选定的棋子是白方卒的时候
      {       
    if(point[selectedY][selectedX]==0)
        {     
              theRuleOfZu(m,n,selectedX,selectedY);
        }
        else
        {
              if((point[selectedY][selectedX]/17)!=(point[n][m]/17))//当然,想吃的子不能是自己的
                  {    
             theRuleOfZu(m,n,selectedX,selectedY);
                                             
                       }
        }
      }
         }
        }
  
     }
        
     repaint();

}

代码程序就是这些,看起来很麻烦吧,如果仔细看了的话,其实很简单,只不过象棋不比五子棋,规则太多了,但是我的代码里有很多缺陷,例如由于采用了canvas而不是gamecanvas,所以在paint()函数里面就会有很多的输出,这样在一些功能不强大的手机里会有闪屏的现象,我现在正在用gamecanvas写这个程序,大家先凑合看这个吧.还有,由于象棋游戏的自身因素,所以导致了只能在大屏幕手机上使用,我这个是针对WTK22的默认的彩色模拟器编的,而且都实现了,感觉效果还行,但是在一些其他的小屏手机上就不理想了,这个也没办法.

最后声明一下,大家可以拿我的代码转载,但毕竟是我的原创,请大家转载是把我的名字挂上-----dlut_608_#4,呵呵还有,代码太长了,没好好整理就发上来了,希望大家能耐心。

这个程序有很多需要赶紧的地方,希望大家看了以后多提宝贵意见.
                作者:dlut_608_#4
 
文章录入:0411dlut    责任编辑:mingjava   
 上一篇文章: J2ME平台手机游戏移植的体会

下一篇文章: 3D编程指南第四部分:M3G内建碰撞、光照物理学和照相机视点
 
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】  
 
 
 
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) 
评论人 评论内容 评论时间 打分 
【cl_pqy】 我也主要想知道AI怎么做.大家有谁有想法发表一下吧 2005-11-13 12:42:16 3分 
【zicheng3000】 ifpointselectedYselectedX!=0              guard1=selectedX… 2005-11-11 22:55:50 1分 
【卧龙来了】 哎 2005-11-10 16:43:39 3分 
【乐水】 于采用了canvas而不是gamecanvas,所以在paint函数里面就会有很多… 2005-11-8 14:24:38 1分 
【tcboy】 还不错 主要想看一下ai,结果还没讲... 顺便问一下,0411dlut 是… 2005-11-7 11:42:01 3分 
【0411dlut】 估计是写的时候出错了,因为我是把代码改成文章了,而且代码写的不… 2005-11-5 17:19:56 3分 
【yplinxd】 fori=1i              ifpointselectedY+im!=0g++ 好像有问题吧… 2005-11-5 13:43:40 1分 
【zzzl】 AI呢?! 2005-11-5 12:36:26 1分 

查看评论详细内容及更多评论 
 
 
J2ME平台手机游戏移植的体会

MIDP1.0-五子棋1.1读后的修改

游戏Loaading的设计

手机游戏策划模板

手机中文码制问题的一点理解

 
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |  
 
版权所有 Copyright? 2005 J2ME开发网 瑞腾科技
京ICP备05054286号 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -