2017-04-21 1 views
-1
#include <stdlib.h> 
#include <stdio.h> 
#include <SDL/SDL.h> 

void pause() 
{ 
    int continuer = 1; 
    SDL_Event event; 

    while (continuer) 
    { 
     SDL_WaitEvent(&event); 
     switch(event.type) 
     { 
      case SDL_QUIT: 
       continuer = 0; 
     } 
    } 
} 

int main(int argc, char *argv[]) 
{ 
    SDL_Init(SDL_INIT_VIDEO); 
    SDL_Rect posBack, posbtn_jouer, posbtn_regles; 
    SDL_Surface *screen = NULL, *background = NULL, *btn_jouer = NULL, *btn_regles = NULL; 

    posBack.x = 0; 
    posBack.y = 0; 
    posbtn_jouer.x = 400; 
    posbtn_jouer.y = 460; 
    posbtn_regles.x = 400; 
    posbtn_regles.y = 570; 

    screen = SDL_SetVideoMode(1080, 720, 32, SDL_HWSURFACE); 
    background = SDL_LoadBMP("game_home.bmp"); 
    SDL_BlitSurface(background,NULL,screen,&posBack); 

    btn_jouer = SDL_LoadBMP("btn_jouer.bmp"); 
    SDL_SetColorKey(btn_jouer,SDL_SRCCOLORKEY,SDL_MapRGB(btn_jouer->format,255,255,255)); 
    SDL_BlitSurface(btn_jouer,NULL,screen,&posbtn_jouer); 

    btn_regles = SDL_LoadBMP("btn_regles.bmp"); // Ouverture du bouton regles 
    SDL_SetColorKey(btn_regles,SDL_SRCCOLORKEY,SDL_MapRGB(btn_regles->format,255,255,255)); 
    SDL_BlitSurface(btn_regles,NULL,screen,&posbtn_regles); 
    SDL_Flip(screen); 

    pause(); 

    SDL_FreeSurface(background); 
    SDL_FreeSurface(btn_jouer); 
    SDL_FreeSurface(btn_regles); 

    SDL_Quit(); 

    return EXIT_SUCCESS; 
} 

는 메시지 "프로세스 상태 3 종료 코드 블록 (0 minute (s)을 0 초 (S)) "이 나에게 나타나고 나는 그 문제가 무엇인지 이해하지 못한다. 나는 그것을 도울 수 있지만 나를 도울 수있는 어떤 것도 발견하지 못했다. 누군가 나를 도울 수 있다면 나는 혼란 스럽다.프로세스 상태 3으로 종료 - 나는이 코드를 컴파일 할 때, 게임을 프로그래밍 할 SDL과 C를 사용하고

+0

헤더 파일 (컴파일시)과 라이브러리 (링크시)가 포함되지 않으므로'SDL' 헤더 파일이 포함되지 않아 컴파일이 실패합니다. – user3629249

+0

'main()'에 대한 서명이'int main (int argc, char * argv [])'이지만 매개 변수가 사용되지 않기 때문에 게시 된 코드가 깨끗하게 컴파일되지 않습니다. 가독성과 이해를 쉽게하기 위해'int main (void)' – user3629249

+1

과 같은 다른 유효한 서명을 사용하도록 제안하십시오. 1) 일관되게 코드를 들여 씁니다. 모든 여는 중괄호 '{'다음에 들여 쓰기. 모든 닫는 중괄호 '}'앞에서 들여 쓰기를하지 않습니다. 각 들여 쓰기 레벨에 대해 4 개의 공백을 제안하십시오 – user3629249

답변

0

먼저 올바른 헤더 파일을 포함하고 있는지 확인하십시오. 을 사용하지 않으시겠습니까? 그렇다면 <SDL2/SDL.h>을 헤더로 사용하십시오.

switch(event.type) 
    { 
     case SDL_QUIT: 
      continuer = 0; 
    } 

event.type에서 둘째

char를 입력하지 않는다. 문을 사용하십시오.

셋째, 파일의 경로가 올바른지 확인하십시오. 그들은 프로젝트 디렉토리 또는 포인터 backgroundbtn_jouer의 루트에서 시작해야합니다 NULL됩니다.

관련 문제