www.pudn.com > dos_mine.zip > MINE.C
#include "time.h"
#include "mouse.h"
#include "stdlib.h"
#include "graphics.h"
#define F2 60
#define ESC 27
#define MAX 50
#define MENU_NUM 2
int Length1[MENU_NUM]={70,70};
int Length2[MENU_NUM]={120,90};
int LineNumber[MENU_NUM]={5,2};
int XNum=8,YNum=8;
int MineRemain;
int Length,Width;
int BeginX0,BeginY0;
int MenuY0;
int DoubleLine=0;
void *wp=0;
main()
{
start_graph();
display_menu();
closegraph();
}
display_cry_face(int x,int y)
{
setfillstyle(1,7);
bar(x-12,y-11,x+12,y+11);
setcolor(0);
setfillstyle(1,14);
fillellipse(x,y,9,9);
line(x-5,y-4,x-3,y-2);
line(x-5,y-2,x-3,y-4);
line(x+5,y-4,x+3,y-2);
line(x+5,y-2,x+3,y-4);
arc(x,y+7,30,150,6);
}
display_normal_face(int x,int y)
{
setfillstyle(1,7);
bar(x-12,y-11,x+12,y+11);
setcolor(0);
setfillstyle(1,14);
fillellipse(x,y,9,9);
setfillstyle(1,0);
fillellipse(x-4,y-3,1,1);
fillellipse(x+4,y-3,1,1);
arc(x,y-1,210,330,6);
}
display_success_face(int x,int y)
{
setfillstyle(1,7);
bar(x-12,y-11,x+12,y+11);
setcolor(0);
setfillstyle(1,14);
fillellipse(x,y,9,9);
setfillstyle(1,0);
fillellipse(x-4,y-2,2,1);
fillellipse(x+4,y-2,2,1);
arc(x,y,210,330,6);
arc(x,y+6,30,150,3);
arc(x,y+5,30,150,10);
setfillstyle(1,6);
floodfill(x,y-8,0);
}
display_error(int x,int y,int LEN)
{
setcolor(1);
setlinestyle(0,0,3);
line(x-LEN/4-1,y-LEN/4-1,x+LEN/4,y+LEN/4);
line(x-LEN/4-1,y+LEN/4,x+LEN/4,y-LEN/4-1);
setlinestyle(0,0,1);
}
display_flag(int x,int y,int LEN)
{
setcolor(4);
setfillstyle(1,4);
line(x-LEN/5,y-LEN/3,x-LEN/5,y+LEN/3);
line(x-LEN/5,y-LEN/3,x+LEN/5,y);
line(x-LEN/5,y, x+LEN/5,y);
floodfill(x,y-1,4);
}
display_mine(int x,int y,int LEN)
{
int r1=LEN*2/9,r2=LEN/3;
x--,y--;
setcolor(0);
setfillstyle(1,0);
line(x-r1,y-r1,x+r1,y+r1);
line(x-r1,y+r1,x+r1,y-r1);
line(x,y-r2,x,y+r2);
line(x-r2,y,x+r2,y);
fillellipse(x,y,LEN/5,LEN/5);
setfillstyle(1,15);
fillellipse(x-LEN/12,y-LEN/12,LEN/10,LEN/10);
}
display_mine_num(int new_x1,int number)
{
char char_count[10];
sprintf(char_count,"%d",number);
setcolor(0);
setfillstyle(1,7);
bar(new_x1+10,MenuY0+38,new_x1+48,MenuY0+53);
outtextxy(new_x1+29,MenuY0+46,char_count);
}
display_second_num(int new_x2,int number)
{
char char_second[10];
sprintf(char_second,"%d",number);
setcolor(0);
setfillstyle(1,7);
close_mouse();
bar(new_x2-10,MenuY0+38,new_x2-48,MenuY0+53);
outtextxy(new_x2-29,MenuY0+46,char_second);
show_mouse();
}
display_menu()
{
int i,j,k=0;
int MouseKeyState=0;
int Menu1State=0,Menu2State=0;
int new_x1,new_y1,new_x2,new_y2;
int LEN=16;
int exist=detect_mouse();
int success;
int release=1;
int owndefine=0;
int mine_num=10,count;
int timeflag,second_number;
int code[MAX][MAX],uncovered[MAX][MAX];
static int Line,Col;
long time=0;
char *name1[]={"Class","Help"};
char name2[10][10][20];
strcpy(name2[0][0],"Easy");
strcpy(name2[0][1],"Normal");
strcpy(name2[0][2],"Hard");
strcpy(name2[0][3],"Own Define");
strcpy(name2[0][4],"Double Line");
strcpy(name2[1][0],"Help");
strcpy(name2[1][1],"About");
START:
Length=XNum*LEN+20;
Width=YNum*LEN+116;
BeginX0=(640-Length)/2;
BeginY0=(480-Width)/2;
MenuY0=BeginY0+30;
new_x1=BeginX0+Length/2-LEN*XNum/2;
new_y1=MenuY0+Width/2-LEN*YNum/2+20;
new_x2=new_x1+LEN*XNum;
new_y2=new_y1+LEN*YNum;
display_background();
display_head();
display_first_menu(-1,name1);
display_window(new_x1+1,MenuY0+29,new_x2-1,MenuY0+62,0);
display_window(new_x1+9,MenuY0+37,new_x1+49,MenuY0+54,0);
display_window(new_x2-49,MenuY0+37,new_x2-9,MenuY0+54,0);
display_window(BeginX0+Length/2-13,MenuY0+33,BeginX0+Length/2+13,MenuY0+57,1);
display_window(new_x1-1,new_y1-1,new_x2,new_y2,0);
display_window(new_x1,MenuY0+28,new_x2,MenuY0+63,0);
if (DoubleLine)
display_window(new_x1-2,new_y1-2,new_x2+1,new_y2+1,0);
settextjustify(1,1);
RESTART:
count=0;
success=0;
timeflag=0;
second_number=0;
MineRemain=XNum*YNum;
display_normal_face(BeginX0+Length/2,MenuY0+45);
display_mine_num(new_x1,mine_num-count);
display_second_num(new_x2,0);
init_landmine(code,uncovered,mine_num,new_x1,new_y1,new_x2,new_y2,LEN);
if(!exist)
{
printf("Mouse not found!");
getch();
closegraph();
exit(81);
}
show_mouse();
do
{
if (timeflag&&!success&&!Menu1State)
{
if(((biostime(0,0)-time)/18.2)>=1)
{
time=biostime(0,0);
second_number++;
display_second_num(new_x2,second_number);
}
}
MouseKeyState=read_mouse();
if (MouseKeyState==0&&release==0)
release=1;
if (MouseKeyState==1&&mouse_inbox(BeginX0+Length-20,BeginY0+5,
BeginX0+Length-6 ,BeginY0+19))
{
closegraph();
exit(0);
}
if (MouseKeyState==1&&!Menu1State&&
mouse_inbox(BeginX0+Length/2-12,MenuY0+34,
BeginX0+Length/2+12,MenuY0+56))
{
close_mouse();
display_window(BeginX0+Length/2-13,MenuY0+33,
BeginX0+Length/2+13,MenuY0+57,0);
show_mouse();
while(read_mouse()!=0);
close_mouse();
display_window(BeginX0+Length/2-13,MenuY0+33,
BeginX0+Length/2+13,MenuY0+57,1);
goto RESTART;
}
if (mouse_inbox(total_length(0),MenuY0,
total_length(MENU_NUM)-3,MenuY0+21)&&!Menu1State)
for (i=0;i14)
result=change_state(
total_length(0)+Length2[0]+1 ,MenuY0+20*3+25,
total_length(0)+Length2[0]+146,MenuY0+20*3+118,
mine_num);
else
result=change_state(
total_length(0)+15 ,MenuY0+20*4+25,
total_length(0)+160,MenuY0+20*4+118,mine_num);
if (result>0)
{
mine_num=result;
owndefine=1;
}
else
{
while(read_mouse()!=0);
MouseKeyState=0;
}
break;
case 4:
result=1;
if (DoubleLine)
{
DoubleLine=0;
strcpy(name2[0][4],"Double Line");
}
else
{ ::strcpy
DoubleLine=1;
strcpy(name2[0][4],"Single Line");
}
while(read_mouse()!=0);
break;
}
while(read_mouse()!=0);
if (result>0)
{
close_mouse();
clear_first_menu(Col);
clear_second_menu(Col,-1);
display_first_menu(-1,name1);
Menu1State=Menu2State=0;
goto START;
}
}
else
{
int mid=(new_x1+new_x2)/2;
close_mouse();
clear_first_menu(Col);
clear_second_menu(Col,-1);
display_first_menu(-1,name1);
Menu1State=Menu2State=0;
show_mouse();
if (Line==0)
display_help(mid-80,MenuY0+90,mid+80,MenuY0+190,0);
else
display_help(mid-70,MenuY0+80,mid+70,MenuY0+220,1);
while(read_mouse()!=0);
MouseKeyState=0;
}
}
if (MouseKeyState!=0&&!success&&!Menu1State)
{
i=j=0;
if(!timeflag)
{
timeflag=1;
time=biostime(0,0);
}
if (MouseX0-new_x1>=0)
i=(MouseX0-new_x1)/LEN+1;
if (MouseY0-new_y1>=0)
j=(MouseY0-new_y1)/LEN+1;
if (MouseKeyState==1&&!uncovered[i][j]&&i>0&&i<=XNum&&j>0&&j<=YNum)
success=hit_left_key(i,j,code,uncovered,new_x1,new_y1,LEN);
if (MouseKeyState==3&&uncovered[i][j]==1&&i>0&&i<=XNum&&j>0&&j<=YNum)
success=hit_double_key(i,j,code,uncovered,new_x1,new_y1,LEN);
if (MouseKeyState==2&&uncovered[i][j]!=1&&
i>0&&i<=XNum&&j>0&&j<=YNum&&release)
{
release=0;
count=hit_right_key(i,j,uncovered,new_x1,new_y1,LEN,count,mine_num);
}
}
if (mine_num-count==MineRemain&&!success)
{
success=1;
for (i=1;i<=XNum;i++)
for (j=1;j<=YNum;j++)
if (code[i][j]!=9&&uncovered[i][j]==2)
{
success=-1;
break;
}
}
if (success==1)
{
close_mouse();
for (i=1;i<=XNum;i++)
for (j=1;j<=YNum;j++)
if (code[i][j]==9&&uncovered[i][j]==0)
display_flag(new_x1+LEN*(i-0.5),
new_y1+LEN*(j-0.5),LEN);
display_mine_num(new_x1,0);
display_success_face(BeginX0+Length/2,MenuY0+45);
show_mouse();
success=2;
}
if (success==-1)
{
setcolor(0);
close_mouse();
for(i=1;i<=XNum;i++)
for(j=0;j<=YNum;j++)
{
if (code[i][j]==9&&uncovered[i][j]!=2)
display_mine(new_x1+LEN*(i-0.5),
new_y1+LEN*(j-0.5),LEN);
if (code[i][j]!=9&&uncovered[i][j]==2)
{
setcolor(4);
display_error(new_x1+LEN*(i-0.5),
new_y1+LEN*(j-0.5),LEN);
setcolor(0);
}
}
display_cry_face(BeginX0+Length/2,MenuY0+45);
show_mouse();
success=2;
}
if (bioskey(1))
{
k=bioskey(0);
k=k&0x00ff?k&0x00ff:k>>8;
if(k==F2)
{
close_mouse();
goto RESTART;
}
}
}
while(k!=ESC);
}
hit_left_key(i,j,code,uncovered,new_x1,new_y1,LEN)
int i,j,code[][MAX],uncovered[][MAX],new_x1,new_y1,LEN;
{
if (code[i][j]==9)
{
close_mouse();
setfillstyle(1,4);
bar(new_x1+LEN*(i-1),new_y1+LEN*(j-1),new_x1+LEN*i-1,new_y1+LEN*j-1);
setcolor(1);
setlinestyle(4,0x5555,1);
line(new_x1+LEN*i-1,new_y1+LEN*j-1,new_x1+LEN*i-1,new_y1+LEN*(j-1)-1);
line(new_x1+LEN*i-1,new_y1+LEN*j-1,new_x1+LEN*(i-1)-1,new_y1+LEN*j-1);
setlinestyle(0,0,1);
show_mouse();
return -1;
}
else
{
if (code[i][j]!=0)
display(i,j,code,uncovered,new_x1,new_y1,LEN);
else
uncover9(i,j,code,uncovered,new_x1,new_y1,LEN);
}
return 0;
}
hit_double_key(i,j,code,uncovered,new_x1,new_y1,LEN)
int i,j,code[][MAX],uncovered[][MAX],new_x1,new_y1,LEN;
{
int k,m,mine=0;
for(k=i-1;k<=i+1;k++)
for(m=j-1;m<=j+1;m++)
if (uncovered[k][m]==2)
mine++;
if (code[i][j]==mine)
{
for(k=i-1;k<=i+1;k++)
for(m=j-1;m<=j+1;m++)
if (code[k][m]!=9&&uncovered[k][m]==2)
return -1;
uncover9(i,j,code,uncovered,new_x1,new_y1,LEN);
}
else
display_around8(i,j,code,uncovered,new_x1,new_y1,LEN);
return 0;
}
hit_right_key(i,j,uncovered,new_x1,new_y1,LEN,count,mine_num)
int i,j,uncovered[][MAX],new_x1,new_y1,LEN,count,mine_num;
{
close_mouse();
if (uncovered[i][j]==0)
{
uncovered[i][j]=2;
display_flag(new_x1+LEN*(i-0.5),new_y1+LEN*(j-0.5),LEN);
count++;
MineRemain--;
}
else
{
uncovered[i][j]=0;
setfillstyle(1,7);
if (DoubleLine)
bar(new_x1+LEN*(i-1)+2,new_y1+LEN*(j-1)+2,
new_x1+LEN*i-3,new_y1+LEN*j-3);
else
bar(new_x1+LEN*(i-1)+1,new_y1+LEN*(j-1)+1,
new_x1+LEN*i-2,new_y1+LEN*j-2);
count--;
MineRemain++;
}
show_mouse();
display_mine_num(new_x1,mine_num-count);
return count;
}
int display(i,j,code,uncovered,new_x1,new_y1,LEN)
int i,j,code[][MAX],uncovered[][MAX],new_x1,new_y1,LEN;
{
close_mouse();
setcolor(7);
rectangle(new_x1+LEN*(i-1),new_y1+LEN*(j-1),new_x1+LEN*i-1,new_y1+LEN*j-1);
if (DoubleLine)
rectangle(new_x1+LEN*(i-1)+1,new_y1+LEN*(j-1)+1,
new_x1+LEN*i-2,new_y1+LEN*j-2);
if (code[i][j]>0)
{
char name[10];
if(code[i][j]<3)
setcolor(code[i][j]*7-6);
else
setcolor(code[i][j]*2-2);
itoa(code[i][j],name,10);
outtextxy(new_x1+LEN*(i-0.5),new_y1+LEN*(j-0.5),name);
}
setcolor(1);
setlinestyle(4,0x5555,1);
line(new_x1+LEN*i-1,new_y1+LEN*j-1,
new_x1+LEN*i-1,new_y1+LEN*(j-1)-1);
line(new_x1+LEN*i-1,new_y1+LEN*j-1,
new_x1+LEN*(i-1)-1,new_y1+LEN*j-1);
show_mouse();
setlinestyle(0,0,1);
uncovered[i][j]=1;
MineRemain--;
return 0;
}
int uncover9(i,j,code,uncovered,new_x1,new_y1,LEN)
int i,j,code[][MAX],uncovered[][MAX],new_x1,new_y1,LEN;
{
int k,m;
if (!uncovered[i][j])
display(i,j,code,uncovered,new_x1,new_y1,LEN);
for (k=i-1;k<=i+1;k++)
for (m=j-1;m<=j+1;m++)
if (!uncovered[k][m]&&code[k][m]!=0&&k>0&&k<=XNum&&m>0&&m<=YNum)
display(k,m,code,uncovered,new_x1,new_y1,LEN);
for (k=i-1;k<=i+1;k++)
for (m=j-1;m<=j+1;m++)
if (code[k][m]==0&&!uncovered[k][m]&&k>0&&k<=XNum&&m>0&&m<=YNum)
uncover9(k,m,code,uncovered,new_x1,new_y1,LEN);
return 0;
}
change_state(x1,y1,x2,y2,mine_num)
int x1,y1,x2,y2,mine_num;
{
int MouseKeyState;
int release=1;
int effective=0;
int save_xnum=XNum,save_ynum=YNum;
char char_xnum[10],char_ynum[10],char_mine[10];
void *w;
w=malloc(imagesize(x1,y1,x2,y2));
getimage(x1,y1,x2,y2,w);
setfillstyle(1,7);
close_mouse();
bar(x1,y1,x2,y2);
display_window(x1,y1,x2,y2,1);
display_window(x1+69,y1+8,x2-10,y1+22,0);
display_window(x1+77,y1+44,x2-36,y1+58,0);
setcolor(0);
outtextxy(x1+42,y1+15,"Number: ");
outtextxy(x1+42,y1+51,"MineNum:");
sprintf(char_xnum,"%d",XNum);
sprintf(char_ynum,"%d",YNum);
sprintf(char_mine,"%d",mine_num);
outtextxy(x1+102,y1+16,"X");
outtextxy(x1+83,y1+16,char_xnum);
outtextxy(x1+120,y1+16,char_ynum);
outtextxy(x1+93,y1+52,char_mine);
display_window(x1+72,y1+24 ,x1+83 ,y1+36,1);
display_window(x1+85,y1+24 ,x1+96 ,y1+36,1);
display_window(x1+109,y1+24,x1+120,y1+36,1);
display_window(x1+122,y1+24,x1+133,y1+36,1);
display_window(x2-34,y1+45 ,x2-23 ,y1+57,1);
display_window(x2-21,y1+45 ,x2-10 ,y1+57,1);
setcolor(0);
outtextxy(x1+77 ,y1+31,"\30");
outtextxy(x1+90 ,y1+31,"\31");
outtextxy(x1+114,y1+31,"\30");
outtextxy(x1+127,y1+31,"\31");
outtextxy(x2-29 ,y1+52,"\30");
outtextxy(x2-16 ,y1+52,"\31");
display_window(x1+10,y2-26,x1+66,y2-8,1);
display_window(x2-66,y2-26,x2-10,y2-8,1);
setcolor(0);
outtextxy(x1+38,y2-16,"Cancel");
outtextxy(x2-38,y2-16,"OK");
show_mouse();
do
{
MouseKeyState=read_mouse();
if (MouseKeyState==0&&release==0)
release=1;
if (MouseKeyState==1||MouseKeyState==2)
{
if (release&&mouse_inbox(x1+72,y1+24,x1+83,y1+36))
{
if (XNum<38&&MouseKeyState==1)
XNum++;
else if (XNum<29&&MouseKeyState==2)
XNum+=10;
sprintf(char_xnum,"%d",XNum);
setfillstyle(1,7);
display_bottom(x1+72,y1+24,x1+83,y1+36,0);
setcolor(0);
bar(x1+73,y1+11,x1+93,y1+21);
outtextxy(x1+83,y1+16,char_xnum);
show_mouse();
release=0;
}
if (release&&mouse_inbox(x1+85,y1+24,x1+96,y1+36))
{
if (XNum>8&&MouseKeyState==1)
XNum--;
else if (XNum>17&&MouseKeyState==2)
XNum-=10;
sprintf(char_xnum,"%d",XNum);
setfillstyle(1,7);
display_bottom(x1+85,y1+24,x1+96,y1+36,0);
setcolor(0);
bar(x1+73,y1+11,x1+93,y1+21);
outtextxy(x1+83,y1+16,char_xnum);
show_mouse();
release=0;
}
if (release&&mouse_inbox(x1+109,y1+24,x1+120,y1+36))
{
if (YNum<23&&MouseKeyState==1)
YNum++;
else if (YNum<14&&MouseKeyState==2)
YNum+=10;
sprintf(char_ynum,"%d",YNum);
setfillstyle(1,7);
display_bottom(x1+109,y1+24,x1+120,y1+36,0);
setcolor(0);
bar(x1+110,y1+11,x1+130,y1+21);
outtextxy(x1+120,y1+16,char_ynum);
show_mouse();
release=0;
}
if (release&&mouse_inbox(x1+122,y1+24,x1+133,y1+36))
{
if (YNum>8&&MouseKeyState==1)
YNum--;
else if (YNum>17&&MouseKeyState==2)
YNum-=10;
sprintf(char_ynum,"%d",YNum);
setfillstyle(1,7);
display_bottom(x1+122,y1+24,x1+133,y1+36,0);
setcolor(0);
bar(x1+110,y1+11,x1+130,y1+21);
outtextxy(x1+120,y1+16,char_ynum);
show_mouse();
release=0;
}
if (release&&mouse_inbox(x2-34,y1+45,x2-23,y1+57))
{
if (mine_num<499&&MouseKeyState==1)
mine_num++;
else if (mine_num<480&&MouseKeyState==2)
mine_num+=20;
sprintf(char_mine,"%d",mine_num);
setfillstyle(1,7);
display_bottom(x2-34,y1+45,x2-23,y1+57,0);
setcolor(0);
bar(x1+80,y1+47,x1+106,y1+57);
outtextxy(x1+93,y1+52,char_mine);
show_mouse();
release=0;
}
if (release&&mouse_inbox(x2-21,y1+45,x2-10,y1+57))
{
if (mine_num>3&&MouseKeyState==1)
mine_num--;
else if (mine_num>22&&MouseKeyState==2)
mine_num-=20;
sprintf(char_mine,"%d",mine_num);
setfillstyle(1,7);
display_bottom(x2-21,y1+45,x2-10 ,y1+57,0);
setcolor(0);
bar(x1+80,y1+47,x1+106,y1+57);
outtextxy(x1+93,y1+52,char_mine);
show_mouse();
release=0;
}
if ((mouse_inbox(x1+10,y2-26,x1+70,y2-8)||!mouse_inbox(x1,y1,x2,y2))
&&MouseKeyState==1)
{
effective=-1;
XNum=save_xnum;
YNum=save_ynum;
if(mouse_inbox(x1+10,y2-26,x1+66,y2-8))
{
display_bottom(x1+10,y2-26,x1+66,y2-8,0);
show_mouse();
}
}
if (mouse_inbox(x2-66,y2-26,x2-10,y2-8)&&MouseKeyState==1)
{
effective=1;
display_bottom(x2-66,y2-26,x2-10,y2-8,0);
show_mouse();
}
}
}
while(!effective);
if (mine_numXNum*YNum/2)
mine_num=XNum*YNum/2;
close_mouse();
putimage(x1,y1,w,COPY_PUT);
show_mouse();
free(w);
return effective*mine_num;
}
display_around8(i,j,code,uncovered,new_x1,new_y1,LEN)
int i,j,code[][MAX],uncovered[][MAX],new_x1,new_y1,LEN;
{
int k,m,cheat=0;
close_mouse();
if((bioskey(2)&4)==4&&(bioskey(2)&8)==8)
cheat=1;
for(k=i-1;k<=i+1;k++)
for(m=j-1;m<=j+1;m++)
if(uncovered[k][m]==0&&k>0&&k<=XNum&&m>0&&m<=YNum)
{
if(cheat==1&&code[k][m]==9)
display_mine(new_x1+LEN*(k-0.5),new_y1+LEN*(m-0.5),LEN);
setcolor(7);
rectangle(new_x1+LEN*(k-1),new_y1+LEN*(m-1),
new_x1+LEN*k-1,new_y1+LEN*m-1);
if (DoubleLine)
rectangle(new_x1+LEN*(k-1)+1,new_y1+LEN*(m-1)+1,
new_x1+LEN*k-2,new_y1+LEN*m-2);
setcolor(1);
setlinestyle(4,0x5555,1);
line(new_x1+LEN*k-1,new_y1+LEN*m-1,
new_x1+LEN*k-1,new_y1+LEN*(m-1)-1);
line(new_x1+LEN*k-1,new_y1+LEN*m-1,
new_x1+LEN*(k-1)-1,new_y1+LEN*m-1);
setlinestyle(0,0,1);
}
show_mouse();
while(read_mouse()!=0);
close_mouse();
for(k=i-1;k<=i+1;k++)
for(m=j-1;m<=j+1;m++)
if(uncovered[k][m]==0&&k>0&&k<=XNum&&m>0&&m<=YNum)
{
if(cheat==1&&code[k][m]==9)
{
setfillstyle(1,7);
bar(new_x1+LEN*(k-1),new_y1+LEN*(m-1),
new_x1+LEN*k-1,new_y1+LEN*m-1);
}
display_window(new_x1+LEN*(k-1),new_y1+LEN*(m-1),
new_x1+LEN*k-1,new_y1+LEN*m-1,1);
if (DoubleLine)
display_window(new_x1+LEN*(k-1)+1,new_y1+LEN*(m-1)+1,
new_x1+LEN*k-2,new_y1+LEN*m-2,1);
}
show_mouse();
}
display_background()
{
register i,j;
setfillstyle(1,7);
bar(0,0,639,479);
for(i=0;i<640;i+=3)
for(j=0;j<480;j+=3)
putpixel(i,j,random(7));
}
display_bottom(int x1,int y1,int x2,int y2)
{
close_mouse();
display_window(x1,y1,x2,y2,0);
show_mouse();
while(read_mouse()!=0);
close_mouse();
display_window(x1,y1,x2,y2,1);
}
display_help(int x1,int y1,int x2,int y2,int key)
{
void *w;
int k;
w=malloc(imagesize(x1,y1,x2,y2));
getimage(x1,y1,x2,y2,w);
setfillstyle(1,7);
close_mouse();
bar(x1,y1,x2,y2);
display_window(x1,y1,x2,y2,1);
setfillstyle(1,1);
bar(x1+3,y1+3,x2-3,y1+21);
setfillstyle(1,7);
bar(x2-20,y1+5,x2-6,y1+19);
display_window(x2-20,y1+5,x2-6,y1+19,1);
setcolor(0);
outtextxy(x2-13,y1+13,"X");
setcolor(15);
if (key==0)
{
outtextxy(x1+24,y1+13,"Help");
setcolor(1);
outtextxy(319,y1+47,"I can\'t help you!");
setcolor(0);
outtextxy(319,y1+75,"Sorry!");
}
else
{
outtextxy(x1+28,y1+13,"About");
setcolor(0);
outtextxy(319,y1+40,"CopyRight by: ");
setcolor(1);
outtextxy(319,y1+70,"Zoumai");
setcolor(4);
outtextxy(319,y1+100,"1999-3-20 ");
outtextxy(319,y1+120," in XUT");
}
show_mouse();
do
{
if (bioskey(1))
{
k=bioskey(0);
k=k&0x00ff?k&0x00ff:k>>8;
}
}
while((read_mouse()!=1||!mouse_inbox(x2-20,y1+5,x2-6,y1+19))&&k!=ESC);
close_mouse();
putimage(x1,y1,w,COPY_PUT);
show_mouse();
free(w);
}
display_window(int x1,int y1,int x2,int y2,int key)
{
if (key==1)
setcolor(15);
else
setcolor(0);
line(x1,y1,x1,y2);
line(x1,y1,x2,y1);
if (key==1)
setcolor(0);
else
setcolor(15);
line(x2,y2,x1+1,y2);
line(x2,y2,x2,y1);
}
init_landmine(code,uncovered,mine_num,new_x1,new_y1,new_x2,new_y2,LEN)
int code[][MAX],uncovered[][MAX],mine_num,new_x1,new_y1,new_x2,new_y2,LEN;
{
int i,j,a,b;
int count=0;
randomize();
for (i=0;i<=XNum+1;i++)
for (j=0;j<=YNum+1;j++)
{
code[i][j]=0;
uncovered[i][j]=0;
}
while(count-1)
{
setcolor(15);
setfillstyle(1,1);
bar(total_length(num),MenuY0,total_length(num+1)-3,MenuY0+20);
outtextxy(total_length(num)+Length1[num]/2-1,MenuY0+11,name[num]);
}
return 0;
}
display_second_menu(int num1,int num2,char name[][10][20],int flag)
{
int i;
settextjustify(0,2);
if (flag)
{
free(wp);
wp=malloc(imagesize(
total_length(num1) ,MenuY0+22,
total_length(num1)+Length2[num1],MenuY0+20*LineNumber[num1]+26));
getimage(
total_length(num1) ,MenuY0+22,
total_length(num1)+Length2[num1],MenuY0+20*LineNumber[num1]+26,wp);
setfillstyle(1,7);
bar(
total_length(num1) ,MenuY0+22,
total_length(num1)+Length2[num1],MenuY0+20*LineNumber[num1]+26);
display_window(
total_length(num1) ,MenuY0+22,
total_length(num1)+Length2[num1],MenuY0+20*LineNumber[num1]+26,1);
}
setcolor(0);
for (i=0;i-1)
{
setcolor(15);
setfillstyle(1,1);
bar(total_length(num1)+3 ,MenuY0+num2*20+25,
total_length(num1)+Length2[num1]-3,MenuY0+(num2+1)*20+23);
outtextxy(total_length(num1)+7,MenuY0+num2*20+31,name[num1][num2]);
}
return 0;
}
clear_first_menu(int Col)
{
setfillstyle(1,7);
bar(total_length(Col),MenuY0,total_length(Col+1)-3,MenuY0+20);
}
clear_second_menu(int Col,int Line)
{
if (Line<0)
putimage(total_length(Col),MenuY0+22,wp,COPY_PUT);
else
{
setfillstyle(1,7);
bar(total_length(Col)+3 ,MenuY0+Line*20+23,
total_length(Col)+Length2[Col]-3,MenuY0+(Line+1)*20+23);
}
return 0;
}
int total_length(int num)
{
int i,total=BeginX0+8;
for (i=0;i