sound.c
上传用户:junwei_58
上传日期:2007-05-15
资源大小:79k
文件大小:2k
源码类别:

其他智力游戏

开发平台:

Visual C++

  1. #define SOUND_C
  2. #include "game.h"
  3. #include <dos.h>
  4. int speed=1;
  5. char *qm="iddgwwwqqgfff dddfghhhggg ddgwwwqqqfff ddffhjqqqqq wpggjhgddgqq hhqwwqjjjggg ddgwwwqqqqgfff ddffhjqqqqqq";
  6. int n,pauseTime,played;
  7. uchar ch;
  8. //void pause(int);
  9. void sounds(int,int);
  10. void play(){
  11. int i,freq;
  12. int time=4*speed;
  13. if(pauseTime--)return;
  14. if(played){outp(97,ch);played=0;}
  15. if(*(qm+ ++n)=='')n=0;
  16. i=1;
  17. switch(*(qm+n)){
  18. case 'k': time=1*speed;i=0;
  19. case 'i': time=6*speed;i=0;
  20. case 'o': time=10*speed;i=0;
  21. case 'p': pauseTime=time;i=0;
  22. case 'a': freq=523;break;
  23. case 's': freq=587;break;
  24. case 'd': freq=659;break;
  25. case 'f': freq=698; break;
  26. case 'g': freq=784; break;
  27. case 'h': freq=880; break;
  28. case 'j': freq=988; break;
  29. case 'z': freq=262; break;
  30. case 'x': freq=294; break;
  31. case 'c': freq=330; break;
  32. case 'v': freq=349; break;
  33. case 'b': freq=392; break;
  34. case 'n': freq=440; break;
  35. case 'm': freq=494; break;
  36. case 'q': freq=1047; break;
  37. case 'w': freq=1175; break;
  38. case 'e': freq=1319; break;
  39. case 'r': freq=1397; break;
  40. case 't': freq=2568; break;
  41. case 'y': freq=1760; break;
  42. case 'u': freq=1976; break;
  43. default: i=0; break;
  44. }
  45. if (i){
  46. union {
  47. long division;
  48. uchar c[2];
  49. }count;
  50. played=1;
  51. count.division=1193280L/freq;
  52. outp(67,182);
  53. outp(66,count.c[0]);
  54. outp(66,count.c[1]);
  55. ch=inp(97);
  56. outp(97,ch|3);
  57. pauseTime=time;
  58. }
  59. }
  60. /*
  61. void pause (int time){
  62. int t1,t2;
  63. union REGS in ,out;
  64. in.h.ah=0x2c;
  65. int86(0x21,&in,&out);
  66. t1=t2=100*out.h.dh+out.h.dl;
  67. while (t2-t1<time){
  68. int86(0x21,&in,&out);
  69. t2=100*out.h.dh+out.h.dl;
  70. if (t2<t1)t2+=6000;
  71. }
  72. } */