begin process at 2012 05 27 20:15:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

DirectX

 > JEUX AVEC UN LOUP V1.3 (DIRCTX DRAW 2D)

JEUX AVEC UN LOUP V1.3 (DIRCTX DRAW 2D)


 Information sur la source

Note :
4,67 / 10 - par 3 personnes
4,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :DirectX Niveau :Expert Date de création :24/02/2002 Date de mise à jour :01/03/2002 22:46:10 Vu / téléchargé :6 406 / 224

Auteur : JCpp

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
JEUX AVEC UN LOUP (DIRCTX DRAW 2D)

Permettra de mieux connaître DirectX Draw 2D
( New vesion du Jeux )
Langage : Borland C++ Bulder  V5        

Source

  • #include <vcl.h>
  • #include <ddraw.h>
  • #pragma hdrstop
  • #include "Main.h"
  • #include "Unit2.h"
  • #include "ddutil.h"
  • #pragma resource "*.dfm"
  • #include <mmsystem.h>
  • char szBackground[] = "C6401000"; // BMP
  • AnsiString lpo;
  • int ty=0;
  • int x=32*3; int y=32*3; // cordoné du Loup
  • int ligne=0;
  • int tmpx=0; int tmpy=0;
  • int NbrLigne=0;
  • int movD=1; int times=0;
  • int LingMaxY=0; int LingMaxX=0;
  • TFormMain *FormMain;
  • int key =0;
  • int MiaMiam=0;
  • int xteleporte;
  • int yteleporte;
  • //-----------------------------------------------------------
  • __fastcall TFormMain::TFormMain(TComponent* Owner) : TForm(Owner)
  • {
  • Timer1->Enabled = false;
  • Form2 = new TForm2(Application);
  • Form2->ShowModal();
  • Start();
  • }
  • //-------------------------------------------------------------------------
  • void __fastcall TFormMain::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 );
  • Memo1->Lines->LoadFromFile("MAP.txt");
  • Timer1->Enabled = true;
  • }
  • //--------------------------------------------------------------------------
  • void __fastcall TFormMain::Timer1Timer(TObject *Sender)
  • {
  • 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);
  • if (LingMaxX>=14) {LingMaxX=14;}
  • if (LingMaxY>=29) {LingMaxY=29;}
  • if (LingMaxY<=0) {LingMaxY=0;}
  • if (LingMaxX<=0) {LingMaxX=0;}
  • for (int ty=LingMaxX;ty<LingMaxX+19; ty++) {
  • for (int ligne=LingMaxY;ligne<=LingMaxY+14; ligne++) {
  • lpo = Memo1->Lines->Strings[ligne]; //ligne
  • Memo2->Lines->Clear(); Memo2->Lines->Add(lpo);
  • AnsiString e1 (Memo2->Text.c_str()),e2; // Nb graph
  • e2 = e1.SubString(1+2*ty,2); int nb = e2.ToInt();
  • //////////////// teleportation //////////////////////
  • if (nb == 78 ) { xteleporte=tmpx+32*ty; yteleporte=tmpy+32*ligne+32+16; }
  • if (nb == 77 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • x=xteleporte; y=yteleporte;
  • }
  • ///////////////////////// piége invisible /////////////
  • if (nb == 88 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2);
  • tt = s.Insert("64",1+2*ty);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • MiaMiam++;
  • goto loop;
  • }
  • if (nb == 64 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2);
  • tt = s.Insert("65",1+2*ty);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • MiaMiam++;
  • goto loop; // Game Over
  • }
  • ////////////////////// pierre deplace a droite //////////////////////////
  • if (nb == 16 && (x<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y==tmpy+32*ligne))
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2);
  • tt = s.Insert("00",1+2*ty);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • tt = s.Delete(1+2*ty+2,2);
  • tt = s.Insert("16",1+2*ty+2);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Size = Memo3->GetTextLen();
  • Size++;
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • goto loop;
  • }
  • ////////////////////// pierre deplace a gauche //////////////////////////
  • if (nb == 16 && (x-16<=tmpx+32*ty && x>=tmpx+32*ty)
  • && (y==tmpy+32*ligne))
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2);
  • tt = s.Insert("00",1+2*ty);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • tt = s.Delete(1+2*ty-2,2);
  • tt = s.Insert("16",1+2*ty-2);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Size = Memo3->GetTextLen();
  • Size++;
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • goto loop;
  • }
  • /////////////////////// miam Miam //////////////////////////////////////////
  • if (nb == 17 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2);
  • tt = s.Insert("00",1+2*ty);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • MiaMiam++;
  • goto loop;
  • }
  • /////////////////////// KEY ///////////////////////////////////////////////
  • if (nb == 76 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2);
  • tt = s.Insert("00",1+2*ty);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • key=1;
  • goto loop;
  • }
  • /////////////////////// KEY porte Open ////////////////////////////////////////
  • if (nb == 72 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne) && key==1)
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2);
  • tt = s.Insert("79",1+2*ty);
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • key=1;
  • goto loop;
  • }
  • /////////////////////// Porte /////////////////////////////////////////////////
  • if (nb == 73 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • char const *Path = "Ir_new.wav";
  • sndPlaySound(Path, SND_ASYNC | SND_FILENAME);
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2); // suprime 73
  • tt = s.Insert("74",1+2*ty); // remplace par 74
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • /////////////
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • y=y+16;
  • goto loop;
  • }
  • /////////////////////// porte Close ///////////////////////////////////////////
  • if (nb == 74 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • AnsiString s (lpo),tt;
  • tt = s.Delete(1+2*ty,2); // suprime 74
  • tt = s.Insert("75",1+2*ty); // remplace par 75
  • Memo3->Lines->Clear();
  • for (int oo=0; oo<=ligne-1;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • Memo3->Lines->Add(tt);
  • for (int oo=ligne+1; oo<=45;oo++)
  • { Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
  • int Size = Memo3->GetTextLen();
  • Size++;
  • char *Buffer = new char[Size];
  • Memo3->GetTextBuf(Buffer,Size);
  • Memo1->Lines->Clear();
  • Memo1->Lines->Add(Buffer);
  • y=y+16;
  • goto loop;
  • }
  • /////////////////////////////////////////////////////////////////////////////
  • if ((nb == 79 || nb==87 || nb==83 || nb==84 || nb==85 || nb==86 || nb==80 ||nb==81 || nb==82
  • )
  • && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {goto loop;}
  • ////////////////// obstacle
  • if (nb != 00 && (x-16<=tmpx+32*ty && x+16>=tmpx+32*ty)
  • && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
  • {
  • switch (movD)
  • { case 1 : x=x-16; movD=10; break;
  • case 2 : x=x+16; movD=10; break;
  • case 3 : y=y-16; movD=10; break;
  • case 4 : y=y+16; movD=10; break;
  • }
  • }
  • //////////////////////////////// décore
  • loop:
  • switch (nb)
  • {
  • case 00 : rc.left=1+33*0; rc.top=502+33*2; rc.right=33+33*0; rc.bottom=534+33*2;break;
  • case 01 : rc.left=1+33*1; rc.top=502+33*2; rc.right=33+33*1; rc.bottom=534+33*2;break;
  • case 02 : rc.left=1+33*2; rc.top=502+33*2; rc.right=33+33*2; rc.bottom=534+33*2;break;
  • case 03 : rc.left=1+33*3; rc.top=502+33*2; rc.right=33+33*3; rc.bottom=534+33*2;break;
  • case 04 : rc.left=1+33*4; rc.top=502+33*2; rc.right=33+33*4; rc.bottom=534+33*2;break;
  • case 05 : rc.left=1+33*5; rc.top=502+33*2; rc.right=33+33*5; rc.bottom=534+33*2;break;
  • case 06 : rc.left=1+33*6; rc.top=502+33*2; rc.right=33+33*6; rc.bottom=534+33*2;break;
  • case 10 : rc.left=1+33*0; rc.top=502+33*3; rc.right=33+33*0; rc.bottom=534+33*3;break;
  • case 11 : rc.left=1+33*1; rc.top=502+33*3; rc.right=33+33*1; rc.bottom=534+33*3;break;
  • case 12 : rc.left=1+33*2; rc.top=502+33*3; rc.right=33+33*2; rc.bottom=534+33*3;break;
  • case 13 : rc.left=1+33*3; rc.top=502+33*3; rc.right=33+33*3; rc.bottom=534+33*3;break;
  • case 14 : rc.left=1+33*4; rc.top=502+33*3; rc.right=33+33*4; rc.bottom=534+33*3;break;
  • case 15 : rc.left=1+33*5; rc.top=502+33*3; rc.right=33+33*5; rc.bottom=534+33*3;break;
  • case 16 : rc.left=1+33*6; rc.top=502+33*3; rc.right=33+33*6; rc.bottom=534+33*3;break;
  • case 17 : rc.left=1+33*7; rc.top=502+33*3; rc.right=33+33*7; rc.bottom=534+33*3;break;
  • case 18 : rc.left=1+33*8; rc.top=502+33*3; rc.right=33+33*8; rc.bottom=534+33*3;break;
  • case 20 : rc.left=1+33*0; rc.top=502+33*4; rc.right=33+33*0; rc.bottom=534+33*4;break;
  • case 21 : rc.left=1+33*1; rc.top=502+33*4; rc.right=33+33*1; rc.bottom=534+33*4;break;
  • case 22 : rc.left=1+33*2; rc.top=502+33*4; rc.right=33+33*2; rc.bottom=534+33*4;break;
  • case 23 : rc.left=1+33*3; rc.top=502+33*4; rc.right=33+33*3; rc.bottom=534+33*4;break;
  • case 24 : rc.left=1+33*4; rc.top=502+33*4; rc.right=33+33*4; rc.bottom=534+33*4;break;
  • case 25 : rc.left=1+33*5; rc.top=502+33*4; rc.right=33+33*5; rc.bottom=534+33*4;break;
  • case 26 : rc.left=1+33*6; rc.top=502+33*4; rc.right=33+33*6; rc.bottom=534+33*4;break;
  • case 27 : rc.left=1+33*7; rc.top=502+33*4; rc.right=33+33*7; rc.bottom=534+33*4;break;
  • case 28 : rc.left=1+33*8; rc.top=502+33*4; rc.right=33+33*8; rc.bottom=534+33*4;break;
  • case 29 : rc.left=1+33*9; rc.top=502+33*4; rc.right=33+33*9; rc.bottom=534+33*4;break;
  • case 30 : rc.left=1+33*0; rc.top=502+33*5; rc.right=33+33*0; rc.bottom=534+33*5;break;
  • case 31 : rc.left=1+33*1; rc.top=502+33*5; rc.right=33+33*1; rc.bottom=534+33*5;break;
  • case 32 : rc.left=1+33*2; rc.top=502+33*5; rc.right=33+33*2; rc.bottom=534+33*5;break;
  • case 33 : rc.left=1+33*3; rc.top=502+33*5; rc.right=33+33*3; rc.bottom=534+33*5;break;
  • case 34 : rc.left=1+33*4; rc.top=502+33*5; rc.right=33+33*4; rc.bottom=534+33*5;break;
  • case 35 : rc.left=1+33*5; rc.top=502+33*5; rc.right=33+33*5; rc.bottom=534+33*5;break;
  • case 36 : rc.left=1+33*6; rc.top=502+33*5; rc.right=33+33*6; rc.bottom=534+33*5;break;
  • case 37 : rc.left=1+33*7; rc.top=502+33*5; rc.right=33+33*7; rc.bottom=534+33*5;break;
  • case 40 : rc.left=1+33*0; rc.top=502+33*6; rc.right=33+33*0; rc.bottom=534+33*6;break;
  • case 41 : rc.left=1+33*1; rc.top=502+33*6; rc.right=33+33*1; rc.bottom=534+33*6;break;
  • case 42 : rc.left=1+33*2; rc.top=502+33*6; rc.right=33+33*2; rc.bottom=534+33*6;break;
  • case 43 : rc.left=1+33*3; rc.top=502+33*6; rc.right=33+33*3; rc.bottom=534+33*6;break;
  • case 44 : rc.left=1+33*4; rc.top=502+33*6; rc.right=33+33*4; rc.bottom=534+33*6;break;
  • case 45 : rc.left=1+33*5; rc.top=502+33*6; rc.right=33+33*5; rc.bottom=534+33*6;break;
  • case 46 : rc.left=1+33*6; rc.top=502+33*6; rc.right=33+33*6; rc.bottom=534+33*6;break;
  • case 47 : rc.left=1+33*7; rc.top=502+33*6; rc.right=33+33*7; rc.bottom=534+33*6;break;
  • case 48 : rc.left=1+33*8; rc.top=502+33*6; rc.right=33+33*8; rc.bottom=534+33*6;break;
  • case 50 : rc.left=1+33*0; rc.top=502+33*7; rc.right=33+33*0; rc.bottom=534+33*7;break;
  • case 51 : rc.left=1+33*1; rc.top=502+33*7; rc.right=33+33*1; rc.bottom=534+33*7;break;
  • case 52 : rc.left=1+33*2; rc.top=502+33*7; rc.right=33+33*2; rc.bottom=534+33*7;break;
  • case 53 : rc.left=1+33*3; rc.top=502+33*7; rc.right=33+33*3; rc.bottom=534+33*7;break;
  • case 54 : rc.left=1+33*4; rc.top=502+33*7; rc.right=33+33*4; rc.bottom=534+33*7;break;
  • case 55 : rc.left=1+33*5; rc.top=502+33*7; rc.right=33+33*5; rc.bottom=534+33*7;break;
  • case 56 : rc.left=1+33*6; rc.top=502+33*7; rc.right=33+33*6; rc.bottom=534+33*7;break;
  • case 57 : rc.left=1+33*7; rc.top=502+33*7; rc.right=33+33*7; rc.bottom=534+33*7;break;
  • case 58 : rc.left=1+33*8; rc.top=502+33*7; rc.right=33+33*8; rc.bottom=534+33*7;break;
  • case 59 : rc.left=1+33*9; rc.top=502+33*7; rc.right=33+33*9; rc.bottom=534+33*7;break;
  • case 60 : rc.left=1+33*0; rc.top=502+33*8; rc.right=33+33*0; rc.bottom=534+33*8;break;
  • case 61 : rc.left=1+33*1; rc.top=502+33*8; rc.right=33+33*1; rc.bottom=534+33*8;break;
  • case 62 : rc.left=1+33*2; rc.top=502+33*8; rc.right=33+33*2; rc.bottom=534+33*8;break;
  • case 63 : rc.left=1+33*3; rc.top=502+33*8; rc.right=33+33*3; rc.bottom=534+33*8;break;
  • case 64 : rc.left=1+33*4; rc.top=502+33*8; rc.right=33+33*4; rc.bottom=534+33*8;break;
  • case 65 : rc.left=1+33*5; rc.top=502+33*8; rc.right=33+33*5; rc.bottom=534+33*8;break;
  • case 66 : rc.left=1+33*6; rc.top=502+33*8; rc.right=33+33*6; rc.bottom=534+33*8;break;
  • case 70 : rc.left=1+33*0; rc.top=502+33*9; rc.right=33+33*0; rc.bottom=534+33*9;break;
  • case 71 : rc.left=1+33*1; rc.top=502+33*9; rc.right=33+33*1; rc.bottom=534+33*9;break;
  • case 72 : rc.left=1+33*2; rc.top=502+33*9; rc.right=33+33*2; rc.bottom=534+33*9;break;
  • case 73 : rc.left=1+33*3; rc.top=502+33*9; rc.right=33+33*3; rc.bottom=534+33*9;break;
  • case 74 : rc.left=1+33*4; rc.top=502+33*9; rc.right=33+33*4; rc.bottom=534+33*9;break;
  • case 75 : rc.left=1+33*5; rc.top=502+33*9; rc.right=33+33*5; rc.bottom=534+33*9;break;
  • case 76 : rc.left=1+33*6; rc.top=502+33*9; rc.right=33+33*6; rc.bottom=534+33*9;break;
  • case 77 : rc.left=1+33*7; rc.top=502+33*9; rc.right=33+33*7; rc.bottom=534+33*9;break;
  • case 78 : rc.left=1+33*8; rc.top=502+33*9; rc.right=33+33*8; rc.bottom=534+33*9;break;
  • case 79 : rc.left=1+33*3; rc.top=502+33*9; rc.right=33+33*3; rc.bottom=534+33*9;break;
  • case 80 : rc.left=1+33*0; rc.top=502+33*10; rc.right=33+33*0; rc.bottom=534+33*10;break;
  • case 81 : rc.left=1+33*1; rc.top=502+33*10; rc.right=33+33*1; rc.bottom=534+33*10;break;
  • case 82 : rc.left=1+33*2; rc.top=502+33*10; rc.right=33+33*2; rc.bottom=534+33*10;break;
  • case 83 : rc.left=1+33*3; rc.top=502+33*10; rc.right=33+33*3; rc.bottom=534+33*10;break;
  • case 84 : rc.left=1+33*4; rc.top=502+33*10; rc.right=33+33*4; rc.bottom=534+33*10;break;
  • case 85 : rc.left=1+33*5; rc.top=502+33*10; rc.right=33+33*5; rc.bottom=534+33*10;break;
  • case 86 : rc.left=1+33*6; rc.top=502+33*10; rc.right=33+33*6; rc.bottom=534+33*10;break;
  • case 87 : rc.left=1+33*7; rc.top=502+33*10; rc.right=33+33*7; rc.bottom=534+33*10;break;
  • case 88 : rc.left=1+33*0; rc.top=502+33*10; rc.right=33+33*0; rc.bottom=534+33*10;break; // piége
  • }
  • pDDSSec->BltFast(tmpx+32*ty,tmpy+32*ligne,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);
  • }
  • }
  • rc.left=1+33*0; rc.top=502+33*2; rc.right=33+33*0; rc.bottom=534+33*2;
  • pDDSSec->BltFast(400,400,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);
  • ///////////////////// end Decore ///////////////////////////////////////////
  • if (movD==1) { // ->
  • if (times == 0){
  • rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;goto ooo;}
  • if (times == 1){x=x+16;
  • rc.left=1+33*2; rc.top=496+36*0; rc.right=33+33*2; rc.bottom=531+36*0;goto ooo;}
  • if (times == 2){x=x+16;
  • rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;
  • movD=10; times=0;goto ooo;}}
  • if (movD==2) { // <-
  • if (times == 0){
  • rc.left=1+33; rc.top=496+36*1; rc.right=33+33; rc.bottom=531+36*1;goto ooo;}
  • if (times == 1){x=x-16;
  • rc.left=1+33*2; rc.top=496+36*1; rc.right=33+33*2; rc.bottom=531+36*1;goto ooo;}
  • if (times == 2){x=x-16;
  • rc.left=1+33; rc.top=496+36*1; rc.right=33+33; rc.bottom=531+36*1;
  • movD=20; times =0;goto ooo;}}
  • if (movD==3) { // dw
  • if (times == 0){
  • rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;goto ooo;}
  • if (times == 1){y=y+16;
  • rc.left=1+33*7; rc.top=496+36*0 ; rc.right=33+33*7; rc.bottom=531+36*0;goto ooo;}
  • if (times == 2){y=y+16;
  • rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;
  • movD=30; times =0;goto ooo;}}
  • if (movD==4) { // up
  • if (times == 0){
  • rc.left=1+33*5; rc.top=496+36*0 ; rc.right=33+33*5; rc.bottom=531+36*0;goto ooo;}
  • if (times == 1){y=y-16;
  • rc.left=1+33*4; rc.top=496+36*0 ; rc.right=33+33*4; rc.bottom=531+36*0;goto ooo;}
  • if (times == 2){y=y-16;
  • rc.left=1+33*5; rc.top=496+36*0 ; rc.right=33+33*5; rc.bottom=531+36*0;
  • movD=40; times =0;goto ooo;}}
  • if (movD==10) { // Loup se repose ->
  • if (times >= 20) { times=0;
  • rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;goto ooo;}
  • if (times >= 15) {
  • rc.left=1+33*1; rc.top=496+36*0; rc.right=33+33*1; rc.bottom=531+36*0;goto ooo;}
  • if (times >= 0) {
  • rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;goto ooo;}}
  • if (movD==20) { // Loup se repose <-
  • if (times >= 20) { times=0;
  • rc.left=1+33*0; rc.top=496+36*1; rc.right=33+33*0; rc.bottom=531+36*1;goto ooo;}
  • if (times >= 15) {
  • rc.left=1+33; rc.top=496+36*1; rc.right=33+33; rc.bottom=531+36*1;goto ooo;}
  • if (times >= 0) {
  • rc.left=1+33*0; rc.top=496+36*1; rc.right=33+33*0; rc.bottom=531+36*1;goto ooo;}}
  • if (movD==30) { // Loup se repose dw
  • if (times >= 20) { times=0;
  • rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;goto ooo;}
  • if (times >= 15) {
  • rc.left=1+33*8; rc.top=496+36*0 ; rc.right=33+33*8; rc.bottom=531+36*0;goto ooo;}
  • if (times >= 0) {
  • rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;goto ooo;}}
  • if (movD==40) { // Loup se repose Up
  • if (times >= 25) { times=0;
  • rc.left=1+33*3; rc.top=496+36*0; rc.right=33+33*3; rc.bottom=531+36*0;goto ooo;}
  • if (times >= 15) {
  • rc.left=1+33*5; rc.top=496+36*0; rc.right=33+33*5; rc.bottom=531+36*0;goto ooo;}
  • if (times >= 0) {
  • rc.left=1+33*3; rc.top=496+36*0; rc.right=33+33*3; rc.bottom=531+36*0;goto ooo;}}
  • ooo:
  • pDDSSec->BltFast(x,y-3,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);
  • times++;
  • pDDSPrim->Flip( NULL, 0 );
  • }
  • //---------------------------------------------------------------------------
  • void __fastcall TFormMain::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
  • {
  • if (times >= 3) {
  • switch (char(Key))
  • {
  • case VK_RIGHT: movD=1; times=0; break;
  • case VK_LEFT : movD=2; times=0; break;
  • case VK_DOWN : movD=3; times=0; break;
  • case VK_UP : movD=4; times=0; break;
  • }
  • }
  • if (char(Key)==(27)) { Close(); }
  • if (char(Key)==VK_F12) { Close(); }
  • // if (char(Key)==VK_F05) { } // save
  • // if (char(Key)==VK_F06) { } // load
  • if (x>=500) { tmpx=tmpx-32;x=x-64;LingMaxX=LingMaxX+1;}
  • if (y>=400) { tmpy=tmpy-32;y=y-64;LingMaxY=LingMaxY+1;}
  • if (x<=32) { tmpx=tmpx+32;x=x+64;LingMaxX=LingMaxX-1;}
  • if (y<=32) { tmpy=tmpy+32;y=y+64;LingMaxY=LingMaxY-1;}
  • }
  • //---------------------------------------------------------------------------
#include <vcl.h>
#include <ddraw.h>
#pragma hdrstop
#include "Main.h"
#include "Unit2.h"
#include "ddutil.h"
#pragma resource "*.dfm"
#include <mmsystem.h>

char szBackground[] = "C6401000";   //  BMP
AnsiString lpo;
int ty=0;
int x=32*3;     int y=32*3;     // cordoné du Loup
int ligne=0;
int tmpx=0;     int tmpy=0;
int NbrLigne=0;
int movD=1;     int times=0;
int LingMaxY=0; int LingMaxX=0;

TFormMain *FormMain;
int key =0;
int MiaMiam=0;
int xteleporte;
int yteleporte;

//-----------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)  : TForm(Owner)
{
   Timer1->Enabled = false;
   Form2 = new TForm2(Application);
   Form2->ShowModal();
   Start();
}
//-------------------------------------------------------------------------
void __fastcall TFormMain::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 );

  Memo1->Lines->LoadFromFile("MAP.txt");
  Timer1->Enabled = true;
}
//--------------------------------------------------------------------------
void __fastcall TFormMain::Timer1Timer(TObject *Sender)
{
 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);

      if (LingMaxX>=14) {LingMaxX=14;}
      if (LingMaxY>=29) {LingMaxY=29;}
      if (LingMaxY<=0)  {LingMaxY=0;}
      if (LingMaxX<=0)  {LingMaxX=0;}

 for (int ty=LingMaxX;ty<LingMaxX+19; ty++) {
 for (int ligne=LingMaxY;ligne<=LingMaxY+14; ligne++) {

     lpo = Memo1->Lines->Strings[ligne];   //ligne
     Memo2->Lines->Clear();  Memo2->Lines->Add(lpo);

 AnsiString e1 (Memo2->Text.c_str()),e2;  // Nb graph
 e2 = e1.SubString(1+2*ty,2);        int nb = e2.ToInt();


//////////////// teleportation //////////////////////
if (nb == 78 )   {   xteleporte=tmpx+32*ty;  yteleporte=tmpy+32*ligne+32+16;         }

 if (nb == 77 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
              && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
      {
                     x=xteleporte;           y=yteleporte;
      }
///////////////////////// piége invisible /////////////
if (nb == 88 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);
               tt = s.Insert("64",1+2*ty);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);
   MiaMiam++;
   goto loop;
          }

if (nb == 64 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);
               tt = s.Insert("65",1+2*ty);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);
   MiaMiam++;
   goto loop;     // Game Over
          }
//////////////////////  pierre deplace a droite  //////////////////////////
if (nb == 16 && (x<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y==tmpy+32*ligne))
      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);
               tt = s.Insert("00",1+2*ty); 

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);

               tt = s.Delete(1+2*ty+2,2);
               tt = s.Insert("16",1+2*ty+2);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   Size = Memo3->GetTextLen();
   Size++;

   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);

   goto loop;
          }
//////////////////////  pierre deplace a gauche  //////////////////////////
if (nb == 16 && (x-16<=tmpx+32*ty    && x>=tmpx+32*ty)
             && (y==tmpy+32*ligne))
      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);
               tt = s.Insert("00",1+2*ty);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);

               tt = s.Delete(1+2*ty-2,2);
               tt = s.Insert("16",1+2*ty-2);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   Size = Memo3->GetTextLen();
   Size++;
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);

   goto loop;
          }
/////////////////////// miam Miam //////////////////////////////////////////
if (nb == 17 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);
               tt = s.Insert("00",1+2*ty);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);
   MiaMiam++;
   goto loop;
          }
 /////////////////////// KEY ///////////////////////////////////////////////
if (nb == 76 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);
               tt = s.Insert("00",1+2*ty);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);
   key=1;
   goto loop;
          }

/////////////////////// KEY porte Open ////////////////////////////////////////
if (nb == 72 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne) && key==1)
      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);
               tt = s.Insert("79",1+2*ty);

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);
   key=1;
   goto loop;
          }
/////////////////////// Porte /////////////////////////////////////////////////
if (nb == 73 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
      {

          char const *Path = "Ir_new.wav";
          sndPlaySound(Path, SND_ASYNC | SND_FILENAME);

               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);      // suprime 73
               tt = s.Insert("74",1+2*ty);   // remplace par 74

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
                   /////////////

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);

          y=y+16;
          goto loop;
          }
/////////////////////// porte Close ///////////////////////////////////////////
if (nb == 74 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))

      {
               AnsiString s (lpo),tt;
               tt = s.Delete(1+2*ty,2);      // suprime 74
               tt = s.Insert("75",1+2*ty);   // remplace par 75

          Memo3->Lines->Clear();
     for (int oo=0; oo<=ligne-1;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}
          Memo3->Lines->Add(tt);
     for (int oo=ligne+1; oo<=45;oo++)
     {    Memo3->Lines->Add(Memo1->Lines->Strings[oo]);}

   int Size = Memo3->GetTextLen();
   Size++;
   char *Buffer = new char[Size];
   Memo3->GetTextBuf(Buffer,Size);
   Memo1->Lines->Clear();
   Memo1->Lines->Add(Buffer);

          y=y+16;
          goto loop;
          }

/////////////////////////////////////////////////////////////////////////////
if ((nb == 79 || nb==87 || nb==83 || nb==84 || nb==85 || nb==86 || nb==80 ||nb==81 || nb==82
)
             && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
                {goto loop;}
////////////////// obstacle
if (nb != 00 && (x-16<=tmpx+32*ty    && x+16>=tmpx+32*ty)
             && (y-16<=tmpy+32*ligne && y+16>=tmpy+32*ligne))
      {
           switch (movD)
           {  case 1 : x=x-16; movD=10; break;
              case 2 : x=x+16; movD=10; break;
              case 3 : y=y-16; movD=10; break;
              case 4 : y=y+16; movD=10; break;
           }
      }
//////////////////////////////// décore

 loop:

switch (nb)
{
case 00 : rc.left=1+33*0; rc.top=502+33*2; rc.right=33+33*0; rc.bottom=534+33*2;break;
case 01 : rc.left=1+33*1; rc.top=502+33*2; rc.right=33+33*1; rc.bottom=534+33*2;break;
case 02 : rc.left=1+33*2; rc.top=502+33*2; rc.right=33+33*2; rc.bottom=534+33*2;break;
case 03 : rc.left=1+33*3; rc.top=502+33*2; rc.right=33+33*3; rc.bottom=534+33*2;break;
case 04 : rc.left=1+33*4; rc.top=502+33*2; rc.right=33+33*4; rc.bottom=534+33*2;break;
case 05 : rc.left=1+33*5; rc.top=502+33*2; rc.right=33+33*5; rc.bottom=534+33*2;break;
case 06 : rc.left=1+33*6; rc.top=502+33*2; rc.right=33+33*6; rc.bottom=534+33*2;break;

case 10 : rc.left=1+33*0; rc.top=502+33*3; rc.right=33+33*0; rc.bottom=534+33*3;break;
case 11 : rc.left=1+33*1; rc.top=502+33*3; rc.right=33+33*1; rc.bottom=534+33*3;break;
case 12 : rc.left=1+33*2; rc.top=502+33*3; rc.right=33+33*2; rc.bottom=534+33*3;break;
case 13 : rc.left=1+33*3; rc.top=502+33*3; rc.right=33+33*3; rc.bottom=534+33*3;break;
case 14 : rc.left=1+33*4; rc.top=502+33*3; rc.right=33+33*4; rc.bottom=534+33*3;break;
case 15 : rc.left=1+33*5; rc.top=502+33*3; rc.right=33+33*5; rc.bottom=534+33*3;break;
case 16 : rc.left=1+33*6; rc.top=502+33*3; rc.right=33+33*6; rc.bottom=534+33*3;break;
case 17 : rc.left=1+33*7; rc.top=502+33*3; rc.right=33+33*7; rc.bottom=534+33*3;break;
case 18 : rc.left=1+33*8; rc.top=502+33*3; rc.right=33+33*8; rc.bottom=534+33*3;break;

case 20 : rc.left=1+33*0; rc.top=502+33*4; rc.right=33+33*0; rc.bottom=534+33*4;break;
case 21 : rc.left=1+33*1; rc.top=502+33*4; rc.right=33+33*1; rc.bottom=534+33*4;break;
case 22 : rc.left=1+33*2; rc.top=502+33*4; rc.right=33+33*2; rc.bottom=534+33*4;break;
case 23 : rc.left=1+33*3; rc.top=502+33*4; rc.right=33+33*3; rc.bottom=534+33*4;break;
case 24 : rc.left=1+33*4; rc.top=502+33*4; rc.right=33+33*4; rc.bottom=534+33*4;break;
case 25 : rc.left=1+33*5; rc.top=502+33*4; rc.right=33+33*5; rc.bottom=534+33*4;break;
case 26 : rc.left=1+33*6; rc.top=502+33*4; rc.right=33+33*6; rc.bottom=534+33*4;break;
case 27 : rc.left=1+33*7; rc.top=502+33*4; rc.right=33+33*7; rc.bottom=534+33*4;break;
case 28 : rc.left=1+33*8; rc.top=502+33*4; rc.right=33+33*8; rc.bottom=534+33*4;break;
case 29 : rc.left=1+33*9; rc.top=502+33*4; rc.right=33+33*9; rc.bottom=534+33*4;break;

case 30 : rc.left=1+33*0; rc.top=502+33*5; rc.right=33+33*0; rc.bottom=534+33*5;break;
case 31 : rc.left=1+33*1; rc.top=502+33*5; rc.right=33+33*1; rc.bottom=534+33*5;break;
case 32 : rc.left=1+33*2; rc.top=502+33*5; rc.right=33+33*2; rc.bottom=534+33*5;break;
case 33 : rc.left=1+33*3; rc.top=502+33*5; rc.right=33+33*3; rc.bottom=534+33*5;break;
case 34 : rc.left=1+33*4; rc.top=502+33*5; rc.right=33+33*4; rc.bottom=534+33*5;break;
case 35 : rc.left=1+33*5; rc.top=502+33*5; rc.right=33+33*5; rc.bottom=534+33*5;break;
case 36 : rc.left=1+33*6; rc.top=502+33*5; rc.right=33+33*6; rc.bottom=534+33*5;break;
case 37 : rc.left=1+33*7; rc.top=502+33*5; rc.right=33+33*7; rc.bottom=534+33*5;break;

case 40 : rc.left=1+33*0; rc.top=502+33*6; rc.right=33+33*0; rc.bottom=534+33*6;break;
case 41 : rc.left=1+33*1; rc.top=502+33*6; rc.right=33+33*1; rc.bottom=534+33*6;break;
case 42 : rc.left=1+33*2; rc.top=502+33*6; rc.right=33+33*2; rc.bottom=534+33*6;break;
case 43 : rc.left=1+33*3; rc.top=502+33*6; rc.right=33+33*3; rc.bottom=534+33*6;break;
case 44 : rc.left=1+33*4; rc.top=502+33*6; rc.right=33+33*4; rc.bottom=534+33*6;break;
case 45 : rc.left=1+33*5; rc.top=502+33*6; rc.right=33+33*5; rc.bottom=534+33*6;break;
case 46 : rc.left=1+33*6; rc.top=502+33*6; rc.right=33+33*6; rc.bottom=534+33*6;break;
case 47 : rc.left=1+33*7; rc.top=502+33*6; rc.right=33+33*7; rc.bottom=534+33*6;break;
case 48 : rc.left=1+33*8; rc.top=502+33*6; rc.right=33+33*8; rc.bottom=534+33*6;break;

case 50 : rc.left=1+33*0; rc.top=502+33*7; rc.right=33+33*0; rc.bottom=534+33*7;break;
case 51 : rc.left=1+33*1; rc.top=502+33*7; rc.right=33+33*1; rc.bottom=534+33*7;break;
case 52 : rc.left=1+33*2; rc.top=502+33*7; rc.right=33+33*2; rc.bottom=534+33*7;break;
case 53 : rc.left=1+33*3; rc.top=502+33*7; rc.right=33+33*3; rc.bottom=534+33*7;break;
case 54 : rc.left=1+33*4; rc.top=502+33*7; rc.right=33+33*4; rc.bottom=534+33*7;break;
case 55 : rc.left=1+33*5; rc.top=502+33*7; rc.right=33+33*5; rc.bottom=534+33*7;break;
case 56 : rc.left=1+33*6; rc.top=502+33*7; rc.right=33+33*6; rc.bottom=534+33*7;break;
case 57 : rc.left=1+33*7; rc.top=502+33*7; rc.right=33+33*7; rc.bottom=534+33*7;break;
case 58 : rc.left=1+33*8; rc.top=502+33*7; rc.right=33+33*8; rc.bottom=534+33*7;break;
case 59 : rc.left=1+33*9; rc.top=502+33*7; rc.right=33+33*9; rc.bottom=534+33*7;break;

case 60 : rc.left=1+33*0; rc.top=502+33*8; rc.right=33+33*0; rc.bottom=534+33*8;break;
case 61 : rc.left=1+33*1; rc.top=502+33*8; rc.right=33+33*1; rc.bottom=534+33*8;break;
case 62 : rc.left=1+33*2; rc.top=502+33*8; rc.right=33+33*2; rc.bottom=534+33*8;break;
case 63 : rc.left=1+33*3; rc.top=502+33*8; rc.right=33+33*3; rc.bottom=534+33*8;break;
case 64 : rc.left=1+33*4; rc.top=502+33*8; rc.right=33+33*4; rc.bottom=534+33*8;break;
case 65 : rc.left=1+33*5; rc.top=502+33*8; rc.right=33+33*5; rc.bottom=534+33*8;break;
case 66 : rc.left=1+33*6; rc.top=502+33*8; rc.right=33+33*6; rc.bottom=534+33*8;break;


case 70 : rc.left=1+33*0; rc.top=502+33*9; rc.right=33+33*0; rc.bottom=534+33*9;break;
case 71 : rc.left=1+33*1; rc.top=502+33*9; rc.right=33+33*1; rc.bottom=534+33*9;break;
case 72 : rc.left=1+33*2; rc.top=502+33*9; rc.right=33+33*2; rc.bottom=534+33*9;break;
case 73 : rc.left=1+33*3; rc.top=502+33*9; rc.right=33+33*3; rc.bottom=534+33*9;break;
case 74 : rc.left=1+33*4; rc.top=502+33*9; rc.right=33+33*4; rc.bottom=534+33*9;break;
case 75 : rc.left=1+33*5; rc.top=502+33*9; rc.right=33+33*5; rc.bottom=534+33*9;break;
case 76 : rc.left=1+33*6; rc.top=502+33*9; rc.right=33+33*6; rc.bottom=534+33*9;break;
case 77 : rc.left=1+33*7; rc.top=502+33*9; rc.right=33+33*7; rc.bottom=534+33*9;break;
case 78 : rc.left=1+33*8; rc.top=502+33*9; rc.right=33+33*8; rc.bottom=534+33*9;break;

case 79 : rc.left=1+33*3; rc.top=502+33*9; rc.right=33+33*3; rc.bottom=534+33*9;break;

case 80 : rc.left=1+33*0; rc.top=502+33*10; rc.right=33+33*0; rc.bottom=534+33*10;break;
case 81 : rc.left=1+33*1; rc.top=502+33*10; rc.right=33+33*1; rc.bottom=534+33*10;break;
case 82 : rc.left=1+33*2; rc.top=502+33*10; rc.right=33+33*2; rc.bottom=534+33*10;break;
case 83 : rc.left=1+33*3; rc.top=502+33*10; rc.right=33+33*3; rc.bottom=534+33*10;break;
case 84 : rc.left=1+33*4; rc.top=502+33*10; rc.right=33+33*4; rc.bottom=534+33*10;break;
case 85 : rc.left=1+33*5; rc.top=502+33*10; rc.right=33+33*5; rc.bottom=534+33*10;break;
case 86 : rc.left=1+33*6; rc.top=502+33*10; rc.right=33+33*6; rc.bottom=534+33*10;break;
case 87 : rc.left=1+33*7; rc.top=502+33*10; rc.right=33+33*7; rc.bottom=534+33*10;break;
case 88 : rc.left=1+33*0; rc.top=502+33*10; rc.right=33+33*0; rc.bottom=534+33*10;break; // piége
       }

pDDSSec->BltFast(tmpx+32*ty,tmpy+32*ligne,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);

         }

              }

 rc.left=1+33*0; rc.top=502+33*2; rc.right=33+33*0; rc.bottom=534+33*2;
pDDSSec->BltFast(400,400,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);


/////////////////////  end Decore   ///////////////////////////////////////////

 if (movD==1)   { // ->
 if (times == 0){
 rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;goto ooo;}
 if (times == 1){x=x+16;
 rc.left=1+33*2; rc.top=496+36*0; rc.right=33+33*2; rc.bottom=531+36*0;goto ooo;}
 if (times == 2){x=x+16;
 rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;
 movD=10; times=0;goto ooo;}}

 if (movD==2)   {  //  <-
 if (times == 0){
 rc.left=1+33; rc.top=496+36*1; rc.right=33+33; rc.bottom=531+36*1;goto ooo;}
 if (times == 1){x=x-16;
 rc.left=1+33*2; rc.top=496+36*1; rc.right=33+33*2; rc.bottom=531+36*1;goto ooo;}
 if (times == 2){x=x-16;
 rc.left=1+33; rc.top=496+36*1; rc.right=33+33; rc.bottom=531+36*1;
 movD=20; times =0;goto ooo;}}

 if (movD==3)   { // dw
 if (times == 0){
 rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;goto ooo;}
 if (times == 1){y=y+16;
 rc.left=1+33*7; rc.top=496+36*0 ; rc.right=33+33*7; rc.bottom=531+36*0;goto ooo;}
 if (times == 2){y=y+16;
 rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;
 movD=30; times =0;goto ooo;}}

 if (movD==4)   { //  up
 if (times == 0){
 rc.left=1+33*5; rc.top=496+36*0 ; rc.right=33+33*5; rc.bottom=531+36*0;goto ooo;}
 if (times == 1){y=y-16;
 rc.left=1+33*4; rc.top=496+36*0 ; rc.right=33+33*4; rc.bottom=531+36*0;goto ooo;}
 if (times == 2){y=y-16;
 rc.left=1+33*5; rc.top=496+36*0 ; rc.right=33+33*5; rc.bottom=531+36*0;
 movD=40; times =0;goto ooo;}}

if (movD==10)    { // Loup se repose   ->
if (times >= 20) {  times=0;
  rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;goto ooo;}

if (times >= 15) {
   rc.left=1+33*1; rc.top=496+36*0; rc.right=33+33*1; rc.bottom=531+36*0;goto ooo;}

if (times >= 0) {
   rc.left=1+33*0; rc.top=496+36*0; rc.right=33+33*0; rc.bottom=531+36*0;goto ooo;}}

if (movD==20)    { //  Loup se repose   <-
if (times >= 20) {  times=0;
   rc.left=1+33*0; rc.top=496+36*1; rc.right=33+33*0; rc.bottom=531+36*1;goto ooo;}

if (times >= 15) {
   rc.left=1+33; rc.top=496+36*1; rc.right=33+33; rc.bottom=531+36*1;goto ooo;}

if (times >= 0) {
  rc.left=1+33*0; rc.top=496+36*1; rc.right=33+33*0; rc.bottom=531+36*1;goto ooo;}}

if (movD==30)    { //  Loup se repose dw
if (times >= 20) {  times=0;
   rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;goto ooo;}

if (times >= 15) {
   rc.left=1+33*8; rc.top=496+36*0 ; rc.right=33+33*8; rc.bottom=531+36*0;goto ooo;}

if (times >= 0) {
  rc.left=1+33*6; rc.top=496+36*0 ; rc.right=33+33*6; rc.bottom=531+36*0;goto ooo;}}

if (movD==40)    { //  Loup se repose Up
if (times >= 25) {  times=0;
 rc.left=1+33*3; rc.top=496+36*0; rc.right=33+33*3; rc.bottom=531+36*0;goto ooo;}

if (times >= 15) {
 rc.left=1+33*5; rc.top=496+36*0; rc.right=33+33*5; rc.bottom=531+36*0;goto ooo;}

if (times >= 0) {
 rc.left=1+33*3; rc.top=496+36*0; rc.right=33+33*3; rc.bottom=531+36*0;goto ooo;}}

ooo:
pDDSSec->BltFast(x,y-3,pDDSImage,&rc,DDBLTFAST_SRCCOLORKEY);

       times++;
       pDDSPrim->Flip( NULL, 0 );

}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
  if (times >= 3) {
       switch (char(Key))
        {
           case  VK_RIGHT: movD=1; times=0; break;
           case  VK_LEFT : movD=2; times=0; break;
           case  VK_DOWN : movD=3; times=0; break;
           case  VK_UP   : movD=4; times=0; break;
        }
                   }
       if (char(Key)==(27))    {  Close();  }
       if (char(Key)==VK_F12)  {  Close();  }
   //    if (char(Key)==VK_F05)  {          }   // save
   //    if (char(Key)==VK_F06)  {          }   // load

 if (x>=500) { tmpx=tmpx-32;x=x-64;LingMaxX=LingMaxX+1;}
 if (y>=400) { tmpy=tmpy-32;y=y-64;LingMaxY=LingMaxY+1;}
 if (x<=32)  { tmpx=tmpx+32;x=x+64;LingMaxX=LingMaxX-1;}
 if (y<=32)  { tmpy=tmpy+32;y=y+64;LingMaxY=LingMaxY-1;}
}
//--------------------------------------------------------------------------- 

 Conclusion

pas de bug sur mon PC
Si tu a Borland C++ Bulder, envoi un E-Mail ici, stp
Bonne programmation
@+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip FASTSCANNERIP
Source avec Zip Source .NET (Dotnet) WINSOCK 2 POUR UN CHAT TOUT SIMPLE
Source avec Zip Source avec une capture Source .NET (Dotnet) INTELLIGENCE ARTIFICIELLE EN C++
Source avec Zip OGL V1.1
Source avec Zip Source avec une capture OGL V1.0

 Sources de la même categorie

Source avec Zip Source avec une capture MP3 DX9 JOUER par f_l_a_s_h_b_a_c_k
Source avec Zip Source avec une capture EQUINOX VISUAL SON METER par f_l_a_s_h_b_a_c_k
Source avec Zip Source avec une capture FLEUR EN DELIRE! par f_l_a_s_h_b_a_c_k
Source avec Zip Source avec une capture DIREXCT X 9 D3D par f_l_a_s_h_b_a_c_k
Source avec Zip BLOP DIRECT X par f_l_a_s_h_b_a_c_k

Commentaires et avis

Commentaire de loopy le 02/03/2002 04:04:50

Salut !
Il marche tres bien sous builder...je n'ai pas encore eu le temps de regarder la prog...
Il n'y a pas le readme
A+
loopy

Commentaire de BlackWizzard le 03/03/2002 00:04:08 administrateur CS

woaw!
super cool ce code...

Commentaire de Lightness1024! le 13/06/2002 22:42:20

oula oula oula c koi tout ces ifs et toutes ces valeurs ?
g pas eu le temps de lire le code mais si c pour la detection des collisions et bien chapo d'avoir eu le courage d'utiliser cette methode.
c'est vraiment affreux et c pas comme ca kil fallait faire mais bon apprament tu n'est pas encore une vieux de la vielle mais ca viendra.
laisse moi te dire ke ce genre de boulot ca ne doit jamais se faire !
en plus c moche comme code.
il fallait faire une boucle avec une belle matrice avec les index des materiaux stoqués pour chaque coordonnées si tu veu un exemple et si tu connais le QBASIC regardes Super Mario Country c un jeu de plate forme ke j'ai fait www.lightness.fr.st

Commentaire de fabiencpp le 12/08/2003 12:09:30

OULALALALALALALALALA

C'est quoi ce code de ouf
Il faudra que tu essaies de trouver des relations etre ta valeur nb et les coord de ton rect rc (voir le gros switch de mal)
Sinon c'est joli
les /////////////////////////////////////////////explication/////////////////
mais les fonctions ca existe
Surtout qu'il y a une redondance remarquable dans ton code.

Et puis les if bah j'ai pas eut le courage de lire jusque la.
Je dirais rien sur la multitude de variable globale.
Desole, de dire ca mais ta peur de rien en publiant ce code

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales