Форма окна C++: как я могу разрешить перетаскивание изображения на другое поле изображения, если изображения равны
Я делаю карточную игру в форме c++ windows. Я хотел бы, чтобы графическая коробка с изображением карты была сброшена на стопку карт только в том случае, если масть карты или ее числовое значение совпадают. У меня есть изображения, названные по масти и числовому значению. Я также не уверен, какое событие должно иметь код, где он делает сравнение между двумя объектами. Я ценю любую помощь в этом вопросе. Спасибо.
private: System::Void player1card1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { if (e->Button == System::Windows::Forms::MouseButtons::Left) { dragging = true; currentX = e->X; currentY = e->Y; } } private: System::Void player1card1_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { //textBox2->Text = imageList1->Images->Keys[2]; //textBox2->Text = sender->ToString(); if (dragging) { player1card1->BringToFront(); player1card1->Top = player1card1->Top + (e->Y - currentY); player1card1->Left = player1card1->Left + (e->X - currentX); //textBox2->Text = player1card1->AccessibleName->ToString(); //textBox2->Text = cardInPlay->AccessibleName->ToString(); //textBox2->Text = player1card3->AccessibleName->ToString(); textBox2->Text = player1card2->AccessibleName->ToString(); } } private: System::Void player1card1_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { dragging = false; }
Ниже приведено событие для раздачи карт кнопка нажата:
private: System::Void dealCards_Click(System::Object^ sender, System::EventArgs^ e) { //textBox2->Text=imageList1->Images->Keys[1]->ToString(); int rand_ind; Random^ rand = gcnew Random; for (int i = 0; i < imageList1->Images->Count-1; i++) { rand_ind = (rand->Next(0, 51));//) % (imageList1->Images->Count - i));//generate random index number imageList1->Images->Add(imageList1->Images[i]); imageList1->Images->Add(imageList1->Images[rand_ind]); imageList1->Images->RemoveAt(i);//remove image from current index imageList1->Images->RemoveAt(rand_ind);//remove random image from list } cardInPlay->Image = imageList1->Images[1]; cardInPlay->AccessibleName = imageList1->Images->Keys[1]->ToString(); player1card1->Image = imageList1->Images[2]; player1card1->AccessibleName = imageList1->Images->Keys[2]->ToString(); player1card2->Image = imageList1->Images[3]; player1card2->AccessibleName = imageList1->Images->Keys[3]->ToString(); player1card3->Image = imageList1->Images[4]; player1card3->AccessibleName = imageList1->Images->Keys[4]->ToString(); player1card4->Image = imageList1->Images[5]; player1card4->AccessibleName = imageList1->Images->Keys[5]->ToString(); player1card5->Image = imageList1->Images[6]; player1card5->AccessibleName = imageList1->Images->Keys[6]->ToString(); player1card6->Image = imageList1->Images[7]; player1card6->AccessibleName = imageList1->Images->Keys[7]->ToString(); player1card7->Image = imageList1->Images[8]; player1card7->AccessibleName = imageList1->Images->Keys[8]->ToString(); player2card1->Image = imageList1->Images[9]; player2card1->AccessibleName = imageList1->Images->Keys[9]->ToString(); player2card2->Image = imageList1->Images[10]; player2card2->AccessibleName = imageList1->Images->Keys[10]->ToString(); player2card3->Image = imageList1->Images[11]; player2card3->AccessibleName = imageList1->Images->Keys[11]->ToString(); player2card4->Image = imageList1->Images[12]; player2card4->AccessibleName = imageList1->Images->Keys[12]->ToString(); player2card5->Image = imageList1->Images[13]; player2card5->AccessibleName = imageList1->Images->Keys[13]->ToString(); player2card6->Image = imageList1->Images[14]; player2card6->AccessibleName = imageList1->Images->Keys[14]->ToString(); player2card7->Image = imageList1->Images[15]; player2card7->AccessibleName = imageList1->Images->Keys[15]->ToString(); }
Что я уже пробовал:
Я попробовал операторы if, которые не допускают падения на x и y, где находится стопка карт, если масть карты и числовое значение не совпадают внутри события перемещения мыши, но это позволило мне бросить карту в стопку.
Rick York
Это управляемый C++, и это важное различие, которое нужно сделать.