Código fuente del juego de cuadrados en blanco y negro
# incluir ltfstream.h gt
int mark[] //Guardar con el derecho.
int num[2][2]; //Tablero de ajedrez
Temperatura interna;
int k;
int q;
stringemia = " 123804765 "//Cadena de destino, donde el espacio es 0.
String status [100]; //Matriz de canales de caracteres
int iQuick//Hay una señal para salir de la recursividad, 1, lo que significa que puedes salir cuando encuentres el camino. , 0, ¿por qué no puedes encontrarlo? Llegar a la carretera y seguir caminando?
Hrd(int i, int j)//El algoritmo de Hualong Road parece haber encontrado el resultado, pero no puede encontrar el resultado con el menor número de pasos. No estoy seguro de si hay lagunas. El resultado se guarda en mark []
{ string str 1;
If (I!=0) //Sube un paso si puedes.
{
temp = num[I-1][j];
Número[I-1][j]=Número[I][j ];
num[I][j]= temp; //Intercambia espacios y números arriba.
//Guardar el estado después del intercambio.
str 1 = cambiar 2 str(num[][]); //Convertir a cadena para comparar.
If (CompState(str1)) //Compara si el estado convertido aparece en el estado anterior.
{
//Si ha aparecido antes, regresa.
temp = num[I-1][j];
Número[I-1][j]=Número[I][j];
num[I][j]= temp; // Intercambia los gráficos originales intercambiados nuevamente.
Regresar;
}
Else// Después de la comparación, se descubre que el estado actual nunca antes había aparecido.
{ mark[k ]= 1;
if(strcmp( amp; strAim amp; Str1)=1)// Compara con el objetivo para ver si son iguales.
{
I rápido = 1
Regresar;
}
Else //No es igual, no cumple con nuestros requisitos finales.
{
//1 representa un paso adelante.
add 2 States(str 1); //Guarda el estado actual en la matriz de estados.
Hrd(i-1,j);
If (iquick=1) //Puedes salir.
{
Regresar;
}
}//Recurre y continúa atravesando.
}
}
If (j!=2)//Si puedes ir a la derecha, da un paso a la derecha.
{
temp = número[I][j 1]
Número[I][j 1]=Número[I][j];
num[I][j]= temp;
//Guardar el estado después del intercambio.
str 1 = cambiar 2 str(num[][]); //Convertir a cadena para comparar.
If (CompState(str1)) // Compara si el estado convertido aparece en el estado anterior.
{
//Si ha aparecido antes, regresa.
temp = número[I][j 1];
Número[I][j 1]=Número[I][j];
núm [I][j]= temp; // Intercambia los gráficos originales intercambiados nuevamente.
Regresar;
}
Else// Después de la comparación, se descubre que el estado actual nunca antes había aparecido.
{ mark[k]= 2; //2 significa moverse un paso hacia la derecha.
if(strcmp( amp; strAim amp; Str1)=1)//Compara con el objetivo para ver si son iguales.
{
I rápido = 1
Regresar;
}
Else //No se alcanzó resultado .
{
add 2 States(str 1); //Guarda el estado actual en la matriz de estados.
Hrd(i, j 1); //Recursión, continuar recorrido
if (iquick=1)
{
Regresar ;
}
}
}
}
Si (I!=2)//puedo Sólo baja un escalón.
{
temp = num[I 1][j];
Número[I 1][j]=Número[I][j];
num[I][j]= temp;
//Guardar el estado después del intercambio.
str 1 = cambiar 2 str(num[][]); //Convertir a cadena para comparar.
If (CompState(str1)) // Compara si el estado convertido aparece en el estado anterior.
{
//Si ha aparecido antes, regresa.
temp = num[I 1][j];
Número[I 1][j]=Número[I][j];
num [I][j]= temp; // Intercambia los gráficos originales intercambiados nuevamente.
Regresar;
}
Else// Después de la comparación, se descubre que el estado actual nunca antes había aparecido.
{ mark[k]= 3; //3 significa pasar al siguiente paso.
if(strcmp( amp; strAim amp; Str1)=1)//Compare con el objetivo para ver si son iguales.
{
I rápido = 1
Regresar;
}
Else //No alcanzó nosotros Requisito final.
{
add 2 States(str 1); //Guarda el estado actual en la matriz de estados.
Hrd(i 1, j); //Recursión, continuar recorrido
if (iquick=1)
{
Regresar ;
}
}
}
}
si (j!=0)//si Si puedes ir a la izquierda, da un paso a la izquierda.
{
temp = num[I 1][j-1];
Número[I][j-1]=Número[I][ j];
num[I][j]= temp;
//Guardar el estado después del intercambio.
str 1 = cambiar 2 str(num[][]); //Convertir a cadena para comparar.
If (CompState(str1)) // Compara si el estado convertido aparece en el estado anterior.
{
//Si ha aparecido antes, vuelve atrás.
temp = num[I][j-1];
Número[I][j-1]=Número[I][j];
num[I][j]= temp; // Intercambia los gráficos originales intercambiados nuevamente.
Regresar;
}
Else// Después de la comparación, se descubre que el estado actual nunca antes había aparecido.
{ mark[k]= 4; //1 significa moverse un paso hacia la derecha.
if(strcmp( amp; strAim amp; Str1)=1)//Compare con el objetivo para ver si son iguales.
{
I rápido = 1
Regresar;
}
Else //No alcanzó nosotros Requisito final.
{
add 2 States(str 1); //Guarda el estado actual en la matriz de estados.
Hrd(i, j-1); //Recursión, continuar recorrido
if (iquick=1)
{
Regresar;
}
}
}
}
//Si todo pasa, regresa.
k-;
Return;
}
Void Change2Str(int arr[][])//Convierte los dos- matriz dimensional Convertir a cadena.
{int i,j
Estado de la cadena
for(I = 0; i lt3; i)
{ for( j = 0; j lt3 ; j )
{
strState = strState amparr[I][j];
}
}
Devolver strState
}
void comp state(String str 1)//Compara si el estado actual aparece en el estado anterior.
{ int I;
for(I = 0; I ltlen(States[])-1; I )//len(states[]), obtiene la longitud del matriz, olvidé algo.
{
if(strcmp(amp; country[i], ampstr1)!=0)//Si las dos cadenas son iguales, la función devuelve verdadero.
{
Devuelve verdadero
}
}
Devuelve falso
}
Add2States(cadena str1)
{
Estados[q]= str 1;
}
Principal()
{ núm[0][0]= 1
núm[0][1]=
núm[0] [; 2]= 3;
núm[1][0]= 8;
núm[1][1]= 6;
núm[1 ] [2]= 4;
núm[2][0]= 1;
núm[2][1]= 0;
núm[ 2 ][2]= 5;
HRD(21);
for(int i=0, i lt100, i )
{ recuento lt ltmark [ I] lt; ltendl
}
}
Dim moveup As Integer es un símbolo de la serpiente girando hacia arriba.
Dim se mueve hacia abajo a un número entero
Dim se mueve a la izquierda a un número entero
Dim se mueve hacia la derecha a un número entero
U pública como un número entero' u, l, r, d son los valores de control cuando la serpiente gira.
D pública en forma entera
L pública en forma entera
r pública en forma entera
"Fracción pública en forma entera" ; Puntuación del juego
"Velocidad pública como número entero" Velocidad del juego
Pausa pública como "indicador de pausa del juego" booleano
Juego público como "símbolo de inicio del juego" booleano; "Inicio
La longitud actual de Public s es la serpiente de Integer, inicialmente establecida en 6.
El público come como un booleano una bandera que indica si la serpiente se ha comido la comida.
Si la serpiente come comida, lastx y lasty se utilizan para almacenar el estado de movimiento actual de la última forma para establecer el nuevo estado de movimiento de la forma.
Lasty público como número entero
Conceptos básicos de la opción 1
Dim X(100) As Long 'Array almacena la longitud de la serpiente.
Dim Y(100) tiene la misma longitud
Public Sub eat()' es una función que determina si la serpiente ha comido comida.
Si X(1) = -200, entonces
Si Forma1(1). Izquierda=Forma2. Izquierda y Forma1(1). Arriba = Forma2. Entonces apóyalo
eatd = true
Si... terminará
Si... terminará
Si Y (1) = -200, entonces
Si Forma1(1). Lt superior=Forma2. Parte superior y forma 1(1). izquierda = forma 2. Luego a la izquierda
eatd = true
Terminará si...
Terminará si...
Si X(1) = 200, entonces
Si Forma1(1). GT izquierdo = Forma2. Izquierda 200 y Forma1(1). Arriba = Forma2. Entonces apóyalo
eatd = true
Si... terminará
Si... terminará
Si Y (1) = 200, entonces
Si Forma1(1). GT superior = Forma2.
Top 200 y Forma1(1). izquierda = forma 2. luego a la izquierda
eatd = true
terminará si...
terminará si...
finalizar conector
Subsensible público _ position()'Esta función determina la posición de las nuevas formas1.
Si X(s - 1) = -200, entonces
Forma1(s). Izquierda = Forma1(s - 1). Izquierda 200: Forma1(s). Arriba = Forma1(s - 1). Arriba
Terminará si...
Si Y(s - 1) = -200, entonces
Forma1(s). Izquierda = Forma1(s - 1). Izquierda: Forma1(s). Arriba = Forma1(s - 1). Top 200
Terminará si...
Si X(s - 1) = 200, entonces
Forma1(s). Izquierda = Forma1(s - 1). Izquierda - 200: Forma1(s). Arriba = Forma1(s - 1). Arriba
Terminará si...
Si Y(s - 1) = 200, entonces
Forma1(s). Izquierda = Forma1(s - 1). Izquierda: Forma1(s). Arriba = Forma1(s - 1). Top 200
Terminará si...
Conector final
Subsentido público _ estado()' Este proceso se utiliza para determinar el estado de movimiento inicial de un nuevo mando.
Si X(1) = -200, entonces
Si moveleft = 1, entonces
X(s) = X(s-1): Y (s)= Y(s-1)
Otros
X(s) = lastx: Y(s) = lasty
Terminará si. ..
Terminará si...
Si Y(1) = -200, entonces
Si moveup = 1, entonces
X (s)= X(s-1):Y(s)= Y(s-1)
Otros
Será terminar si...
Terminará si...
Si X(1) = 200, entonces
Si moveright = 1, entonces p>
X(s)= X(s-1): Y(s)= Y(s-1)
Otros
X( s) = últimox: Y(s) = lasty
Terminará si...
Terminará si...
Si Y(1) = 200, entonces
Si mover hacia abajo = 1, entonces
X(s)= X(s-1): Y(s)= Y(s-1)
Otro
X(s) = lastx: Y(s) = lasty
Terminará si...
Terminará si...
End Sub
' Public Sub strike _ oneself()' prueba si la cabeza de serpiente se golpea a sí misma.
Dim i
Dim j: j = 0
Si Y(1) = 200, entonces “el contrabandista se matará a tiros”.
Para i = 7 to s ’, la cabeza de serpiente solo puede chocar con el sexto cuerpo de serpiente o con el siguiente.
Si Forma1(1). Arriba = Forma1(s). Parte superior y forma 1(1). Izquierda = Forma1(s). Luego dejó
Form1.initialize
Form1.outputmessage
Salir para...
Terminará si... p>
Siguiente yo
Terminará si...
Si X(1) = 200, entonces 'Blackfish se golpea hacia la derecha.
Para i = 7 a s
Si Forma1(1). Izquierda = Forma1(i). Izquierda: 200 y Shape1(1). Arriba = Forma1(i). Entonces dale me gusta
Formulario 1.inicializar
Formulario 1.mensaje de salida
Salir para...
Si... lo hará end
Siguiente yo
Terminará si...
Si Y(1) = -200, entonces la cabeza de serpiente lo golpeará por sí sola.
Para i = 7 a s
Si Forma1(1). Arriba = Forma1(i). Top 200 y Forma1(1). Izquierda = Forma1(i). Luego dejó
Form1.initialize
Form1.outputmessage
Salir para...
Terminará si... p>
Siguiente yo
Terminará si...
Si X(1) = -200, entonces la serpiente se golpeará hacia la izquierda.
Para i = 7 a s
Si Forma1(1). Izquierda = Forma1(i). Izquierda 200 y Forma1(1). Arriba = Forma1(i). Entonces dale me gusta
Formulario 1.inicializar
Formulario 1.mensaje de salida
Salir para...
Si... lo hará end
Siguiente I
Terminará si...
Conector final
' Public Sub strike_wall()' prueba si el La cabeza de serpiente golpea la pared.
Si Forma1(1). Arriba lt0 o Shape1(1). Línea 1 de GT superior. Y1 - 200 o Forma1(1). Izquierda lt0 o Shape1(1). GT izquierdo del formulario 1. Luego ancho - 200
Form1.outputmessage
Form1.initialize
Terminará si...
Conector final
Public Sub outputmessage()'Envía el mensaje después del juego.
gameovermessage = "¡Mensaje de juego terminado!"
DX = (ancho de texto de 8000 (mensaje de juego terminado))/2 'Salida "¡Juego terminado!" en el medio de la mesa. . Puntuación
dy =(6000-text height(gameovermessage))/2
CurrentX = dx: CurrentY = dy
Formulario 1. Imprimir mensaje del juego
Scoremessage = "Tu puntuación:" Texto1.
Texto
dx =(ancho de texto de 8000 (mensaje de puntuación))/2
dy = dy Altura del Texto(mensaje de puntuación)
CurrentX = dx: CurrentY = dy
Formulario 1. Imprimir mensaje de puntuación
Conector final
Public Sub inicializar()' Función de inicialización del juego después de que finaliza el juego (falló).
mover hacia arriba = 0
Mover hacia abajo = 0
Mover hacia la izquierda = 0
mover hacia la derecha = 0
u = 0: d = 0: l = 0: r = 0
Etiqueta5. Caption = "Stop"
For i = 1 to s 'Inicializa la posición y el estado de la serpiente.
Forma1(i). Izquierda = 1200 (6 - i) * 200
Forma1(i). Arriba = 5000
X(i) = 200
Y(i) = 0
Siguiente i
Si s gt6 entonces
Para i = 7 to s
Descargar Shape1(i)' Descargue el exceso de formas para que el número inicial de formas sea 6.
Siguiente yo
Terminará si...
Los siguientes párrafos se utilizan para ver los parámetros cuando se inicializa el juego.
CurrentX = 0: CurrentY = 0
Formulario 1. FontSize = 10
Imprimir mover hacia arriba: Imprimir mover hacia abajo: Imprimir mover hacia la izquierda: Imprimir mover hacia la derecha
Imprimir u: Imprimir r: Imprimir l: Imprimir d
Para i = 1 a s
Imprimir X(i): Imprimir Y(i)
Siguiente i
s = 6
Temporizador1. enable=false
El juego aún no ha comenzado.
pausa=false
HScroll1. enable=True
Conector final
Subcomando privado1_Click()
Temporizador1. enable = false
Dim River
R = MsgBox("¿Realmente quieres salir?", 33, "Advertencia")
Si r = 1 , luego
Descargar tabla 1
Otros
Temporizador 1. enable = true
Terminará si...
Finalizar conector
Subform_key privada (keyascii es un número entero)
Si comienza el juego = Verdadero, Pausa = Falso, entonces las teclas de flecha solo funcionan cuando comienza el juego.
Las siguientes cuatro declaraciones if son las funciones de control de dirección de las serpientes.
Si keyascii = 119, entonces
Si Y(1) lt; presionar hacia arriba solo es efectivo si la cabeza de la serpiente no se mueve hacia abajo con precisión.
Moveup = 1' es W hacia abajo.
Terminará si...
Terminará si...
Si keyascii = 97, entonces ' está a la izquierda
Si
Si keyascii = 115 entonces '下' es s.
Si Y(1) lt; gt-entonces 200
movedown = 1
Si... terminará
Si ... Terminará
Si keyascii = 100, entonces d va a la derecha.
Si terminará
Si... terminará
Si keyascii = 32 entonces 'determina si el juego ha comenzado, presiona la barra espaciadora para iniciar, de lo contrario presione la barra espaciadora para pausar.
Si game_start=false, entonces
Temporizador 1. habilitado=Verdadero
Etiqueta5. Caption = "Ir "
Formulario 1. Cls
Puntuación = 0
Texto1. Texto = Str$(puntuación)
HScroll1. Habilitar = Falso
gamebegin = True
Otros
Si pausa = Verdadero, determina si pausar.
Temporizador 1. habilitado=Verdadero
Etiqueta5. Caption = "Ir "
Otros
Temporizador 1. enable=false
Etiqueta5. Caption = "Pausa"
Terminará si...
Pausa=no pausa
Terminará si...
Si... finalizará Finalizará la inicialización de los parámetros
conector final
Private Sub Form_Load()'.
movear arriba = 0
Mover a la izquierda = 0
moveright = 0
Mover hacia abajo = 0
u = 0: l = 0: d = 0: r = 0
S = 6 'Longitud inicial de la serpiente
eatd = False
gamebegin = False
Pausa=Falso
Velocidad=HScroll1. Valor de velocidad inicial
Etiqueta5. Caption = "Stop"
Dim i
For i = 1 to s 'La dirección del movimiento inicial de la serpiente.
X(i) = 200
Y(i) = 0
Siguiente I
Temporizador 1. 'Enabled = False 'El juego no se inicia.
Forma 2. Left = 200 * Int(30 * Rnd)'Inicializa la posición de la comida de la serpiente.
Forma 2. Superior = 200 * Int(30 * Rnd)
Conector final
Sub privado HScroll1_Change()
Velocidad = HScroll1. valor
Conector final
Privado subTimer1_Timer()
Timer1. 'Intervalo=150/velocidad' Velocidad del juego.
Si movedown = 1, presionar la tecla de flecha hará que la serpiente se mueva hacia abajo.
d = d 1
X(d) = 0: Y(d) = 200
Si d = s, entonces
Mover hacia abajo = 0: d = 0
Terminará si...
Terminará si...
Si mover hacia arriba = 1, entonces presione la tecla de flecha hacia arriba, aparecerá la serpiente.
u = u 1
X(u) = 0: Y(u) = -200
Si u = s, entonces
moveup = 0: u = 0
Terminará si...
Terminará si...
Si moveleft = 1, entonces izquierda.
l = l 1
X(l) = -200: Y(l) = 0
Si l = s, entonces
moveleft = 0: l = 0
Terminará si...
Terminará si...
Si moveright = 1, entonces A la derecha.
r = r 1
X(r) = 200: Y(r) = 0
Si r = s, entonces
moveright = 0: r = 0
Terminará si...
Terminará si...
Atenúa el código de movimiento de la serpiente i p>
Para i = 1 a s
Forma1(i). Izquierda = Forma1(i). Izquierda X(i)
Forma1(i). Arriba = Forma1(i). Arriba Y(i)
Siguiente I
' Form1.eat ' llama al procedimiento eat() para determinar si la serpiente ha comido comida.
Si eatd = True, entonces
Puntuación = puntuación 5 * HScroll1. Valor
Texto1. Texto = Str$(fracción)
Forma 2. Left = 200 * Int(30 * Rnd)'Si se come comida, la posición de la comida de la serpiente se generará aleatoriamente.
Forma 2. Arriba = 200 * Int(30 * Rnd)
Forma 2. Fillcolor = RGB (int (255 * RND), int (255 * RND), int (255 * RND))' Genera aleatoriamente el color de la comida.
Si la forma2. FillColor = ampH0 amp; luego
Forma 2. FillColor = RGB(100, 150, 200)
Terminará si...
La serpiente Lastx = X(s) come comida, Lastx y lasty se usan para almacenar el última forma El estado de movimiento actual -
Lasty = Y(s) ' - se utiliza para establecer el estado de movimiento de la nueva forma.
s = s 1
Load Shape1(s)' genera una nueva matriz de control Shape1, que extiende la longitud de la serpiente.
"form 1. sure_state" llama al procedimiento que establece el estado de movimiento del nuevo control de forma.
' form 1 . asegurar _ position 'Establece la posición 1 de la nueva forma.
Forma1(s). Visible = Verdadero
eatd = False
Terminará si...
forma 1. La función strike_self 'prueba si el juego falla.
Form1.strike_wall
Conector final