Package dominoes.gui

Source Code of dominoes.gui.DrawingArea$MovingAdapter

package dominoes.gui;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.AffineTransform;
import java.util.Hashtable;
import java.util.Stack;
import java.util.Vector;

import javax.swing.JPanel;


public class DrawingArea extends JPanel  {

  /**
   *
   */
  private static final long serialVersionUID = 1L;
  int weith=1270;
  int height=500;
  int x=0;
  int y=100;
  int xMax=x+weith;
  int yMax=y+height;
  int xDraw=0;
  int yDraw=0;
  int totalPlayers=0;
  boolean myTurn=false;
  int totalSpaces=13;
  int idPlayer=0;
 
  ZRectangle [][] zrectArray = new ZRectangle[9][totalSpaces];
  Dominoe [] playerChips = new Dominoe[100];
  Hashtable <Integer, Integer> positions= new Hashtable <Integer, Integer> () ;
  boolean [] positionFree = new boolean [28];
  private boolean TrainPerTrack [];
 
  ZRectangle zrect;
  String i="0";
  String j="0";
  private String imgFileName = "images/"+ i + "_" + j + ".png";//fichaDomino_2.png";
  private static boolean moveDone=false;

  public DrawingArea (int _totalPlayers, int _IdPlayer){

    this.totalPlayers=_totalPlayers;
    this.idPlayer=_IdPlayer;
    int newy=y+5;
    int newx=x+20;
    int cont=0;
   
    Vector <Integer> playChips= ClientInterface.player.getMyChips();
   
 
    MovingAdapter ma = new MovingAdapter();
    addMouseMotionListener(ma);
    addMouseListener(ma);
    initPositions();
 
    for (int i=0; i<totalPlayers+1; i++){
      newx=x+20;
      for (int j=0; j< totalSpaces; j++)
      {
        zrectArray[i][j]=new ZRectangle(newx, newy, 85, 43);
        newx=newx+95;
      }
      newy=newy+55;
    }


    for(int i=0; i<=12; i++)
    {
      for(int j=i; j<=12; j++)
      {
        imgFileName = "images/"+ i + "_" + j + ".png";
        if(cont%2==0){
          playerChips[cont]= new Dominoe (0,0,imgFileName,this,0);
        }else{
          playerChips[cont]= new Dominoe (0,45,imgFileName,this,0);
        }
        cont++;
      }
    }

    for(int i=0; i<playChips.size(); i++)
    {
      playerChips[playChips.get(i)].setPositionNumber(i);
      playerChips[playChips.get(i)].setX(positions.get(i));
      if(i%2==0)
      {
        playerChips[playChips.get(i)].setY(0);
      }else
      {
        playerChips[playChips.get(i)].setY(50);
      }
      positionFree[i]=false;
    }
   
   

 
   
   
  }

  @Override public void paintComponent(Graphics g) {
    super.paintComponent(g);    // paints background
    g.setColor(Color.LIGHT_GRAY);
    g.clearRect(x, y, weith, height);
    g.fillRect(x,y,weith,height);
    g.setColor(Color.white);
    g.fillRect(x,0,weith,100);
   
    int newy=y;
    int newx=x;
    Graphics2D g2d = (Graphics2D) g;



    // draw gameboard
    g2d.setColor(Color.white);
    TrainPerTrack=ClientInterface.player.getTrainPerTrack();
    boolean trackwithTrain=false;
    for (int i=0; i<totalPlayers+1; i++){
      newx=x;
      trackwithTrain=false;
      if(i<totalPlayers && TrainPerTrack[i]==true)
        trackwithTrain=true;
      if((ClientInterface.currentTurtn ==i && myTurn) || (i==totalPlayers  && myTurn) || (trackwithTrain && myTurn))
      {
       
        g2d.setColor(Color.blue);
      }
       
      else
        g2d.setColor(Color.white);
      for (int j=0; j< totalSpaces; j++)
      {

        g2d.fill( zrectArray[i][j]);

        newx=newx+105;
      }
      newy=newy+55;
    }


    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
        RenderingHints.VALUE_TEXT_ANTIALIAS_ON);


    Stack<Integer>[] stackTemp=ClientInterface.player.getGameBoard();
   
    for(int i=0; i<stackTemp.length; i++)
    {
      if(ClientInterface.player.cleanGameBoard(i))
       
      {
        System.out.println("Cleaning track " + i);
        int firstChip=ClientInterface.player.getTopChipFromtrack(i);
        playerChips[firstChip].setX(zrectArray[i][0].x);
        playerChips[firstChip].setY(zrectArray[i][0].y);
      }
    }
 
   
   
   
    // draw chip images
    AffineTransform transform = new AffineTransform()// identity transform
    Vector <Integer> playChips= ClientInterface.player.getMyChips();
    for(int i=0; i<playChips.size(); i++)
    {
      // transform.translate(playerChips[i].x - playerChips[i].width/2, playerChips[i].y - playerChips[i].height/2);
      if(playChips.get(i)!=ClientInterface.player.getFisrtChip())
      {
        transform = new AffineTransform();
        transform.translate(playerChips[playChips.get(i)].x, playerChips[playChips.get(i)].y);
       
        g2d.drawImage(playerChips[playChips.get(i)].getImg(), transform, this)
      }
 
    }


 
    for(int i=0; i<stackTemp.length; i++ )
    {
      for (int j=0; j<stackTemp[i].size(); j++)
      {
       
        if(stackTemp[i].get(j)!=ClientInterface.player.getFisrtChip())
        {
          transform = new AffineTransform();
   
          transform.translate(playerChips[stackTemp[i].get(j)].x, playerChips[stackTemp[i].get(j)].y);
   
          if(playerChips[stackTemp[i].get(j)].isShift())
          {
      //      System.out.println("Imagen con shift");
            transform.rotate(Math.toRadians(180), playerChips[stackTemp[i].get(j)].width/2, playerChips[stackTemp[i].get(j)].height/2 );
          }
        //  System.out.println("Coloreando ficha : "+ i + "_" + j);
          g2d.drawImage(playerChips[stackTemp[i].get(j)].getImg(), transform, this);
        }
      }
    }
   
   
    //draw Initial chip
    g.setColor(Color.blue);
    g.fillRect(1165,40,95,55);
   
    int fisrtChip=ClientInterface.player.getFisrtChip();
    playerChips[fisrtChip].setX(1170);
    playerChips[fisrtChip].setY(45);
    transform = new AffineTransform();
    transform.translate(playerChips[fisrtChip].x, playerChips[fisrtChip].y);
    g2d.drawImage(playerChips[fisrtChip].getImg(), transform, this)

  }

 
 
 


  public void updateBoard (int track, int chip, int position, int isShift){
   
    playerChips[chip].setX(zrectArray[track][position-2].x);
    playerChips[chip].setY(zrectArray[track][position-2].y);
    if(isShift==1)
      playerChips[chip].setIsShift(true);
    repaint();
  }
 
  public void updateSelfChip(int chip){
   
    int freePos=getFreePos();
    if(freePos >-1){
      playerChips[chip].setPositionNumber(freePos);
      playerChips[chip].setX(positions.get(freePos));
      if(freePos%2==0)
      {
        playerChips[chip].setY(0);
      }else
      {
        playerChips[chip].setY(50);
      }
      positionFree[freePos]=false
    }
   
    repaint();
  }
 
 
   public boolean isMoveDone() {
    return moveDone;
  }

  public static void setMoveDone(boolean _moveDone) {
    moveDone = _moveDone;
  }


  public int getFreePos(){
    for (int i=0; i< positionFree.length; i++)
    {
      if(positionFree[i]==true)
        return i;
     
    }
    return -1;
  }
  public void initPositions(){
   

    positions.put(0, 0);
    positions.put(2, 90);
    positions.put(4, 180);
    positions.put(6, 270);
    positions.put(8, 360);
    positions.put(10, 450);
    positions.put(12, 540);
    positions.put(14, 630);
    positions.put(16, 720);
    positions.put(18, 810);
    positions.put(20, 900);
    positions.put(22, 990);
    positions.put(24, 1080);
    positions.put(26, 1170);

    positions.put(1, 0);
    positions.put(3, 90);
    positions.put(5, 180);
    positions.put(7, 270);
    positions.put(9, 360);
    positions.put(11, 450);
    positions.put(13, 540);
    positions.put(15, 630);
    positions.put(17, 720);
    positions.put(19, 810);
    positions.put(21, 900);
    positions.put(23, 990);
    positions.put(25, 1080);
    positions.put(27, 1170);

 
   
    for (int i=0; i< positionFree.length; i++)
    {
      positionFree[i]=true;
    }
  }

  public void paintTurn(){
    repaint();
  }
 
  public boolean isMyTurn() {
    return myTurn;
  }

  public void setMyTurn(boolean myTurn) {
    this.myTurn = myTurn;
  }



  class MovingAdapter extends MouseAdapter {

    private int x;
    private int y;
    private int ChipSelected=0;

    public void mousePressed(MouseEvent e) {
      x = e.getX();
      y = e.getY();

    }

    public void mouseClicked(MouseEvent e){

      x = e.getX();
      y = e.getY();

      if(e.getClickCount() ==1){
        Vector <Integer> playChips= ClientInterface.player.getMyChips();
        for( int i=0; i< playChips.size() ; i++)
        {
          if (playerChips[playChips.get(i)].isHit(x, y)) {
            System.out.println("Dominoe number " + i + " is Hit");
            ChipSelected=playChips.get(i);
            // repaint();
          }
        }
      }else if (e.getClickCount() ==2 ){
        x = e.getX();
        y = e.getY();
        boolean chipHit=false;
        for(int i=0; i<totalPlayers+1; i++ )
          for(int j=0; j<totalSpaces; j++)
          {
           
            if (zrectArray[i][j].isHit(x, y) ) {
                System.out.println("Zrect number " + i + "," + j + " is Hit. In " + x +"," + y + "Dominochip x/y" + zrectArray[i][j].x + "/" + zrectArray[i][j].y);
               
               
                if(ChipSelected>=0 && ClientInterface.player.validateTrack(i) && myTurn ==true)
                {
                  int valid=ClientInterface.player.validateChip(i, ChipSelected);
                  if(valid !=1 )
                  {
                    playerChips[ChipSelected].setX(zrectArray[i][j].x);
                    playerChips[ChipSelected].setY(zrectArray[i][j].y);
                    int chipPos=playerChips[ChipSelected].getPositionNumber();
                    playerChips[ChipSelected].setPositionNumber(-1);
                    positionFree[chipPos]=true;
                   
                    if(valid==2)
                    {
                      playerChips[ChipSelected].setIsShift(true);
                      ClientInterface.player.setMsjTosend(i, ChipSelected, 1);
                    }else
                    {
                      playerChips[ChipSelected].setIsShift(false);
                      ClientInterface.player.setMsjTosend(i, ChipSelected, 0);
                    }
//                    if(ClientInterface.player.cleanGameBoard(i))
//                    {
//                      int firstChip=ClientInterface.player.getTopChipFromtrack(i);
//                      playerChips[firstChip].setX(zrectArray[i][0].x);
//                      playerChips[firstChip].setY(zrectArray[i][0].y);
//                    }
                    repaint();
                    zrectArray[i][j].setFree(false);
                    System.out.println("Mymove: " + ClientInterface.player.printChip(ChipSelected) + " TRack" + i);
                    //ClientInterface.player.updateGameBoard(i,ChipSelected);
                    ClientInterface.player.removeDominoesPlayerPosition (ChipSelected);
                    ChipSelected=-1;
                    chipHit=true;
                 
                    ClientInterface.moveDone=true;
                  }
                 
                }
                break;
              }
            if(chipHit)break;
          }
        ChipSelected=-1;
      }
    }
  }
}
TOP

Related Classes of dominoes.gui.DrawingArea$MovingAdapter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.