📄 模拟扫雷游戏.htm
字号:
{<BR> _CX=vx;<BR>
_DX=vy;<BR> _AX=0x0f;<BR>
geninterrupt(0x33);<BR>
}<BR>/*获取鼠标按下键的信息*/<BR>/*是否按下左键 返回值:
1=按下 0=释放*/<BR>int LeftPress()<BR>
{<BR> _AX=0x03;<BR>
geninterrupt(0x33);<BR>
return(_BX&1);<BR> }</P>
<P>/*是否按下右键返回值同上*/<BR>int RightPress()<BR>
{<BR> _AX=0x03;<BR>
geninterrupt(0x33);<BR>
return(_BX&2);<BR> }</P>
<P>/*获取鼠标当前位置*/<BR>void MouseGetXY()<BR>
{<BR> _AX=0x03;<BR>
geninterrupt(0x33);<BR>
MouseX=_CX;<BR> MouseY=_DX;<BR>
}</P>
<P>int MouseStatus()/*鼠标按键情况*/<BR>{<BR> int
x,y;<BR> int status;<BR> int
press=0;<BR> int i,color;<BR> char
buffer[20];<BR> status=0;/*默认鼠标没又移动*/<BR> x=MouseX;<BR> y=MouseY;<BR> if(tt==1)<BR>
{ T++;<BR>
if(T==360000)<BR>
{
ti++;<BR>
setfillstyle(1,0);
<BR>
bar(119,19,190,30);<BR>
sprintf(buffer,"0%d",ti);
<BR>
setcolor(LIGHTGREEN);<BR>
outtextxy(130,20,buffer);<BR>
T=0;
<BR>
}<BR>
}<BR> if(x==MouseX&&y==MouseY)<BR> {
<BR> if(LeftPress())<BR>
press=1;<BR> if(RightPress())<BR>
press=2;<BR> MouseGetXY();<BR>
if(MouseX!=x||MouseY!=y)<BR>
status=1;<BR>}<BR> if(status)/*移动情况才重新显示鼠标*/<BR> {
t=0;<BR>
putpixel(x,y,ipixel_save[t++]);<BR>
for(i=1;i<=6;i++)/*画鼠标*/<BR>
{ <BR>
putpixel(x,y+i,ipixel_save[t++]);<BR>
putpixel(x+i,y,ipixel_save[t++]);<BR>
putpixel(x+i,y+i,ipixel_save[t++]);<BR>
putpixel(x+i+6,y+i+6,ipixel_save[t++]);
<BR> } <BR>
MouseOn(MouseX,MouseY);/*新位置显示*/<BR>}<BR>
if(press!=0)/*有按键得情况*/<BR>
return press;<BR> return
0;/*只移动得情况*/<BR>}</P>
<P>void picture() /*********画棋盘**********/<BR>{
int i,j;<BR> win=1;<BR> v=1;<BR>
ti=0;<BR>
for(i=0;i<hight;i++)<BR>
for(j=0;j<width;j++)<BR>
{setfillstyle(1,RED);
<BR>
b[v].x=60+(18)*j;
b[v].y=40+(18)*i;<BR>
b[v].bomb=0;<BR>
b[v].mark=0;
<BR>
b[v].color=RED;<BR>
bar( b[v].x, b[v].y,b[v].x+16 ,b[v].y+16);
<BR>
v++;<BR>
}<BR> bombs=bomb_s;<BR>
setfillstyle(1,0); <BR>
bar(259,19,300,30);
<BR> sprintf(bom,"0%d",bombs);
<BR>
setcolor(LIGHTGREEN);<BR>
outtextxy(260,20,bom);<BR>
setfillstyle(1,0); <BR>
bar(129,19,190,30);<BR>
sprintf(m,"0%d",ti); <BR>
setcolor(LIGHTGREEN);<BR>
outtextxy(130,20,m);<BR>}</P>
<P>void randbomb()
/*********随即产生有雷的地方**********/<BR>{ int
i,j,n=1;<BR> for(i=0;i<bomb_s;i++)
<BR> {
a[i]=v=random(width*hight);<BR>
if(!v)
/*******随即产生炸弹**********/<BR>
{
i--;<BR>
continue;<BR>
} <BR>
if(i>0)<BR>
{ for(j=0;j<i;j++)
/******从复的去掉*************/<BR>
{
n=1;<BR>
if(a[j]==v)
<BR>
{
<BR>
n=0;
<BR>
i--;
<BR>
break;<BR>
}
<BR>
}<BR>
}<BR>
if(n)<BR>
{
b[a[i>.mark=1;
/*****此位置有炸弹*****/<BR>
for(n=0;n<=7;n++)
/*****此位置周围的box的炸弹数加一*****/<BR>
{
if((v%width==1&&n>=5&&n<=7)||(v%width)==0&&n>=1&&n<=3)
<BR>
continue;<BR>
if(v+c[n]>=1&&v+c[n]<=(width*hight)
&& b[v+c[n>.mark==0 )
<BR>
b[v+c[n>.bomb++;
/****box周围的炸弹数********/<BR>
}<BR>
}<BR> }<BR>}</P>
<P>void locate()
/********确定鼠标点击哪个box************/<BR>{ v=1;
<BR>
while(v<=(width*hight))<BR>
if(MouseX>=b[v].x&&MouseY>=b[v].y&&MouseX<=(b[v].x+16)&&MouseY<=(b[v].y+16))
<BR>
break;<BR> else
v++;<BR> if(v>(width*hight)) ;<BR>
else tt=1;<BR>}</P>
<P>void Failure() <BR>{ int i;<BR>
for(i=0;i<bomb_s;i++)<BR>
{
setcolor(GREEN);<BR>
circle(b[a[i>.x+8,b[a[i>.y+8,5);<BR>
}<BR> tt=0;<BR> win=0;<BR>
setcolor(YELLOW);<BR> outtextxy(450,350,"You
are Failure!");<BR>
setcolor(GREEN);<BR>
outtextxy(450,360,"Please any
key.....");<BR> getch(); <BR>}</P>
<P>int Sucess() <BR>{ int i;<BR>
for(i=0;i<bomb_s;i++)<BR>
if(b[a[i>.color!=YELLOW) break;<BR>
if(i<bomb_s)<BR> return
0; <BR> else
<BR> {
tt=0;<BR>
win=0;<BR>
BreakRecord();
<BR> return
1; <BR> } <BR>}</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -