⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atb.c

📁 C.Game.Programming.For.Dummies.原码
💻 C
字号:
/*
 * Music playing routine
 * Microsoft compilers only!
 */

#include <time.h>
#include <conio.h>

void playsound(int note,int duration);
void delay(int duration);

void main()
{

/*
 * Refer to the notes in the Borland example
 * for an explanation of how this array works
 * as well as other comments on the main()
 * function.
 */

    int song[][2] = {
        392,250, 392,375, 330,125, 330,250,
        392,250, 392,375, 294,125, 294,250,
        330,250, 349,250, 392,250, 440,250,
        494,250, 392,750, 392,250, 392,375,
        330,125, 330,250, 392,250, 392,375,
        294,125, 294,250, 587,250, 554,250,
        587,250, 659,250, 440,250, 587,750,
        392,250, 659,375, 659,125, 587,250,
        523,250, 523,375, 494,125, 494,250,
        523,250, 587,250, 494,250, 440,250,
        392,250, 523,750, 523,250, 523,375,
        440,125, 440,250, 523,250, 523,375,
        392,125, 392,250, 392,250, 440,250,
        523,250, 392,250, 587,250, 523,750,
        0, 0
    };
    int x = 0;

    while(song[x++][0])
    {
        playsound(song[x][0],song[x][1]);
        delay(100);
    }
}

/*
 * The playsound function manipulates the PC's
 * speaker using a bunch of routines not
 * explained in the book. (Nifty!) Honestly,
 * this is a well-used routine for the PC,
 * most programmers just "steal" this code
 * without bothering to know what it does
 * (I used a routine like this for years,
 * and it can also be found in your HELP
 * file in the BEEP.C program example.)
 */

void playsound(int note,int duration)
{
    int status;

    if(!note) return;

    note = (unsigned)(1193280L / note);

    _outp(0x43,0xb6);               //prep the port
    _outp(0x42,(char)note);         //tell it which
    _outp(0x42,(char)(note >> 8));  // note to play
    status = inp( 0x61 );           //save the status
    _outp(0x61, status | 0x03);     //play the note

    delay( (clock_t)duration );     //delay

    _outp( 0x61, status );          //turn the speaker off

}

/*
 * The delay function uses Microsoft C's clock()
 * function which keeps track of how long a
 * program has been running in milliseconds.
 *
 * clock_t is a variable type representing how
 * long a program has run. (It's like a long int.)
 *
 * The delay function calculates how long to wait
 * by adding the duration to the current time. Until
 * that time passes, a while loop sits and spins.
 */

void delay(int duration)
{
    clock_t done;

    done = duration + clock();
    while( done > clock() )
        ;
}

⌨️ 快捷键说明

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