Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro, C++] Co umieścić we własnej bibliotece?

Ostatnio zmodyfikowano 2011-08-01 11:30
Autor Wiadomość
poldek
Temat założony przez niniejszego użytkownika
[Allegro, C++] Co umieścić we własnej bibliotece?
» 2011-08-01 00:42:54
Na wstepie przeprosze nie mam polskisch znakow pzez winde angielska.
Teraz do rzeczy ... Pisze sobie taka biblioteke do allegro tak dla cwiczen i zeby mi ulatwiala pisanie w allegro ,ale stanolem w miejscu nie mam pojecia co moglbym nowego do niej dodac, co dalej mam zrobic ?

Mile widzane propozycje i uwagi.
Teraz kod

pallegro.cpp
C/C++
#include <allegro.h>

#include "pallegro.h"
using namespace pallegro;

PBITMAP::~PBITMAP( void )
{
    x = y = 0;
    w = h = 0;
    Surface = NULL;
}

PBITMAP::PBITMAP( const char * file, int xx, int yy )
{
    int spr = 0;
   
    x = xx;
    y = yy;
   
    Surface = load_bmp( file, default_palette );
   
    if( !Surface )
         spr = 1;
   
    if( spr == 1 )
    {
        if( !Surface )
        {
            set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
            allegro_message( "error: graphic" );
            allegro_exit();
        }
    }
}

void I_W( int x, int y, int dep, const char * str )
{
    allegro_init();
   
    install_keyboard();
    install_mouse();
   
    set_color_depth( dep );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, x, y, 0, 0 );
    set_window_title( str );
   
    clear_to_color( screen, makecol( 128, 128, 128 ) );
}

void I_F( int x, int y, int dep, const char * str )
{
    allegro_init();
   
    install_keyboard();
    install_mouse();
   
    set_color_depth( dep );
    set_gfx_mode( GFX_AUTODETECT, x, y, 0, 0 );
    set_window_title( str );
   
    clear_to_color( screen, makecol( 128, 128, 128 ) );
}

void Draw( BITMAP * Surface, BITMAP * Surface2, int x, int y )
{
    masked_blit( Surface, Surface2, 0, 0, x, y, Surface->w, Surface->h );
}

void BackDraw( BITMAP * Surface )
{
    blit( Surface, screen, 0, 0, 0, 0, Surface->w, Surface->h );
}

void Spr( BITMAP * Surface, BITMAP * Surface2 )
{
    int xx = 0;
    if( !Surface )
    {
        xx++;
    }
    else if( !Surface2 )
    {
        xx++;
    }
    if( xx == 1 )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie moge zaladowac ktoregos obrazka !(1)" );
        allegro_exit();
    }
    else if( xx == 2 )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie moge zaladowac ktoregos obrazka !(1)(2)" );
        allegro_exit();
    }
}

void DestroyBitmap( BITMAP * Surface, BITMAP * Surface2 )
{
    destroy_bitmap( Surface );
    destroy_bitmap( Surface2 );
}

void DestroyBitmap( BITMAP * Surface, BITMAP * Surface2, BITMAP * Surface3 )
{
    destroy_bitmap( Surface );
    destroy_bitmap( Surface2 );
    destroy_bitmap( Surface3 );
}

void Pgame( void )
{
    if( key[ KEY_P ] )
    {
        while( !key[ KEY_O ] )
        {
            rest( 20 );
        }
    }
}

void CBitmap( BITMAP * Surface, int r, int g, int b )
{
    clear_to_color( Surface, makecol( r, g, b ) );
}

int Kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 )
{
    if( x2 <= x1 + s1 && x2 > x1 && y2 >= y1 && y2 <= y1 + w1 )
         return 1;
   
    else if( x2 <= x1 + s1 && x2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 )
         return 2;
   
    else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 >= y1 && y2 <= y1 + w1 )
         return 3;
   
    else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 )
         return 4;
   
    else
         return 0;
   
};

pallegro.h
C/C++
#ifndef PALLEGRO_H
#define PALLEGRO_H

namespace pallegro
{
    class PBITMAP
    {
    public:
       
        //Varibles//
        int x, y;
        int w, h;
        BITMAP * Surface;
        //end//
       
        //Ctor & Dtros//
        ~PBITMAP( void );
        PBITMAP( const char * file, int xx = 0, int yy = 0 );
        //end//
    };
};

void I_W( int x, int y, int dep = 16, const char * str = "Czesio" );
void I_F( int x, int y, int dep = 16, const char * str = "Czesio" );

void Draw( BITMAP * Surface, BITMAP * Surface2, int x, int y );
void BackDraw( BITMAP * Surface );

void Spr( BITMAP * Surface );
void Spr( BITMAP * Surface, BITMAP * Surface2 );

void DestroyBitmap( BITMAP * Surface, BITMAP * Surface2 );
void DestroyBitmap( BITMAP * Surface, BITMAP * Surface2, BITMAP * Surface3 );

void Pgame( void );

void CBitmap( BITMAP * Surface, int r, int g, int b );

int Kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 );
#endif
Z gory dzieki

Pozdrawiam, poldek
P-37769
akwes
» 2011-08-01 00:48:37
Jakaś klasa w którą można upakować współrzędne żeby oprócz

C/C++
int Kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 );

było też
C/C++
int Kolizja( Obiekt * A, Obiekt * B );
P-37770
poldek
Temat założony przez niniejszego użytkownika
OK
» 2011-08-01 00:51:31
OK, jutro to sobie dorobie ale ... cos jeszcze by mi sie przydalo bo to tylko z 20 linijek i gotowe ;p
Moze jescze jakies propozycje

@akwes dzieki za odpowiedz o tej godzinie :))
P-37771
akwes
» 2011-08-01 01:06:16
Jeżeli chcesz czegoś naprawdę wymagającego to proszę :P
Funkcja która pisze wyjustowany tekst z AA.
W Allegro jest taka, ale niestety nie z AA, nie wiem czemu :P
P-37772
poldek
Temat założony przez niniejszego użytkownika
yyy...
» 2011-08-01 01:10:15
yyy... nie wiem co to znaczy wyjustowany .. ;p
P-37773
akwes
» 2011-08-01 01:19:33
Justowanie to wyrównanie tekstu do obu akapitów.

Wyrównanie do lewej, wyrównanie do prawej, wyśrodkowanie oraz justowanie.
Widzę że nic nie robisz tam jeśli chodzi o rysowanie tekstu :P A tekst można rysować na wiele sposobów.
Różne kolory, fonty, przeźroczystość.
P-37774
pekfos
» 2011-08-01 11:30:05
dlaczego nie zwalniasz bitmapy w destruktorze? nie musiałbyś pamiętać o ręcznym niszczeniu.
P-37799
« 1 »
  Strona 1 z 1