bugfix> java > 投稿

の滑らかな動きをするコードです作成しようとしているゲームのボタンJavaで。これを作る方法はありますかコードが小さい?これらの正確な数字が欲しい、配列か何かを使うべきですか?簡単にする方法の例をいくつか教えてください。

if(viewJumping == 1) {
        switch(viewGravity) {
            case 0:
                viewY -= 2;
                viewJumping = 2;
                break;
            case 1:
                viewY -= 2;
                break;
            case 2:
                viewY -= 2;
                break;
            case 3:
                viewY -= 2;
                break;
            case 4:
                viewY -= 4;
                break;
            case 5:
                viewY -= 8;
                break;
            case 6:
                viewY -= 16;
                break;
            case 7:
                viewY -= 24;
                break;
            case 8:
                viewY -= 32;
                break;
            case 9:
                viewY -= 40;
                break;
            case 10:
                viewY -= 48;
                break;
            case 12:
                viewY += 2;
                viewJumping = 0;
                break;
            case 13:
                viewY += 2;
                break;
            case 14:
                viewY += 2;
                break;
            case 15:
                viewY += 2;
                break;
            case 16:
                viewY += 4;
                break;
            case 17:
                viewY += 8;
                break;
            case 18:
                viewY += 16;
                break;
            case 19:
                viewY += 24;
                break;
            case 20:
                viewY += 32;
                break;
            case 21:
                viewY += 40;
                break;
            case 22:
                viewY += 48;
                break;
        }
        viewGravity -= 1;
    }

回答 3 件
  • 配列についてのあなたの考えは、そのような何かにつながるかもしれません:

    int [] viewYs = {-2, -2, -2, -4 .....}
    int newValue = viewY + viewYs[viewGravity]
    
    

    そして、おそらく簡単な if/else  あなたの viewJumping のために  パラメータ

  • あなたが私が知らない要件が何であれ..しかし、私はあなたのものよりも少し良い解決策を持っています..配列を取る.. if if条件を使用します..

           int[] viewYArray = {2,2,2,2,4,8,16,24,32,40,48};
            if(viewJumping == 1) {
                if(viewGravity<=10)
                {
                    if(viewGravity==0)
                        viewJumping = 2;
                    viewY -= viewYArray[viewGravity];
                }
                else if(viewGravity>=12&&viewGravity<=22)
                {
                    if(viewGravity==12)
                        viewJumping = 0;
                    viewY += viewYArray[viewGravity-12];
                }
                viewGravity -= 1;
            }
    
    

  • あなたの値を Map に入れることができます :

    Map<Integer, Integer> map = new HashMap<>();
     map.put(0, 2);
     map.put(1, 2);
     map.put(2, 2);
     map.put(3, 2);
     map.put(4, 4);
     ...
    
    

    そして、短い if...else で値を更新するだけです :

    if (map.get(viewGravity) == null) {
        viewGravity = -1;
    } else if (viewGravity < 13) {
        viewY -= map.get(viewGravity);
    } else {
        viewY += map.get(viewGravity);
    }
    
    

    そして、あなたの viewJumping  別の設定:

    if(viewGravity == 0){
        viewJumping = 2;
    }
    if(viewGravity == 12){
        viewJumping = 0;
    }
    
    

あなたの答え