audio.c

来自「LTris a tetris clone for Linux」· C语言 代码 · 共 153 行

C
153
字号
/***************************************************************************                          sound.c  -  description                             -------------------    begin                : Sun Jul 29 2001    copyright            : (C) 2001 by Michael Speck    email                : kulkanie@gmx.net ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#ifdef SOUND#include "ltris.h"#include "audio.h"/*====================================================================If audio device was properly initiated this flag is set.If this flag is not set; no action will be taken for audio.====================================================================*/int audio_ok = 0;/*====================================================================If this flag is not set no sound is played.====================================================================*/int sound_enabled = 1;/*====================================================================Initiate/close audio====================================================================*/int audio_open(){    if ( Mix_OpenAudio( MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 256 ) < 0 ) {        fprintf( stderr, "audio_open: can't open audio device: %s\n", SDL_GetError() );        audio_ok = 0;        return 0;    }    audio_ok = 1;    return 1;}void audio_close(){    if ( !audio_ok ) return;    Mix_CloseAudio();}/*====================================================================Sound chunk====================================================================*/Sound_Chunk* sound_chunk_load( char *file_name ){    char path[512];    Mix_Chunk *chunk = 0;    if ( !audio_ok ) {        fprintf( stderr,                 "sound_chunk_load: cannot load WAV '%s' as audio device isn't initated properly\n",                 file_name );        return 0;    }    /* use SRCDIR/sounds as source directory */    sprintf( path, "%s/sounds/%s", SRC_DIR, file_name );    chunk = Mix_LoadWAV( path );    if ( chunk == 0 )        fprintf( stderr, "chunk_load: couldn't load WAV '%s': %s\n", path, SDL_GetError() );    return (Sound_Chunk*)chunk;}void sound_chunk_free( Sound_Chunk *chunk ){    if ( !audio_ok ) return;    Mix_FreeChunk( (Mix_Chunk*)chunk );}/*====================================================================Sound stuff====================================================================*//*====================================================================Enable/disable sound====================================================================*/void sound_enable( int enable ){    if ( !audio_ok ) return;    sound_enabled = enable;    if ( !enable )        Mix_Pause( -1 ); /* stop all sound channels */}/*====================================================================Set general volume of sounds. 0 - 127====================================================================*/void sound_volume( int level ){    if ( !audio_ok ) return;    if ( level < 0 ) level = 0;    if ( level > 127 ) level = 127;    Mix_Volume( -1, level ); /* all sound channels */}/*====================================================================Play a chunk.====================================================================*/void sound_play( Sound_Chunk *chunk ){    if ( !audio_ok ) return;    if ( !sound_enabled ) return;    /* use first free sound channel and play sound one time *///    SDL_PauseAudio(0);    Mix_PlayChannel( -1, (Mix_Chunk*)chunk, 0 );//    SDL_PauseAudio(1);	}/*====================================================================Music stuff====================================================================*//*====================================================================Set general volume of sounds. 0 - 127====================================================================*/void music_volume( int level ){    /* not implemented */}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?