Red de conocimiento informático - Consumibles informáticos - Código fuente del juego de cuadrados en blanco y negro

Código fuente del juego de cuadrados en blanco y negro

# incluir ltiostream.h gt

# 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

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...

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...

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

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