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

Pobieranie pozycji myszki względem okna

Ostatnio zmodyfikowano 2011-12-03 12:30
Autor Wiadomość
akwes
» 2011-11-28 17:12:02
To może warto sobie zaplanować cały kod jakoś sensownie. Bo mouse_x i mouse_y pobierają odległość względem górnego lewego okna ekranu, zawsze, i zawsze jest to wartość aktualna jeżeli się korzysta z mouse_x i mouse_y, nigdy nie było z tym problemu ani ze zbyt wolnym poruszaniem się myszki. 

Być może nie aktualizujesz zmiennych, które przechowują jakieś informacje, co każdy obieg pętli?

Nie pamiętam żebyś w swojej grze przesuwał ekran, ale jak przesuwasz to wypadałoby mieć klasę Kamera, która może podać wartość przesunięcia na x i na y, i klasa myszka to uwzględni.

Masz wszystko upakowane w klasy?


C/C++
// wszystko pisane z palca
class TButton;

class TMysz
{
public:
    bool IsIn( TButton * );
    bool IsPress( TButton * );
    bool IsClick( TButton * );
   
};

bool TMysz::IsIn( TButton * button )
{
    if( mouse_x > button->Left && mouse_y > button->Top )
    if( mouse_x < button->Left + button->Width && mouse_y < button->Top + button->Height )
         return 1;
   
    return 0;
   
}

bool TMysz::IsPress( Tbutton * button )
{
    if( IsIn() && mouse_b == 1 ) // zdaje sie bo nie pamietam jak tam wartosci byly w mouse_b
         return 1;
    else
         return 0;
   
}

bool TMysz::IsClick( TButton * button )
{
    if( IsIn() && mouse_b == 3 ) // tez zdaje sie ;p
    {
        button->Akcja();
        return 1;
    }
    else
         return 0;
   
}

class TButton
{
    friend class TMysz;
    int Top;
    int Left;
    int Width;
    int Height;
    bool Visible;
public:
    void Akcja();
    void Rysuj();
    //void Show();
    //void Hide();
}

void TButton::Rysuj()
{
    if( Visible )
         masked_blit(...);
   
}

void TButton::Akcja()
{
    if( Visible )
    {
        // Twoj kod wykonania buttona
    }
}
Na podobnym czymś pracowała moja gra w allegro 4.2 (nie mogę odkopać kodu na dysku) i z myszką nie było problemów.


Sprawdziłem sobie Twój przykład, który podałeś... Wszystko tam działa :P
P-44873
CTRL85
Temat założony przez niniejszego użytkownika
» 2011-11-28 19:13:07
U mnie właśnie nie działa... przy  wolnym ruchu nie zmieniają się liczby...
P-44883
Gabes
» 2011-11-28 19:27:00
Czy aby nie pozamieniałeś dll-ek z 4.4.0. na 4.4.2 albo tej pod msvc.
Mogą dziać się dziwne rzeczy gdy masz w systemie tę pod MinGW a kompilujesz pod msvc.
Miałem tak z Allegro 5.
 
P-44884
CTRL85
Temat założony przez niniejszego użytkownika
» 2011-11-28 19:47:57
Wyczyszę pozostałości z wersji 4.4 z C:/Windows, której nie mogłem zmusić do uruchomienia, i zobaczę, choć wątpię by cokolwiek to dało.
P-44886
akwes
» 2011-11-28 19:50:31
Przykład, który wysłałeś z *.dll, który był w *.rar, działał u mnie bez zarzutu.

A to znaczy że jest to wina a) software b) hardware

Aby wykluczyć b) najlepiej postaw czystą maszynę wirtualną z czystym systemem i zobacz jak zachowuje się aplikacja. Jeżeli dalej wariuje to znaczy że winowajcą jest hardware, a jeżeli nie, to można myśleć co dalej.
P-44888
CTRL85
Temat założony przez niniejszego użytkownika
» 2011-11-29 15:18:31
Wieczorkiem załaduje demko menu, i zobaczymy czy będzie działać, bo jak tak, to nie będę nad tym siedział, bo i tak preferuję klawiaturę :P

Swoją drogą już wierzę producentom gier, jak mówią, że robienie dem to masa roboty. xD
P-44939
Gabes
» 2011-11-29 15:39:20
A ja tam preferuje myszkę do obsługi menu właśnie dzisiaj zrobiłem sobie małe menu do jakiejś tam gry.  http://www.wrzuc.to/0kKrALlO.wt 789KB.
P-44942
CTRL85
Temat założony przez niniejszego użytkownika
» 2011-11-29 17:09:36
dodaj rest(20); lub _sleep(20); bo chyba nie widziałeś jak muli, i jakie zużycie procesora jest - też tak miałem. :P

PS: Oszałamiająca rozdzielczość ;>

EDIT:
Miało być demo, ale jest BJ 1.3 z obsługą myszki w menu. :P Działa to dobrze?

http://www.przeklej.pl/plik/blackjack-exe-0037ak9kg40i
P-44961
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona