CYFROWY BARON • PROGRAMOWANIE • Zobacz wÄ…tek - TStringList + Timage

TStringList + Timage

dział ogólny

TStringList + Timage

Nowy postprzez michael23 » piÄ…tek, 28 stycznia 2011, 18:17

Witam,
Stworzyłem Tstringlist
Kod: Zaznacz cały
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   cards = new TStringList();

   cards->Add("2 clubs=1");
   cards->Add("3 clubs=2");
   cards->Add("4 clubs=3");
   cards->Add("5 clubs=4");
   cards->Add("6 clubs=5");
   cards->Add("7 clubs=6");
   cards->Add("8 clubs=7");
   cards->Add("9 clubs=8");
   cards->Add("10 clubs=9");
   cards->Add("jack clubs=10");
   cards->Add("queen clubs=11");
}


chce wykorzystać TsringList do przetasowania kart, przypisania po 2 karty na gracza i wyświetlenia kart w poszczególnych Timage, niestety nie wiem
na tą chwilę jak wydobyć wartości kart i czy należy je gdzieś dodatkowo przechować? Ma to posłużyć grze w pokera texas holdem. Chciałem nadmienić tylko, ze to moje początki z programowaniem.
Avatar użytkownika
michael23
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): piątek, 28 stycznia 2011, 14:52
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: TStringList + Timage

Nowy postprzez Cyfrowy Baron » piÄ…tek, 28 stycznia 2011, 19:36

To jakieś zadanie szkolne?! :D Identyczny temat był poruszany w tym wątku http://programowanie.cal.pl/forum/viewtopic.php?f=2&t=1251 więc nie będę się powtarzał.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: TStringList + Timage

Nowy postprzez michael23 » piÄ…tek, 28 stycznia 2011, 21:17

Z tego co tam widzę pomysł z TStringListem został odrzucony. Myślałem, że TImage będą wypełniane z TImageList, w którym są w odpowiedniej kolejności umieszczone karty (tak by nr indexu oznaczał jednocześnie wartość karty). Zwykła tablica int wypełniona losowymi numerami bez powtórzeń z zakresu od 1 do 52, tylko nie wiem jak wtedy wczytywać pierwszy argument do GetBitmap z wspomnianej tablicy int ImageList1->GetBitmap( 0, ik1->Picture->Bitmap );
Chodzi mi o coÅ› takiego
Kod: Zaznacz cały
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   GetBitmap( tab[1], Image1->Picture->Bitmap);
   GetBitmap( tab[2], Image1->Picture->Bitmap);
}


NO i jak do tego wykorzystać TStringList o ile jest on w ogóle potrzebny.
Avatar użytkownika
michael23
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): piątek, 28 stycznia 2011, 14:52
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: TStringList + Timage

Nowy postprzez Cyfrowy Baron » piÄ…tek, 28 stycznia 2011, 21:24

(tak by nr indexu oznaczał jednocześnie wartość karty).


Jeżeli posortujesz karty, to indeksy w TImageList i tak pozostaną na swoich miejscach, gdyż są to tylko kolejne numery tej listy. Nie możesz więc na stałe powiązać konkretnych bitmap z indeksami. Dlatego zaproponowałem wektor, przy czym wektor działa dokładnie w ten sam sposób jak TImageList, jeżeli chodzi o indeksy, jednak wektor może przechowywać różne wartości i przechowuje identyfikatory do bitmap w zasobach, dzięki czemu posortowanie wektora nie zmienia jego powiązań z bitmapami, gdyż w zasadzie są dwie listy jednak w zasobach i jedna w wektorze. W kolejnym rozwinięciu programu polegającym na dodaniu funkcji przesuwania kart po Image musiałem dodać jeszcze tablicę asocjacyjną. Tego zadania nie da się załatwić jednym, czy nawet kilkoma ImageList, trzeba mocno się nad tym napracować.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: TStringList + Timage

Nowy postprzez michael23 » piÄ…tek, 28 stycznia 2011, 21:29

chodziło mi o to ze tablica int z losowymi wartościami ma wskazać na index z TimageList który ma być użyty do wyswietlenia.
Podając jako nr indexu wlaśnie wartość z tej tablicy w GetBitmap
Avatar użytkownika
michael23
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): piątek, 28 stycznia 2011, 14:52
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: TStringList + Timage

Nowy postprzez Cyfrowy Baron » sobota, 29 stycznia 2011, 10:03

tylko nie wiem jak wtedy wczytywać pierwszy argument do GetBitmap z wspomnianej tablicy int ImageList1->GetBitmap( 0, ik1->Picture->Bitmap );


Pierwszy argument to przecież pierwszy element tablicy, czyli tab[0] i w zasadzie sam sobie odpowiedziałeś, więc nie wiem o co tak naprawdę pytasz.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: TStringList + Timage

Nowy postprzez michael23 » sobota, 29 stycznia 2011, 22:19

ok Po przeczytaniu tematu z linku podanego wyżej zmieniłem koncepcję. Mam inne pytanie mianowicie jak po takiej funkcji
Kod: Zaznacz cały
void __fastcall TForm1::ShuffleCards(void)
{
   for(int i = 0; i < 3; i++)   //tasowanie
     random_shuffle(vCards.begin(), vCards.end());
   DrawCards();
}

wydobyć potasowane indexy i zapisać je do tablicy najlepiej typu int jakiejś klasy?
Można prosić o mini przykład na kodzie?
Avatar użytkownika
michael23
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): piątek, 28 stycznia 2011, 14:52
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows 7Firefox

Re: TStringList + Timage

Nowy postprzez Cyfrowy Baron » sobota, 29 stycznia 2011, 23:54

Potasowane indeksy znajdują się w wektorze vCards, do wektora odwołujesz się poprzez jego indeks, czyli vCards[int Index], np:

KOD cpp:   •  UKRYJ  •
int index = vCards[5]; /* 6 indeks z tablicy vCards, gdyż liczy się od 0 */


wydobyć potasowane indexy i zapisać je do tablicy najlepiej typu int jakiejś klasy?


wektor może przechowywać indeksy różnego typu, tutaj jest to typ int, więc wektor vCards jest tablicą int jakiej potrzebujesz, nie trzeba więc go już nigdzie przepisywać.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
michael23
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości