Red de conocimientos turísticos - Conocimientos sobre calendario chino - Acerca de la programación en C y C. Quiero usarlos para programar algunas interfaces, como cuadros de diálogo. Escuché antes que C y C también se pueden editar, pero las capacidades gráficas no son muy sólidas.

Acerca de la programación en C y C. Quiero usarlos para programar algunas interfaces, como cuadros de diálogo. Escuché antes que C y C también se pueden editar, pero las capacidades gráficas no son muy sólidas.

Utilice VC para escribir un juego de buscaminas

Este artículo comienza analizando las características funcionales del juego de buscaminas de Windows y utiliza el lenguaje de programación visual orientado a objetos visual c para dar un Método de implementación del módulo funcional. También proporciona métodos generales para escribir programas de juegos pequeños y algunos consejos para usar Visual C.

Primero analiza las funciones más básicas de Buscaminas.

Haz clic con el botón izquierdo del ratón en un área desconocida. Si hay minas en el área desconocida, el juego se detendrá y se mostrarán todas las minas. Si no hay minas, se mostrará el número de minas circundantes. Si no hay minas, se comprobarán las ocho áreas circundantes en busca de minas hasta que haya minas y se muestren.

Al hacer clic derecho en un área desconocida, se configurará para que tenga minas independientemente de si realmente está minada. Puede elegir entre niveles elemental, intermedio y avanzado y personalizar la cantidad de minas y el tamaño del área.

El lado superior izquierdo del campo minado muestra el número total de minas menos el número de áreas marcadas con minas.

Se muestra un botón en la parte media superior del campo minado para iniciar el juego y mostrar los resultados de las acciones del mouse.

La hora de limpieza de minas se muestra en el lado derecho de la parte superior del campo minado.

Después de eliminar todas las minas, se mostrará un cuadro de diálogo para registrar tu nombre en las clasificaciones. Ordenar por tiempo.

Para completar las funciones anteriores, los detalles técnicos específicos de la aplicación de visual c son los siguientes:

1. Utilice appwizard para crear la aplicación cbombapp basada en SDI, elimine la impresión y compatibilidad con la barra de estado y edición de recursos en el editor de recursos. Modifique el menú y las teclas de aceleración correspondientes en el navegador para que sean consistentes con el juego Buscaminas de Windows. Específicamente, son iniciales (id-game-begin), junior (id-game-junior), intermedio (id-game-middle), senior (id-game-senior), personalizado (id-game-custom), color (id-game-color), lista de héroes (id-game-sort), salida (id-game-exit), ayuda (id-help).

2. 13 atributos correspondientes a cada pequeña área del campo minado en el editor de recursos. Utilice un pincel u otra herramienta de dibujo para dibujar los 13 mapas de bits pequeños de 10 por 10 y 16 colores correspondientes y tres mapas de bits pequeños de 20 por 20 y 16 colores correspondientes a las expresiones del villano. Los primeros 16 mapas de bits monocromáticos correspondientes muestran diez mapas de bits digitales del 0 al 9 del tiempo y el número de trueno (el color de fondo es negro).

Personalice el cuadro de diálogo del cliente, que contiene tres controles de texto estático y tres controles de edición. Los tres controles de edición corresponden a los miembros m_irownum, m_icolumnnum y m_ibombnum respectivamente. Este cuadro de diálogo se utiliza para personalizar el número de truenos, filas y columnas, y su clase mfc correspondiente es ccustomer. Cuadro de diálogo de clasificación personalizado, que contiene nueve controles de texto estático, seis de los cuales muestran el nombre y la hora de la lista de clasificación, y su clase mfc correspondiente es csort. Personalice el cuadro de diálogo de entrada, que contiene un control de texto estático y un control de edición. El control de edición se utiliza para ingresar el nombre cuando el juego finaliza con éxito. Su clase mfc correspondiente es cinput.

3. Defina la clase de bomba para encapsular los atributos relevantes de cada mina.

bomba de clase

{

public:

int isbomb; // Determina si es una mina inicialmente

bool isssel; //Juzga si el área ha sido procesada y hay minas a su alrededor

bool isdone //Juzga si el área ha sido procesada durante la recursividad

int num; ; //Número de minas circundantes

bool findbomb; // Establece una cuando el desminador cree que es una mina (pero puede que no sea una mina)

}; >

4. Sobrecargue la ventana de creación previa en cmmainframe y establezca las propiedades correspondientes para fijar el tamaño del formulario. Esto fija el tamaño del área de visualización en las 10 veces 10 minas iniciales y un área de control adicional en la parte superior de. el campo minado. Parte del código es el siguiente.

cs.style=ws_overlapped|ws_sysmenu| ws_border|ws_minimizebox;

cs.cy = 10*15 6

cs.cx = 10*15 60; ; //6 y 60 son valores agregados horizontales y verticales respectivamente, utilizados para bordes, menús, barras de título y áreas de control.

5. El trabajo principal del juego es presentar gráficos o animaciones que cambian constantemente y mostrarlos de forma interactiva de acuerdo con la entrada del usuario. La función de la ventana en el documento de Windows es la arquitectura de la ventana. Acepta la entrada del usuario y es responsable de la visualización, por lo que la clase cview hace la mayor parte del trabajo del buscaminas. Defina las siguientes variables miembro en cbombview para registrar los resultados de operaciones relacionadas o el estado del objeto.

bomb m_bomb[30][30]; //El área de mina más grande

cstring m_currenttime; //Se utiliza para registrar y mostrar el tiempo de remoción de minas

ctime m_begintime ; //Registra la hora en que comienza el juego

bool m_timerbegin; //Si el cronómetro está activado

int m_ibomnum; //El número de minas

int m_irow; //El número de filas de minas

int m_icolumn; //El número de columnas de minas

int m_ibombfound; mines

cbitmapbutton m_bitbutton ; //Botón de mapa de bits en el área de control

int m_currentlevel; //Indica el nivel actual del juego

bool m_biscolor; el nivel actual es color o monocromo

cbitmap m_bmbomb[12]; //Se utiliza para almacenar 12 mapas de bits pequeños

int m_igameover; // Se establece en 0 si el juego no ha terminado, se establece en 1 si se han eliminado todas las minas y se establece en 2 si muere.

Sobrecargue la función oncreate en cbombview para crear un botón de mapa de bits. Los dos mapas de bits del botón de mapa de bits corresponden a los dos estados de desminado normal y correcto. Cuando se va a mostrar el estado bombardeado, el botón debe estar. botón destruido dinámicamente y vuelva a crear un mapa de bits correspondiente a los estados normal y destruido. Establezca el número de identificación del botón de mapa de bits como id_game_begin, para que el juego se pueda reiniciar cuando se haga clic en el botón. .

crect rcclient;

getclientrect(amp;rcclient);

crect rect(rcclient.cx/2-8, 10, rcclient.cx/2 8 , 20);

m_button.create("nuevo", bs_defpushbutton|ws_visible|

bs_ownerdraw, rect, this, id_game_begin

m_button.loadbitmaps( idb_face1, idb_face2);

La función de mostrar el tiempo es relativamente simple. Al responder al primer mensaje wm_lbuttomdown, inicie el temporizador y registre la hora de inicio del juego. Obtenga la hora actual en la respuesta del mensaje wm_time. función ontimer Resta el tiempo cuando comienza el juego y muestra la diferencia de tiempo resultante (usando un mapa de bits digital) en el área del cliente que muestra el tiempo. Cuando termina el juego (todas las minas se eliminan o eliminan), el temporizador se apaga. y la pantalla se detiene.

La función de respuesta de mensajes wm_lbuttomdown onlbuttomdown es el ejecutor principal del procesamiento de la entrada del usuario. La función primero determina si la posición en el punto es mía. Si es así, cierra el temporizador y destruye el botón del mapa de posición original. y crea un botón normal y bombardeado correspondiente. Crea un nuevo botón de mapa de bits en dos estados y llama a setstate para configurarlo como pushdown (el villano está llorando). Configura m_bgameover en verdadero para marcar el final del juego. para configurar el botón de mapa de bits para presionar hacia abajo (el villano se está riendo), y configure el botón de mapa de bits al estado normal en onlbuttomup, luego llame a la función caculate para registrar el número de minas circundantes y finalmente llame a invalidar para invalidar al cliente. área, lo que obliga a la función ondraw a volver a dibujar el área del cliente. No se debe volver a dibujar al llamar a invalidar el fondo para evitar el parpadeo, completando así la acción de respuesta de presionar el botón izquierdo en el campo minado.

La función de respuesta de mensajes wm_rbuttomdown onlbuttomdown establecerá m_ibombnum.findbomb donde se considera que está la mina, reducirá el recuento de minas en la esquina superior izquierda y luego determinará si todas las minas han sido descargadas. el juego finalizará y aparecerá el cuadro de diálogo de entrada, deje que el buscaminas ingrese el nombre y lo escriba en el registro cuando responda al código de notificación idok. Si no está todo arreglado, el área del cliente no será válida, lo que obligará al usuario. Función ondraw para volver a dibujar el área del cliente y completar la acción de presionar el botón derecho en el campo minado.

La función ondraw se llamará cada vez que se haga clic en el botón izquierdo o derecho en el campo minado y el área de control. Debido a la complejidad de la situación del clic y la diversidad de atributos de la mina, la función ondraw debe activarse. cuidadosamente diseñado.

La función caculate calcula el número de minas alrededor de una determinada mina. Según el análisis anterior, calcular el número de minas alrededor de una determinada mina es en sí mismo un proceso recursivo. Al programar, se debe prestar atención a. condiciones de contorno recursivas Tenga en cuenta que caerá en recursividad infinita y agotará los recursos del sistema.

6. La respuesta a los comandos del menú es otra forma importante de interacción del juego. Las siguientes nueve funciones de respuesta de comandos corresponden a los nueve elementos del menú respectivamente para completar los comandos de actualización y configuración del usuario.

ongamebegin completa la limpieza del tiempo inicial, la extracción aleatoria, la carga de 12 mapas de bits pequeños de acuerdo con las instrucciones de color, la invalidación del campo minado, la solicitud de redibujado de ondraw y otras tareas. El bombardeo aleatorio consiste en llamar a rand() varias veces y determinar el valor de m_bomb[i][j].isbomb en función de su valor de retorno.

ongamecustom primero muestra el cuadro de diálogo ccustomer. Cuando el usuario ingresa a la configuración y responde al código de notificación idok, la cantidad de truenos y filas ingresadas por el usuario se asignan a los miembros de datos m_ibombnum, m_irow,. y m_icolumn de cview respectivamente, y se obtiene el puntero de la ventana de marco, úselo para llamar a movewindow para ajustar la ventana al tamaño requerido, destruir el botón de mapa de bits en la posición original y crearlo en una posición donde se encuentra la coordenada del eje x. es la mitad del ancho de la nueva ventana menos 8, y la coordenada del eje y es la parte superior de la nueva ventana más 30 Un nuevo botón. Finalmente llame a ongamebegin para reiniciar el juego.

Las tres funciones ongamejunior, ongamemiddle y ongamesenior son similares a ongamecustom, excepto que se les asignan valores fijos a los miembros de datos m_ibombnum, m_irow y m_icolumn de cview respectivamente. Sus tamaños se pueden personalizar mediante. el programador los configuré como junior(20,8,8,), middle(40,13,13), senior(99,20,25).

La función ongamecolor destruye el botón de mapa de bits original, crea un nuevo botón de mapa de bits de acuerdo con el indicador de mapa de bits de recarga m_iscolor, invierte el indicador para cargar 12 mapas de bits monocromáticos y llama a ongamebegin para reiniciar el juego.

La función ongamesort lee la clasificación del registro según el nivel de juego actual y abre el cuadro de diálogo de clasificación para mostrar los resultados. Hasta ahora, un juego de buscaminas compilado por usted mismo está básicamente completo. Compile cientos de líneas de código, encuentre pequeños errores, constrúyalo por última vez, ejecútelo y luego el encantador juego de buscaminas aparecerá frente a usted. Bueno, los resultados de tu trabajo no son peores que los de Microsoft, y también puedes crear pequeños mapas de bits con varias formas, por supuesto, debes reconocerlos tú mismo.

rc="../css/tongji.js">