Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package oo15loipe;
- public class Loipe implements InfoLoipe{
- private String pad;
- private Richting richting;
- private int width,height,startX,startY;
- private Fragment [][] loipe;
- public Loipe (String pad) {
- this.pad = pad;
- richting = Richting.N;
- vindAfmetingen();
- richting = Richting.N;
- loipe = new Fragment[width][height];
- emptyLoipe ();
- fillLoipe ();
- }
- public void vindAfmetingen () {
- int currentX = 0, currentY = 0, minX=0,minY=0,maxX=0,maxY=0;
- for (int i = 0; i < pad.length(); i++) {
- switch (richting) {
- case N:
- switch (pad.charAt(i)) {
- case 's':
- currentY--;
- break;
- case 'l':
- richting=richting.turnLeft();
- currentX--;
- break;
- default:
- richting=richting.turnRight();
- currentX++;
- break;
- }break;
- case O:
- switch (pad.charAt(i)) {
- case 's':
- currentX++;
- break;
- case 'l':
- richting=richting.turnLeft();
- currentY--;
- break;
- default:
- richting=richting.turnRight();
- currentY++;;
- break;
- }break;
- case Z:
- switch (pad.charAt(i)) {
- case 's':
- currentY++;
- break;
- case 'l':
- richting=richting.turnLeft();
- currentX++;
- break;
- default:
- richting=richting.turnRight();
- currentX--;
- break;
- }break;
- default:
- switch (pad.charAt(i)) {
- case 's':
- currentX--;
- break;
- case 'l':
- richting=richting.turnLeft();
- currentY++;
- break;
- default:
- richting=richting.turnRight();
- currentY--;
- break;
- }break;
- }
- if (currentY > maxY) {maxY=currentY;}
- if (currentY < minY) {minY=currentY;}
- if (currentX > maxX) {maxX=currentX;}
- if (currentX < minX) {minX=currentX;}
- }
- width = Math.abs(maxX-minX)+1;
- height = Math.abs(maxY-minY)+1;
- startX = Math.abs(minX);
- startY = Math.abs(minY);
- System.out.println(width + " " + height + " " + startX + " " + startY);
- }
- public void emptyLoipe () {
- for (int i = 0; i < height; i++) {
- for (int j = 0; j < width; j++) {
- loipe [j][i] = Fragment.EM;
- }
- }
- }
- public void fillLoipe () {
- int currentX = startX, currentY = startY;
- for (int i = 0; i < pad.length(); i++) {
- switch (richting) {
- case N:
- switch (pad.charAt(i)) {
- case 's':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.NZ;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentY--;
- break;
- case 'l':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.ZW;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentX--;
- richting = richting.turnLeft();
- break;
- default:
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.ZO;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentX++;
- richting = richting.turnRight();
- break;
- }break;
- case O:
- switch (pad.charAt(i)) {
- case 's':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.OW;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentX++;
- break;
- case 'l':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.NW;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentY--;
- richting = richting.turnLeft();
- break;
- default:
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.ZW;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentY++;
- richting = richting.turnRight();
- break;
- }break;
- case Z:
- switch (pad.charAt(i)) {
- case 's':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.NZ;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentY++;
- break;
- case 'l':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.NO;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentX++;
- richting = richting.turnLeft();
- break;
- default:
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.NW;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentX--;
- richting = richting.turnRight();
- break;
- }break;
- default:
- switch (pad.charAt(i)) {
- case 's':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.OW;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentX--;
- break;
- case 'l':
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.ZO;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentY++;
- richting = richting.turnLeft();
- break;
- default:
- if(loipe[currentX][currentY] == Fragment.EM){loipe[currentX][currentY] = Fragment.NO;}
- else {loipe[currentX][currentY] = Fragment.KR;}
- currentY--;
- richting = richting.turnRight();
- break;
- }break;
- }
- }
- }
- public int getWidth() {
- return width;
- }
- public int getHeight() {
- return height;
- }
- public Fragment getFragment (int x, int y) {
- return loipe[x][y];
- }
- @Override
- public int getX() {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public int getY() {
- // TODO Auto-generated method stub
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement