Jeux avec un loup v1.3 (dirctx draw 2d)

Description

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 / Exemple :


#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
@+

Codes Sources

A voir également

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.