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

Soyez le premier à donner votre avis sur cette source.

Vue 7 622 fois - Téléchargée 472 fois

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

Ajouter un commentaire

Commentaires

Messages postés
18
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
13 août 2003

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
Messages postés
162
Date d'inscription
jeudi 15 mars 2001
Statut
Membre
Dernière intervention
1 avril 2005

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
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
woaw!
super cool ce code...
Messages postés
14
Date d'inscription
lundi 18 février 2002
Statut
Membre
Dernière intervention
21 août 2002

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

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.