home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JSAMPLES.Z / MoveNode.java < prev    next >
Text File  |  1998-05-08  |  3KB  |  111 lines

  1. /*
  2.  * Copyright (c) 1997-1998 Borland International, Inc. All Rights Reserved.
  3.  * 
  4.  * This SOURCE CODE FILE, which has been provided by Borland as part
  5.  * of a Borland product for use ONLY by licensed users of the product,
  6.  * includes CONFIDENTIAL and PROPRIETARY information of Borland.  
  7.  *
  8.  * USE OF THIS SOFTWARE IS GOVERNED BY THE TERMS AND CONDITIONS 
  9.  * OF THE LICENSE STATEMENT AND LIMITED WARRANTY FURNISHED WITH
  10.  * THE PRODUCT.
  11.  *
  12.  * IN PARTICULAR, YOU WILL INDEMNIFY AND HOLD BORLAND, ITS RELATED
  13.  * COMPANIES AND ITS SUPPLIERS, HARMLESS FROM AND AGAINST ANY CLAIMS
  14.  * OR LIABILITIES ARISING OUT OF THE USE, REPRODUCTION, OR DISTRIBUTION
  15.  * OF YOUR PROGRAMS, INCLUDING ANY CLAIMS OR LIABILITIES ARISING OUT OF
  16.  * OR RESULTING FROM THE USE, MODIFICATION, OR DISTRIBUTION OF PROGRAMS
  17.  * OR FILES CREATED FROM, BASED ON, AND/OR DERIVED FROM THIS SOURCE
  18.  * CODE FILE.
  19.  */
  20.  /*
  21.  * %W% %E%
  22.  *
  23.  *     H
  24.  *
  25.  */
  26. package borland.samples.apps.chess.client;
  27.  
  28. import borland.samples.apps.chess.client.board.*;
  29.  
  30. public class MoveNode
  31. {
  32.   Boardsquares pieceColor = new Boardsquares();
  33.   Boardsquares pieceValue = new Boardsquares();
  34.   String movetext = new String("_");
  35.   String comment = new String(" ");
  36.   int nestlevel = 0;
  37.   int prevsub = -1;
  38.   int movenum = 0;
  39.   boolean [] qCastleForfeited = new boolean [2];
  40.   boolean [] kCastleForfeited = new boolean [2];
  41.   int enpassantFile = -1;
  42.  
  43.   public MoveNode() {
  44.     for (int i = 0;i < 2;i++) {
  45.       this.qCastleForfeited[i] = false;
  46.       this.kCastleForfeited[i] = false;
  47.     }
  48.   }
  49.  
  50.   public void assign(int file,int rank,int piece,int clr) {
  51.     pieceValue.assign(file,rank,piece);
  52.     pieceColor.assign(file,rank,clr);
  53.   }
  54.  
  55.   public boolean equals(MoveNode x) {
  56.     if (pieceColor.equals(x.pieceColor) &&
  57.         pieceValue.equals(x.pieceValue) &&
  58.         qCastleForfeited[0] == x.qCastleForfeited[0]   &&
  59.         kCastleForfeited[0] == x.kCastleForfeited[0] &&
  60.         qCastleForfeited[1] == x.qCastleForfeited[1]   &&
  61.         kCastleForfeited[1] == x.kCastleForfeited[1] &&
  62.         enpassantFile < 0 &&
  63.         x.enpassantFile < 0 )
  64.       return true;
  65.     else
  66.       return false;
  67.   }
  68.  
  69.   public boolean matchingPawnSkeleton(MoveNode x) {
  70.     int ourSquare;
  71.     int theirSquare;
  72.     for (int file = 0;file < 8;file++)
  73.       for (int rank = 0;rank < 8;rank++) {
  74.         ourSquare = pieceValue.value(file,rank);
  75.         theirSquare = x.pieceValue.value(file,rank);
  76.         if (ourSquare == theirSquare);
  77.         else
  78.           if (ourSquare == Chessboard.PAWN ||
  79.             theirSquare == Chessboard.PAWN)
  80.             return false;
  81.       }
  82.     return true;
  83.   }
  84.  
  85.   public int pieceValues(int Color) {
  86.     int sum = 0;
  87.     for (int column=0;column<8;column++)
  88.       for (int row=0;row<8;row++)
  89.         if (pieceColor.value(column,row) == Color)
  90.           sum = sum + pieceValue.value(column,row);
  91.     return sum;
  92.   }
  93.  
  94.   public int pieceCount() {
  95.     return pieceValue.nonZeroElementCount();
  96.   }
  97.  
  98.   public void copy(MoveNode from){
  99.     this.pieceColor.init(from.pieceColor);
  100.     this.pieceValue.init(from.pieceValue);
  101.     for (int i = 0;i < 2;i++) {
  102.       this.qCastleForfeited[i] = from.qCastleForfeited[i];
  103.       this.kCastleForfeited[i] = from.kCastleForfeited[i];
  104.     }
  105.     this.enpassantFile = from.enpassantFile;
  106.   }
  107. }  //end of class
  108.  
  109.  
  110.  
  111.