Witam,
Stworzyłem ( a raczej ładnie przepisałem) kod gry "Arkanoid" z poradnika na YouTube(https://www.youtube.com/watch?v=I_vW4KQ99Yk) , w ramach ćwiczeń postanowiłem nieco rozbudować tą aplikacje, dodając do niej między innymi kolejne poziomy. ( Korzystam z programu C++ Builder, jak w poradniku) Stworzyłem więc w projekcie drugą formę, obiekty na niej z nazwami analogicznymi do tych w pierwotnej wersji, oraz do funkcji drugiej formy skopiowałem kod z pierwszej, no bo miało się tam dziać dokładnie to samo co na formie pierwszej, z jedyną modyfikacją ilości elementów do strącenia, no i oczywiście z poleceniem pokazania formy 2, po wygranej rundzie na formie 1, oraz uruchomienie tam timerów poruszających piłkę. No i tutaj po uruchomieniu wystąpił problem, a mianowicie - sterowanie kompletnie nie działa, klikam ustalone przyciski i nic - paletka stoi nieruchomo. I tutaj moje pytanie, czym to może być spowodowane?
Kod z formy pierwszej, w drugiej jest analogiczny z wyjątkiem oczywiście wywołania drugiego okienka i przycisku.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Palety.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int y=-8,x=-8;
int do_wygranej=1;
bool kolizja(TImage* pilka, TImage * cegla)
{
if( pilka ->Left >= cegla->Left-pilka->Width &&
pilka->Left <= cegla->Left+cegla->Width &&
pilka->Top >=cegla->Top-pilka->Height &&
pilka->Top <= cegla->Top+cegla->Height)
{
return true;
}
else return false;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer_pilkaTimer(TObject *Sender)
{
b->Left+=x;
b->Top+=y;
// odbij od lewej sciany
if(b->Left-5 <= tlo->Left) x= -x;
//gorna
if(b->Top-5 <=tlo->Top) y=-y;
// prawa
if(b->Left+b->Width+5 >= tlo->Width) x=-x;
//skucha
if(b->Top >= p->Top+p->Height+15)
{
Timer_pilka->Enabled=false;
b->Visible=false;
Button1->Caption="Porazka!Jeszcze raz!";
Button1->Visible=true;
}
else if(b->Left > p->Left-b->Width/2 && b->Left < p->Left+p->Width &&
b->Top+b->Height > p->Top)
{
if(y>0) y= -y;
}
if(do_wygranej <=0)
{
Timer_pilka ->Enabled == false;
b->Visible=false;
Button1->Caption="Wygrana! Przejdz do nastepnego poziomu!!";
Button1->Visible=true;
Form2->Visible=true;
Form2->Timer_pilka->Enabled=true;
}
//--------------
if(kolizja(b,Image1) && Image1->Visible== true)
{
x=-x;
y=-y;
Image1->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image2) && Image2->Visible== true)
{
x=-x;
y=-y;
Image2->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image3) && Image3->Visible== true)
{
x=-x;
y=-y;
Image3->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image4) && Image4->Visible== true)
{
x=-x;
y=-y;
Image4->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image5) && Image5->Visible== true)
{
x=-x;
y=-y;
Image5->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image6) && Image6->Visible== true)
{
x=-x;
y=-y;
Image6->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image7) && Image7->Visible== true)
{
x=-x;
y=-y;
Image7->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image8) && Image8->Visible== true)
{
x=-x;
y=-y;
Image8->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image9) && Image9->Visible== true)
{
x=-x;
y=-y;
Image9->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image10) && Image10->Visible== true)
{
x=-x;
y=-y;
Image10->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image11) && Image11->Visible== true)
{
x=-x;
y=-y;
Image11->Visible= false;
do_wygranej--;
}
//------------------
//--------------
if(kolizja(b,Image12) && Image12->Visible== true)
{
x=-x;
y=-y;
Image12->Visible= false;
do_wygranej--;
}
//------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lewoTimer(TObject *Sender)
{
if(p->Left > 10)p->Left-=10;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::prawoTimer(TObject *Sender)
{
if(p->Left+p->Width < tlo->Width-10)p->Left+=10;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_LEFT) lewo->Enabled=true;
if(Key == VK_RIGHT) prawo->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_LEFT) lewo->Enabled=false;
if(Key == VK_RIGHT) prawo->Enabled=false;
}
//---------------------------------------------------------------------------
// Tutaj nie wywaliłem jeszcze niepotrzebnego przycisku resetu
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(do_wygranej <=0)
{
Form2->Visible=true;
Form2->Timer_pilka->Enabled=true;
}
else
{
b->Left=20;
b->Top=20;
b->Visible=true;
x=-8;
y=-8;
Timer_pilka->Enabled=true;
Button1->Visible=false;
do_wygranej=12;
Image1->Visible=true;
Image2->Visible=true;
Image3->Visible=true;
Image4->Visible=true;
Image5->Visible=true;
Image6->Visible=true;
Image7->Visible=true;
Image8->Visible=true;
Image9->Visible=true;
Image10->Visible=true;
Image11->Visible=true;
Image12->Visible=true;
}
}
//---------------------------------------------------------------------------