Aktualizowanie trzech zmiennych - Java, Processing


(kid_m) #1

hej.

mam 2 numberbox'y (pola) w których są wpisane wartości, odpowiednio po 50.

każde z pól można modyfikować (wciśnięty RMB i ruch myszy), zmieniając jego wartość w zakresie [0, 100].

gdy modyfikuję pierwsze pole - automatycznie akutalizuje się drugie pole. i vice versa...

chciałbym wprowadzić kolejne (trzecie) pole i tutaj pojawia się problem. w jaki sposób najkrócej zapisać nowe warunki...?

public void szansaIFS1(int theValue) {

  szansaIFS1 = theValue;

  szansaIFS2 = 100 - theValue;

  updateSzansaController("szansaIFS2", szansaIFS2);

}


public void szansaIFS2(int theValue) {

  szansaIFS2 = theValue;

  szansaIFS1 = 100 - theValue;

  updateSzansaController("szansaIFS1", szansaIFS1);

}


void updateSzansaController(String theControllerName, int theValue) {

  cp6.controller(theControllerName).setBroadcast(false);

  cp6.controller(theControllerName).setValue(theValue);

  cp6.controller(theControllerName).setBroadcast(true);

}

(Martini M) #2

Witam,

Może takie podejście (rozważania ogólne):

  1. We wszystkich polach po równo na ile się da po równo (A = 33, B = 33, C = 34).

  2. Zmiana (powiedzmy) A w dół np na 23 powoduje, że to co zdjęliśmy (tu 10) dzielimy po równo na 2 pozostałe (B = 38, C = 39).

  3. Sytuacja w drugą stronę A zmieniamy na większe np. 43 to po równo zabieramy od pozostałych.

Trzeba rozważyć przypadki brzegowe, np taki: A=50, B=3, C=47. Zwiększając A o 10 (zabieramy po równo, czyli po 5), ale w B już się nie da zabrać więcej niż 3, więc trzeba resztę zabrać z C, co w ostateczności da A = 60, B = 0, C = 40.

No i podobny przypadek przy zmniejszaniu (dla tych samych danych wyjściowych co powyżej) zmniejszając A o 10 dostaniemy: A = 40, B = 8, C = 52.

Można też dodać wagi do pól i podział robić nie po równo, ale wagowo.

Tu ciężko zastosować proste podejście na zasadzie temu zabrać to drugiemu dać. Owszem, ale ile:)

Opracuj własny sposób podziału, albo skorzystaj z podanych przeze mnie.

Powodzenia