<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="pageInit()">

<mx:Script>   <![CDATA[
	import mx.controls.DataGrid;
	import mx.containers.HBox;
	import mx.controls.Alert;       //ActionScript statements  
    var tomb:Array= [[0,0,4,8,0,0,0,1,0],[0,0,0,9,6,0,3,0,0],[3,0,0,4,0,2,0,0,0],
   					[1,5,8,0,0,0,0,7,0],[0,7,0,0,8,0,0,0,0],[0,0,2,0,0,9,1,8,0],
   					[0,6,0,0,0,0,0,0,3],[5,0,0,3,0,1,0,4,0],[0,0,0,0,9,0,8,0,0]];
  
public function update(x:int,y:int,d:Event):void { //A függvény megváltoztatja a hívó gomb számát,  
												   // és a tömbbeli elem értékét, ha erre a szabályok szerint lehetőség van
    var rate:Number = 120;
   
    var value=   radiogroup1.selectedValue.toString();
   // myLabel.text="mas";
 
      if(value=='0'){tomb[x][y]=0; Button(  d.target).label  = '0'; return;}
      for(var i:int=0;i<9;i++){
      	if(i==y) continue;
               if(tomb[x][i]==value )
      		{    /*Alert.show("sormiatt");	*/return;}
      }
      for(var j:int=0;j<9;j++){
      	if(j==x) continue;
               if(tomb[j][y]==value)
               {/*Alert.show("oszlop");*/	return;}
      }
      if(negyed(x,y));
       else{/*Alert.show("negyed miatt");*/ return;}
      
      
       tomb[x][y]=  value;
      Button(  d.target).label  =    value;
    //  Button(  d.target).label=   adatok[0].toString();
//       var dg:DataGrid =new DataGrid();
  //     dg.dataProvider=adatok.table.sor;
}

function negyed(x:int,y:int):Boolean // eldönti hogy az adott 3x3 mas blokkba be lehet-e szúrni a kiválasztott elemet
{
	var num=radiogroup1.selectedValue.toString();
	
	if(x <3){
	 	if(y <3){ // 1 1 kilenced
			 for(var i=0;i<=2;i++)
	   			for(var j=0;j<=2;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	if(y <6){ // 1 2 kilenced
			 for(var i=0;i<=2;i++)
	   			for(var j=3;j<=5;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	if(y <9){ // 1 3 kilenced az if trivialis
			 for(var i=0;i<=2;i++)
	   			for( j=6;j<=8;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	
	}
	if(x <6){
	 	if(y <3){ // 2 1 kilenced
			 for(var i=3;i<=5;i++)
	   			for(var j=0;j<=2;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	if(y <6){ // 2 2 kilenced
			 for(var i=3;i<=5;i++)
	   			for(var j=3;j<=5;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	if(y <9){ // 2 3 kilenced az if trivialis
			 for(var i=3;i<=5;i++)
	   			for( j=6;j<=8;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	
	}
	if(x <9){ //if nem kellene
	 	if(y <3){ // 1 1 kilenced
			 for(var i=6;i<=8;i++)
	   			for(var j=0;j<=2;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	if(y <6){ // 1 2 kilenced
			 for(var i=6;i<=8;i++)
	   			for(var j=3;j<=5;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	if(y <9){ // 1 3 kilenced az if trivialis
			 for(var i=6;i<=8;i++)
	   			for( j=6;j<=8;j++)	 
	    				if(tomb[i][j] == num)
	    						return false;
	   	return true; 			
	 	}
	 	
	}
	
	
	return false;
}
// amikor az oldal elkészül akkor hívódik meg
public function pageInit():void{  //ez egy kis trükközés. Így érem el a gomb elemeket 
								 //és letiltom azokat a gombokat amelyeknek az értéke már meg van adva
	var ar:Array=   	valami.getChildren();
  for(var i:int=0;i < ar.length;i++){
   if(   ar[i] instanceof HBox){
   	  var hboxx:Array =HBox(ar[i]).getChildren();
   	  
	  for(var j:int=0;j <hboxx.length ;j++)
	     if(   hboxx[j] instanceof Button){
	     	if( Button(hboxx[j]).label!='0')
		     	 Button(hboxx[j]).enabled=false;
	     }
   }
 
   
  }
  
}

 ]]> </mx:Script> 
 	 
	<mx:Panel title="Sudoku játék" width="702" height="622" x="5" >
		
 
		<mx:HBox >
		 
	
 
		<mx:RadioButtonGroup  id="radiogroup1"/>
		<mx:RadioButton label="1" groupName="radiogroup1" selected="true"/>
		<mx:RadioButton label="2" groupName="radiogroup1"/>
		<mx:RadioButton label="3" groupName="radiogroup1"/>
		<mx:RadioButton label="4" groupName="radiogroup1"/>
		<mx:RadioButton label="5" groupName="radiogroup1"/>
		<mx:RadioButton label="6" groupName="radiogroup1"/>
		<mx:RadioButton label="7" groupName="radiogroup1"/>
		<mx:RadioButton label="8" groupName="radiogroup1"/>
		<mx:RadioButton label="9" groupName="radiogroup1"/>
		<mx:RadioButton label="0" groupName="radiogroup1"/>
				</mx:HBox>
		<mx:VBox id="valami" height="100%" width="675">
			<mx:HBox width="100%">
			<!-- igy nem szabad mert igy statikus az adatkotes-->
				<mx:Button id="df" label="{tomb[0][0]}" click="update(0,0,event )"/>
				<mx:Button label="{tomb[0][1]}" click="update(0,1,event)" enabled="false"/>
				<mx:Button label="{tomb[0][2]}" click="update(0,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[0][3]}" click="update(0,3,event)"/>
				<mx:Button label="{tomb[0][4]}" click="update(0,4,event)"/>
				<mx:Button label="{tomb[0][5]}" click="update(0,5,event)"/>
		<mx:Spacer/>
				<mx:Button label="{tomb[0][6]}" click="update(0,6,event)"/>
				<mx:Button label="{tomb[0][7]}" click="update(0,7,event)"/>
				<mx:Button label="{tomb[0][8]}" click="update(0,8,event)"/>
			</mx:HBox>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[1][0]}" click="update(1,0,event)"/>
				<mx:Button label="{tomb[1][1]}" click="update(1,1,event)"/>
				<mx:Button label="{tomb[1][2]}" click="update(1,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[1][3]}" click="update(1,3,event)"/>
				<mx:Button label="{tomb[1][4]}" click="update(1,4,event)"/>
				<mx:Button label="{tomb[1][5]}" click="update(1,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[1][6]}" click="update(1,6,event)"/>
				<mx:Button label="{tomb[1][7]}" click="update(1,7,event)"/>
				<mx:Button label="{tomb[1][8]}" click="update(1,8,event)"/>
			</mx:HBox>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[2][0]}" click="update(2,0,event)"/>
				<mx:Button label="{tomb[2][1]}" click="update(2,1,event)"/>
				<mx:Button label="{tomb[2][2]}" click="update(2,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[2][3]}" click="update(2,3,event)"/>
				<mx:Button label="{tomb[2][4]}" click="update(2,4,event)"/>
				<mx:Button label="{tomb[2][5]}" click="update(2,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[2][6]}" click="update(2,6,event)"/>
				<mx:Button label="{tomb[2][7]}" click="update(2,7,event)"/>
				<mx:Button label="{tomb[2][8]}" click="update(2,8,event)"/>
			</mx:HBox>
			 
			<mx:Spacer/>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[3][0]}" click="update(3,0,event)"/>
				<mx:Button label="{tomb[3][1]}" click="update(3,1,event)"/>
				<mx:Button label="{tomb[3][2]}" click="update(3,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[3][3]}" click="update(3,3,event)"/>
				<mx:Button label="{tomb[3][4]}" click="update(3,4,event)"/>
				<mx:Button label="{tomb[3][5]}" click="update(3,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[3][6]}" click="update(3,6,event)"/>
				<mx:Button label="{tomb[3][7]}" click="update(3,7,event)"/>
				<mx:Button label="{tomb[3][8]}" click="update(3,8,event)"/>
			</mx:HBox>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[4][0]}" click="update(4,0,event)"/>
				<mx:Button label="{tomb[4][1]}" click="update(4,1,event)"/>
				<mx:Button label="{tomb[4][2]}" click="update(4,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[4][3]}" click="update(4,3,event)"/>
				<mx:Button label="{tomb[4][4]}" click="update(4,4,event)"/>
				<mx:Button label="{tomb[4][5]}" click="update(4,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[4][6]}" click="update(4,6,event)"/>
				<mx:Button label="{tomb[4][7]}" click="update(4,7,event)"/>
				<mx:Button label="{tomb[4][8]}" click="update(4,8,event)"/>
			</mx:HBox>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[5][0]}" click="update(5,0,event)"/>
				<mx:Button label="{tomb[5][1]}" click="update(5,1,event)"/>
				<mx:Button label="{tomb[5][2]}" click="update(5,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[5][3]}" click="update(5,3,event)"/>
				<mx:Button label="{tomb[5][4]}" click="update(5,4,event)"/>
				<mx:Button label="{tomb[5][5]}" click="update(5,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[5][6]}" click="update(5,6,event)"/>
				<mx:Button label="{tomb[5][7]}" click="update(5,7,event)"/>
				<mx:Button label="{tomb[5][8]}" click="update(5,8,event)"/>
			</mx:HBox>
			 
			<mx:Spacer/>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[6][0]}" click="update(6,0,event)"/>
				<mx:Button label="{tomb[6][1]}" click="update(6,1,event)"/>
				<mx:Button label="{tomb[6][2]}" click="update(6,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[6][3]}" click="update(6,3,event)"/>
				<mx:Button label="{tomb[6][4]}" click="update(6,4,event)"/>
				<mx:Button label="{tomb[6][5]}" click="update(6,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[6][6]}" click="update(6,6,event)"/>
				<mx:Button label="{tomb[6][7]}" click="update(6,7,event)"/>
				<mx:Button label="{tomb[6][8]}" click="update(6,8,event)"/>
			</mx:HBox>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[7][0]}" click="update(7,0,event)"/>
				<mx:Button label="{tomb[7][1]}" click="update(7,1,event)"/>
				<mx:Button label="{tomb[7][2]}" click="update(7,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[7][3]}" click="update(7,3,event)"/>
				<mx:Button label="{tomb[7][4]}" click="update(7,4,event)"/>
				<mx:Button label="{tomb[7][5]}" click="update(7,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[7][6]}" click="update(7,6,event)"/>
				<mx:Button label="{tomb[7][7]}" click="update(7,7,event)"/>
				<mx:Button label="{tomb[7][8]}" click="update(7,8,event)"/>
			</mx:HBox>
			<mx:HBox width="100%">
				<mx:Button label="{tomb[8][0]}" click="update(8,0,event)"/>
				<mx:Button label="{tomb[8][1]}" click="update(8,1,event)"/>
				<mx:Button label="{tomb[8][2]}" click="update(8,2,event)"/>
				<mx:Spacer/>
				<mx:Button label="{tomb[8][3]}" click="update(8,3,event)"/>
				<mx:Button label="{tomb[8][4]}" click="update(8,4,event)"/>
				<mx:Button label="{tomb[8][5]}" click="update(8,5,event)"/>
			<mx:Spacer/>
				<mx:Button label="{tomb[8][6]}" click="update(8,6,event)"/>
				<mx:Button label="{tomb[8][7]}" click="update(8,7,event)"/>
				<mx:Button label="{tomb[8][8]}" click="update(8,8,event)"/>
			</mx:HBox>
			 
		
			
			
		</mx:VBox>
    </mx:Panel>

</mx:Application>
