载入中…

您现在的位置: 四联自学考试网 >> 网络学院 >> 程序设计 >> C语言 >> 游戏编程 >> 学院正文
相 关 文 章
文本方式下双链表实现的食豆…
关于文曲星上猜数字游戏的c…
一份详细的五子棋说明
大家一起来玩十点半
五道棋的完整程序
MINI-FOOLFLY 游戏代码
24点扑克牌游戏
一个模拟显示自然云彩的C程…
图形模式下的搬运工
仿LINUX下KTron的游戏
精 彩 推 荐
最 新 热 门
最 新 推 荐
欢迎光临四联自学,现在是: 祝您自考成功!
一架小钢琴——图形界面与发声技术的简单应用
原文作者:未知  文章录入:4Lzx.com  发布时间:2005-9-4 13:22:24    

/*
 * Super Piano, Version 1.0
 * Compiled by TCC.EXE
 * Coding Enviroment: Win-TC 1.72
 * Written by Lin Yiwei,from ZJU
 * Date: 2004-7-17
 */

#include<dos.h>
#include<conio.h>
#include<graphics.h>
#include<stdio.h>

#define closegr closegraph

#define KEY_WIDTH 60
#define KEY_HEIGHT 280

#define s 8051
#define d 8292
#define f 8550
#define g 8807
#define h 9064
#define j 9322
#define k 9579
#define ESC 283

/*function's prototype*/
void initgr()
{
    int gd=DETECT,gm=0;
    registerbgidriver(EGAVGA_driver);/*register BGI driver */
    registerbgifont(triplex_font); /*register BGI font*/
    registerbgifont(small_font);
    registerbgifont(sansserif_font);
    registerbgifont(gothic_font);
    initgraph(&gd,&gm,"");
    }   /*initialize the graphic*/

void down(int x,int y)
{
    setcolor(WHITE);
    setfillstyle(SOLID_FILL,WHITE);
    bar(x,y,x+KEY_WIDTH,y+KEY_HEIGHT-13);

    setcolor(DARKGRAY);
    setfillstyle(SOLID_FILL,DARKGRAY);
    bar(x,y+KEY_HEIGHT-13,x+KEY_WIDTH,y+KEY_HEIGHT);
    }   /*the key being pressed*/

void up(int x,int y)
{
    setcolor(WHITE);
    setfillstyle(SOLID_FILL,WHITE);
    bar(x,y,x+KEY_WIDTH,y+KEY_HEIGHT-20);

    setcolor(DARKGRAY);
    setfillstyle(SOLID_FILL,DARKGRAY);
    bar(x,y+KEY_HEIGHT-20,x+KEY_WIDTH,y+KEY_HEIGHT);
    }    /*the key being release*/

void start()
{
    int i=0;

    initgr(); /* initialize the BGI */

    setbkcolor(LIGHTGRAY);
                /*set the background*/
    settextstyle(4,0,5);
    setcolor(BLUE);
    outtextxy(170,40,"SUPER PIANO");
    setcolor(RED);
    outtextxy(172,42,"SUPER PIANO");
    setcolor(YELLOW);
    outtextxy(174,44,"SUPER PIANO");
    setcolor(GREEN);
    outtextxy(176,46,"SUPER PIANO");
         /*this is the title*/
    for(i=0;i<7;i++)
    {
        up(100+i*(KEY_WIDTH+5),110);
        }     /*the key*/

    settextstyle(0,0,1);
    setcolor(LIGHTRED);
    outtextxy(175,420,"KEY:1-s,2-d,3-f,4-g,5-h,6-j,7-k,Quit-Esc");
    setcolor(BLUE);
    outtextxy(215,440,"All Rights Reversed @ 2004-7");
    }

main()
{
    int i=0;
    int key=0;
    start();
    while(key!=ESC)
    {
        for(i=0;i<7;i++)
        {
            up(100+i*(KEY_WIDTH+5),110);
            }     /*release the key first*/

    key=bioskey(0);
    switch(key)
        {
        case s:down(100,110);sound(523);delay(3000);nosound();break;
        case d:down(165,110);sound(587);delay(3000);nosound();break;
        case f:down(230,110);sound(659);delay(3000);nosound();break;
        case g:down(295,110);sound(699);delay(3000);nosound();break;
        case h:down(360,110);sound(784);delay(3000);nosound();break;
        case j:down(425,110);sound(880);delay(3000);nosound();break;
        case k:down(490,110);sound(988);delay(3000);nosound();break;
            default:break;
            }
    }
    closegr();
    }

/*图形驱动和字体均注册(可生成完全独立的exe文件),因而要求有相应的图形驱动和字体连库*/

 
  • 上一篇学院:

  • 下一篇学院:
  • 论坛交流】【发表评论】【打印本文】【关闭窗口