Red de conocimiento informático - Conocimiento del nombre de dominio - Urgente, mi amigo necesita urgentemente el código fuente del buscaminas compilado en lenguaje C en VC6.+. ¡Puedes obtenerlo y usarlo sin ninguna corrección!

Urgente, mi amigo necesita urgentemente el código fuente del buscaminas compilado en lenguaje C en VC6.+. ¡Puedes obtenerlo y usarlo sin ninguna corrección!

#include

#include

#include

#define LEFTPRESS 0xff01

#define LEFTCLICK 0xff10

#define LEFTDRAG 0xff19

#define MOUSEMOVE 0xff08

struct

{

int num;/* ¿Cuál es el estado actual de la red? 0 Número mostrado o cuadrícula en blanco*/

int roundnum;/* Estadísticas de cuántas minas hay alrededor de la cuadrícula*/

int flag;/* Haga clic derecho para mostrar la bandera roja , 0 sin bandera roja, 1 bandera roja*/

}Mine[10][10];

int gameAGAIN=0;/* Variable que indica si se debe reiniciar*/< / p>

int gamePLAY=0;/* Bandera que indica si se juega por primera vez*/

int mineNUM;/* Número de cuadrículas para procesamiento estadístico*/

char randmineNUM[3];

int Keystate;

int MouseExist;

int MouseButton;

int MouseX;

int MouseY;

void Init(void);/* Controlador de gráficos**/

void MouseOn(void);/*Mostrar cursor del mouse*/

void MouseOff(void);/*Ocultar el cursor del mouse*/

void MouseSetXY(int,int);/* Establecer la posición actual*/

int LeftPress( void) ;/* Botón izquierdo presionado*/

int RightPress(void);/* Botón derecho del mouse presionado*/

void MouseGetXY(void);/* Obtener la posición actual*/

void Control(void);/* Inicio, reinicio y apagado del juego**/

void GameSetXY(int,int);/* Configuración del juego XY(int,int); /* Configuración del juego XY(int,int);/* Configuración del juego XY(int,int);/* Configuración del juego XY(int,int);/* Configuración del juego XY(int,int);/* Configuración del juego XY( int, int);/* Configuración del juego XY(int,int);/* Configuración del juego XY(int,int);//

void GameBegain(void);/* Pantalla de inicio del juego*/

void DrawSmile(void);/* Dibujar una sonrisa*/

void DrawRedflag(int,int);/* Mostrar una bandera roja*/

void DrawEmpty (int,int,int,int);/* Muestra dos tipos de espacios*/

void GameOver(void);/* Game over*/

void GameWin(void );/* Mostrar victoria */

int MineStatistics(int,int) ;/* Cuente el número de minas alrededor de cada cuadrícula*/

int S

howWhite(int,int);/* Mostrar un área en blanco sin campos minados*/

void GamePlay(void);/* GamePlay*/

void Close(void);/ * Cerrar el gráfico*/

void main(void)

{

Init();

Control();

Cerrar();

}

void Init(void)/* Iniciar gráficos*/

{

int gd= DETECT,gm;

initgraph(&gd,&gm, "c.\\tc");

Intgraph(&gd,&gm, "c.\\tc");

Intgraph(&gd,&gm, "c.:\\tc");

}

void Close(void)/* gráfico cerrar**

{

closegraph();

}

void MouseOn(void)/*mostrar cursor del mouse**

{

_AX=0x01;

geninterrupt(0x33);

}

void MouseOff(void)/* cursor del mouse Ocultar***

{

_AX=0x02;

geninterrupt(0x33);

}

void MouseSetXY(int x,int y)/* Establecer la posición actual***

{

_CX=x;

_DX=y;

_AX=0x04;

geninterrupt(0x33);

}

int LeftPress(void)/* Botón izquierdo del ratón presionado**

{

_AX=0x03;

geninterrupt( 0x33);

return(_BX&1);

}

int RightPress(void)/* Botón derecho del mouse presionado**

{

_AX=0x03

geninterrupt(0x33) ;

return(_BX&2);

}

void MouseGetXY(void)/* Obtener la posición actual*

{

_AX=0x03;

geninterrupt(0x33);

MouseX=_ CX;

MouseY=_DX;

}

void Control(void)/* Inicio del juego, reinicio, cierre**

{

int gameFLAG=1 /* Bandera utilizada para determinar si se debe reiniciar el juego; juego cuando falla Iniciar el juego**

while(1)

{

if(gameFLAG)/* Continuar determinando si el juego falló sin determinar si reiniciar o salir del juego */

{

GameBegain() /* Pantalla inicial del juego*/

GamePlay() /* Juego específico; */

if(gameAGAIN==1)/* Reiniciar en el juego**

{

gameAGAIN

=0;

continuar;

}

}

MouseOn();

gameFLAG=0;

if (LeftPress())/* Determinar si reiniciar es una buena idea**

{

MouseGetXY();

if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)

{

gameFLAG=1;

continuar;

}

}

}

if(kbhit())/* Determina si se debe presionar la tecla para salir*/

break;

p>

}

MouseOff();

}

void DrawSmile(void)/* Dibuja una sonrisa**

{

setfillstyle(SOLID_FILL,AMARILLO);

fillellipse(290,75,10,10);

setcolor(AMARILLO );

setfillstyle(SOLID_FILL,BLACK);/* ojos**/

fillellipse(285,75,2,2);

fillellipse(295 ,75,2,2) ;

setcolor(NEGRO);/* boca**/

bar(287,80,293,81);

}

void DrawRedflag(int i,int j)/* Mostrar bandera roja**

{

setcolor( 7);

setfillstyle(SOLID_FILL,RED);

bar(198+j*20,95+i*20,198+j*25,95+i*25);

setcolor(NEGRO);

line(198+j*20,95+i*20,198+j*20,95+i*210);

}

void DrawEmpty(int i,int j,int mode,int color)/*Dos tipos de subpantallas de espacio*

{

setcolor(color);

setfillstyle( SOLID_FILL,color);

if(mode==0)/* no se hace clic en cuadrados grandes */

bar(20j*20- 8,10i*20-8,20 j*28,10i*28);

else

if(mode===1)/* Mostrar celdas en blanco después haciendo clic*

barra(20j*20-7,10i*20-7,20j*27,10i*27);

}

void GameBegain( void )/* Pantalla GameBegin**

{

int i,j;

cleardevice();

si(juegoPLAY! =1)

{

MouseSetXY(290,70); /* La posición inicial del mouse como coordenada inicial*/

MouseX=290;

MouseY=70;

}

gamePLAY=1;/* El mouse no se reinicializará la próxima vez que presione el botón de reinicio*/

mineNUM=0;

setfillstyle( SOLID _FILL ,7);

bar(190,60,390,290);

for(i=0;i<10;i++)/* dibujar cuadrícula**

for(j=0;j<10;j++)

DrawEmpty(i,j,0,8);

setcolor(7);

DrawSmile();/* Dibujar cara**

randomize();__page_break__

for(i=0;i<10;i++)/* Se asignan aleatoriamente 100 cuadrículas. ¿hay minas?

for(j=0;j<10;j++)

{

Mina[i][j].num=random(8 );/* Si el resultado del número aleatorio es 1, significa que hay una mina en la grilla*/

if(Mine[i][j].num==1)

mineNUM++;/* Aumentar el número de minas existentes en 1*.

/

else

Mío[i][j].num=2;

Mío[i][j].flag=0;/* significa Sin señales de alerta*/

}

sprintf(randmineNUM,"%d",mineNUM); /*Muestra cuántas minas hay en total** esta vez

setcolor(1);

settextstyle(0,0,2);

outtextxy(210,70,randmineNUM);

mineNUM=100 -mineNUM ;

MouseOn();

if(Mine[i+1][j].num==1)

nNUM++;

if(Mío[i+1][j-1].num==1)

nNUM++;

if(Mío[i+1][j- 1] .num==1)

nNUM++;

if(Mine[i][j-1].num==1)

nNUM++;

if(Mine[i-1][j-1].num==1)

nNUM++;

}__page_break__

return(nNUM);/* Devuelve estadísticas de cuántas minas hay en un *** alrededor de la cuadrícula*/

}

int ShowWhite(int i,int j)/ * Mostrar un área en blanco sin campos minados**

{

if(Mine[i][j].flag==1||Mine[i][j].num = =0)/* Si hay una bandera roja o la grilla ha sido procesada, no se realizará ningún juicio sobre la grilla***

return;

mineNUM--;/ * Red de visualización El número de la cuadrícula o el espacio indica que se ha procesado otra cuadrícula. Cuando se han procesado todas las cuadrículas, significa victoria*/

if (Mine[i][j].roundnum=. =0&& Mío[i] [j].num!=1)/* Mostrar espacios*/

{

DrawEmpty(i,j,1,7);

Mío[ i][j].num=0;

}

else

if(Mío[i][j].roundnum !=0)/* Muestra el número de minas*/

{

DrawEmpty(i,j,0,8);

sprintf(randmineNUM, "%d",Mine[i ][j].roundnum);

setcolor(RED);

outtextxy(195+j*20,95+i *20,randmineNUM );

Mine[i][j].num=0;/*La cuadrícula que ha generado el número de rayos usa 0 para indicar que esta cuadrícula se ha utilizado*/

return;

}

//* 8 Mostrar todas las cuadrículas vacías de forma recursiva*/

if(i! =0&&Mío[i-1][j].num!=1)

ShowWhite(i-1,j);

if(i!=0&&j!=9&&Mío[i -1][j+1].num! =1)

ShowWhite( i-1,j+1);

if(j!=9&&Mine[i][j +1].num!=1)

ShowWhite(i,j+1);

if(j!=9&&i!=9&&Mine[i+1][j+1].num!=1)

ShowWhite(i+1,j+1);

if(i!=9&&Mine[i+1][j].num!=1)

ShowWhite(i+1,j);

if(i!=9&&j!=0&&Mine[i+1][j-1].num!=1)

ShowWhite(i+1,j);

if( i!=9&&j!=0&&Mine[i+1][j-1].num!num!=1)

ShowWhite(i+1,j-1);

if(j!=0&&Mine[i][j-1].num!=1)

ShowWhite(i,j-1);

ShowWhite(i,j-1) );

if(i!=0&&j!=0&&Mine[i-1][j-1].num!=1)

ShowWhite(i-1,j-1);

}

void GamePlay(void)/*GameProcessing**

{

int i,j,Num

<; p> for(i=0;i<10;i++)

for(j=0;j<10;j++)

Mío[i][j].roundnum= MineStatistics(i,j);/* Cuente cuántas minas hay alrededor de cada cuadrícula*/

while(!kbhit())

{

if ( LeftPress())/* MouseLeftKeyboardPress*/

{

MouseGetXY();

if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85) / * Reiniciar**

{

MouseOff();

gameAGAIN=1;

romper;

}

if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)/* La posición actual del mouse está dentro del rango de la cuadrícula*/

{

j = (MouseX-190)/20;/*coordenada x*/

i=(MouseY-90)/20;/*coordenada y*/

if(Mine[i ] [j].flag==1)/*Si la cuadrícula tiene una bandera roja, el clic izquierdo no es válido*/

continuar;

if(Mine[i][j ] .num!=0)/* Si la grilla no ha sido procesada*/

{

if(Mine[i][j].num==1)/* Presionar el mouse La siguiente cuadrícula es mía*/

{

MouseOff()

GameOver();/* El juego falló***

break;

}

else/* La cuadrícula presionada por el mouse no es mía***

{

MouseOff();

<

p> Num=MineStatistics(i,j) ;

if(Num==0)/* No hay minas alrededor, usa un algoritmo recursivo para mostrar una cuadrícula en blanco*/

ShowWhite(i ,j);

else/* Presiona la cuadrícula con minas alrededor*/

{

sprintf(randmineNUM,"%d" ,Num) ;/* Muestra el número de minas alrededor de la cuadrícula actual**

setcolor(RED);

outtextxy(195+j*20,95+i*20, randmineNUM);

mineNUM--;

}

MouseOn()

Mío[i][j].num=; 0;/* El número de minas alrededor de la cuadrícula seleccionada cambia a 0, lo que indica que la cuadrícula ha sido utilizada*/

if(mineNUM<1)/* ganó**

{

GameWin();

romper;

}

p> }

}

}

}

if(RightPress())/* Teclado derecho del mouse presionado**

{

MouseGetXY ();

if(MouseX>190&& MouseX>.lt;390&&MouseY>90&&MouseY<290)/* La posición actual del mouse está dentro del rango de la cuadrícula*/

{

j= (MouseX-190)/20;/*coordenada x*/

i=(MouseY-90)/20;/*coordenada y**

MouseOff ();

if(Mine[i][j].flag==0&&Mine[i][j].num!=0)/* No había ninguna bandera roja antes, pero ahora la bandera roja se muestra*

{

DrawRedflag(i,j) )

Mío[i][j].flag=1;

}

else

if(Mine[i][j].flag==1)/* Aparece una bandera roja, luego haga clic derecho y la bandera roja desaparece*

{

DrawEmpty( i,j,0,8

Mío[i][j].flag=0;

}

}

MouseOn();

dormir(1);

}

}

}

}

}

}