Warsztat.GD

Programowanie => Językoznawstwo => C# => Wątek zaczęty przez: maro20 w Grudzień 22, 2006, 10:51:40

Tytuł: Przesuwanie kart
Wiadomość wysłana przez: maro20 w 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 */
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: KrystianD w 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
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w 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.     
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w 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ą.
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w 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ą) ?
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: KrystianD w Grudzień 28, 2006, 23:25:32
kolejność rysowania......
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w 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)
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: KrystianD w 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 ?
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w Grudzień 29, 2006, 19:30:12
Tak...
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w 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.
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: KrystianD w 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ł  :)
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w 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.   
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: KrystianD w 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  ;)
Tytuł: Odp: Przesuwanie kart
Wiadomość wysłana przez: maro20 w Grudzień 29, 2006, 20:30:35
największa kopalnia wiedzy  :) dzięki za pomoc