Как лучше написать код переключения в Java (плавное движение с точными числами) - PullRequest
0 голосов
/ 25 мая 2018

Это код для плавного перемещения кнопки в моей игре, которую я пытаюсь сделать в 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 ]

0 голосов
/ 25 мая 2018

независимо от ваших требований, я не знаю ... но у меня есть немного лучшее решение, чем у вас ... возьмите массив ... и используйте условие if else ..

        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;
        }
0 голосов
/ 25 мая 2018

Вы можете поместить свои значения в 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;
}
0 голосов
/ 25 мая 2018

Ваша идея о массиве может привести к чему-то вроде этого:

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

И, может быть, просто if/else для вашего viewJumping параметра

...