Muy bien.
Espero que estéis preparados para la codificación, porque hay mucho que hacer.
Y de hecho, probablemente ni siquiera lleguemos a un punto en esta conferencia en particular en el que podamos ejecutar algo.
Pero lo que vamos a hacer es empezar con lo más básico y crear algunas clases realmente básicas sobre las
que podamos construir.
Y eso va a ser los estados del mundo, los agentes y también las acciones.
Así que vamos a seguir adelante y crear esos archivos.
Así que abajo en su proyecto, vamos a crear un archivo C-sharp.
Voy a llamarlo agente G.
Luego vamos a crear otro y vamos a llamar a ese g action.
Y otra más.
Al que llamaremos Mundo G.
Y una más.
Y a eso lo llamaremos estados mundiales.
De acuerdo.
Así que vamos a abrir los estados del mundo y vamos a editar ese primero.
En la parte superior, voy a incluir justo por encima de la clase en sí una pequeña clase y vamos a hacer que
sea capaz de serializar para que podamos ver dentro del inspector.
Así que si el sistema serializar visible y luego vamos a tener un estado del mundo de clase pública.
Y en ese estado lo que vamos a hacer es crear una clave de cadena pública y un valor int público.
Ahora lo estamos haciendo para que puedas editar estos elementos en el inspector, porque una vez que empecemos a construir el
sistema, querrás arrastrar y soltar un montón de cosas alrededor, tanto como sea posible.
Ahora la razón por la que estamos creando un estado del mundo con un valor clave y un valor es que vamos a crear
un diccionario con estos.
Y la clave en sí misma es en realidad el estado mundial.
Y luego también he añadido en este valor y el valor es algún tipo de número entero que desea asociar con la
clave.
¿Deberías querer asociarte con la llave en la pista?
En la mayoría de los casos, no vamos a usar eso, pero sí un diccionario.
Así que necesitamos tener estos dos valores allí.
Pero digamos que más adelante quisieras tener un estado mundial como cubículos libres.
Y entonces podrías tener aquí que hubiera cinco cubículos libres o algo así y entonces podrías probarlo
cuando amplíes este sistema.
Muy bien.
Así que esa es nuestra pequeña clase con el estado del mundo, y la usaremos dentro de otras clases.
Así que vamos a seguir adelante y ahora hacer nuestro estado del mundo aquí.
Ahora, en primer lugar, no va a ser un comportamiento mono.
Así que usted puede deshacerse de eso y todo el otro código que está dentro de aquí.
En primer lugar, vamos a crear algo que contenga todos los estados del mundo.
Así que el diccionario público.
Cadena int.
Y esto se llamará nuestros estados.
Así que vamos a crear nuestro constructor, y que será un mundo público estados.
Y dentro de aquí, acabamos de configurar nuestro diccionario.
Así que los estados equivalen a un nuevo diccionario.
Cadena int.
Muy bien.
Así que eso es todo lo que necesitamos allí.
De acuerdo.
Ahora vamos a añadir un montón de métodos para ayudarnos a utilizar el diccionario.
Así que para añadir cosas al diccionario y para modificar el diccionario y también establecer los estados que están
en el diccionario.
En primer lugar, vamos a preguntar si el diccionario tiene un estado particular en él.
Así que public bool tiene estado y pasaremos por la clave.
Y entonces devolveremos los estados.
El punto contiene la llave.
De acuerdo.
Bonito y sencillo.
Ahí empezarás a ver por qué usamos diccionarios para esto, porque son muy fáciles
de manipular y de añadir cosas y de buscar cosas sin tener que escribir un montón de código.
Muy bien.
La siguiente será añadir un estado a nuestro diccionario.
Si no está allí, así que evitar añadir el valor de la cadena de estado int.
Y entonces esto es simplemente una adición de puntos de estado y luego una clave y un valor.
Bonito y sencillo.
A continuación vamos a añadir un estado modificador.
Así que public void modifier state string key int value.
Y en este caso voy a poner.
Si el punto de los estados contiene la clave.
Entonces, obviamente, ya hemos añadido ese estado a nuestro diccionario.
Ahora, si está allí, lo que quiero hacer es aumentar su valor por lo que pasamos por aquí, lo que significa que
también podría quitar enviando a través de como un menos uno de aquí.
Así que permítanme poner aquí si los estados contienen estados clave en esa clave particular más valor igual.
Si el estado en esa tecla es menor o igual a cero, me voy a deshacer de ella.
Esto se debe a la forma en que utilizo este diccionario en particular.
Si no vas a usar eso y realmente quieres valores negativos ahí, entonces
depende de ti cómo lo manejes.
Así que lo que vamos a hacer para esto como un ejemplo, es si tenemos un estado como cubículos libres y hay cinco cubículos
libres, y luego se envía a través de otro cubículo libre uno, entonces se actualizará el número de cubículos a
seis que están disponibles.
Si un cubículo ya no está libre, entonces podría enviar a través de un valor de cubículo libre menos uno.
De hecho, se reducirá el número de cubículos disponibles para su uso.
Bien, una vez que hayamos hecho eso, vamos a ir a otra cosa.
Los Estados añaden.
Valor clave.
Así que si no existe y estamos añadiendo nuestro primer cubículo del lado del cubículo uno, va a añadir
eso allí en lugar de incrementarlo.
Ahora, no hemos escrito quitar estados y llegaremos a eso ahora mismo.
Así que public void, remove state string key.
Y luego aquí si el punto de los estados contiene la clave de la llave.
Entonces declararemos la parada.
Retira la llave.
Fácil.
Sobre todo si se escribe correctamente.
Muy bien.
Así que eso es lo que se modifica y lo que se quita.
Ahora, tengamos un estado de conjunto real si necesitamos no modificarlo.
En cuanto a añadirle un valor, sólo queremos establecer cuál es su valor.
Public void set state.
De nuevo, queremos la clave de la cadena y el valor de int.
Y aquí vamos a si los estados punto contiene clave de nuevo.
Entonces podemos ir a los estados.
La clave es igual al valor.
Si no, podemos añadir ese estado en so state.
Detener añadir la clave con el valor.
Muy bien.
Así que ese es todo el tipo de métodos de gestión que necesitamos.
Por último, voy a crear uno que podemos devolver todos los estados o devolver el diccionario actual.
Así que cadena de diccionario público.
No lo es.
Consigue estados.
Estados de retorno.
Así que esto será utilizado por el planificador cuando necesite obtener todos los estados
del mundo y todos los estados de la creencia.
Muy bien.
Así que me he dado cuenta de que tengo un pequeño problema aquí arriba con ese espacio de ahí.
Así que déjame deshacerme de eso.
Y el resto del código es bueno para ir así que podemos guardar que ahora que hemos escrito nuestra clase de estados del mundo.
Muy bien.
Así que rápidamente volver a la unidad para que pueda abrir nuestra clase mundial G.
Y eso tampoco va a ser un comportamiento monotemático.
Pero lo que vamos a hacer con ella es crear una clase sellada.
Y esto nos ayudará un poco más tarde cuando empecemos a usar señales en eso para poner las cosas en cola
para que no tengamos ningún tipo de conflicto al tratar de acceder a partes particulares de esta clase, que realmente sólo
se debe acceder a una cosa a la vez.
De acuerdo.
Así que, en primer lugar, vamos a crear una instancia estática privada de sólo lectura de G World, que equivale a un nuevo
G World.
Ahora, no he mencionado esto, pero también vamos a hacer esto en un singleton para que podamos acceder a él
en casi todas partes.
Y sólo queremos una versión de los estados del entorno del mundo del juego porque sólo hay un mundo del juego.
Así que no queremos tener copias de ella con diferentes valores en ella.
Así que mundo estático privado, estados, mundo.
Ese es nuestro diccionario sosteniendo todos sus estados.
Vale, pues vamos a deshacernos de esos inicios y actualizaciones porque en realidad no los necesitamos.
Entonces tendremos nuestro constructor.
Así que Static G world y aquí vamos a crear World Equals New World States, que es simplemente un nuevo diccionario.
Y eso es todo lo que necesitamos allí.
Bien, entonces vamos a crear un mundo G privado y configurar todo para que podamos agarrar esto
con un público singleton.
Estática.
G instancia mundial.
Y esto será una instancia de devolución de regalos.
De acuerdo.
Y luego una última cosa que vamos a poner aquí es un estado del mundo público para obtener el mundo
para que podamos devolver el estado del mundo.
Volver al mundo.
De acuerdo.
Así que eso es todo lo que necesitamos actualmente en el mundo.
Volveremos y crearemos algunos métodos más y otros diccionarios aquí a medida que los necesitemos cuando empecemos
a construir la simulación.
Bien, ese es nuestro mundo básico y nuestros estados del mundo.