2016-01-02 50 views
4

我试着做我自己的“水果忍者”的版本,基于此版本培训:https://github.com/emmaguy/FruitNinja随机的,时间充足

我已经做了一些细微的变化。我想要做的是在fruittype的“enum”中影响对象的不同分数。在FruitProjectileManager结束

public static int currentrandom() { 
    return random.nextInt(FruitType2.values().length); 
} 

和添加,

if (FruitType2.currentrandom()<=9) { 
     score++; 
} else { 
     score=score-5; 
    } 

所以,我添加此功能(在目标检索当前的随机值)。对于FruitProjectileManager

完整代码:

public class FruitProjectileManager02 implements ProjectileManager { 

    private final Random random2 = new Random(); 
    private final List<Projectile> fruitProjectiles = 
      new ArrayList<Projectile>(); 
    private final SparseArray<Bitmap> bitmapCache; 
    private Region clip; 
    private int maxWidth; 
    private int maxHeight; 


    private String FruitTypen = "FruitType2"; 


    public FruitProjectileManager02(Resources r) { 

     bitmapCache = new SparseArray<Bitmap>(FruitType2.values().length); 

     for (FruitType2 t : FruitType2.values()) { 
      bitmapCache.put(t.getResourceId(), BitmapFactory.decodeResource(r, t.getResourceId(), new Options())); 
     } 
    } 

    public void draw(Canvas canvas) { 
     for (Projectile f : fruitProjectiles) { 
      f.draw(canvas); 
     } 
    } 

    public void update() { 

     if (maxWidth < 0 || maxHeight < 0) { 
      return; 
     } 
     if (random2.nextInt(1000) < 30) { 
      fruitProjectiles.add(createNewFruitProjectile()); 
     } 

     for (Iterator<Projectile> iter = fruitProjectiles.iterator(); iter.hasNext();) { 

      Projectile f = iter.next(); 
      f.move(); 
      if (f.hasMovedOffScreen()) { 
       iter.remove(); 
      } 
     } 
    } 

    private FruitProjectile02 createNewFruitProjectile() { 
     int angle = random2.nextInt(20) + 70; 
     int speed = random2.nextInt(30) + 120; 
     boolean rightToLeft = random2.nextBoolean(); 

     float gravity = random2.nextInt(6) + 8.0f; 
     float rotationStartingAngle = random2.nextInt(360); 
     float rotationIncrement = random2.nextInt(100)/3.0f; 

     if (random2.nextInt(1) % 2 == 0) { 
      rotationIncrement *= -1; 
     } 

     return new FruitProjectile02(bitmapCache.get(FruitType2.randomFruit().getResourceId()), maxWidth, maxHeight, 
       angle, speed, gravity, rightToLeft, rotationIncrement, rotationStartingAngle); 
    } 

    public void setWidthAndHeight(int width, int height) { 
     this.maxWidth = width; 
     this.maxHeight = height; 
     this.clip = new Region(0, 0, width, height); 
    } 

    @Override 
    public int testForCollisions(List<TimedPath> allPaths) { 
     int score = 0; 
     for (TimedPath p : allPaths) { 
      for (Projectile f : fruitProjectiles) { 
       if (!f.isAlive()) 
        continue; 
       Region projectile = new Region(f.getLocation()); 
       Region path = new Region(); 
       path.setPath(p, clip); 

       if (!projectile.quickReject(path) && projectile.op(path, Region.Op.INTERSECT)) { 
        if (FruitType2.currentrandom() <= 9) { 
         score++; 
        } else { 
         score = score - 5; 
        } 
        f.kill(); 
       } 
      } 
     } 
     return score; 
    } 
} 

为FruitType完整代码:

public enum FruitType2 { 
    T02(R.drawable.n002), 
    T04(R.drawable.n004), 
    T06(R.drawable.n006), 
    T08(R.drawable.n008), 
    T10(R.drawable.n010), 
    T12(R.drawable.n012), 
    T14(R.drawable.n014), 
    T16(R.drawable.n016), 
    T18(R.drawable.n018), 
    T20(R.drawable.n020), 


    OTHER1(R.drawable.n003), 
    OTHER2(R.drawable.n007), 
    OTHER3(R.drawable.n011); 

    private final int resourceId; 

    private FruitType2(int resourceId) { 
     this.resourceId = resourceId; 
    } 

    public int getResourceId() { 
     return resourceId; 
    } 

    private static final Random random = new Random(); 


    public static int currentrandom() { 


     return random.nextInt(FruitType2.values().length); 
    } 


    public static FruitType2 randomFruit() { 


     return FruitType2.values()[random.nextInt(FruitType2.values().length)]; 
    } 
} 

我理解这个问题,目前随机(时产生的果实)是不一样的随机当水果切片和我的问题是如何解决这个问题。我不知道,所以如果你有一些线索,我很感兴趣。

预先感谢您。

回答

1

也许我不明白这个问题,但为什么你不把随机数存储在变量中?稍后,您可以从变量中取出随机数。