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 |
|
DejaVu |
» 2009-07-04 21:22:02 Jeśli klawisz nie jest wciśnięty - zatrzymaj muzykę. |
|
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ę int readkey = klawisz;
while( !key[ KEY_ESC ] ) { if( klawisz = key[ KEY_A ] ) { play_sample( dzwiek, 255, 255, 1000, 1 ); if( klawisz = 0 ) { pause_sample( dzwiek ); } } No niby wszystko fajnie w teorii,ale nie umiem znaleźć funkcji na pause dźwięku. Znacie ją? |
|
DejaVu |
» 2009-07-04 22:12:49 W kodzie masz błędy. = to przypisanie == to porównanie stop_sample() |
|
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. while( !key[ KEY_ESC ] ) { if( klawisz = key[ KEY_A ] ) { play_sample( dzwiek, 255, 255, 1000, 0 ); rest( 1000 ); if( klawisz != key[ KEY_A ] ) { stop_sample( dzwiek ); } } }
Myślę co zrobić, żeby gdy trzymam A dźwięki się nie nakładały, jakieś sugestie? |
|
Patzick |
» 2009-07-05 03:38:34 Piotr napisał Ci już poprzednio że = to przypisane a == porównanie, więc warunek if( klawisz = key[ KEY_A ] )
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: 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 |
|
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... while( !key[ KEY_ESC ] ) { if( klawisz == key[ KEY_A ] ) { play_sample( dzwiek, 255, 255, 1000, 0 ); rest( 1000 ); if( klawisz != key[ KEY_A ] ) { stop_sample( dzwiek ); } } }
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.... |
|
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 :) |
|
« 1 » 2 |