import java.awt.*; public class StickMan { /*This class provides the co ords for a stick figure which you can use in your paint method eg drawOval(xPo,yPo,headHeight,headWidth) drawLine(bodyStartX,bodyStartY,bodyEndX,bodyEndY) draws the figures head and body. */ int xPo; int yPo; int figHeight; int figWidth; int headWidth; int headHeight; int bodyLength; int headX,headY; int bodyStartX,bodyStartY; int bodyEndX,bodyEndY; int lArmStartX,lArmStartY; int lArmEndX,lArmEndY; int rArmStartX,rArmStartY; int rArmEndX,rArmEndY; int lLegStartX,lLegStartY; int lLegEndX,lLegEndY; int rLegStartX,rLegStartY; int rLegEndX,rLegEndY; int oldHeight; int oldxPo; int oldyPo; public StickMan(int figHeight,int xPo, int yPo){ //Calculates the coordinates for all the body components //NB xPo and yPo refer are the co ords for the circle //that forms the head. oldHeight=figHeight; oldxPo=xPo; oldyPo=yPo; figWidth=(int)Math.floor(figHeight*4/10); headWidth=(figWidth/2); headHeight=headWidth; bodyLength=figWidth*3/4; headX=(xPo+(figWidth/2)-(headWidth/2)); headY=yPo; bodyStartX=headX+(headWidth/2); bodyStartY=headY + headHeight; bodyEndX=bodyStartX; bodyEndY=bodyStartY+bodyLength; rArmStartX=bodyStartX; lArmStartX=bodyStartX; rLegStartX=bodyStartX; lLegStartX=bodyStartX; rArmStartY= bodyStartY+(bodyLength/4); lArmStartY= bodyStartY+(bodyLength/4); rLegStartY= bodyStartY+bodyLength; lLegStartY= bodyStartY+bodyLength; rArmEndX=bodyStartX+(figWidth/2); lArmEndX=bodyStartX-(figWidth/2); rLegEndX=bodyStartX+(figWidth/2); lLegEndX=bodyStartX-(figWidth/2); rArmEndY=rArmStartY; lArmEndY=lArmStartY; rLegEndY= rLegStartY + bodyLength; lLegEndY= lLegStartY + bodyLength; } public void move (int x,int y){ //moves the figure to the co ords given xPo = x; yPo = y; System.out.println("X "+ xPo); System.out.println("Y "+ yPo); headX=(xPo+(figWidth/2)-(headWidth/2)); headY=yPo; bodyStartX=headX+(headWidth/2); bodyStartY=headY + headHeight; bodyEndX=bodyStartX; bodyEndY=bodyStartY+bodyLength; rArmStartX=bodyStartX; lArmStartX=bodyStartX; rLegStartX=bodyStartX; lLegStartX=bodyStartX; rArmStartY= bodyStartY+(bodyLength/4); lArmStartY= bodyStartY+(bodyLength/4); rLegStartY= bodyStartY+bodyLength; lLegStartY= bodyStartY+bodyLength; rArmEndX=bodyStartX+(figWidth/2); lArmEndX=bodyStartX-(figWidth/2); rLegEndX=bodyStartX+(figWidth/2); lLegEndX=bodyStartX-(figWidth/2); rArmEndY=rArmStartY; lArmEndY=lArmStartY; rLegEndY= rLegStartY + bodyLength; lLegEndY= lLegStartY + bodyLength; } public void translate(int x,int y){ // moves the figure by the amounts given xPo=oldxPo; yPo=oldyPo; xPo=xPo+x; System.out.println("X "+ xPo); yPo=yPo+y; System.out.println("Y "+ yPo); headX=xPo;//(xPo+(figWidth/2)-(headWidth/2)); headY=yPo; bodyStartX=headX+(headWidth/2); bodyStartY=headY + headHeight; bodyEndX=bodyStartX; bodyEndY=bodyStartY+bodyLength; rArmStartX=bodyStartX; lArmStartX=bodyStartX; rLegStartX=bodyStartX; lLegStartX=bodyStartX; rArmStartY= bodyStartY+(bodyLength/4); lArmStartY= bodyStartY+(bodyLength/4); rLegStartY= bodyStartY+bodyLength; lLegStartY= bodyStartY+bodyLength; rArmEndX=bodyStartX+(figWidth/2); lArmEndX=bodyStartX-(figWidth/2); rLegEndX=bodyStartX+(figWidth/4); lLegEndX=bodyStartX-(figWidth/4); rArmEndY=rArmStartY; lArmEndY=lArmStartY; rLegEndY= rLegStartY + bodyLength; lLegEndY= lLegStartY + bodyLength; } public void grow(int increase){ //the figure increases in size by the amount given. figHeight=oldHeight+increase; System.out.println("I "+figHeight); figWidth=(int)Math.floor(figHeight*4/10); headWidth=(figWidth/2); headHeight=headWidth; bodyLength=figWidth*3/4; headX=(xPo+(figWidth/2)-(headWidth/2)); headY=yPo; bodyStartX=headX+(headWidth/2); bodyStartY=headY + headHeight; bodyEndX=bodyStartX; bodyEndY=bodyStartY+bodyLength; rArmStartX=bodyStartX; lArmStartX=bodyStartX; rLegStartX=bodyStartX; lLegStartX=bodyStartX; rArmStartY= bodyStartY+(bodyLength/4); lArmStartY= bodyStartY+(bodyLength/4); rLegStartY= bodyStartY+bodyLength; lLegStartY= bodyStartY+bodyLength; rArmEndX=bodyStartX+(figWidth/2); lArmEndX=bodyStartX-(figWidth/2); rLegEndX=bodyStartX+(figWidth/2); lLegEndX=bodyStartX-(figWidth/2); rArmEndY=rArmStartY; lArmEndY=lArmStartY; rLegEndY= rLegStartY + bodyLength; lLegEndY= lLegStartY + bodyLength; } }