Ustawienie odległości między elementami tablicy

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ź.

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" :)?.

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 ;)

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"

0

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

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