Autor Wątek: Przesuwanie kart  (Przeczytany 3499 razy)

Offline maro20

  • Użytkownik

# Grudzień 22, 2006, 10:51:40
Robie grę karcianą Pasjans kilka wersji (na zaliczenie do szkoły). Pisze ją w C#, chciałem dodać przesuwanie kart (klikam na kartę, chwytam i mogę ją przesuwać). Będzie to bardzo skomplikowane? Może posiada ktoś przykładowy kod (i podesłał by go)  który mógłbym wykorzystać. 

/* mod: wątek przesunięty do bardziej stosownego działu */
« Ostatnia zmiana: Grudzień 22, 2006, 11:20:54 wysłana przez Xion »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Grudzień 22, 2006, 13:13:53
Deklarujesz sobie zmienną czyPrzesuwanie i numerKarty, teraz w zdarzeniu MouseDown sprawdzasz czy myszka znajduje się nad którąś kartą, jeżeli tak to numerKarty przyjmuje właśnie numer tej karty a czyPrzesuwanie = true.

W zdarzeniu MouseMove sprawdzasz czy czyPrzesuwanie == true, jeżeli tak, to pozycja karty = pozycja myszki.

Możesz sie też pokusić o zrobienie tak, żeby uwzględniać początkowe przesunięcie pozycji myszki względem położenia karty (offset) terez w MouseMove pozycja karty = pozycja myszki - offset

Offline maro20

  • Użytkownik

# Grudzień 22, 2006, 18:51:09
Numery kart po wylosowaniu chciałbym umieścić w tabeli będzie widać tylko tą wierzchnią i pokazać ją w polu pictureBox. Jak teraz zacznę ruszać kartą to zmienię pozycję pola pictureBox dobrze myślę? Po ułozeniu na odpowiednią kupkę należało by pole to cofnąć na odpowiednie miejsce. A może po kliknięciu należałoby stworzyć jakieś pole chwilowe z obrazem tej karty pokazywane do momentu puszczenia przycisku?

Pierwszy raz coś takiego robię, wiec moje pytania mogą być trochę śmieszne.     
« Ostatnia zmiana: Grudzień 22, 2006, 19:22:30 wysłana przez maro20 »

Offline maro20

  • Użytkownik

# Grudzień 28, 2006, 12:06:58
zrobilem poruszanie kartami teraz zrobił sie problem aby ruszana karta była na wierzchu. W jaki sposób to wykonac. Jeszcze potrzebne bedzie sprawdzenie czy moge ta kartę polozyć na danej kupce. Czyli przydałoby sie odczytywanie karty jaka znajdzie sie pod przesuwaną.

Offline maro20

  • Użytkownik

# Grudzień 28, 2006, 22:08:59
Jak zrobić aby ruszana karta ukladała sie na wierzchu pozostałych kart. Co ustala warstwy(jedna zachodzi na drugą) ?

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Grudzień 28, 2006, 23:25:32
kolejność rysowania......

Offline maro20

  • Użytkownik

# Grudzień 29, 2006, 09:34:34
kolejność rysowania......

do tego doszedłem ale moze da sie to zmieniać jak klikne na kartę aby stała sie tą najwyższą ??

Jeszcze jedno: pictureBox1 lezy w Point(20,70) w jak sposób podając jej położenie sprawdzić (nie klikając na nią) odczytać jaki pictureBox.Name tam lezy? (przy klikaniu na odpowiednią katrę "label.Text = control.Name" dziala)
« Ostatnia zmiana: Grudzień 29, 2006, 09:39:44 wysłana przez maro20 »

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Grudzień 29, 2006, 15:25:29
Jeszcze jedno: pictureBox1 lezy w Point(20,70) w jak sposób podając jej położenie sprawdzić (nie klikając na nią) odczytać jaki pictureBox.Name tam lezy? (przy klikaniu na odpowiednią katrę "label.Text = control.Name" dziala)

Poczekaj, czy ty każdą karte rysujesz jako osobny pictureBox ?

Offline maro20

  • Użytkownik

# Grudzień 29, 2006, 19:30:12
Tak...

Offline maro20

  • Użytkownik

# Grudzień 29, 2006, 19:33:00
Cytuj
Poczekaj, czy ty każdą karte rysujesz jako osobny pictureBox ?
Cytuj

Narazie nad tym myślę, jakis prostrzy sposób zrobiena pasjansa?? Chętnie wysłucham. Chcę aby działał/wyglądał  tak jak ten w windowsie.

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Grudzień 29, 2006, 19:52:13
Rysowania każdej karty w osobnym pictureBox'ie jest troche bez sensu, lepiej zrobić jeden duży i do niego wszystko wrzucać, a co do sprawdzania to dla każdego obiektu (karty) przechowujesz jego pozycję. W zdarzeniu MouseMove pictureBox'a dla każdej karty robisz:

if (new Rectangle (pozycjaKarty, wymiaryKarty).Contains (pozycjaMyszki))Musisz uważać bo może zostać zwrócone kilka kart dla danej pozycji i musisz wybrać tę która jest najwyżej.

Ale tak na przyszlość musisz sam takie rzeczy robić, bo nikt za Ciebie gry na forum nie będzie Twojej gry pisał  :)

Offline maro20

  • Użytkownik

# Grudzień 29, 2006, 20:19:53
Może i nie najlepszy pomysł mam, czasu mało i brak sensownych książek.
Potrzebne mi jeszcze jest możliwość zmiany kolejności wyświetlania pictureBox. Aby po kliknięciu był na wierzchu.   

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Grudzień 29, 2006, 20:23:49
Jak już musisz tak robić to chwila szukania w MSDN i masz funkcje PictureBox.BringToFront ();

A co do książek to mam najlepszą: internet  ;)
« Ostatnia zmiana: Grudzień 29, 2006, 20:26:24 wysłana przez Krystian D. »

Offline maro20

  • Użytkownik

# Grudzień 29, 2006, 20:30:35
największa kopalnia wiedzy  :) dzięki za pomoc