Soyez le premier à donner votre avis sur cette source.
Vue 43 279 fois - Téléchargée 1 181 fois
#include <vcl.h> #include <ddraw.h> #include <mmsystem.h> #include "Main.h" #include "ddutil.h" #include "Unit2.h" #pragma hdrstop #pragma resource "*.dfm" TForm1 *Form1; char szBackground[] = "C6401000"; // BMP int ty=0; int x=100; int y=300; // cordoné de l'avion int times = 0; // times du reacteur de l'avion int arme=1; int NbrArme=1; // arme désactivé int AvionTouche=0; AnsiString s; int ligne=0; int colone=1; // cordoné du decor int k=0; int tmp=0; int level=0; int etoile0=0; // etoile lente int etoile1=0; // etoile rapide ////////////////////////////////////////////////////// int avion=0; // Avion enemi int ViteseAvonEnemi=0; // Vitese Avon Enemi int tempnb1=0; // type avion 1 int tempnb2=0; // type avion 2 int tempnb3=0; // type avion 3 int tempnb4=0; // type avion 4 int AvionTouchenb1=0; // Avion Touché nb1 int AvionTouchenb2=0; // Avion Touché nb2 int AvionTouchenb3=0; // Avion Touché nb3 int AvionTouchenb4=0; // Avion Touché nb4 int NbrLigne=0; AnsiString lpo; int sui=0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Timer1->Enabled = false; Form2 = new TForm2(Application); Form2->ShowModal(); Start(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Start() { HRESULT res = DirectDrawCreate(NULL, &pDD, NULL); pDD->SetCooperativeLevel(Handle,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX; ddsd.dwBackBufferCount = 1; pDD->SetDisplayMode(640,480, 16); pDD->CreateSurface(&ddsd, &pDDSPrim, NULL); ddscaps.dwCaps = DDSCAPS_BACKBUFFER; pDDSPrim->GetAttachedSurface(&ddscaps, &pDDSSec); pDDPal = DDLoadPalette(pDD, szBackground); pDDSImage = DDLoadBitmap(pDD, szBackground, 0, 0); DDSetColorKey(pDDSImage,RGB(0,0,0)); // Couleur de transparence pDDSPrim->Flip( NULL, 0 ); MediaPlayer1->Play(); Timer1->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { int max=56; ///////// level //////////// if ((k>=(max*43)) && (level==0)) {k=0;level=1;} if ((k>=(max*43)) && (level==1)) {k=0;level=2;} if ((k>=(max*43)) && (level==2)) {k=0;level=3;} if ((k>=(max*43)) && (level==3)) {k=0;level=4;} if ((k>=(max*43)) && (level==4)) {Close();} if ((k==0) && (level==0)) {Memo1->Lines->LoadFromFile("Level0.txt"); Memo2->Lines->LoadFromFile("Avion.txt");} if ((k==0) && (level==1)) {Memo1->Lines->LoadFromFile("Level1.txt"); Memo2->Lines->LoadFromFile("Avion.txt"); } if ((k==0) && (level==2)) {Memo1->Lines->LoadFromFile("Level2.txt"); Memo2->Lines->LoadFromFile("Avion.txt"); } if ((k==0) && (level==3)) {Memo1->Lines->LoadFromFile("Level3.txt"); Memo2->Lines->LoadFromFile("Avion.txt"); } if ((k==0) && (level==4)) {Memo1->Lines->LoadFromFile("Level4.txt"); Memo2->Lines->LoadFromFile("Avion.txt"); } /////////////////////////////// k=k+tmp+12; ddscaps.dwCaps = DDSCAPS_BACKBUFFER; pDDSPrim->GetAttachedSurface(&ddscaps, &pDDSSec); rc.left=0; rc.top=0; rc.right=640; rc.bottom=480; pDDSSec->BltFast(0,0,pDDSImage,&rc,DDBLTFAST_NOCOLORKEY); ////////////// etoiles /////////// rc.left=1; rc.top=955; rc.right=298; rc.bottom=997; for (int t=0; t<8; t++) { pDDSSec->BltFast(0, 43+43*2*t+etoile0-300,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); pDDSSec->BltFast(100,43*2*t+etoile0-300,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);} etoile0++; if (etoile0>=300) {etoile0=43;} for (int t=0; t<8; t++) { pDDSSec->BltFast(20 ,43+43*2*t+etoile1-300,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); pDDSSec->BltFast(120,43*2*t+etoile1-300,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);} etoile1=etoile1+5; if (etoile1>=300) {etoile1=43;} ////////////////////////////// for (ligne=0; ligne<max; ligne++) { for (colone=1; colone<11; colone++) { s = Memo1->Lines->Strings[ligne]; char c = s[colone]; //////// détect les obstacles if ((c != char ('0')) && ((y-35 <= ligne*42+k-(max*42)) && (y+18 >= ligne*42+k-(max*42)) ) && ((x-25 <= colone*42-42) && (x+25 >= colone*42-42))) {char const *Path = "Alert.wav"; avion=1; sndPlaySound(Path, SND_ASYNC | SND_FILENAME); } if (c == char ('0')) {rc.left=1+43*4; rc.top=482 ; rc.right=43*4; rc.bottom=524; } if (c == char ('1')) {rc.left=1+43*10; rc.top=482 ; rc.right=43+43*10; rc.bottom=524; } if (c == char ('2')) {rc.left=1+43*11; rc.top=482 ; rc.right=43+43*11; rc.bottom=524; } if (c == char ('3')) {rc.left=1+43*12; rc.top=482 ; rc.right=43+43*12; rc.bottom=524; } if (c == char ('4')) {rc.left=1+43*13; rc.top=482 ; rc.right=43+43*13; rc.bottom=524; } if (c == char ('5')) {rc.left=1+43*10; rc.top=482+43*1; rc.right=43+43*10; rc.bottom=524+43*1;} if (c == char ('6')) {rc.left=1+43*11; rc.top=482+43*1; rc.right=43+43*11; rc.bottom=524+43*1;} if (c == char ('7')) {rc.left=1+43*12; rc.top=482+43*1; rc.right=43+43*12; rc.bottom=524+43*1;} if (c == char ('8')) {rc.left=1+43*13; rc.top=482+43*1; rc.right=43+43*13; rc.bottom=524+43*1;} if (c == char ('9')) {rc.left=1+43*10; rc.top=482+43*2; rc.right=43+43*10; rc.bottom=524+43*2;} if (c == char ('A')) {rc.left=1+43*11; rc.top=482+43*2; rc.right=43+43*11; rc.bottom=524+43*2;} if (c == char ('B')) {rc.left=1+43*12; rc.top=482+43*2; rc.right=43+43*12; rc.bottom=524+43*2;} if (c == char ('C')) {rc.left=1+43*13; rc.top=482+43*2; rc.right=43+43*13; rc.bottom=524+43*2;} if (c == char ('D')) {rc.left=1+43*9; rc.top=482+43*0; rc.right=43+43*9; rc.bottom=524+43*0;} if (c == char ('E')) {rc.left=1+43*9; rc.top=482+43*1; rc.right=43+43*9; rc.bottom=524+43*1;} if (c == char ('F')) {rc.left=1+43*9; rc.top=482+43*2; rc.right=43+43*9; rc.bottom=524+43*2;} if (c == char ('G')) {rc.left=1+43*9; rc.top=482+43*3; rc.right=43+43*9; rc.bottom=524+43*3;} if (c == char ('H')) {rc.left=1+43*10; rc.top=482+43*3; rc.right=43+43*10; rc.bottom=524+43*3;} if (c == char ('I')) {rc.left=1+43*11; rc.top=482+43*3; rc.right=43+43*11; rc.bottom=524+43*3;} if (c == char ('J')) {rc.left=1+43*9; rc.top=482+43*4; rc.right=43+43*9; rc.bottom=524+43*4;} if (c == char ('K')) {rc.left=1+43*10; rc.top=482+43*4; rc.right=43+43*10; rc.bottom=524+43*4;} if (c == char ('L')) {rc.left=1+43*12; rc.top=482+43*3; rc.right=43+43*12; rc.bottom=524+43*3;} if (c == char ('M')) {rc.left=1+43*12; rc.top=482+43*4; rc.right=43+43*12; rc.bottom=524+43*4;} if (c == char ('N')) {rc.left=1+43*9; rc.top=482+43*5; rc.right=43+43*9; rc.bottom=524+43*5;} if (c == char ('O')) {rc.left=1+43*10; rc.top=482+43*5; rc.right=43+43*10; rc.bottom=524+43*5;} pDDSSec->BltFast(colone*42-42,ligne*42+k-(max*42),pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); ///////////// avion touché ///////////////////////// } } times++; if (avion==0) {rc.left=1; rc.top=482; rc.right=43; rc.bottom=524; pDDSSec->BltFast(x,y,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);} if (avion==1) {rc.left=1+43; rc.top=482; rc.right=43+43; rc.bottom=524; pDDSSec->BltFast(x,y,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); AvionTouche++;} if (54+AvionTouche==231) {AvionTouche=0;} // GameOver rc.left=457; rc.top=53; rc.right=474; rc.bottom=57; for (int gg=53; gg<=53+AvionTouche; gg++){ pDDSSec->BltFast(457,gg,pDDSImage,&rc,DDBLTFAST_NOCOLORKEY);} //////// reacteur de l'avion if (times >= 0) { rc.left=1+43*2; rc.top=482; rc.right=43*3; rc.bottom=524; pDDSSec->BltFast(x,y+43,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); } if (times >= 5) { rc.left=1+43*3; rc.top=482; rc.right=43*4; rc.bottom=524; pDDSSec->BltFast(x,y+43,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); } if (times >= 10) { times=0; rc.left=1+43*2; rc.top=482; rc.right=43*3; rc.bottom=524; pDDSSec->BltFast(x,y+43,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); avion=0;} /////////////////// arme ///////////////// if (arme==0) { rc.left=1+43*4; rc.top=482; rc.right=43*5; rc.bottom=524; pDDSSec->BltFast(x,y-(43*NbrArme),pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); NbrArme++; if (NbrArme == 2) {char const *Path = "laser.wav"; sndPlaySound(Path, SND_ASYNC | SND_FILENAME);} if (NbrArme == 9) {arme=1; NbrArme=1;} } /////////////////////////////// // Avion enemi for (int NbrLigne=0+sui; NbrLigne<=3+sui;NbrLigne++) { lpo = Memo2->Lines->Strings[NbrLigne]; //ligne Memo3->Lines->Clear(); Memo3->Lines->Add(lpo); if ( ty == 8*15) {ty=0; } // end AnsiString e1 (Memo3->Text.c_str()),e2; // Nb graph AnsiString e3 (Memo3->Text.c_str()),e4; // xn AnsiString e5 (Memo3->Text.c_str()),e6; // yn e2 = e1.SubString(1,1); int nb = e2.ToInt(); e4 = e3.SubString(3+ty,3); int xn = e4.ToInt(); e6 = e5.SubString(7+ty,3); int yn = e6.ToInt(); ViteseAvonEnemi++; if ((NbrLigne == 0+sui) && (ViteseAvonEnemi>=10)) {ty=ty+8; ViteseAvonEnemi=0;} if ((nb==1) && (AvionTouchenb1==0)) {tempnb1++; if (tempnb1 >= 0){rc.left=1; rc.top=482+43*2; rc.right=43; rc.bottom=524+43*2;} if (tempnb1 >= 3){rc.left=1+43*1; rc.top=482+43*2; rc.right=43+43*1; rc.bottom=524+43*2;} if (tempnb1 >= 6){rc.left=1+43*2; rc.top=482+43*2; rc.right=43+43*2; rc.bottom=524+43*2;} if (tempnb1 >= 9){rc.left=1; rc.top=482+43*2; rc.right=43; rc.bottom=524+43*2; tempnb1=0;} pDDSSec->BltFast(xn,yn,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); } if ((nb==2) && (AvionTouchenb2==0)) {tempnb2++; if (tempnb2 >= 0) {rc.left=1; rc.top=482+43*1; rc.right=43; rc.bottom=524+43*1;} if (tempnb2 >= 3) {rc.left=1+43*1; rc.top=482+43*1; rc.right=43+43*1; rc.bottom=524+43*1;} if (tempnb2 >= 6) {rc.left=1+43*2; rc.top=482+43*1; rc.right=43+43*2; rc.bottom=524+43*1;} if (tempnb2 >= 9) {rc.left=1+43*3; rc.top=482+43*1; rc.right=43+43*3; rc.bottom=524+43*1;} if (tempnb2 >= 12){rc.left=1; rc.top=482+43*1; rc.right=43; rc.bottom=524+43*1; tempnb2=0;} pDDSSec->BltFast(xn,yn,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); } if ((nb==3) && (AvionTouchenb3==0)) {tempnb3++; if (tempnb3 >= 0) {rc.left=1; rc.top=482+43*3; rc.right=43; rc.bottom=524+43*3;} if (tempnb3 >= 4) {rc.left=1+43*1; rc.top=482+43*3; rc.right=43+43*1; rc.bottom=524+43*3;} if (tempnb3 >= 16){rc.left=1; rc.top=482+43*3; rc.right=43; rc.bottom=524+43*3; tempnb3=0;} pDDSSec->BltFast(xn,yn,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); } if ((nb==4) && (AvionTouchenb4==0)) {tempnb4++; if (tempnb4 >= 0) {rc.left=1; rc.top=482+43*5; rc.right=43; rc.bottom=524+43*5;} if (tempnb4 >= 4) {rc.left=1+43*1; rc.top=482+43*5; rc.right=43+43*1; rc.bottom=524+43*5;} if (tempnb4 >= 16){rc.left=1; rc.top=482+43*5; rc.right=43; rc.bottom=524+43*5; tempnb4=0;} pDDSSec->BltFast(xn,yn,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY); } // Avion enemi touché if (((x-20 <= xn) && (x+20 >= xn)) && ((y-25 <= yn) && (y+20 >= yn))) { if ((NbrLigne==0+sui) && (AvionTouchenb1==0)) {AvionTouchenb1=1;avion=1; SonNbr0();} if ((NbrLigne==1+sui) && (AvionTouchenb2==0)) {AvionTouchenb2=1;avion=1; SonNbr0();} if ((NbrLigne==2+sui) && (AvionTouchenb3==0)) {AvionTouchenb3=1;avion=1; SonNbr0();} if ((NbrLigne==3+sui) && (AvionTouchenb4==0)) {AvionTouchenb4=1;avion=1; SonNbr0();} } if (((x-20 <= xn) && (x+20 >= xn)) && ((y-(43*NbrArme)-20 <= yn) && (y-(43*NbrArme)+20 >= yn))) { if ((NbrLigne==0+sui) && (AvionTouchenb1==0)) {AvionTouchenb1=1; SonNbr0();} if ((NbrLigne==1+sui) && (AvionTouchenb2==0)) {AvionTouchenb2=1; SonNbr0();} if ((NbrLigne==2+sui) && (AvionTouchenb3==0)) {AvionTouchenb3=1; SonNbr0();} if ((NbrLigne==3+sui) && (AvionTouchenb4==0)) {AvionTouchenb4=1; SonNbr0();} } } if ((sui==0)&&(AvionTouchenb1==1) && (AvionTouchenb2==1) && (AvionTouchenb3==1) && (AvionTouchenb4==1)) { AvionTouchenb1=0; AvionTouchenb2=0; AvionTouchenb3=0; AvionTouchenb4=0; sui=5; } pDDSPrim->Flip( NULL, 0 ); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (char(Key) == VK_RIGHT) { x=x+5; } if (char(Key) == VK_LEFT) { x=x-5; } if (char(Key) == VK_DOWN) { y=y+5; } if (char(Key) == VK_UP) { y=y-5; } if (char(Key) == ' ') { arme=0; } // if (char(Key) == '+') { tmp=tmp+1; } // vitesse // if (char(Key) == '-') { tmp=tmp-1; } if (x>=380) {x=380;} if (x<=0) {x=0;} if (y>=420) {y=420;} if (y<=0) {y=0;} if (char(Key)==(27)) { Close(); } // Echap } //--------------------------------------------------------------------------- void __fastcall TForm1::SonNbr0() { char const *Path = "Protoss Exclamation.wav"; sndPlaySound(Path, SND_ASYNC | SND_FILENAME); } //---------------------------------------------------------------------------
15 janv. 2002 à 18:10
ben non s'est pas nul s'est meme tres bien s'est plus facile ke directx
le seule probleme s'est k'il na pas evoluer depuis un moment et ke directx est devenue meilleur
15 janv. 2002 à 20:39
24 janv. 2002 à 11:16
;-P
BRAVO!!
Euh cé où pour mettre la note???? => 9/10
Allez bonne prog'!!!!!!!
Gogogogogogogogooooooooooooooo
25 janv. 2002 à 09:41
Continu kom ca! (Je fait surement faire un projet du meme type mais en opengl, 3D vue du dessus!)
13 juin 2002 à 22:44
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.