Bmp (titre trop court)

Contenu du snippet

librairie pour inserer des bitmap de 320*200 et 16*16
toujours pour dgjpp

Source / Exemple :


#include <dos.h>
#include <pc.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
char *buffer_sprite=new char[256];
char *buffer_sprite_vide=new char[256];

void Init_buf()
{
  for(int o=0;o<256;o++)
   {
     buffer_sprite_vide[o]=0;
   }
}

void SetPal(char col,char r,char g,char b)
{
 outp(0x03c8,col);
 outp(0x03c9,r);
 outp(0x03c9,g);
 outp(0x03c9,b);
}

void LirePal(char col,int r,int g,int b)
{
 outp(0x03c7,col);
 r=inp(0x03c9);
 g=inp(0x03c9);
 b=inp(0x03c9);
}

int loadbmp(char *nomfich,int largeur,int hauteur,char *image)
{
  unsigned char palette[256][4];
  FILE *fichbmp;

  if(!(fichbmp = fopen(nomfich, "rb"))) return 0;
  fseek(fichbmp,54, SEEK_SET);
  fread(&palette, 1024, 1, fichbmp);

  for(int coul=0;coul<=255;coul++)
    SetPal(coul,palette[coul][2]>>2,palette[coul][1]>>2,palette[coul][0]>>2);

  unsigned int offset = largeur*hauteur;//64000;
  for (int ligne=0;ligne<hauteur;ligne++)
  {
    fread (image+offset,largeur,1,fichbmp);
    offset -= largeur;//320
  }
  fclose (fichbmp);
  return 1;
}

int loadsprite(char *nomfich,int posx,int posy,char *endroit)
{
  Init_buf();
  memcpy(buffer_sprite,buffer_sprite_vide,256);

  unsigned char palette[256][4];
  FILE *fichbmp;
   if(!(fichbmp = fopen(nomfich, "rb"))) return 0;

  fseek(fichbmp,54, SEEK_SET);
  fread(&palette, 1024, 1, fichbmp);

  for(int coul=0;coul<=255;coul++)
    SetPal(coul,palette[coul][2]>>2,palette[coul][1]>>2,palette[coul][0]>>2);

  unsigned int offset = 256;
  for (int ligne=0;ligne<16;ligne++)
  {
    fread(buffer_sprite+offset,16,1,fichbmp);
    offset-=16;
  }
   for(int i=0;i<=16;i++)
    {
     for(int j=0;j<=16;j++)
      {
       if(buffer_sprite[(j*16)+i]!=0)
       endroit[((posy+j)*320)+posx+i]=buffer_sprite[(j*16)+i];
      }
    }
  fclose (fichbmp);
  return 1;
}

Conclusion :


petit tutorial
#include "graphG.cpp" //ke vous trouverez en dessous
#include "bmp.cpp"
void main()
{
graphicG();
loadbmp("votre_dessin.bmp",320,200,video_buffer);
//vous pouvez utiliser buffer_virtuel
loadsprite("votre_sprite,0,0,video_buffer);
//0,0 sont l'emplacement du sprite
getch();
}

voila......

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.