2012-04-28 2 views
1

안녕하세요. 현재 처리중인 것은 텍스트 파일에서 입력을 가져온 다음 비트 맵으로 변환하여 파일에 저장할 수있는 기능입니다.텍스트 파일을 알레그로의 비트 맵

######## 
#  # 
######## 

와 나는 알레그로 대신 지정된 크기의 픽셀이있을 것입니다 #의 사용 그리려 :

입력은 다음과 같습니다. 각 #는 타일 (10x10 픽셀)을 나타냅니다. 그래서 최종 결과는 실제로이 코드를 사용하여 그려 한이

link to an image

과 같습니다

for (int i = 0; i < 80; i++){ 
     for (int j = 0; j < 10; j++){ 
      al_draw_pixel(i, j, al_map_rgb(0, 0, 0)); 
     } 
    } 
    for (int i = 0; i < 10; i++){ 
     for (int j = 10; j < 20; j++){ 
      al_draw_pixel(i, j, al_map_rgb(0, 0, 0)); 
     } 
    } 
    for (int i = 70; i < 80; i++){ 
     for (int j = 10; j < 20; j++){ 
      al_draw_pixel(i, j, al_map_rgb(0, 0, 0)); 
     } 
    } 
    for (int i = 0; i < 80; i++){ 
     for (int j = 20; j < 30; j++){ 
      al_draw_pixel(i, j, al_map_rgb(0, 0, 0)); 
     } 
    } 

을 그래 그건 아주 나쁜, 그래서 내가 어떻게 그런하지만 뭔가를 달성 할 텍스트 파일에서 독립적 인 공통 절차? 조언을 주셔서 감사합니다.

참고 : 유일하게 허용 된 헤더는 allegro5/allegro.h의 및 allegro5은/

답변

0

는 알레그로 5 이미지에 무승부를 allegro_image.h, 당신은 같은 것을 할 필요가 : 이제

ALLEGRO_BITMAP *bmp = al_create_bitmap(640, 480); 
al_set_target_bitmap(bmp); 

을 모든 그리기 작업이 이미지에서 발생합니다. 나중에 저장하려면, 그것을 활성화에 대한 귀하의 이미지 라이브러리 지원이있는 경우 또한 확장으로 pngjpg을 사용할 수 있습니다

al_save_bitmap("somefile.bmp", bmp); 

.

는 텍스트 파일을 읽기 위해이 기능을 사용

  • al_fopen
  • al_fgetc
  • al_feof
  • al_fclose

제로 int xy을 설정합니다. 파일의 끝까지 반복 할 것입니다. 매 반복마다 x에 1 씩 증가시킵니다. 줄 바꿈 문자 (\n)에 도달하면 y을 하나씩 늘리고 x을 0으로 설정하십시오. 그리기, 문자 읽기에 따라, 이제 타일

을 (. 당신은 \r 문자를 무시한다) : 물론

ALLEGRO_BITAMP *tile_to_draw = NULL; 
if (c == '#') 
    tile_to_draw = bmp1; 
else if (c == ' ') 
    tile_to_draw = bmp2; 

if (tile_to_draw) 
    al_draw_bitmap(tile_to_draw, x * 10, y * 10, 0); 

if의 일련의보다 타일에 문자를 매핑하는 더 나은 방법을 거기를하지만, 당신의 숙제를 끝내기에 충분해야합니다.

+0

어디에서 값을 저장하나요? 또는 나는 그들을 전혀 저장할 필요가 없다? int c; 또는 모든 문자를 저장하는 char 배열? 또한 그 bmp1과 bmp2는 무엇입니까? – Markus

+0

또한 x 카운터에 오류가 있습니다. al_feof가 EOF를 반환하므로 x는 EOF를 취하고 2의 값을가집니다. 어떻게 수정합니까? – Markus

+0

'c'는 현재 반복을위한'al_fgetc'의 값을 나타냅니다. 당신은 정말 내 코드를 기반으로 일하는 솔루션을 얻을 수 있어야합니다.그렇지 않은 경우이 사이트가 실제로 제공하도록 설계된 것보다 많은 도움이 필요할 수 있으며 http://www.allegro.cc/forums와 같은 일부 포럼에서 도움을 얻는 방법을 고려해야합니다. – Matthew

관련 문제