dev++ und SDL

DaZaRt

Grünschnabel
Hallo
Seit heute nutze ich den Dev-C ++
Ich habe mir heute auf das sdl.devpak heruntergeladen.
Doch wenn ich das sdl beispiel hier aus dem Forum nehme (aus dem sdl tutorial)
bekomme ich bei dem kompillieren zich fehler
(
C:\Dokumente und Einstellungen\DaZaRt\Desktop\sdl_source\testgame.c In function `SDL_main':
9 C:\Dokumente und Einstellungen\DaZaRt\Desktop\sdl_source\testgame.c number of arguments doesn't match prototype
56 C:\Dev-Cpp\include\SDL\SDL_main.h prototype declaration
57 C:\Dokumente und Einstellungen\DaZaRt\Desktop\sdl_source\testgame.c variable-sized object may not be initialized

----und dann ziemlich oft dieser fehler:---
58 C:\Dokumente und Einstellungen\DaZaRt\Desktop\sdl_source\testgame.c [Warning] excess elements in array initializer
58 C:\Dokumente und Einstellungen\DaZaRt\Desktop\sdl_source\testgame.c [Warning] (near initialization for `map[0]')

---und zum schluss:---
260 C:\Dokumente und Einstellungen\DaZaRt\Desktop\sdl_source\testgame.c 'for' loop initial declaration used outside C99 mode
)
Kann mir da jemand helfen ?
 
Zuletzt bearbeitet:
Es sieht so aus, als würdest du einer Funktion nicht alle/oder zu viele Parameter übergeben wollen. Wenn du deinen Code posten würdest kann ich dir vielleicht genaueres dazu sagen.

Gruß
cesupa
 
Ich schrieb oben :
Doch wenn ich das sdl beispiel hier aus dem Forum nehme (aus dem sdl tutorial)
aber nja hier der code :
C++:
#include <stdlib.h>
#include "SDL.h"
#include "SDL_image.h"
#include "time.h" 

//für Zufallszahlen

int main()
{
	SDL_Surface *display,
		    *image,
		    *image2,
		    *kristall,
		    *ausgang,
		    *player,
		    *enemy;

	SDL_Rect drect, srect;
	
	SDL_Rect dplayer, splayer;
	
	SDL_Rect denemy, senemy;
	
	SDL_Event event;

	int tilesize = 30;
	
	const int mapHoehe = 10,
		  mapBreite = 16;
	int  exitX = 12,
		  exitY = 8;
	
	int playerXPos = 1;
	int playerYPos = 1;
	
	double enemyXPos = 13,
	       enemyYPos = 2;
	    
	double enemyXSpeed = .009,
	       enemyYSpeed = .009;
	
	int fensterBreite = mapBreite * tilesize;
	int fensterHoehe = mapHoehe * tilesize;
	
	int zufallszahl;
		
	int anzahlKristalle = 0;
	int kSeed = 16;
	
	int playerMoved = 0;

	// 0 Boden
	// 1 Mauer
	// 2 Kristall
	// 3 Exit
	
	int map[mapHoehe][mapBreite] = { 
			  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
			  {1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
			  {1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
			  {1,0,0,0,0,1,1,1,1,0,0,1,0,1,1,1},
			  {1,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1},
			  {1,1,1,0,1,1,0,0,1,0,1,0,0,0,0,1},
			  {1,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1},
			  {1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
			  {1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
			  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
			};
			
	while(anzahlKristalle != kSeed){
		for( int y = 0; y < mapHoehe; y++) {
			for ( int x = 0; x < mapBreite; x++ ) {
				if(map[y][x]==0){
					zufallszahl=rand()%120;
					if(
					(zufallszahl <= 13) && 
					(zufallszahl > 10) && 
					(anzahlKristalle < kSeed) && 
					(x != exitX) && 
					(y != exitY) &&
					(x != playerXPos) &&
					(y != playerYPos)){
						map[y][x]=2;
						anzahlKristalle++;
						srand(time(NULL));
					}
				}					
			}
		}
	}
		
	int zufallY=0;
	int zufallX=0;
	while(map[zufallY][zufallX]!=0){
		zufallY=rand()%mapHoehe;
		zufallX=rand()%mapBreite;
		enemyYPos = zufallY;
		enemyXPos = zufallX;
	}

	int quit = 0;

	if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) {
		fprintf(stderr, "SDL konnte nicht initialisiert werden: %s\n", SDL_GetError());
		exit(1);
	}

	atexit(SDL_Quit);

	display = SDL_SetVideoMode(fensterBreite ,fensterHoehe ,16 ,SDL_SWSURFACE);
	if ( display == NULL ) {
		fprintf(stderr, "Konnte Fenster nicht bauen: %s\n", SDL_GetError());
		exit(-1);
	}

	image = IMG_Load("tile01.jpg");
	if ( image == NULL ) {
		fprintf(stderr, "Bild konnte nicht geladen werden: %s\n", SDL_GetError());
		exit(-1);
	}
	
	image2 = IMG_Load("tile02.jpg");
	if ( image2 == NULL ) {
		fprintf(stderr, "Bild konnte nicht geladen werden: %s\n", SDL_GetError());
		exit(-1);
	}
	
	kristall = IMG_Load("kristall.gif");
	if( kristall == NULL ) {
		fprintf(stderr, "Kristall konnte nicht geladen werden: %s\n", SDL_GetError());
		exit(-1);
	}
	
	ausgang = IMG_Load("exit.gif");
	if( exit == NULL ) {
		fprintf(stderr, "Exit konnte nicht geladen werden: %s\n", SDL_GetError());
		exit(-1);
	}
	
	player = IMG_Load("player.gif");
	if ( image == NULL ) {
		fprintf(stderr, "Player konnte nicht geladen werden: %s\n", SDL_GetError());
		exit(-1);
	}
	
	enemy = IMG_Load("enemy.gif");
	if ( enemy == NULL ) {
		fprintf(stderr, "Enemy konnte nicht geladen werden: %s\n", SDL_GetError());
		exit(-1);
	}

	srect.x = 0;
	srect.y = 0;
	srect.w = image->w;
	srect.h = image->h;

	drect.x = 0;
	drect.y = 0;
	drect.w = image->w;
	drect.h = image->h;
	
	splayer.x = 0;
	splayer.y = 0;
	splayer.w = player->w;
	splayer.h = player->h;
	
	dplayer.x = playerXPos * tilesize;
	dplayer.y = playerYPos * tilesize;
	dplayer.w = player->w;
	dplayer.h = player->h;
	
	senemy.x = 0;
	senemy.y = 0;
	senemy.w = tilesize;
	senemy.h = tilesize;
	
	denemy.x = enemyXPos * tilesize;
	denemy.y = enemyYPos * tilesize;
	denemy.w = tilesize;
	denemy.h = tilesize;
	
	for( int y = 0; y < mapHoehe; y++) {
		for ( int x = 0; x < mapBreite; x++ ) {
			drect.x = tilesize * x;
			drect.y = tilesize * y;
			if( map[y][x] == 1){
				SDL_BlitSurface(image, &srect, display, &drect);
			}
			else {
				SDL_BlitSurface(image2, &srect, display, &drect);
			}
			
			if( map[y][x] == 2){
				SDL_BlitSurface(kristall, &srect, display, &drect);
			}
			
			if( map[y][x] == 3){
				SDL_BlitSurface(ausgang, &srect, display, &drect);
			}
				
			SDL_UpdateRects(display, 1, &drect);
		}
	}	
	
	SDL_BlitSurface(player, &splayer, display, &dplayer);
	SDL_UpdateRects(display, 1, &dplayer);
	
	SDL_BlitSurface(enemy, &senemy, display, &denemy);
	SDL_UpdateRects(display, 1, &denemy);
	
	while( quit == 0 ) {
		while( SDL_PollEvent( &event ) ) {
			switch( event.type ) {
								
				case SDL_KEYDOWN:
					if(event.key.keysym.sym == 276 && (map[playerYPos][playerXPos-1] != 1)) { // nach links
						playerXPos--;
					}
					
					if(event.key.keysym.sym == 275 && (map[playerYPos][playerXPos+1] != 1)) { // nach rechts
						playerXPos++;
					}
					
					if(event.key.keysym.sym == 274 && (map[playerYPos+1][playerXPos] != 1)) { // nach unten
						playerYPos++;
					}
					
					if(event.key.keysym.sym == 273 && (map[playerYPos-1][playerXPos] != 1)) { // nach oben
						playerYPos--;
					}
					
					dplayer.x = playerXPos * tilesize;
					dplayer.y = playerYPos * tilesize;

					if(map[playerYPos][playerXPos] == 2) {
						map[playerYPos][playerXPos] = 0;
						anzahlKristalle--;
						if(anzahlKristalle == 0) {
							exitY=enemyYPos;
							exitX=enemyXPos;
							map[exitY][exitX] = 3;
						}
					}
					
					if((playerYPos == exitY) && (playerXPos == exitX) && anzahlKristalle < 1)
						quit = 1;
					
				break;
				
				case SDL_QUIT:
					quit = 1;
				break;
				
				default:
				break;
			}
		}
		
		for( int y = 0; y < mapHoehe; y++) {
			for ( int x = 0; x < mapBreite; x++ ) {
				drect.x = tilesize * x;
				drect.y = tilesize * y;

				if( map[y][x] == 1){
					SDL_BlitSurface(image, &srect, display, &drect);
				}
				else {
					SDL_BlitSurface(image2, &srect, display, &drect);
				}
				
				if( map[y][x] == 2) {
					SDL_BlitSurface(kristall, &srect, display, &drect);
				}

				if( map[y][x] == 3) {
					SDL_BlitSurface(ausgang, &srect, display, &drect);
				}
			}
		}

		if(map[(int)enemyYPos][(int)(enemyXPos-.5)] == 1){
			enemyXSpeed *= -1;
			enemyXPos += .005;
		}
		
		if(map[(int)enemyYPos][(int)(enemyXPos+.5)] == 1){
			enemyXSpeed *= -1;
			enemyXPos -= .005;
		}

		if(map[(int)(enemyYPos-.5)][(int)enemyXPos] == 1){
			enemyYSpeed *= -1;
			enemyYPos += .005;
		}

		if(map[(int)(enemyYPos+.5)][(int)enemyXPos] == 1){
			enemyYSpeed *=-1;
			enemyYPos -= .005;
		}
		
		if((enemyXPos - playerXPos) < 3 && (enemyXPos - playerXPos) > 3)
			enemyXSpeed *= -1;
			
		if((enemyXPos - playerYPos) < 3 && (enemyYPos - playerYPos) > 3)
			enemyYSpeed *= -1;

		if(((int)enemyXPos == playerXPos) && ((int)enemyYPos == playerYPos))
			quit = 1;

		enemyXPos -= enemyXSpeed;
		enemyYPos -= enemyYSpeed;
		denemy.x = (int) enemyXPos * tilesize;
		denemy.y = (int) enemyYPos * tilesize;			

		SDL_BlitSurface(player, &splayer, display, &dplayer);
		SDL_BlitSurface(enemy, &senemy, display, &denemy);
		SDL_Flip(display);
	}
	SDL_FreeSurface(image);
	SDL_FreeSurface(image2);
	SDL_FreeSurface(player);
	SDL_FreeSurface(enemy);
	SDL_FreeSurface(kristall);
	SDL_FreeSurface(ausgang);
	exit(0);
}
 
Zuletzt bearbeitet:
Zurück