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

[SDL] Co jest nie tak ?

Ostatnio zmodyfikowano 2010-09-04 20:15
Autor Wiadomość
mesajah
Temat założony przez niniejszego użytkownika
[SDL] Co jest nie tak ?
» 2010-09-04 15:42:55
Czemu mi to nie działa ?
C/C++
#include "SDL.h"
#include "iostream"
using namespace std;

const int Rozdzielczosc_X = 800;
const int Rozdzielczosc_Y = 600;
const int Bitow_Na_Pixel = 32;
SDL_Surface * SDLSEkran = NULL;

bool Init_SDL()
{
    if( SDL_Init( SDL_INIT_EVERYTHING ) == - 1 ) return false;
   
    SDLSEkran = SDL_SetVideoMode( Rozdzielczosc_X, Rozdzielczosc_Y, Bitow_Na_Pixel, SDL_SWSURFACE );
   
    if( SDLSEkran == NULL )
    {
        return false;
    }
   
    SDL_WM_SetCaption( "Zilesios", NULL );
    return true;
}
// Do wczytywania bitmap

SDL_Surface * Wczytaj_BMP( char NazwaPliku )
{
    SDL_Surface * Powierzchnia_Na_Bitmape = NULL;
    SDL_Surface * Przekonwertowana_Bitmapa = NULL;
   
    Powierzchnia_Na_Bitmape = SDL_LoadBMP( NazwaPliku );
   
    if( Powierzchnia_Na_Bitmape != NULL )
    {
        Przekonwertowana_Bitmapa = SDL_DisplayFormat( Powierzchnia_Na_Bitmape );
        SDL_FreeSurface( Powierzchnia_Na_Bitmape );
    }
    return Przekonwertowana_Bitmapa;
}
void Exit()
{
    SDL_FreeSurface( SDLSEkran );
    SDL_Quit();
}

int main( int argc, char * args[] )
{
    if( !Init_SDL() ) return 0;
   
    SDL_Delay( 3000 );
   
    Exit();
    return 0;
}
P-21718
DejaVu
» 2010-09-04 15:45:08
A jaki jest błąd?

/edit:
No i co to jest:
C/C++
#include "iostream"
P-21719
kamillo121
» 2010-09-04 15:46:07
Pierwsze co rzuca się w oczy to to, że funkcja do ładowania bitmap przyjmuje const char* a ty jej zapodajesz char, dopisz jaki błąd bo Ci nikt nie pomoże

C/C++
//(...)
SDL_Surface * Wczytaj_BMP( char NazwaPliku )
zamiast tego daj
SDL_Surface * Wczytaj_BMP( char * NazwaPliku )
//(...)
//edit zauważyłem teraz, że zwalniasz zmienna SDLEkran, gdzie ta ma ustawione tryb video, nie należy tego robić, zwalniaj tylko powierzchnie które nie mają ustawione trybu video !
P-21720
Elaine
» 2010-09-04 16:07:34
No i co to jest:
C/C++
#include "iostream"
Dołączenie pliku o nazwie iostream. Jeśli nie ma takiego w obecnym katalogu, to traktowane jest to tak samo, jak
#include <iostream>
.
P-21722
mesajah
Temat założony przez niniejszego użytkownika
» 2010-09-04 17:44:58
sorka zły kod dałem a oto dobry :
C/C++
#include "SDL.h"

const int Rozdzielczosc_X = 800;
const int Rozdzielczosc_Y = 600;
const int Bitow_Na_Pixel = 32;


SDL_Surface * SDLSEkran = NULL;

SDL_Surface * Wczytaj_BMP( char NazwaPliku )
{
    SDL_Surface * Powierzchnia_Na_Bitmape = NULL;
    SDL_Surface * Przekonwertowana_Bitmapa = NULL;
   
    Powierzchnia_Na_Bitmape = SDL_LoadBMP( NazwaPliku );
   
    if( Powierzchnia_Na_Bitmape != NULL )
    {
        Przekonwertowana_Bitmapa = SDL_DisplayFormat( Powierzchnia_Na_Bitmape );
        SDL_FreeSurface( Powierzchnia_Na_Bitmape );
    }
    return Przekonwertowana_Bitmapa;
}

bool Blit( SDL_Surface * src, int Offset_X, int Offset_Y )
{
    SDL_Rect Destination;
    Destination.x = Offset_X;
    Destination.y = Offset_Y;
    Destination.w = src->w;
    Destination.h = src->h;
   
    if( SDL_BlitSurface( src, NULL, SDLSEkran, & Destination ) == 0 )
    {
        return true;
    } else
    {
        return false;
    }
}

bool Init_SDL()
{
    if( SDL_Init( SDL_INIT_EVERYTHING ) == - 1 ) return false;
   
    SDLSEkran = SDL_SetVideoMode( Rozdzielczosc_X, Rozdzielczosc_Y, Bitow_Na_Pixel, SDL_SWSURFACE );
   
    if( SDLSEkran == NULL )
    {
        return false;
    }
   
    SDL_WM_SetCaption( "DarkCult SDL tutorial", NULL );
   
    Obrazek = Wczytaj_BMP( "1.bmp" );
    if( Obrazek == NULL ) return false;
   
    return true;
}

void Exit()
{
    SDL_FreeSurface( Obrazek );
    SDL_FreeSurface( SDLSEkran );
    SDL_Quit();
}

int main( int argc, char * args[] )
{
    if( !Init_SDL() ) return 0;
   
    if( Blit( Obrazek, 100, 50 ) == false )
    {
        return 0;
    }
   
    if( SDL_Flip( SDLSEkran ) == - 1 )
    {
        return 0;
    }
   
    SDL_Delay( 3000 );
   
    Exit();
    return 0;
}

A error to :
Error 1 error C2664: 'SDL_RWFromFile' : cannot convert parameter 1 from 'char' to 'const char *' c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 15
Error 2 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55
Error 3 error C2664: 'Wczytaj_BMP' : cannot convert parameter 1 from 'const char [6]' to 'char' c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55
Error 4 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 56
Error 5 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 63
Error 6 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 72
7 IntelliSense: argument of type "char" is incompatible with parameter of type "const char *" c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 15
8 IntelliSense: identifier "Obrazek" is undefined c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55
9 IntelliSense: argument of type "const char *" is incompatible with parameter of type "char" c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55
10 IntelliSense: identifier "Obrazek" is undefined c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 63
11 IntelliSense: identifier "Obrazek" is undefined c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 72

P-21729
kamillo121
» 2010-09-04 17:52:50
PO pierwsze o tym już mówiłem

C/C++
SDL_Surface * Wczytaj_BMP( char NazwaPliku ) //zmień na
SDL_Surface * Wczytaj_BMP( char * NazwaPliku )

po drugie nie ma takiego obiektu jak Obrazek to chyba jasne; w funkcji main odwołujesz się do niego najpierw stwórz
C/C++
SDL_Surface * Obrazek = null;
po trzecie pisałem, żebyś nie zwalniał powierzchni ustawionej jako video usuń
C/C++
SDL_FreeSurface( SDLEkran );

//edit jako, że Obrazek jest jako zmienna globalna utwórz go obok SdL_Surface* SDLEkran=nuul;
P-21730
DejaVu
» 2010-09-04 17:56:42
Jak już zmieniać to na
SDL_Surface * Wczytaj_BMP( const char * NazwaPliku )
P-21731
mesajah
Temat założony przez niniejszego użytkownika
» 2010-09-04 20:15:02
thx . użyłem sposobu kamijek
P-21733
« 1 »
  Strona 1 z 1