Sunteți pe pagina 1din 7

//Versión del programa que coloca 8 reinas en un tablero de ajedrez sin que se ataquen

//encuentra las 92 posibles soluciones


//Por: Boris Espitia Machado
//Docente Departamento de Informática y Medios Audiovisuales
//Universidad de Córdoba
// 2010 - II

package
{
import flash.display.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.text.TextField;

public class reinas extends Sprite


{
public var a : Array = [0, 0, 0, 0, 0, 0, 0, 0]
public var t : TextField;
public var t1 : TextField;
public var r1 : Sprite;
public var ta : Sprite;
public var r2 : Sprite;
public var r3 : Sprite;
public var r4 : Sprite;
public var r5 : Sprite;
public var r6 : Sprite;
public var r7 : Sprite;
public var r8 : Sprite;
public var boton : Sprite;

public var v : int;


public var i : int;
public var j : int;
public var s : int;
public var k : int;
public var m : int;
public var oi : int;

public var tablero : Bitmap


public var reina1 : Bitmap
public var reina2 : Bitmap
public var reina3 : Bitmap
public var reina4 : Bitmap
public var reina5 : Bitmap
public var reina6 : Bitmap
public var reina7 : Bitmap
public var reina8 : Bitmap
public var loadert : Loader

private function cargatablero(event : Event) : void {tablero = new Bitmap(event.target.content.bitmapData)}

private function cargareina1(event : Event) : void {reina1 = new Bitmap(event.target.content.bitmapData)}

private function cargareina2(event : Event) : void {reina2 = new Bitmap(event.target.content.bitmapData)}

private function cargareina3(event : Event) : void {reina3 = new Bitmap(event.target.content.bitmapData)}

private function cargareina4(event : Event) : void {reina4 = new Bitmap(event.target.content.bitmapData)}

private function cargareina5(event : Event) : void {reina5 = new Bitmap(event.target.content.bitmapData)}

private function cargareina6(event : Event) : void {reina6 = new Bitmap(event.target.content.bitmapData)}

private function cargareina7(event : Event) : void {reina7 = new Bitmap(event.target.content.bitmapData)}

private function cargareina8(event : Event) : void {reina8 = new Bitmap(event.target.content.bitmapData)}

public function cargar() : void


{
loadert = new Loader;
loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargatablero);
loadert.load(new URLRequest("../img/tablero.jpg"));
ta.x = 80
ta.y = 50
ta.addChild(loadert)
addChild(ta)

loadert = new Loader;


loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina1);
loadert.load(new URLRequest("../img/reina_roja.png"));
r1.x = 60
r1.y = 70
r1.addChild(loadert)
addChild(r1)
loadert = new Loader;
loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina2);
loadert.load(new URLRequest("../img/reina_roja.png"));
r2.x = 60
r2.y = 130
r2.addChild(loadert)
addChild(r2)

loadert = new Loader;


loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina3);
loadert.load(new URLRequest("../img/reina_roja.png"));
r3.x = 60
r3.y = 190
r3.addChild(loadert)
addChild(r3)

loadert = new Loader;


loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina4);
loadert.load(new URLRequest("../img/reina_roja.png"));
r4.x = 60
r4.y = 245
r4.addChild(loadert)
addChild(r4)

loadert = new Loader;


loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina5);
loadert.load(new URLRequest("../img/reina_roja.png"));
r5.x = 60
r5.y = 300
r5.addChild(loadert)
addChild(r5)

loadert = new Loader;


loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina6);
loadert.load(new URLRequest("../img/reina_roja.png"));
r6.x = 60
r6.y = 360
r6.addChild(loadert)
addChild(r6)

loadert = new Loader;


loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina7);
loadert.load(new URLRequest("../img/reina_roja.png"));
r7.x = 60
r7.y = 415
r7.addChild(loadert)
addChild(r7)

loadert = new Loader;


loadert.contentLoaderInfo.addEventListener(Event.COMPLETE, cargareina8);
loadert.load(new URLRequest("../img/reina_roja.png"));
r8.x = 60
r8.y = 475
r8.addChild(loadert)
addChild(r8)
}

public function verifica(vv:int, ii:int, jj:int) : int


{
if ( ii > 0)
{ k = ii - 1 }
else
{k=0}
m=1
while (k >= 0)
{
if (a[k] === jj) { vv = 1 }
if ((jj-m > 0) && (a[k] == jj - m )) { vv = 1 }
if ((jj+m < 9) && (a[k] == jj + m )) { vv = 1 }
k=k-1
m=m+1
}
return vv
}

public function movereina(ii:int, jj:int) : void


{
if (ii == 0) {r1.x = 60 + jj*56 }
else
if (ii == 1) {r2.x = 60 + jj*56 }
else
if (ii == 2) {r3.x = 60 + jj*56 }
else
if (ii == 3) {r4.x = 60 + jj*56 }
else
if (ii == 4) {r5.x = 60 + jj*56 }
else
if (ii == 5) {r6.x = 60 + jj*56 }
else
if (ii == 6) {r7.x = 60 + jj*56 }
else
if (ii == 7) {r8.x = 60 + jj*56 }
}

public function procesa(tecla:MouseEvent) : void


{ i = oi
j = a[i] + 1
a[i] = 0
movereina(i, 0);
v = 0;
while (i <= 7)
{
while (j <= 8)
{ v = verifica(v, i, j);
if (v == 0)
{
a[i] = j;
movereina(i, j);
oi = i
j = 10;
}
else
{
v = 0;
j = j + 1;
}
}
if (j != 10)
{
v = 0;
i=i-1
j = a[i] + 1
a[i] = 0
movereina(i, 0);
}
else
{
i=i+1
j = 1;
}
}
t.text = 'SOLUCIÓN NÚMERO : ' + s
s=s+1
if (s == 93)
{ s = 1}
}

public function reinas()


{
ta = new Sprite;
r1 = new Sprite;
r2 = new Sprite;
r3 = new Sprite;
r4 = new Sprite;
r5 = new Sprite;
r6 = new Sprite;
r7 = new Sprite;
r8 = new Sprite;
boton = new Sprite
t = new TextField
t1 = new TextField

t.x = 600
t.y = 200
t.height = 30
t.width = 145

t1.x = 600
t1.y = 250
t1.width = 130
t1.height = 22
t1.mouseEnabled = false
t1.text =' GENERAR SOLUCIÓN'

boton.graphics.beginFill(0xEBEBEB)
boton.graphics.drawRoundRect(600, 250, 140, 22, 50, 22)
boton.buttonMode = true
boton.useHandCursor = true
boton.addEventListener(MouseEvent.CLICK, procesa);

oi = 0
s=1

cargar();

addChild(t);
addChild(boton)
boton.addChild(t1)
}
}

S-ar putea să vă placă și