Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ allegro,problem z klawiatura

Ostatnio zmodyfikowano 2009-07-05 16:52
Autor Wiadomość
franz
Temat założony przez niniejszego użytkownika
C++ allegro,problem z klawiatura
» 2009-07-04 19:16:51
Witam,mam pewien problem z programikiem,który zacząłem tworzyć w c++ allegro.
Otóż chodzi mi o to,żeby poprzez naciśniecie klawisza odtworzyć jakiś dźwięk. Wszystko działa OK,ale ja chce żeby dźwięk grał dopóki klawisz np. A jest wciśnięty, a w momencie gdy go puszcze, żeby dźwięk przerwał się.
Długo googlowałem,próbowałem prze timery, bool i wszystko co przyszło mi na myśl,ale nie potrafię tego napisać. Proszę o podpowiedz.

Przy okazji ze zakładam temat dodam jeszcze jedno pytanie.
Mianowicie, tworząc inny program potrzebowałem ścieżki dostępu do pewnego pliku na dysku. Chodziło mi o to żeby wejść do pewnego katalogu bez znania litery dysku i nazwy usera na innym komputerze,na którym ten program będzie używany.I znalazłem zarys takiej ścieżki(nie pamiętam skrótu dla litery dysku)
%litera dysku%\\"documents and settings"\\%username%\\mojagra\\NIEZNANY FOLDER\\save
Chodzi mi o to, że dochodzę to folderu MOJA GRA w którym jest następny folder, którego nazwy nie znam.Wiem natomiast,ze w tym folderze jest na pewno katalog SAVA.Czy nie znając nazwy tego folderu,ale wiedząc jaka ma zawartość można się jakoś do niego dostać? Potrzebne mi to do poprzedniego nieskończonego programu.

Proszę o jakiekolwiek info.
Pozdro franz

//Patzick: Wciskaj alt w miejscach, gdzie powinny być polskie znaki, to wiele nie kosztuje
P-8220
DejaVu
» 2009-07-04 21:22:02
Jeśli klawisz nie jest wciśnięty - zatrzymaj muzykę.
P-8222
franz
Temat założony przez niniejszego użytkownika
» 2009-07-04 22:04:47
Hmmm nie wiem,chodzi o to,ze klawiszy będzie kilka,a każdy będzie odpowiadał innemu dźwiękowi. Ale spróbuję
C/C++
int readkey = klawisz;

while( !key[ KEY_ESC ] )
{
    if( klawisz = key[ KEY_A ] ) { play_sample( dzwiek, 255, 255, 1000, 1 );
       
        //gdy nacisne A muzyka leci
       
        if( klawisz = 0 ) { pause_sample( dzwiek ); }
       
        //gdy readkey=0 czyli przycisk nie jest wcisniety muza pausuje
    }
No niby wszystko fajnie w teorii,ale nie umiem znaleźć funkcji na pause dźwięku.
Znacie ją?
P-8223
DejaVu
» 2009-07-04 22:12:49
W kodzie masz błędy.
= to przypisanie
== to porównanie
stop_sample()
P-8224
franz
Temat założony przez niniejszego użytkownika
» 2009-07-04 22:43:20
Hmmm jestem już bliżej rozwiązania,ale jeszcze mały problem.
C/C++
while( !key[ KEY_ESC ] )
{
   
    if( klawisz = key[ KEY_A ] ) { play_sample( dzwiek, 255, 255, 1000, 0 );
        rest( 1000 );
       
        //gdy trzymam A muzyka leci,ale po czasie wlacza sie od nowa i naklada na poprzednie dzwieki,efekt spoko,ale nie o to mi chodzi hehe
       
        if( klawisz != key[ KEY_A ] ) { stop_sample( dzwiek ); }
       
        //gdy klawisz rozny od A muzyka stopuje,to dziala OK
    }
}
Myślę co zrobić, żeby gdy trzymam A dźwięki się nie nakładały, jakieś sugestie?
P-8226
Patzick
» 2009-07-05 03:38:34
Piotr napisał Ci już poprzednio że
= to przypisane a == porównanie, więc warunek
C/C++
if( klawisz = key[ KEY_A ] )
//powinien wyglądać tak:
     if( klawisz == key[ KEY_A ] )
tym restem tak naprawdę nic nie robisz poza wstrzymaniem programu. I myślę, że mógłbyś to zrobić tak:
C/C++
while( !key[ KEY_ESC ] )
{
   
    if( klawisz == key[ KEY_A ] ) {
        while( !key[ B ] ) { play_sample( dzwiek, 255, 255, 1000, 0 ); };
        stop_sample( dzwiek );
    };
}
Nie wiem czy o tej porze dobrze myślę, ale chyba po wciśnięciu klawisza A to dopóki nie wciśniesz klawisza B będzie grało a potem (po naciśnięciu B) zatrzyma się. Spróbuj, jeśli to jeszcze nie działa to potem postaram się rzucić bardziej racjonalną propozycję :P
P-8229
franz
Temat założony przez niniejszego użytkownika
» 2009-07-05 11:50:46
To co napisales nie dziala.Po pierwsze nie chodzi mi o to,zeby dzwiek byl przerywany podczas nacisniecia innego przycisku,ale podczas puszczenia A.
Po drugie musze dac rest(1000); bo jak nie dam to muzyka leci baaardzo szybko.Po trzecie w twoim kodzie tez nakladaja sie glosy.Chyba jednak juz lepiej dzialal post kod napisany post nad toba...
C/C++
while( !key[ KEY_ESC ] )
{
   
    if( klawisz == key[ KEY_A ] ) { play_sample( dzwiek, 255, 255, 1000, 0 );
        rest( 1000 );
       
        //gdy trzymam A muzyka leci tylko przy wcisnietym A,ale po czasie wlacza sie od nowa i naklada na poprzednie dzwieki,efekt spoko,ale nie o to mi chodzi hehe
       
        if( klawisz != key[ KEY_A ] ) { stop_sample( dzwiek ); }
       
        //gdy klawisz rozny od A muzyka stopuje,to dziala OK
    }
}

Ten kod jest najblizej tego co dotychczas probowalem.Rzecz w tym,ze gdy A jest trzymane dluzej,dziek wlancza sie od nowa i nachodzi na poprzednie.

PS:Sorry ze nie pisze polskich znakow,ale pracuje na niemieckiej klawiaturze....
P-8236
DejaVu
» 2009-07-05 11:57:50
Cóż... wiem, że komuś już pisałem w jaki sposób odtwarzać i zatrzymywać dźwięk. Zresztą tematem tej dyskusji jest klawiatura, a nie dźwięk więc nie wiem w sumie czemu się na ten temat rozwodzimy :)
P-8238
« 1 » 2
  Strona 1 z 2 Następna strona