/** * Called when the left mouse button has been clicked (pressed + released) * * @param x X position of the mouse pointer * @param y Y position of the mouse pointer */ public void handleLeftMouseClicked(int x, int y) { BlockContainerInterface cont = null; PipeBlock[] blocks = null; if (x >= contAllowed.getDrawingPositionX(0) && x <= (contAllowed.getDrawingPositionX(contAllowed.getSizeX() - 1) + contAllowed.getSquareSize()) && y >= contAllowed.getDrawingPositionY(0) && y <= (contAllowed.getDrawingPositionY(contAllowed.getSizeY() - 1) + contAllowed.getSquareSize())) { cont = contAllowed; selectedAllowed = true; blocks = blocksAllowed; } else if (x >= contNotAllowed.getDrawingPositionX(0) && x <= (contNotAllowed.getDrawingPositionX(contNotAllowed.getSizeX() - 1) + contNotAllowed.getSquareSize()) && y >= contNotAllowed.getDrawingPositionY(0) && y <= (contNotAllowed.getDrawingPositionY(contNotAllowed.getSizeY() - 1) + contNotAllowed.getSquareSize())) { cont = contNotAllowed; selectedAllowed = false; blocks = blocksNotAllowed; } else { return; } int blockPosX = (x - cont.getOffsetX()) / blockSize; int blockPosY = (y - cont.getOffsetY()) / blockSize; selPosX = blockPosX; selPosY = blockPosY; selectedBlock = null; for (int i = 0; i < blocks.length; i++) { if (blockPosX == blocks[i].getPosX() && blockPosY == blocks[i].getPosY()) { selectedBlock = blocks[i]; break; } } }
/** Draw all the game graphics */ public void draw() { Graphics g = environment.getScreenHandler().getCurrentGraphics(); g.clearRect( 0, 0, environment.getScreenHandler().getWidth(), environment.getScreenHandler().getHeight()); int gameSizeX = (contAllowed.getSizeX() + contNotAllowed.getSizeX() + 3) * blockSize + 2; int gameSizeY = contAllowed.getSizeY() * blockSize + 2; g.setColor(Color.white); g.drawString( "Allowed:", contAllowed.getDrawingPositionX(0), contAllowed.getDrawingPositionY(0) - 3); g.drawString( "Not allowed:", contNotAllowed.getDrawingPositionX(0), contNotAllowed.getDrawingPositionY(0) - 3); g.setColor(Color.blue); g.drawRect( contAllowed.getDrawingPositionX(0), contAllowed.getDrawingPositionY(0), contAllowed.getSizeX() * contAllowed.getSquareSize(), contAllowed.getSizeY() * contAllowed.getSquareSize()); g.drawRect( contNotAllowed.getDrawingPositionX(0), contNotAllowed.getDrawingPositionY(0), contNotAllowed.getSizeX() * contNotAllowed.getSquareSize(), contNotAllowed.getSizeY() * contNotAllowed.getSquareSize()); if (blocksAllowed != null) { for (int i = 0; i < blocksAllowed.length; i++) { blocksAllowed[i].draw(g); } } if (blocksNotAllowed != null) { for (int i = 0; i < blocksNotAllowed.length; i++) { blocksNotAllowed[i].draw(g); } } if (selectedBlock != null) { g.setColor(Color.white); BlockContainerInterface cont; if (selectedAllowed) { cont = contAllowed; } else { cont = contNotAllowed; } g.drawRect( selectedBlock.getMovingDrawingPosX(), selectedBlock.getMovingDrawingPosY(), cont.getSquareSize(), cont.getSquareSize()); } g.setColor(Color.white); int rightColumnX = contNotAllowed.getDrawingPositionX(0) + contNotAllowed.getSizeX() * blockSize + 10; g.drawString("Number of empty blocks:", rightColumnX, 100 + 15); g.drawString("Number of start blocks:", rightColumnX, 100 + 40); g.drawString("Initial time until water:", rightColumnX, 100 + 65); g.drawString("Initial water speed:", rightColumnX, 100 + 90); g.drawString("Initial blocks to fill:", rightColumnX, 100 + 115); rightColumnX = offsetX + gameSizeX + 20; g.setColor(Color.red); g.drawString("by Erland Isaksson", rightColumnX, offsetY + gameSizeY); environment.getScreenHandler().paintComponents(g); }