java游戏中 制作知识点

1.  通过一个随机数来控制某个文字的显示与隐藏。可以采用下面的一个随机数来实现:

  if(showPressEnter == true)
      {
         if((random.nextInt(5) + 1) % 5 == 0)
            showPressEnter = false;
      }
      else
      {
         if((random.nextInt(5) + 1) % 5 == 0)
            showPressEnter = true;
      }

 

2.
求一个0到8之间的数字,利用取余方法感觉更简洁。 比下面的三元运算效率应该还要高。
比如此示例用在数组中就比较合适。
curNum = (++curNum) % 8;
curNum == ++curNum >= 8 ? 0 : curNum;

 

3.

使用纹理贴图时使用的算法:
 首先是定义要显示的行数和列数,然后实例化图片对象(texture),最后在paint方法中
 添加如下代码即可:
    for(int i=0;i<(row * cell);i++)
         {
            g.drawImage(texture,i%cell*ImageWidth,i/row*ImageHeight,
                       this);
         }

 

4.

在旋转角度(rotation)里的角,是以“度”为单位;而在三角函数里的角要以“弧度”为单位。
例如: rotation2  ----是旋转2度;  sin(π/2)   ---- 是以大小为"π/2弧度"的角的正弦。

 

 

5.

在检测矩形间碰撞的方法时,最有效率的一个办法就是那矩形的边界做检查,
看代码即可:
   public boolean isCollide(Sprite s){
      if((X + width >= s.X) && (Y + height >= s.Y) &&
         (s.X + s.width >= X) && (s.Y + s.height >= Y)){
  //发生碰撞
          return true;
      }
         return false;
   }

如果发生碰撞后,要朝相反方向行走,则将各自的vx, vy都乘以-1(取反)即可。

 

6. 从一个点跑向另一个点:
    首先得到两点的X,Y差值坐标,
    然后得到两点的长度,
    最后用X,Y差值坐标除以长度得到归一化的向量,  再乘以当前的速度即可到运行的速度。 
 private void move(){
  int dx = Math.abs(round1.x - round2.x);
  int dy = Math.abs(round1.y - round2.y);
  double len = Math.sqrt(dx * dx + dy * dy);
  rect.x += dx / len * speed;
  rect.y += dy / len * speed;
 }

 

 

7. 摩擦力的简单实现:

这里是使用摩擦力乘以x,y速度向量,摩擦力常用的值大约为0.9或0.8。
因此,在每一帧,vx 和 vy 的值都将变为上一次的 80% 或 90% 。这样
速度向量就会无限接近零,但永远不会等于零。
private var firction:int = 0.9;
function onEnterFrame(event:Event):void{
 vx *= friction;
 vy *= friction;
 ball.x += vx;
 ball.y += vy;
}

 

你可能感兴趣的:(java,游戏,算法,function)