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

📄 火焰.c

📁 喜欢KOF吗
💻 C
字号:
#include<dos.h> 
#include<stdlib.h> 

#define BYTE unsigned char 

void setmode() 
{ 
 _AX=0x13; 
 geninterrupt(0x10); 
} 

void closemode() 
{ 
 _AX=0x3; 
 geninterrupt(0x10); 
} 

void setpal(int Color,BYTE r,BYTE g,BYTE b) 
{ 
 outportb(0x3c8,Color); 
 outportb(0x3c9,r); 
 outportb(0x3c9,g); 
 outportb(0x3c9,b); 
} 

void pset(int x,int y,BYTE color) 
{ 
 pokeb(0xa000,y*320+x,color); 
} 

BYTE point(int x,int y) 
{ 
 return peekb(0xa000,y*320+x); 
} 

void main() 
{ 
 int i,j; 
 unsigned int x,y,c; 
 setmode(); 
 for(x=0;x<32;x++){ 
    setpal(x,x*2+1,0,0); 
    setpal(x+32,63,x*2+1,0); 
    setpal(x+64,63,63,x*2+1); 
    setpal(x+96,63,63,63); 
   } 
 while(!kbhit()){ 
    for(x=0;x<320;x+=2){ 
       for(y=1;y<=202;y+=2){ 
  c=(point(x,y)+point(x+2,y)+point(x+2,y+2))/3; 
  if(c>128)c=128; 
  if(c--){ 
     poke(0xa000,(y-2)*320+x,(c<<8)+c); 
     poke(0xa000,(y-1)*320+x,(c<<8)+c); 
    } 
 } 
       y-=2; 
       pset(x,y,random(320)); 
      } 
   } 
 closemode(); 
} 



/*
geninterrupt()执行中断函数 
原形:void geninterrupt(int n) 
调用方式:geninterrupt(软中断号) 
功能:产生一个8086软中断 
注:需先向寄存器传递入口信息(用伪变量) 
例如 伪变量=要赋的值(入口信息); 
调用geninterrupt()函数后得接受出口信息 
例如 变量名=伪变量 
伪变量∶Turbo C 允许使用伪变量直接访问相应的8086寄存器。伪变量的类型有两种。 
① unsigned int : _AX、 _BX、 _CX、 _DX、 _CS、 _DS、 _SS、 _ES、_SP、 _BP、 _DI、 _SI 
② unsigned char: _AL、 _AH、 _BL、 _BH、 _CL、 _CH、 _DL、 _DH 

可见:geninterrupt(0x10); 的目的是产生软中断号为16的中断;_AL,_CX,_AH为各种寄存器的伪变量。


*/

⌨️ 快捷键说明

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