Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Rozbudowa gry "Arkanoid".

$
0
0

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;
 }



}
//---------------------------------------------------------------------------

 


Viewing all articles
Browse latest Browse all 21942

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra