Witam!
Próbuję zrobić grę karcianą podobną do gwinta z Wiedźmina 3. Wczytuje z plików dane o kartach i dynamicznie tworzę na ich podstawie karty w ręce. Dynamicznie tworzę również puste miejsca, w których można te karty umieścić. Niestety nie wiem jak zrobić przeciąganie i upuszczanie tak utworzonych obiektów.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "gwint.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
using namespace std;
string intToStr(int n)
{
string tmp, ret;
if(n < 0) {
ret = "-";
n = -n;
}
do {
tmp += n % 10 + 48;
n -= n % 10;
}
while(n /= 10);
for(int i = tmp.size()-1; i >= 0; i--)
ret += tmp[i];
return ret;
}
AnsiString stringtoAnsi(string s)
{
AnsiString as;
as = s.c_str();
return as;
}
class karta
{ public:
char gora_dol;
int sila;
int rzad;
std::string nazwa;
std::string opis;
void wczytaj(const int numer)
{
char znak;
int s,r;
std::string nazwa1; std::string opis1;
std::string nr;
nr=intToStr(numer);
nr=nr+".txt";
ifstream plik;
string R = nr;
char * S = new char[R.length() + 1];
std::strcpy(S,R.c_str());
plik.open(S);
// while(plik>>s>>r>>nazwa1>>opis1)
// while(plik>>s>>r>>nazwa1>>opis1)
while(plik>>s>>nazwa1>>opis1)
{
//gora_dol=znak;
this->sila=s;
//this->rzad=r;
this->nazwa=nazwa1;
opis=opis1;
}
plik.close();
}
};
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
karta t;
vector<karta> kolekcja;
for(int i=0;i<5;i++)
{///karty do przenoszenia
t.wczytaj(i);
kolekcja.push_back(t);
TImage *card = new TImage (this);
card->Parent=this;
card->Width= 105;
card->Height=133;
card->Hint=stringtoAnsi(t.nazwa+"\n"+t.opis+"\nSila:"+intToStr(t.sila));
card->Name="D_reka_"+i;
card->ShowHint=true;
card->HelpType=htContext;
card->Enabled=true;
card->Picture->LoadFromFile(stringtoAnsi("C:\\Obiektowo\\gwint\\"+(intToStr(i)+".bmp")));
card->Top=640;
card->Left=120+((i)*128);
card->Visible=true;
card->Cursor=crHandPoint;
card->DragCursor=crDrag;
}
for(int i=0;i<5;i++)
{
TEdit *r1_moc = new TEdit (this);
r1_moc->Parent=this;
r1_moc->Height=21;
r1_moc->Width=41;
r1_moc->Visible=true;
r1_moc->Top=755;
r1_moc->Left=180+((i)*128);
r1_moc->Color=clGreen;
r1_moc->ReadOnly=true;
r1_moc->Text=stringtoAnsi(intToStr(kolekcja[i].sila));
}
for(int i=0;i<10;i++)
{///wolne miejsca do upuszczania kart(card)
TImage *r1_wolne = new TImage (this);
r1_wolne->Parent=this;
r1_wolne->Width= 105;
r1_wolne->Height=133;
r1_wolne->Picture->LoadFromFile("C:\\Obiektowo\\gwint\\empty.bmp");
r1_wolne->Top=400;
r1_wolne->Left=100+(i*128);
}
}