Juego de plato de frutas
Matriz de imágenes táctiles (agréguela usted mismo): imagen1(0)-image1(9)
Imagen actual: imagen2(0) (= image1(0))
Puerta de enlace actual: lblLevel (label)
Además, el control de etiquetas también incluye: lblLink, lblMsg, lblNextScore, lblNowScore, lblScore.
Copie el siguiente código en el formulario.
Opción explícita
Atenuar filas como números enteros
Mostrar columnas como números enteros
Nivel de atenuación largo
Atenuar fracciones tienen la misma longitud
Imágenes borrosas que imágenes
Dim pic() es el número de serie correspondiente a la imagen Larga.
Dim sel() Como booleano 'Estado de selección de imagen
Después de seleccionar la imagen, el número de serie correspondiente se oscurece.
Altura oscura() siempre que
estado de selección actual "Seleccionar como booleano".
Dim Color tiene la misma longitud
Dim CountLink tiene la misma longitud
Private Subform_Load()
Número de filas = 10 ' Número total de filas
Cols = 10 'Número total de columnas
Drawboximage2, 4, 92, filas, columnas dibujando matriz de control.
Finalizar conector
Iniciar juego
Subimagen privada 3_Click()
Retiro automático = 0
Figura 3. visible = False
Inicializar
Finalizar conector
Inicializa un objeto organizado aleatoriamente.
Subinitialize()
Nivel = 0
Puntuación = 0
lblNowScore = Puntuación
Nueva vida
Conector final
Formulario de planificación, matriz de objetos de arriba a abajo, de izquierda a derecha.
Llamada de parámetro: ImageBox-matriz de control de imagen (se debe definir la imagen (0), Mleft-coordenada del punto de inicio x; Mtop-coordenada del punto de inicio y;
Mrows-número total de bancos; Mcols-Número total de columnas
Caja de dibujo secundaria (ImageBox como objeto, Mleft como entero, Mtop como entero, Mrows como entero, Mcols como entero)
-Matriz de inicialización
p>
ReDim pic(Mrows * Mcols - 1)
ReDim sel(Mrows * Mcols - 1)
ReDim alto(Mcols - 1)
-dibujar matriz de control
Atenuarme siempre
Para i = ImageBox UBound to 1 Paso-1
Desinstalar ImageBox (I)
Entonces
Para i = 1 a Mrows * Mcols - 1
Cargar ImageBox(I)
ImageBox(I) izquierda = m izquierda (I \ Mrows )* ImageBox(0). Ancho
ImageBox(1).top = Mtop (I Mod Mrows)* Alto
Luego
Mostrar. ayuda
Finalizar conector
Mostrar ayuda
Sub showhelp()
Crear información.
LblMsg = "Breve descripción de"; vbNewLine ampvbNewLine _
ampvbNewLine ampvbNewLine amp"●Haga clic en cualquier objeto con el mouse para seleccionar automáticamente el mismo objeto de conexión. Haga clic nuevamente en el objeto seleccionado para Elimínalo _
ampvbNewLine ampvbNewLine amp“●Reúne más objetos y consigue más puntos después de eliminarlos de una vez. "_
ampvbNewLine ampvbNewLine amp"Cuando se eliminen, los objetos de arriba se moverán hacia abajo para llenar los espacios."_
ampvbNewLine ampvbNewLine amp●Cuando todas las líneas estén vacías, los objetos en el derecha El conjunto se mueve hacia la izquierda para llenarlos_
ampvbNewLine ampvbNewLine amp“●Cuando los objetos ya no estén conectados, los puntos de bonificación se considerarán en función de la cantidad restante. Cuanto menos te quede, más puntos obtendrás. ”_
ampvbNewLine ampvbNewLine ampSi la puntuación actual no es inferior a la puntuación de autorización, el juego continuará en el siguiente nivel
Finalizar unión
Ingrese el nuevo costumbres.
p>Sub NewLever()
Atenuarme mientras
lblMsg Visible=False
Level=Nivel 1 p>
Hacer irregular
Para i = 0 a UBound
pic(i) = Int(Rnd * 5)
Imagen2(i) = Imagen 1 (Imagen (I))
Imagen 2 (I) = Visible
Entonces
col = Cols - 1
Alto(i) = Número de filas - 1
Entonces
CountLink = 0
LBL nivel = " nivel " ; vbCrLf & nivel
LblNowScore = "Puntuación actual: " Formato (puntuación, "@@@@@@")
LblNextScore = "Pasar" puntuación: "; formato(nivel*(nivel4)*500,"@@@@@@")
seleccionado=falso
conector final
Seleccionar objetos y manejarlos en consecuencia
Private subimage2_Click(index as integer)
Si pic(index) =-1 entonces salga de sub 'Si hizo clic en espacios ya eliminados, no será eliminado. procesado y salir de
ReDim NowLink(0)
CountLink = 0
Índice de enlaces
Definir = verdadero
.Si sel(Índice), eliminar, de lo contrario restablecer el índice
Conector final
Eliminar objeto
Subeliminar ()
Dim j As Long
Atenuar k As Long
Atenuar k As Long
Si CountLink = 1, entonces Salir Sub 'Si solo se selecciona un elemento , entonces no es válido y sale sin realizar ningún procesamiento
For i = 0 to UBound(NowLink)
Sel(NowLink(i). )) = False 'Borrar la marca de verificación
Pic(NowLink(i)) = -1 'Establece el número de serie correspondiente a la imagen en Ninguno.
Entonces
Para i = 0 en col 'Después de borrar la imagen, la imagen de arriba está al revés.
Para j = (número de filas - 1) - altura (I) a (número de filas - 1)
Si pic(i * Filas j) = -1, entonces
p>Para k = j hasta fila alta(I) paso-1
pic(i *fila k) = pic(i *fila k - 1)
Entonces
pic(I * Filas (Filas-1)-Alto(I))=-1
Alto(i) = Alto(i) - 1
Terminará si...
Entonces
Entonces
Para i = col A 0 Paso -1 'Después de que la imagen sea Cuando se borra, la imagen de la derecha se mueve hacia la izquierda.
Si alto(i) = -1, entonces
Para j = i a col - 1
Para k = 0 a (fila - 1)
pic(j *fila k) = pic(j *fila k fila)
Entonces
alto(j) = alto(j 1)
Entonces
for j = col * Filas a col * Filas (Filas-1)
pic(j) = -1
Entonces
col = col - 1
Terminará si...
Entonces
Para i = 0 a (Filas * Cols- 1) 'Actualiza la imagen ajustada.
Si pic(i) = -1, entonces
Imagen2(i) = picNada
Otro
Imagen2(i) = Imagen1(Imagen(I))
Terminará si...
Entonces
Puntuación = Enlace de recuento de puntuación * (Enlace de recuento 2) * 5
LblNowScore = "Puntuación actual:" ; formato(puntuación, "@@@@@@")
Selected=False
LblLink = "Enlace: "
LblScore = "Puntuación:"
isLink
Conector final
Volver a seleccionar objeto
Sub-reinicio ( Indexado como número entero)
Atenúeme siempre
For i = 0 to UBound(NowLink)
sel(NowLink(i)) = False p >
imagen2(ahora enlace(I))= imagen 1(imagen(ahora enlace(I)))
Entonces
ReDim NowLink(0)
CountLink = 0
Índice de enlace
Conector final
Marca los objetos conectados.
Subenlace (el índice es un número entero)
imagen2(index)= imagen 1(PIC(index) 5)'El fondo de la imagen actual es gris.
sel(Index) = True
NowLink(UBound(NowLink)) = Index
CountLink = CountLink 1
Si Index \ Las filas gt "0 Then" comienzan desde la segunda columna.
Si pic (index-rows) = pic (index) pero no sel (index-rows), entonces 'es el mismo que el patrón adyacente a la izquierda y no está seleccionado.
ReDim Conservar ahora enlace(UBound(now link) 1)
La línea de índice del enlace
Terminará si...
Si...terminará
Si Index \ Rows lt(COLS-1) desde la columna 1 hasta la penúltima columna.
Si pic (filas de índice) = pic (índice) pero no sel (filas de índice), entonces 'es el mismo que el patrón adyacente a la derecha y no está seleccionado.
ReDim Conservar ahora enlace(UBound(ahora enlace) 1)
Línea de índice del enlace
Terminará si...
Si ... terminará
Si Index Mod Rows gt "0 Then" comienza desde la fila 2
Si pic (index-1) = pic (index) y no sel (index- 1 ) entonces 'es el mismo que el modo adyacente anterior y no está seleccionado.
ReDim Conservar ahora enlace(UBound(ahora enlace) 1)
Índice de enlace - 1
Terminará si...
Si...terminará
Si el módulo de índice, el número de filas lt(filas-1) es desde la fila 1 hasta la penúltima fila.
Si pic (índice 1) = pic (índice) pero no sel (índice 1), entonces 'es el mismo que el modo adyacente a continuación, sin selección.
ReDim Conservar ahora enlace(UBound(ahora enlace) 1)
Índice de enlace 1
Terminará si...
Si... Terminará
LBL link = "Connection:"; format(CountLink, "@@@@")
LblScore = "Score:"; link *(count link 2)* 5-IIf(count link gt; 1, 0, Cols), " @@@@ ")
Conector final
¿Hay algún enlace relacionado? ¿objeto?
Sublink()
Dim j As Long
Dim j As Long
El bono de atenuación es tan largo
Etiquete y como único
Para i = 0 a col
Para j = (número de filas - 1) - alto (I) a (número de filas - 2) p >
Si pic(I * Rows j) = pic(I * Rows j 1), entonces salga de Sub
Luego
Luego
Para i = 1 a la columna paso 2
Para j = (Número de filas - 1) - alto (I) a (Número de filas - 1)
Si pic(I * Filas j) = pic(I * Filas j-Filas), luego salga de Sub
Si pic(I * Filas j) = pic(I * Filas j Filas), luego salga de Sub
Entonces
Entonces
j = 0
Para i = 0 a col
j = j alto(i) 1 p>
Entonces
bonus = IIf(j lt; 25, (25 - j) * (25 - j) * 25, 0)
LblMsg = "Cantidad restante :"; Format(j,"@@@"&"Puntos de bonificación:";Format(Bonus,"@@@"&"Puntos"
LblMsg.' Establecer tamaño de fuente.
lblMsg. Left = (ScaleWidth - lblMsg. Ancho) / 2
lblMsg. BackStyle = 1
lblMsg.
puntuación = bonificación de puntuación p>
LblNowScore = "Puntuación actual:" puntuación
ys = temporizador
en Timer-ys <2
Actividades múltiples
Ring
Si scoreltLevel*(Nivel 4)*500 entonces
LblMsg = "El juego falló, inténtalo de nuevo".
lblMsg.Left = (ScaleWidth) - lblMsg.Width)/2
ys=Timer
in Timer-ys lt;2
Múltiples actividades
Ring p>
Inicialización
Otros
LblMsg = "¡Felicitaciones por ingresar al siguiente nivel!"
lblMsg. Izquierda = (Ancho de escala - lblMsg.
ancho)/2
ys = temporizador
En Timer-ys <2
Múltiples actividades
anillo
Nueva vida
Terminará si...
Finalizar el ajuste