Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet

Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet

09.09.2013 Views

138 Bilag A 391 n . c h i l d r e n . add ( nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] ) ) ; 392 i n t v = max( nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] ) , alpha , beta , 1 ) ; 393 i f ( n . a > v ) 394 n . a = v ; 395 i f ( n . a < alpha ) { 396 b [ c ] [ r ] = 2 ; 397 b [ c +1][ r ] = 2 ; 398 r e t u r n ( n . a ) ; 399 } 400 i f ( beta > n . a ) 401 beta = n . a ; 402 } 403 i f ( p [ 2 ] == −1){ 404 p [2]= nodes [ p [ 0 ] ] [ p [ 1 ] ] . s i z e ( ) ; 405 nodes [ p [ 0 ] ] [ p [ 1 ] ] . add ( n . addChild ( tNode . createChildNode ( c , r , c +1, r , n ) ) ) ; 406 count++; 407 i n t v = max( nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] ) , alpha , beta , 0 ) ; 408 i f ( n . a > v ) 409 n . a = v ; 410 i f ( n . a < alpha ) { 411 b [ c ] [ r ] = 2 ; 412 b [ c +1][ r ] = 2 ; 413 r e t u r n ( n . a ) ; 414 } 415 i f ( beta > n . a ) 416 beta = n . a ; 417 } 418 b [ c ] [ r ] = 0 ; 419 b [ c +1][ r ] = 1 ; 420 421 p = c h e c k B o a r d I n d i v i d u a l i t y ( b , d ) ; 422 i f ( p [ 2 ] >= 0) { 423 nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] ) . par . add ( n ) ; 424 n . c h i l d r e n . add ( nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] ) ) ; 425 i n t v = max( nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] ) , alpha , beta , 1 ) ; 426 i f ( n . a > v ) 427 n . a = v ; 428 i f ( n . a < alpha ) { 429 b [ c ] [ r ] = 2 ; 430 b [ c +1][ r ] = 2 ; 431 r e t u r n ( n . a ) ; 432 } 433 i f ( beta > n . a ) 434 beta = n . a ; 435 } 436 i f ( p [ 2 ] == −1){ 437 p [2]= nodes [ p [ 0 ] ] [ p [ 1 ] ] . s i z e ( ) ; 438 nodes [ p [ 0 ] ] [ p [ 1 ] ] . add ( n . addChild ( tNode . createChildNode ( c +1, r , c , r , n ) ) ) ;

A.3 AITaijiLocalAreaAB.java 139 439 count++; 440 i n t v = max( nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] ) , alpha , beta , 0 ) ; 441 i f ( n . a > v ) 442 n . a = v ; 443 i f ( n . a < alpha ) { 444 b [ c ] [ r ] = 2 ; 445 b [ c +1][ r ] = 2 ; 446 r e t u r n ( n . a ) ; 447 } 448 i f ( beta > n . a ) 449 beta = n . a ; 450 } 451 b [ c ] [ r ] = 2 ; 452 b [ c +1][ r ] = 2 ; 453 } 454 } 455 } 456 r e t u r n ( n . a ) ; 457 } 458 } 459 460 461 462 463 // s a e t t e r s c o r e n f o r en node t i l −”u e n d e l i g ” 464 p r i v a t e Node setScoreMin ( Node n ) { 465 n . a = −tModel . maxScore ; 466 r e t u r n ( n ) ; 467 } 468 // s a e t t e r s c o r e n f o r en node t i l ” u e n d e l i g ” 469 p r i v a t e Node setScoreMax ( Node n ) { 470 n . a = tModel . maxScore ; 471 r e t u r n ( n ) ; 472 } 473 474 475 476 p u b l i c Node returnMove ( boolean b ) { 477 i f ( tModel . currentTurn == 1) { 478 tNode = new Node ( ) ; 479 Root = tNode . createNode ( tModel . currentTurn , tModel ) ; 480 Root . wc=tModel . noCols / 2 ; 481 Root . wr=tModel . noCols / 2 ; 482 Root . bc=Root . wc ; 483 Root . br=Root . wr+1; 484 r e t u r n ( Root ) ; 485 } 486 LocalAreaAB ( ) ; 487 488 w h i l e ( Root . c h i l d r e n . s i z e ( ) == 0 && tModel . movesLeft ( ) ) { 489 i f ( b ) 490 min ( Root ,−tModel . maxScore , tModel . maxScore , 0 ) ; 491 i f ( ! b ) 492 max( Root ,−tModel . maxScore , tModel . maxScore , 0 ) ;

A.3 AI<strong>Taiji</strong>LocalAreaAB.java 139<br />

439 count++;<br />

440 i n t v = max( nodes [ p [ 0 ] ] [ p [ 1 ] ] . get ( p [ 2 ] )<br />

, alpha , beta , 0 ) ;<br />

441 i f ( n . a > v )<br />

442 n . a = v ;<br />

443 i f ( n . a < alpha ) {<br />

444 b [ c ] [ r ] = 2 ;<br />

445 b [ c +1][ r ] = 2 ;<br />

446 r e t u r n ( n . a ) ;<br />

447 }<br />

448 i f ( beta > n . a )<br />

449 beta = n . a ;<br />

450 }<br />

451 b [ c ] [ r ] = 2 ;<br />

452 b [ c +1][ r ] = 2 ;<br />

453 }<br />

454 }<br />

455 }<br />

456 r e t u r n ( n . a ) ;<br />

457 }<br />

458 }<br />

459<br />

460<br />

461<br />

462<br />

463 // s a e t t e r s c o r e n f o r en node t i l −”u e n d e l i g ”<br />

464 p r i v a t e Node setScoreMin ( Node n ) {<br />

465 n . a = −tModel . maxScore ;<br />

466 r e t u r n ( n ) ;<br />

467 }<br />

468 // s a e t t e r s c o r e n f o r en node t i l ” u e n d e l i g ”<br />

469 p r i v a t e Node setScoreMax ( Node n ) {<br />

470 n . a = tModel . maxScore ;<br />

471 r e t u r n ( n ) ;<br />

472 }<br />

473<br />

474<br />

475<br />

476 p u b l i c Node returnMove ( boolean b ) {<br />

477 i f ( tModel . currentTurn == 1) {<br />

478 tNode = new Node ( ) ;<br />

479 Root = tNode . createNode ( tModel . currentTurn , tModel ) ;<br />

480 Root . wc=tModel . noCols / 2 ;<br />

481 Root . wr=tModel . noCols / 2 ;<br />

482 Root . bc=Root . wc ;<br />

483 Root . br=Root . wr+1;<br />

484 r e t u r n ( Root ) ;<br />

485 }<br />

486 LocalAreaAB ( ) ;<br />

487<br />

488 w h i l e ( Root . c h i l d r e n . s i z e ( ) == 0 && tModel . movesLeft ( ) ) {<br />

489 i f ( b )<br />

490 min ( Root ,−tModel . maxScore , tModel . maxScore , 0 ) ;<br />

491 i f ( ! b )<br />

492 max( Root ,−tModel . maxScore , tModel . maxScore , 0 ) ;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!