Un ejemplo simple de la inteligencia artificial usando delphi matriz
(Ordenador simula el proceso de aprendizaje de los humanos, el aprendizaje por corrección de errores !)
la Inteligencia Artificial (IA) es un avance de la rama de la ciencia que estudia el proceso del pensamiento humano y de los intentos de aplicar el conocimiento para simular el mismo proceso en las máquinas. Como los equipos están muy por delante en el maratón de máquinas de procesamiento, AI es considerada la rama de Ciencias de la computación que el de la Ciencia en General.
muchas han sido las de investigación y desarrollo en el campo de la Inteligencia Artificial. El área de investigación incluyen el habla y reconocimiento de patrones, procesamiento del lenguaje natural, aprendizaje de experiencias anteriores (aprender haciendo y corregir los errores!), el razonamiento en las situaciones a que proporciona información limitada o incompleta, etc. AI es aplicado en la práctica en el campo de los juegos de ordenador, sistemas expertos, redes neuronales, robótica y muchos otros campos de la ciencia y la tecnología.
En este artículo vamos a tratar de demostrar un muy sencillo ejemplo práctico de la Inteligencia artificial, programación en Delphi utilizando Delphi matrices. He elegido un Nepalí juego llamado 'GATTA TIPNE KHEL' (en el sentido de guijarros de picking juego) para este propósito. Podemos ver a los niños pequeños a jugar a este juego en el patio de recreo.
(Por cierto, Nepal, de mi nación, es un pequeño país Asiático entre la India y China. Recientemente Nepal fue en la característica principal de los medios de comunicación para la famosa Royal Masacre en el que toda la familia de el rey gobernante fueron cruelmente asesinados.)
En este guijarro juego cosechando un montón de algunos de los guijarros que se mantiene en el suelo. Uno de los dos jugadores, toma una, dos o tres guijarros en un momento de su turno, dejando la pila para que el otro jugador para escoger para su suplente turno. En esta alternativa de un proceso de selección, el jugador que levanta la última piedra(s) será el perdedor y llamado a ser una PERDICIÓN en Nepalí.
La lógica principal del juego es salir de la pila de piedras con 13, 9, 5 o 1 guijarro(s) para el oponente para elegir.
En el programa el número de partida de guijarros se establece en 17, 21, 25, 29, etc ... de modo que el equipo pueda ganar siempre si no comete un error. Pero en el juego real del equipo parece ser poco a poco el aprendizaje por corrección de errores de la anteriormente jugado a juegos. Al final, se encuentra con todos sus errores y los corrige para convertirse en un imbatible campeón. Parece ordenador simula el psicológico proceso de aprendizaje de los animales, el aprendizaje a través de la corrección y no repetir los errores.
Una matriz multidimensional de elementos (1..4,1..3) es elegido como el libro de instrucciones para la computadora para recoger los guijarros. El libro de instrucciones contiene cuatro páginas con tres líneas de instrucciones para recoger guijarros. La primera línea indica a elegir a un solo guijarro, la segunda línea indica a elegir 2 y la tercera línea indica a pick 3 guijarros. Al principio, el equipo elige una página al azar y al azar de la línea de instrucción para recoger los guijarros. Cuando el juego termina, si el equipo pierde el juego, la última instrucción es de color rojo-marcado (borrado) y la instrucción no se puede leer en el futuro. Después de jugar muchos juegos, todas las instrucciones que conducen a un juego perdido será marcado en rojo y no se quedará sólo las instrucciones de los que llevan a la victoria.
Bueno, es suficiente para la descripción de el juego.
Vamos a ir directamente a la siguiente codigo:
unit Unit1
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de diálogo,
& nbsp & nbsp StdCtrls, ExtCtrls, Botones
tipo
& nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp Panel1: TPanel
& nbsp & nbsp & nbsp & nbsp LabelPeb1: TLabel
& nbsp & nbsp & nbsp & nbsp LabelPeb2: TLabel
& nbsp & nbsp & nbsp & nbsp Panel2: TPanel
& nbsp & nbsp & nbsp & nbsp Panel3: TPanel
& nbsp & nbsp & nbsp & nbsp Panel4: TPanel
& nbsp & nbsp & nbsp & nbsp Label1: TLabel
& nbsp & nbsp & nbsp & nbsp ComboBox1: TComboBox
& nbsp & nbsp & nbsp & nbsp Label2: TLabel
& nbsp & nbsp & nbsp & nbsp Label3: TLabel
& nbsp & nbsp & nbsp & nbsp Label4: TLabel
& nbsp & nbsp & nbsp & nbsp Label5: TLabel
& nbsp & nbsp & nbsp & nbsp Label6: TLabel
& nbsp & nbsp & nbsp & nbsp LabelIWon: TLabel
& nbsp & nbsp & nbsp & nbsp LabelYouWon: TLabel
& nbsp & nbsp & nbsp & nbsp LabelTotPlayed: TLabel
& nbsp & nbsp & nbsp & nbsp ListBox1: TListBox
& nbsp & nbsp & nbsp & nbsp GroupBox1: TGroupBox
& nbsp & nbsp & nbsp & nbsp BitBtn1: TBitBtn
& nbsp & nbsp & nbsp & nbsp BitBtn2: TBitBtn
& nbsp & nbsp & nbsp & nbsp BitBtn3: TBitBtn
& nbsp & nbsp & nbsp & nbsp BitBtn5: TBitBtn
& nbsp & nbsp & nbsp & nbsp Panel5: TPanel
& nbsp & nbsp & nbsp & nbsp Labelbtn: TLabel
& nbsp & nbsp & nbsp & nbsp BitBtnResign: TBitBtn
& nbsp & nbsp & nbsp & nbsp Label7: TLabel
& nbsp & nbsp & nbsp & nbsp procedimiento FormCreate(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento ComboBox1Change(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento BitBtnResignClick(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento LabelbtnClick(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento BitBtn1Click(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp & nbsp & nbsp //Procedimiento para mostrar resto de Guijarros
& nbsp & nbsp & nbsp & nbsp procedimiento DispPebbles(const nPebs:integer)
& nbsp & nbsp & nbsp & nbsp //Procedimiento para restablecer las Variables y las Etiquetas después de que el juego está terminado
& nbsp & nbsp & nbsp & nbsp procedimiento de Terminar
& nbsp & nbsp & nbsp & nbsp //Procedimiento para habilitar o Deshabilitar algunos controles
& nbsp & nbsp & nbsp & nbsp procedimiento ManageEnabling(lValue:Boolean)
& nbsp & nbsp & nbsp & nbsp //Procedimiento para mostrar ganar o perder los mensajes
& nbsp & nbsp & nbsp & nbsp procedimiento de Mensajería(const perdido:Boolean const renunciar:Boolean)
& nbsp & nbsp & nbsp & nbsp //Procedimiento Real para jugar el juego
& nbsp & nbsp & nbsp & nbsp Procedimiento LearnByMistakes
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp final
var
& nbsp & nbsp Form1: TForm1
aplicación
{$R *.DFM}
var
PlayedGames,ComputerWon:Integer
totPebs,RemainPebs,nTurn:Integer
OldPageNum,OldLineNum:Integer
//18 posibles permutaciones de 3 dígitos: 1, 2 y 3
//a determinar el número de guijarros a tomar por el equipo
aPermutations:Array[1..6,1..3] of integer
// Un libro que contiene las páginas de instrucción(4) y las líneas(3 en cada página) para dibujar los guijarros de la computadora
aPages:Array[1..4,1..3] of integer
procedure TForm1.FormCreate(Sender: TObject)
// Permutaciones de 1,2 y 3 en el grupo de 3 a llenar la Matriz de permutación
const cPermutations='123132213231312321'
var
x,y: Integer
begin
& nbsp & nbsp //Llenado de la Matriz de Permutación
& nbsp & nbsp x:=1 to 6
& nbsp & nbsp & nbsp & nbsp para y:=1 to 3 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aPermutations[x,y]:=strtoInt(copia(cPermutations,(x-1)*3 y,1))
& nbsp & nbsp & nbsp //Llenado de las líneas de todas las páginas del Libro de instrucciones (matriz aPages[1..4,1..3]).
& nbsp & nbsp & nbsp x:=1 to 4 do
& nbsp & nbsp & nbsp & nbsp & nbsp para y:=1 to 3 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aPages[x,y]:=y
& nbsp & nbsp ComboBox1.ItemIndex:=1
& nbsp & nbsp PlayedGames:=0
& nbsp & nbsp ComputerWon:=0
& nbsp & nbsp totPebs:=17 {Default al 17 de guijarros}
& nbsp & nbsp RemainPebs:=17 {Todos están intactos hasta Ahora}
fin
procedure TForm1.DispPebbles(const nPebs:integer)
begin
LabelPeb1.Caption:=intToStr(nPebs)
LabelPeb2.Caption:=LabelPeb1.Título
fin
procedure TForm1.ManageEnabling(lValue:Boolean)
begin
& nbsp & nbsp BitBtn1.Enabled:=lValue
& nbsp & nbsp BitBtn2.Enabled:=lValue
& nbsp & nbsp BitBtn3.Enabled:=lValue
& nbsp & nbsp Labelbtn.Enabled:=lValue
& nbsp & nbsp BitBtnResign.Enabled:=lValue
& nbsp & nbsp GroupBox1.Enabled:=lValue
& nbsp & nbsp si (RemainPebs<3) y (RemainPebs>0) y lValue, a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si RemainPebs<3, a continuación, BitBtn3.Enabled:=False
& nbsp & nbsp & nbsp & nbsp si RemainPebs<2, a continuación, BitBtn2.Enabled:=False
& nbsp & nbsp final
fin
procedure TForm1.Terminar
begin
& nbsp & nbsp LabelTotPlayed.caption:=intToStr(PlayedGames)
& nbsp & nbsp LabelIWon.caption:=intToStr(ComputerWon)
& nbsp & nbsp LabelYouWon.caption:=intToStr(PlayedGames-ComputerWon)
& nbsp & nbsp DispPebbles(strToInt(ComboBox1.Los Elementos[ComboBox1.ItemIndex]))
& nbsp & nbsp totPebs:=strtoint(LabelPeb1.Título)
& nbsp & nbsp RemainPebs:=totPebs
& nbsp & nbsp ManageEnabling(True)
& nbsp & nbsp ComboBox1.Enabled:=True
& nbsp & nbsp Labelbtn.Enabled:=False
& nbsp & nbsp BitBtnResign.Enabled:=False
fin
procedure TForm1.ComboBox1Change(Sender: TObject)
begin
DispPebbles(strToInt(ComboBox1.Los Elementos[ComboBox1.ItemIndex]))
totPebs:=strtoint(LabelPeb1.Título)
RemainPebs:=totPebs
fin
procedure TForm1.Mensajería(const perdido:Boolean const renunciar:Boolean)
begin
& nbsp & nbsp inc(PlayedGames)
& nbsp & nbsp MESSAGEBEEP(0)
& nbsp & nbsp caso de pérdida, a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si renunciando a continuación, showmessage('renuncio ! Usted ganó el juego de nuevo !!')
& nbsp & nbsp & nbsp & nbsp else showmessage ('¡Felicitaciones ! Has ganado !! Me reconoce la derrota !')
& nbsp & nbsp final
& nbsp & nbsp else
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp inc(ComputerWon)
& nbsp & nbsp & nbsp & nbsp showmessage('Hola ! Has perdido ! HE GANADO ESTE JUEGO !!')
& nbsp & nbsp final
& nbsp & nbsp Terminar
fin
Procedure TForm1.LearnByMistakes
var
x,PageNum,LineNum,nTemp,nTakes:integer
begin
& nbsp & nbsp si RemainPebs<=0, entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp //Openent señaló a la última piedra(s) ! Equipo ganó !!
& nbsp & nbsp & nbsp & nbsp //DispPebbles(0)
& nbsp & nbsp & nbsp & nbsp Mensajería(False,False);
& nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp final
& nbsp & nbsp nTemp:=random(6) 1
& nbsp & nbsp PageNum:=RemainPebs mod 4
& nbsp & nbsp si PageNum=0, entonces PageNum:=4
& nbsp & nbsp x:= 1 to 3 do
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp LineNum:= aPermutations[nTemp,x]
& nbsp & nbsp & nbsp & nbsp si (aPages[PageNum,LineNum]>0 ) luego se rompen
& nbsp & nbsp final
& nbsp & nbsp si x>3, entonces {No sin marcar instrucciones permaneció ! Todos son redmarked !!}
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp // El efecto de este movimiento era desconocido previamente. Pero resultó ser fatal este tiempo !
& nbsp & nbsp & nbsp & nbsp // RedMark Este oldLineNum de este oldPageNum !
& nbsp & nbsp & nbsp & nbsp aPages[OldPageNum,OldLineNum]:=-99
& nbsp & nbsp & nbsp & nbsp // Perdido con Renunciar Mensaje !
& nbsp & nbsp & nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. Renuncié a ')
& nbsp & nbsp & nbsp & nbsp DispPebbles(RemainPebs)
& nbsp & nbsp & nbsp & nbsp Mensajería(True,True)
& nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp final
& nbsp & nbsp nTakes:=aPages[PageNum,LineNum]
& nbsp & nbsp si nTakes>=RemainPebs, a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. I (Equipo): 'intTostr(RemainPebs))
& nbsp & nbsp & nbsp & nbsp //yo soy el último cajón y he perdido !!
& nbsp & nbsp & nbsp & nbsp // RedMark Este LineNum de este PageNum !
& nbsp & nbsp & nbsp & nbsp aPages[PageNum,LineNum]:=-99
& nbsp & nbsp & nbsp & nbsp DispPebbles(0)
& nbsp & nbsp & nbsp & nbsp Mensajería(True,False)
& nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp final
& nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. I (Equipo): 'intTostr(nTakes))
& nbsp & nbsp showmessage('I (Equipo):' IntTostr(nTakes) ' Piedra(s) para este turno !')
& nbsp & nbsp OldPageNum:=PageNum
& nbsp & nbsp oldLineNum:=LineNum
& nbsp & nbsp RemainPebs:=RemainPebs-nTakes
& nbsp & nbsp ManageEnabling(True)
& nbsp & nbsp DispPebbles(RemainPebs)
fin
procedure TForm1.BitBtnResignClick(Sender: TObject)
begin
inc(PlayedGames)
inc(ComputerWon)
inc(nTurn)
ListBox1.Elementos.agregar(intTostr(nTurn) '. Usted renunció a')
Final
fin
procedure TForm1.LabelbtnClick(Sender: TObject)
begin
BitBtnResign.SetFocus
BitBtnResign.Haga clic en
fin
procedure TForm1.BitBtn1Click(Sender: TObject)
var
nTaken:Integer
begin
& nbsp & nbsp con el Remitente como TBitBtn hacer nTaken:=Etiqueta
& nbsp & nbsp ManageEnabling(Falso)
& nbsp & nbsp si (RemainPebs=totPebs), a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp ComboBox1.Enabled:=False
& nbsp & nbsp & nbsp & nbsp ListBox1.Claro
& nbsp & nbsp & nbsp & nbsp nTurn:=1
& nbsp & nbsp final
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp inc(nTurn)
& nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. Usted: 'intTostr(nTaken))
& nbsp & nbsp RemainPebs:=RemainPebs-nTaken
& nbsp & nbsp DispPebbles(RemainPebs)
& nbsp & nbsp LearnByMistakes
fin
final.
Un archivo comprimido game.zip contiene todas las materias (formularios, unidades y archivo de proyecto) de la ejecución de proyectos de este juego. Este proyecto fue compilado y ejecutado con Delphi 3.
En el pasado para los amigos interesados:
he programado un juego de pensamiento estratégico de la utilización de los principios de la Inteligencia Artificial. El juego de alguna manera es como el Ajedrez.
El juego fue programado usando en powerbasic y el Lenguaje ensamblador. Este juego ha ganado el Primer Premio en El Primer Nepal Software de la Competencia, SOFTWARE de éste CUMPLAN con el año 2000. El juego se puede descargar en: http//:www.viewnepal.com/gamezip.exe (un auto extraer archivos de archivo). Estaré encantado de proporcionar una copia a través de correo electrónico si la descarga no funciona.
game.zip
Un ejemplo simple de la inteligencia artificial usando delphi matriz
Un ejemplo simple de la inteligencia artificial usando delphi matriz : Multi-millones de consejos para hacer su vida mas facil.
(Ordenador simula el proceso de aprendizaje de los humanos, el aprendizaje por correccion de errores !)
la Inteligencia Artificial (IA) es un avance de la rama de la ciencia que estudia el proceso del pensamiento humano y de los intentos de aplicar el conocimiento para simular el mismo proceso en las maquinas. Como los equipos estan muy por delante en el maraton de maquinas de procesamiento, AI es considerada la rama de Ciencias de la computacion que el de la Ciencia en General.
muchas han sido las de investigacion y desarrollo en el campo de la Inteligencia Artificial. El area de investigacion incluyen el habla y reconocimiento de patrones, procesamiento del lenguaje natural, aprendizaje de experiencias anteriores (aprender haciendo y corregir los errores!), el razonamiento en las situaciones a que proporciona informacion limitada o incompleta, etc. AI es aplicado en la practica en el campo de los juegos de ordenador, sistemas expertos, redes neuronales, robotica y muchos otros campos de la ciencia y la tecnologia.
En este articulo vamos a tratar de demostrar un muy sencillo ejemplo practico de la Inteligencia artificial, programacion en Delphi utilizando Delphi matrices. He elegido un Nepali juego llamado 'GATTA TIPNE KHEL' (en el sentido de guijarros de picking juego) para este proposito. Podemos ver a los niños pequeños a jugar a este juego en el patio de recreo.
(Por cierto, Nepal, de mi nacion, es un pequeño pais Asiatico entre la India y China. Recientemente Nepal fue en la caracteristica principal de los medios de comunicacion para la famosa Royal Masacre en el que toda la familia de el rey gobernante fueron cruelmente asesinados.)
En este guijarro juego cosechando un monton de algunos de los guijarros que se mantiene en el suelo. Uno de los dos jugadores, toma una, dos o tres guijarros en un momento de su turno, dejando la pila para que el otro jugador para escoger para su suplente turno. En esta alternativa de un proceso de seleccion, el jugador que levanta la ultima piedra(s) sera el perdedor y llamado a ser una PERDICION en Nepali.
La logica principal del juego es salir de la pila de piedras con 13, 9, 5 o 1 guijarro(s) para el oponente para elegir.
En el programa el numero de partida de guijarros se establece en 17, 21, 25, 29, etc ... de modo que el equipo pueda ganar siempre si no comete un error. Pero en el juego real del equipo parece ser poco a poco el aprendizaje por correccion de errores de la anteriormente jugado a juegos. Al final, se encuentra con todos sus errores y los corrige para convertirse en un imbatible campeon. Parece ordenador simula el psicologico proceso de aprendizaje de los animales, el aprendizaje a traves de la correccion y no repetir los errores.
Una matriz multidimensional de elementos (1..4,1..3) es elegido como el libro de instrucciones para la computadora para recoger los guijarros. El libro de instrucciones contiene cuatro paginas con tres lineas de instrucciones para recoger guijarros. La primera linea indica a elegir a un solo guijarro, la segunda linea indica a elegir 2 y la tercera linea indica a pick 3 guijarros. Al principio, el equipo elige una pagina al azar y al azar de la linea de instruccion para recoger los guijarros. Cuando el juego termina, si el equipo pierde el juego, la ultima instruccion es de color rojo-marcado (borrado) y la instruccion no se puede leer en el futuro. Despues de jugar muchos juegos, todas las instrucciones que conducen a un juego perdido sera marcado en rojo y no se quedara solo las instrucciones de los que llevan a la victoria.
Bueno, es suficiente para la descripcion de el juego.
Vamos a ir directamente a la siguiente codigo:
unit Unit1
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de dialogo,
& nbsp & nbsp StdCtrls, ExtCtrls, Botones
tipo
& nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp Panel1: TPanel
& nbsp & nbsp & nbsp & nbsp LabelPeb1: TLabel
& nbsp & nbsp & nbsp & nbsp LabelPeb2: TLabel
& nbsp & nbsp & nbsp & nbsp Panel2: TPanel
& nbsp & nbsp & nbsp & nbsp Panel3: TPanel
& nbsp & nbsp & nbsp & nbsp Panel4: TPanel
& nbsp & nbsp & nbsp & nbsp Label1: TLabel
& nbsp & nbsp & nbsp & nbsp ComboBox1: TComboBox
& nbsp & nbsp & nbsp & nbsp Label2: TLabel
& nbsp & nbsp & nbsp & nbsp Label3: TLabel
& nbsp & nbsp & nbsp & nbsp Label4: TLabel
& nbsp & nbsp & nbsp & nbsp Label5: TLabel
& nbsp & nbsp & nbsp & nbsp Label6: TLabel
& nbsp & nbsp & nbsp & nbsp LabelIWon: TLabel
& nbsp & nbsp & nbsp & nbsp LabelYouWon: TLabel
& nbsp & nbsp & nbsp & nbsp LabelTotPlayed: TLabel
& nbsp & nbsp & nbsp & nbsp ListBox1: TListBox
& nbsp & nbsp & nbsp & nbsp GroupBox1: TGroupBox
& nbsp & nbsp & nbsp & nbsp BitBtn1: TBitBtn
& nbsp & nbsp & nbsp & nbsp BitBtn2: TBitBtn
& nbsp & nbsp & nbsp & nbsp BitBtn3: TBitBtn
& nbsp & nbsp & nbsp & nbsp BitBtn5: TBitBtn
& nbsp & nbsp & nbsp & nbsp Panel5: TPanel
& nbsp & nbsp & nbsp & nbsp Labelbtn: TLabel
& nbsp & nbsp & nbsp & nbsp BitBtnResign: TBitBtn
& nbsp & nbsp & nbsp & nbsp Label7: TLabel
& nbsp & nbsp & nbsp & nbsp procedimiento FormCreate(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento ComboBox1Change(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento BitBtnResignClick(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento LabelbtnClick(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento BitBtn1Click(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp & nbsp & nbsp //Procedimiento para mostrar resto de Guijarros
& nbsp & nbsp & nbsp & nbsp procedimiento DispPebbles(const nPebs:integer)
& nbsp & nbsp & nbsp & nbsp //Procedimiento para restablecer las Variables y las Etiquetas despues de que el juego esta terminado
& nbsp & nbsp & nbsp & nbsp procedimiento de Terminar
& nbsp & nbsp & nbsp & nbsp //Procedimiento para habilitar o Deshabilitar algunos controles
& nbsp & nbsp & nbsp & nbsp procedimiento ManageEnabling(lValue:Boolean)
& nbsp & nbsp & nbsp & nbsp //Procedimiento para mostrar ganar o perder los mensajes
& nbsp & nbsp & nbsp & nbsp procedimiento de Mensajeria(const perdido:Boolean const renunciar:Boolean)
& nbsp & nbsp & nbsp & nbsp //Procedimiento Real para jugar el juego
& nbsp & nbsp & nbsp & nbsp Procedimiento LearnByMistakes
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp final
var
& nbsp & nbsp Form1: TForm1
aplicacion
{$R *.DFM}
var
PlayedGames,ComputerWon:Integer
totPebs,RemainPebs,nTurn:Integer
OldPageNum,OldLineNum:Integer
//18 posibles permutaciones de 3 digitos: 1, 2 y 3
//a determinar el numero de guijarros a tomar por el equipo
aPermutations:Array[1..6,1..3] of integer
// Un libro que contiene las paginas de instruccion(4) y las lineas(3 en cada pagina) para dibujar los guijarros de la computadora
aPages:Array[1..4,1..3] of integer
procedure TForm1.FormCreate(Sender: TObject)
// Permutaciones de 1,2 y 3 en el grupo de 3 a llenar la Matriz de permutacion
const cPermutations='123132213231312321'
var
x,y: Integer
begin
& nbsp & nbsp //Llenado de la Matriz de Permutacion
& nbsp & nbsp x:=1 to 6
& nbsp & nbsp & nbsp & nbsp para y:=1 to 3 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aPermutations[x,y]:=strtoInt(copia(cPermutations,(x-1)*3 y,1))
& nbsp & nbsp & nbsp //Llenado de las lineas de todas las paginas del Libro de instrucciones (matriz aPages[1..4,1..3]).
& nbsp & nbsp & nbsp x:=1 to 4 do
& nbsp & nbsp & nbsp & nbsp & nbsp para y:=1 to 3 do
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aPages[x,y]:=y
& nbsp & nbsp ComboBox1.ItemIndex:=1
& nbsp & nbsp PlayedGames:=0
& nbsp & nbsp ComputerWon:=0
& nbsp & nbsp totPebs:=17 {Default al 17 de guijarros}
& nbsp & nbsp RemainPebs:=17 {Todos estan intactos hasta Ahora}
fin
procedure TForm1.DispPebbles(const nPebs:integer)
begin
LabelPeb1.Caption:=intToStr(nPebs)
LabelPeb2.Caption:=LabelPeb1.Titulo
fin
procedure TForm1.ManageEnabling(lValue:Boolean)
begin
& nbsp & nbsp BitBtn1.Enabled:=lValue
& nbsp & nbsp BitBtn2.Enabled:=lValue
& nbsp & nbsp BitBtn3.Enabled:=lValue
& nbsp & nbsp Labelbtn.Enabled:=lValue
& nbsp & nbsp BitBtnResign.Enabled:=lValue
& nbsp & nbsp GroupBox1.Enabled:=lValue
& nbsp & nbsp si (RemainPebs<3) y (RemainPebs>0) y lValue, a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si RemainPebs<3, a continuacion, BitBtn3.Enabled:=False
& nbsp & nbsp & nbsp & nbsp si RemainPebs<2, a continuacion, BitBtn2.Enabled:=False
& nbsp & nbsp final
fin
procedure TForm1.Terminar
begin
& nbsp & nbsp LabelTotPlayed.caption:=intToStr(PlayedGames)
& nbsp & nbsp LabelIWon.caption:=intToStr(ComputerWon)
& nbsp & nbsp LabelYouWon.caption:=intToStr(PlayedGames-ComputerWon)
& nbsp & nbsp DispPebbles(strToInt(ComboBox1.Los Elementos[ComboBox1.ItemIndex]))
& nbsp & nbsp totPebs:=strtoint(LabelPeb1.Titulo)
& nbsp & nbsp RemainPebs:=totPebs
& nbsp & nbsp ManageEnabling(True)
& nbsp & nbsp ComboBox1.Enabled:=True
& nbsp & nbsp Labelbtn.Enabled:=False
& nbsp & nbsp BitBtnResign.Enabled:=False
fin
procedure TForm1.ComboBox1Change(Sender: TObject)
begin
DispPebbles(strToInt(ComboBox1.Los Elementos[ComboBox1.ItemIndex]))
totPebs:=strtoint(LabelPeb1.Titulo)
RemainPebs:=totPebs
fin
procedure TForm1.Mensajeria(const perdido:Boolean const renunciar:Boolean)
begin
& nbsp & nbsp inc(PlayedGames)
& nbsp & nbsp MESSAGEBEEP(0)
& nbsp & nbsp caso de perdida, a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si renunciando a continuacion, showmessage('renuncio ! Usted gano el juego de nuevo !!')
& nbsp & nbsp & nbsp & nbsp else showmessage ('¡Felicitaciones ! Has ganado !! Me reconoce la derrota !')
& nbsp & nbsp final
& nbsp & nbsp else
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp inc(ComputerWon)
& nbsp & nbsp & nbsp & nbsp showmessage('Hola ! Has perdido ! HE GANADO ESTE JUEGO !!')
& nbsp & nbsp final
& nbsp & nbsp Terminar
fin
Procedure TForm1.LearnByMistakes
var
x,PageNum,LineNum,nTemp,nTakes:integer
begin
& nbsp & nbsp si RemainPebs<=0, entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp //Openent señalo a la ultima piedra(s) ! Equipo gano !!
& nbsp & nbsp & nbsp & nbsp //DispPebbles(0)
& nbsp & nbsp & nbsp & nbsp Mensajeria(False,False);
& nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp final
& nbsp & nbsp nTemp:=random(6) 1
& nbsp & nbsp PageNum:=RemainPebs mod 4
& nbsp & nbsp si PageNum=0, entonces PageNum:=4
& nbsp & nbsp x:= 1 to 3 do
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp LineNum:= aPermutations[nTemp,x]
& nbsp & nbsp & nbsp & nbsp si (aPages[PageNum,LineNum]>0 ) luego se rompen
& nbsp & nbsp final
& nbsp & nbsp si x>3, entonces {No sin marcar instrucciones permanecio ! Todos son redmarked !!}
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp // El efecto de este movimiento era desconocido previamente. Pero resulto ser fatal este tiempo !
& nbsp & nbsp & nbsp & nbsp // RedMark Este oldLineNum de este oldPageNum !
& nbsp & nbsp & nbsp & nbsp aPages[OldPageNum,OldLineNum]:=-99
& nbsp & nbsp & nbsp & nbsp // Perdido con Renunciar Mensaje !
& nbsp & nbsp & nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. Renuncie a ')
& nbsp & nbsp & nbsp & nbsp DispPebbles(RemainPebs)
& nbsp & nbsp & nbsp & nbsp Mensajeria(True,True)
& nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp final
& nbsp & nbsp nTakes:=aPages[PageNum,LineNum]
& nbsp & nbsp si nTakes>=RemainPebs, a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. I (Equipo): 'intTostr(RemainPebs))
& nbsp & nbsp & nbsp & nbsp //yo soy el ultimo cajon y he perdido !!
& nbsp & nbsp & nbsp & nbsp // RedMark Este LineNum de este PageNum !
& nbsp & nbsp & nbsp & nbsp aPages[PageNum,LineNum]:=-99
& nbsp & nbsp & nbsp & nbsp DispPebbles(0)
& nbsp & nbsp & nbsp & nbsp Mensajeria(True,False)
& nbsp & nbsp & nbsp & nbsp salida
& nbsp & nbsp final
& nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. I (Equipo): 'intTostr(nTakes))
& nbsp & nbsp showmessage('I (Equipo):' IntTostr(nTakes) ' Piedra(s) para este turno !')
& nbsp & nbsp OldPageNum:=PageNum
& nbsp & nbsp oldLineNum:=LineNum
& nbsp & nbsp RemainPebs:=RemainPebs-nTakes
& nbsp & nbsp ManageEnabling(True)
& nbsp & nbsp DispPebbles(RemainPebs)
fin
procedure TForm1.BitBtnResignClick(Sender: TObject)
begin
inc(PlayedGames)
inc(ComputerWon)
inc(nTurn)
ListBox1.Elementos.agregar(intTostr(nTurn) '. Usted renuncio a')
Final
fin
procedure TForm1.LabelbtnClick(Sender: TObject)
begin
BitBtnResign.SetFocus
BitBtnResign.Haga clic en
fin
procedure TForm1.BitBtn1Click(Sender: TObject)
var
nTaken:Integer
begin
& nbsp & nbsp con el Remitente como TBitBtn hacer nTaken:=Etiqueta
& nbsp & nbsp ManageEnabling(Falso)
& nbsp & nbsp si (RemainPebs=totPebs), a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp ComboBox1.Enabled:=False
& nbsp & nbsp & nbsp & nbsp ListBox1.Claro
& nbsp & nbsp & nbsp & nbsp nTurn:=1
& nbsp & nbsp final
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp inc(nTurn)
& nbsp & nbsp ListBox1.Elementos.agregar(intTostr(nTurn) '. Usted: 'intTostr(nTaken))
& nbsp & nbsp RemainPebs:=RemainPebs-nTaken
& nbsp & nbsp DispPebbles(RemainPebs)
& nbsp & nbsp LearnByMistakes
fin
final.
Un archivo comprimido game.zip contiene todas las materias (formularios, unidades y archivo de proyecto) de la ejecucion de proyectos de este juego. Este proyecto fue compilado y ejecutado con Delphi 3.
En el pasado para los amigos interesados:
he programado un juego de pensamiento estrategico de la utilizacion de los principios de la Inteligencia Artificial. El juego de alguna manera es como el Ajedrez.
El juego fue programado usando en powerbasic y el Lenguaje ensamblador. Este juego ha ganado el Primer Premio en El Primer Nepal Software de la Competencia, SOFTWARE de este CUMPLAN con el año 2000. El juego se puede descargar en: http//:www.viewnepal.com/gamezip.exe (un auto extraer archivos de archivo). Estare encantado de proporcionar una copia a traves de correo electronico si la descarga no funciona.
game.zip
Un ejemplo simple de la inteligencia artificial usando delphi matriz
By Consejos Y Trucos
Un ejemplo simple de la inteligencia artificial usando delphi matriz : Multi-millones de consejos para hacer su vida más fácil.