Este artículo presenta principalmente conceptos relacionados con el editor primitivo y los primitivos en CraftLand.
Descripción general de los metabloques
Al editar gráficos, debemos observar la forma de cada bloque. Lo que debemos hacer es unirlos según reglas fijas.
Operaciones básicas
Antes de acceder al editor de primitivas, debemos abrir un script. Abra CraftLand, haga clic en [Más] en la esquina superior izquierda y luego en [Script de bloque]. Al acceder al editor de primitivas, se abrirá el script global por defecto.
Introducción a la interfaz
Después de ingresar al editor de elementos, hay 4 áreas en la interfaz del editor que merecen nuestra atención, como se muestra en la siguiente figura.
Número de serie | image | Descripción |
---|---|---|
1 | ![]() |
En la esquina superior izquierda de la interfaz hay un cuadro de búsqueda. Dado que hay una gran cantidad de bloques primitivos, podemos encontrar los que queramos introduciendo palabras clave en el cuadro de búsqueda. |
2 | ![]() |
En la esquina superior derecha de la interfaz se encuentra la lista de selección de scripts. Haz clic en el icono de la derecha para ver un menú desplegable con los scripts disponibles. Los scripts globales se crean por defecto. |
3 | ![]() |
Dividimos los bloques primitivos en 6 categorías. Podemos hacer clic en el icono de la categoría para expandir la lista de bloques primitivos. |
4 | ![]() |
El icono de la izquierda es el botón de deshacer, que permite deshacer la última operación. El icono de la derecha es el botón de rehacer, que permite rehacer la última operación deshecha. |
Primitivas de lugar
1. Arrastrar el bloque: Después de comprender la interfaz, primero abrimos la primera categoría en la esquina inferior izquierda, seleccionamos un bloque primitivo y lo arrastramos al espacio en blanco como punto de partida de nuestra lógica. image-20241031171419878
2. Conectando bloques: Seleccionamos un bloque con una depresión en la parte superior de la lista de bloques. Al arrastrarlo hasta la parte inferior del bloque inicial, veremos un mensaje amarillo en la parte elevada debajo del bloque inicial. Al soltar el dedo, los dos bloques se unirán automáticamente. Habremos completado una lógica simple.
3. Completar los datos: Primero, arrastramos los datos en el bloque primitivo o arrastramos el tipo de datos apropiado en la lista primitiva.
Luego, arrastra el bloque de datos al espacio correspondiente. Aparecerá un cuadro de diálogo amarillo en el espacio, indicando que se puede colocar el tipo de bloque actual. Al soltar el dedo, el bloque de datos se integrará automáticamente en el espacio.
Nota: Cuando el tipo de datos completado es inconsistente con el tipo de datos en el espacio, el editor mostrará un mensaje obvio y mostrará automáticamente el bloque de datos que no coincide con el tipo.
4. Desmontaje de bloques Cuando movemos uno de los múltiples bloques gráficos que se encuentran conectados entre sí, todos los bloques conectados debajo de él se desmontarán juntos.
5. Eliminar bloques: Al mantener presionado cualquier bloque gráfico, aparecerá una papelera a la derecha de la interfaz. Para eliminar el bloque gráfico, muévalo a la papelera.
Por supuesto, también podemos arrastrar varios bloques a la ‘papelera’ para eliminar varios bloques al mismo tiempo.
Forma
Descripción del bloque | Icono |
---|---|
Solo el bloque elevado a continuación es el punto de partida de una lógica. | ![]() |
El bloque con solo la parte superior hundida suele ser el punto final de una lógica. | ![]() |
Si no hay ninguna depresión en la parte superior ni ninguna protuberancia en la parte inferior, significa que este bloque es un fragmento de datos, que se puede aplicar a otros bloques como parámetro en algunas operaciones lógicas. | ![]() |
Si un bloque tiene la parte superior elevada y la inferior hundida, significa que puede conectarse con otros bloques con la parte inferior elevada y con más bloques debajo. Puede ser un nodo de una lógica. | ![]() |
En la clasificación de bloques, encontraremos un bloque con una forma especial. Este bloque es una expresión condicional, que se divide en convexidades externas y cóncavas, y convexidades internas y cóncavas. Podemos conectar otros bloques de forma normal en las convexidades externas y cóncavas del bloque de expresión condicional, como si se conectaran otros bloques, o podemos conectar bloques dentro de la expresión condicional. La lógica escrita dentro de este bloque debe cumplir con una lógica condicional específica para poder calcularse. | ![]() |
Clasificación
Para encontrar los bloques necesarios de forma más eficiente en el editor primitivo, dividimos los bloques en 7 tipos.
Como se muestra en la siguiente figura:
Tipo | Diagrama | Descripción general |
---|---|---|
Incidente | ![]() |
Tipo de evento: Generalmente, como punto de inicio de una lógica, al escribir la lógica primitiva, primero debemos aclarar en qué momento queremos que se active. Por ejemplo, si al jugador resucita, queremos darle un arma, o si al comenzar la ronda, queremos colocar una caja de suministros en el centro del mapa. Los nodos de tiempo necesarios para esta lógica son «Al resucitar al jugador» y «Al comenzar la ronda». |
Entidad | ![]() |
Tipo de entidad: es un concepto importante en CraftLand (consulta “Conceptos importantes” para más detalles). Durante la edición de primitivas, solemos llamar o modificar las propiedades de una entidad. |
Juego | ![]() |
Tipo de Juego: En el tipo de Juego, ofrecemos muchas funciones comunes para los creadores de CL. Estas funciones suelen ser ajustes que suelen requerir ajustes en algunos juegos. Estas funciones también están muy relacionadas con la jugabilidad, como crear un monstruo, cambiar la skybox o unirse a un canal de voz. |
Datos | ![]() |
Tipo de dato: Los bloques de datos pueden ser parámetros necesarios para la mayoría de las operaciones lógicas. Pueden ser datos utilizados en otros bloques o una operación para calcular un valor. |
Lógica | ![]() |
Tipo lógico: En el tipo lógico, ofrecemos múltiples operaciones lógicas complejas. Este tipo de operación lógica se utiliza a menudo al procesar datos. Permite filtrar, juzgar o tomar decisiones según condiciones específicas. Por ejemplo, determinar si un número es mayor que otro y luego decidir qué hacer. |
Variable | ![]() |
Tipo de variable: En el tipo de variable, podemos crear variables nosotros mismos. Las variables creadas de esta manera son variables de script, que se utilizan para el procesamiento de datos del script actual. En otros scripts, las variables se pueden obtener y configurar mediante una referencia externa. |
Función | ![]() |
Tipo de función: En el tipo de función, puedes crear eventos personalizados. Estos eventos personalizados pueden encapsular parte de la lógica, haciéndola más clara, fácil de entender y mantener. |
Descripción del bloque de elementos lógicos
Sustantivo bloque | Diagrama | Descripción |
---|---|---|
Sentencias condicionales (sentencia if) | ![]() |
Si se cumple la condición, se ejecutará el nodo bajo IF. |
Sentencias condicionales…else(sentencia if…else) | ![]() |
Si se cumple la condición, se ejecutará el nodo bajo IF. Si no se cumple la condición, se ejecutará el nodo bajo ELSE. |
Bucle condicional (declaración while) | ![]() |
Mientras se cumpla la condición, los nodos siguientes se ejecutarán en un bucle. |
Bucle de rango entero (para declaración de índice) | ![]() |
El parámetro i comienza desde el valor mínimo y cada vez que se ejecuta el nodo inferior, i aumenta el valor del paso hasta que i sea mayor o igual al valor máximo. |
Recorrer cada elemento (para cada declaración) | ![]() |
Para cada CLAVE en la lista/diccionario de parámetros, ejecute el nodo a continuación una vez. |
Verificar nulo | ![]() |
Verificar si es un valor nulo y manejar el valor nulo apropiadamente para evitar errores. |
Continuar al siguiente | ![]() |
Omitir este bucle e ingresar al siguiente bucle del cuerpo del bucle. |
Romper bucle | ![]() |
Romper el bucle y continuar ejecutando el nodo después del cuerpo del bucle. |
¿Qué es ECA?
En el contexto del código, ECA (Evento-Condición-Acción) generalmente se refiere a un método de representación de reglas.
I. Componentes
- Event
- Una situación o suceso específico que desencadena la ejecución de una regla. Por ejemplo, un jugador entra en la partida, provoca una muerte o abandona la partida.
Ejemplo: El jugador provocó una muerte y, después de activar este evento, recibió 100 monedas de oro.
- Condición
Una expresión lógica que determina si se realizan acciones posteriores tras un evento. La acción correspondiente solo se realizará si la condición es verdadera. Por ejemplo, si el número de zombis es menor que 10, crear un zombi; si el número de jugadores es igual a 1, obtener una ametralladora Gatling; o si las coordenadas del jugador son iguales a cierto valor, teletransportarlo a otra coordenada.
Ejemplo: Cuando un jugador se une al juego y tiene un micrófono encendido, su nombre se convertirá en '¡Tengo un micrófono
- Acción
Si el evento ocurre y se cumplen las condiciones, se ejecutará la acción específica. Esto puede ser modificar datos, llamar a una función, enviar un mensaje, activar otro evento, etc.
Ejemplo: Dale al jugador un AK47 al comienzo de la ronda y establece la salud del jugador en 500
Conceptos importantes en ECA
Nombre del concepto | Descripción |
---|---|
Función | Una función (a menudo llamada método) es un bloque de código reutilizable que realiza una tarea específica. Una función encapsula una operación o tarea específica en un bloque de método independiente, lo que hace que las operaciones y la lógica sean más modulares y fáciles de mantener. El código externo puede realizar tareas específicas llamando a una función sin necesidad de comprender los detalles de implementación de la misma. |
Parámetros | Los parámetros son valores que se pasan a funciones o métodos al ser llamados. Incluyen parámetros formales y reales, que pueden dividirse en tipos de parámetros para mayor flexibilidad y transferencia de datos, etc. |
Enumeración | La enumeración es un concepto de recopilación constante de datos, como una enumeración de métodos de ataque, que puede contener opciones como cuerpo a cuerpo, disparos, explosiones, etc. Los diferentes tipos de enumeración no se pueden asignar entre sí, incluso si sus valores pueden ser los mismos, no se pueden asignar debido a diferentes semánticas. |
Eventos personalizados y variables personalizadas
Eventos personalizados
En la esquina inferior izquierda del editor de elementos, encontramos un total de siete tipos de listas de elementos. En el tipo de función, podemos hacer clic en [CREAR FUNCIÓN] para crear un evento personalizado. SeaTalk_IMG_20241101_150402
Descripción general de la interfaz de eventos personalizados
Número de serie | image | Descripción |
---|---|---|
1 | ![]() |
Aquí podemos completar el nombre del evento personalizado |
2 | ![]() |
Haz clic en el signo más para añadir un parámetro interno al evento personalizado. Este parámetro solo se puede usar en el evento personalizado al que pertenece. |
3 | ![]() |
Haga clic en el signo más en la esquina inferior derecha para agregar un valor de retorno a nuestro evento personalizado. Al llamar a este evento en la lógica de otro algoritmo, podemos obtener los datos deseados. |
Descripción de evento personalizada
Al editar primitivas, integramos varios bloques primitivos en un evento personalizado. También podemos decir que encapsulamos varias lógicas de cálculo en un solo método. Esto ofrece varias ventajas:
1. Nomenclatura clara: Al usar eventos encapsulados, no necesitamos leer lógica de bloques primitivos compleja; podemos comprender toda la intención de la lógica del evento simplemente nombrándolos.
2. Simplificar la estructura primitiva: Encapsular cálculos complejos en eventos personalizados puede hacer que la lógica de la estructura principal sea más concisa y clara, reducir la complejidad de la estructura primitiva y mejorar la legibilidad.
2. Reutilización: Cuando varios bloques lógicos gráficos requieren la misma operación, se puede reutilizar el evento personalizado encapsulado para evitar escribir repetidamente la misma lógica gráfica. Además, al modificar y mantener este evento personalizado, también se pueden modificar simultáneamente varios bloques lógicos gráficos que lo reutilizan para evitar modificar repetidamente el mismo código en varias ubicaciones.
Variables personalizadas
Descripción general de la interfaz de variables personalizadas
En la lista de tipos de elemento, seleccione el tipo [VARIABLE] y haga clic en [CREAR VARIABLE] para crear una variable personalizada.
Al crear una variable personalizada, podemos establecer el nombre de la variable y el tipo de datos de la variable.
Descripción de variable personalizada
Al escribir lógica gráfica, a veces necesitamos definir variables de parámetros de tipos de datos según necesidades específicas. La función de variable personalizada soluciona esta necesidad.
Las variables que cree también pueden usarse para pasar datos entre diferentes métodos. Al almacenar datos en una variable, puede pasarlos como parámetro a otro método o devolverlos desde un método al llamador.
Ejemplo de evento/variable personalizado
Crearemos una lógica para demostrar cómo usar eventos personalizados y variables personalizadas en el editor primitivo
Ejemplo de lógica: cuando un jugador mata a alguien, el límite de salud del jugador se reducirá en 10 puntos y el mínimo se reducirá a 20.
- Primero, creamos una variable personalizada llamada “CurrentMaxHp” y establecemos el tipo de dato en “int”. Al mismo tiempo, creamos un evento personalizado llamado “DecreaseMaxHp” como preparación preliminar.
-
Busca y arrastra el evento “Cuando un jugador causa una muerte” y conéctalo al evento personalizado “DecreaseMaxHp” que acabamos de crear. Tras la conexión, hemos completado la base lógica para reducir el límite de salud del jugador cuando este causa una muerte.
-
Tras completar la lógica básica, podemos empezar a escribir la estructura primitiva del evento personalizado. Primero, asignamos el valor a la variable que acabamos de crear.
-
A continuación, conecta un algoritmo para establecer la variable en -10 cada vez que se active un evento.
-
Se agregó el límite mínimo de salud. Se agregó una verificación si el límite de salud actual es menor o igual a 20. ¡Entonces el límite de salud actual es igual a 20
-
Reasigna la variable calculada al atributo de límite de vida del jugador. Hasta ahora, hemos completado toda la lógica necesaria.
-
¡Verificar
El límite de salud se reduce correctamente y se verifica correctamente.