Ustawienie odległości między elementami tablicy

W.L
2016-08-24 22:49
W.L

Rejestracja: 4 lata temu

Ostatnio: 3 lata temu

0

Cześć!

W ramach nauki programowania piszę prostą aplikację ("grę") konsolową. Zabawa polega na tym, że z jednej tablicy jest losowany dźwięk, a z drugiej interwał. Obydwa są podane userowi, a ten musi podać dźwięk oddalony od wylosowanego o dany interwał.

I tu pojawia się mój problem. Nie wiem jak ustanowić te odległości między elementami tablicy. Wygląda ona tak:

String sounds[] = {"a", "ais", "b", .... , "g", "gis"};

Pomiędzy dwoma sąsiednimi elementami jest 0.5 tonu odległości (sekunda mała). Kolejnym problemem jest to, że pomiędzy gis a a również jest pół tonu odległości, natomiast między a a gis jest już septyma wielka.

Proszę o jakieś wskazówki, byle nie gotowe rozwiązania

Pozdrawiam
Witek.

EDIT: Oczywiście te odległości między elementami tablicy są po to, aby sprawdzić czy użytkownik podał dobrą odpowiedź.

edytowany 2x, ostatnio: W.L, 2016-08-25 01:19

Pozostało 580 znaków

2016-08-25 10:33

Rejestracja: 3 lata temu

Ostatnio: 1 rok temu

0

Może warto stablicować całą klawiaturę? O ile ja pamiętam, to pozycję na klawiaturze podawało się też poprzez indeks, np. C1 to była oktawa niżej od C, c5 to była górna granica klawiatury fortepianu itp Poza tym jako opcja dodatkowa - myślałeś może o tym, żeby za pomocą chociażby FFT (ew. CQT) zrobić opcję "zagwizdaj dany dźwięk" :)?.

Pozostało 580 znaków

Krzywy Orzeł
2016-08-25 15:10
Krzywy Orzeł
0

Fakt, można całą klawiaturę zapisać w tablicy. Dzięki za radę. A jak uzależnić od siebie dźwięki?

Co do gwizdania to może kiedyś poszerzę funkcjonalność, jak już będę lepszy w te klocki ;)

Pozostało 580 znaków

2016-08-25 16:36

Rejestracja: 3 lata temu

Ostatnio: 2 godziny temu

0

łopatologiczna podpowiedź, po prostu użyj ArrayList<t> i List<t>:

        List<String> sounds = new ArrayList<>();
        sounds.add("a");
        sounds.add("b");
        sounds.add("c");
        sounds.add("d");
        sounds.add("e");
        sounds.add("f");
        sounds.add("g");
        sounds.add("a");

        System.out.println("Dzwiek na 2 pozycji tablicy " + sounds.get(1));
        System.out.println("Dzwiek na 4 pozycji tablicy " + sounds.get(3));

        System.out.println("Pozycja dzwieku a w tablicy " + sounds.indexOf("a"));
        System.out.println("Pozycja dzwieku d w tablicy " + sounds.indexOf("d"));

        int randomSound = (int) (Math.random() * sounds.size());

        System.out.println(randomSound);
        System.out.println(sounds.get(randomSound));

Zrób drugą ArrayListę z interwałami, potem blok if-else do porównania i chyba tyle
miłej zabawy :)

a no i nie ma co się przejmować tym, że jest 1/2 tonu między dźwiękami, tylko że tablica ma powiedzmy 11 półtonów - elementów, od "a" do "gis"


Panie Żurawiecki, projektowanie to nie jest sprzedawanie pietruszki. Do widzenia Panu.
edytowany 1x, ostatnio: trojanus, 2016-08-25 16:38

Pozostało 580 znaków

W.L
2016-08-26 12:04
W.L

Rejestracja: 4 lata temu

Ostatnio: 3 lata temu

0

Dzięki za podpowiedzi. Spróbuję coś pogrzebać przy tym

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0