在Ubuntu 14.04上没有玩Allegro 4

时间:2017-08-13 23:27:37

标签: c midi allegro4

我正在阅读一本关于使用名为Allegro的游戏库在C编程语言中编程的书。如果您使用谷歌“Allegro”,如果您目前没有,那么您将确切知道这是什么。 Allegro基本上使编写视频游戏变得更容易。我已经对这个问题的方式感到沮丧。

好吧,无论如何我从一本书中跟踪了一个示例程序并且代码类型工作,打开一个窗口并显示一些数据,但没有播放Midi文件,.mid。有谁知道会出现什么问题?运行此程序时没有抛出任何错误。此外,allegro表示midi文件已成功加载并且Midi正在播放。虽然我没有听到任何声音,但没有看到GUI中计算的MIDI文件的进度。有一些代码可以计算Midi文件的时间,长度和位置。但是,该计划根本没有任何重要性。我还尝试了Allegro安装的示例文件夹下的exmidi程序,但这也没有用。 Allegro能够毫无问题地播放.wav文件。此外,我能够使用名为“胆怯”的程序播放有问题的Mid文件。所以我知道我可以在Ubuntu笔记本电脑上播放一些Midi文件。我只是不确定为什么我不能用Allegro 4播放Mid文件.0_o

感谢任何帮助。感谢您阅读本文。

以下是代码:

#include <allegro.h>

#define MODE GFX_AUTODETECT_WINDOWED
#define WIDTH 640
#define HEIGHT 480
#define WHITE makecol(255, 255, 255)

int main(void)
{
     MIDI *music
     int pos, length;

     //initialize the program
     allegro_init();
     install_keyboard();
     install_timer();
     set_gfx_mode(MODE, WIDTH, HEIGHT, 0, 0);
     textout_ex(screen, font, "PlayMidi Program (Hit ESC to quit)", 0, 0, WHITE, 0);

     //install the sound driver
     if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) 
     {
       allegro_message("Error initializing sound system\n%s\n", allegro_error);
       return 1;
     }

     //load the midi file
     music = load_midi("pinkpanther.mid");
     if(!music) {
       allegro_message("Error loading Midi file.");
       return 1;
     } else { 
       allegro_message("Music loaded");
     }

     //play the music
     if (play_mid(music, 0) != 0) { 
        allegro_message("Error playing Midi\n%s", allegro_error);
        return 1;
      } else { 
        allegro_message("No errors playing the Midi.");

      }

     //display status information
     length = get_midi_length(music);
     textprintf_ex(screen, font, 0, 20, WHITE, 0, "Length: %d:%02d", length/60, length % 60);

     do { 

         pos = midi_time;
         textprintf_ex(screen, font, 0, 30, WHITE, 0, "Position: %d:%02d", pos/60, pos % 60);
         rest(100);

     } while((pos <= length) && (!key[KEY_ESC]));

     stop_midi();
     destroy_midi(music);
     remove_sound();
     allegro_exit();
     return 0;
} 
END_OF_MAIN()

0 个答案:

没有答案