Room currentRoom; Lawyar lawyar; Dragon dragon; String hint = "return the fuji symbol to the castle and save atari!\nbeware dragons and law-YARS! arrow keys or mouse to move\nspace or mouseclick drops"; boolean winning = false; color wincolor; Msg winmsg; Bump winbump; Room insideYellowCastle; Room yellowCastle; Room blackCastle; Room orangeInsideBlack; Room purpleInsideBlack; Room secret; Room greenLeft; void resetFolks(boolean first){ if(! first) hint = null; g.holding = null; g.x = 128; g.y = 200; currentRoom = yellowCastle; g.setRoom(currentRoom); g.frozen = false; g.eaten = false; dragon.mode = dragon.REST; lawyar.mode = lawyar.SEEKING; } void doVictory(boolean nowIsWinning){ if(winning != nowIsWinning){ winning = nowIsWinning; if(winning){ winmsg = new Msg(insideYellowCastle,"The Fuji is Here!\n\nYou Saved Atari!\n\nCongratulations--\nand try not to get sued!\n\n"); for(Item t : items){ while(t.myRoom == winmsg.r && overlap(winmsg,t)){ t.y++; } } items.add(winmsg); winbump = new GuyHitsWall(g,winmsg); bumps.add(winbump); } else { bumps.remove(winbump); items.remove(winmsg); } } } ArrayList items = new ArrayList(); ArrayList movers = new ArrayList(); ArrayList bumps = new ArrayList(); ArrayList events = new ArrayList(); Guy g; Room labN = null,labC,labE,labSW,labS; void setup(){ size(250,250); noStroke(); g = new Guy(); items.add(g); movers.add(g); purpleInsideBlack = new Room(PURPLE); purpleInsideBlack.blockAllBut(D); purpleInsideBlack.addHalfWall(D); orangeInsideBlack = new Room(ORANGE); orangeInsideBlack.addHalfWall(D); orangeInsideBlack.addHalfWall(U); orangeInsideBlack.addWall(L); orangeInsideBlack.addWall(R); connectRoomsUpDown(purpleInsideBlack, orangeInsideBlack); blackCastle = new Room(BLACK); blackCastle.addWall(L); blackCastle.addWall(R); blackCastle.addHalfWall(D); blackCastle.addCastle(); Gate blackGate = new Gate(blackCastle,orangeInsideBlack); items.add(blackGate); movers.add(blackGate); makeCastleExit(orangeInsideBlack,blackCastle); greenLeft = new Room(GREEN); greenLeft.addWall(D); greenLeft.addHalfWall(U); Room greenRight = new Room(GREEN); greenRight.addWall(D); greenRight.addHalfWall(U); connectRoomsLeftRight(greenLeft,greenRight); yellowCastle = new Room(YELLOW); yellowCastle.addWall(L); yellowCastle.addWall(R); yellowCastle.addHalfWall(D); yellowCastle.addCastle(); connectRoomsUpDown(yellowCastle,greenRight); //this room is referenced elsewhere.... insideYellowCastle = new Room(YELLOW); insideYellowCastle.blockAllBut(D); insideYellowCastle.addHalfWall(D); makeCastleExit(insideYellowCastle,yellowCastle); Gate yellowGate = new Gate(yellowCastle,insideYellowCastle); items.add(yellowGate); movers.add(yellowGate); Room yellowGreen = new Room(YELLOWGREEN); yellowGreen.addWall(U); yellowGreen.addHalfWall(D); connectRoomsLeftRight(greenRight,yellowGreen); Room orange = new Room(ORANGE); orange.blockAllBut(U); orange.addHalfWall(U); connectRoomsUpDown(yellowGreen, orange); secret = new Room(PURPLE); secret.addWall(U); secret.addWall(D); connectRoomsLeftRight(yellowGreen,secret); connectRoomsLeftRight(secret,greenLeft); // Room ihgfed = new Room(BLUE); // wallsIHGFED(ihgfed); lab(); connectRoomsUpDown(blackCastle,labN); connectRoomsUpDown(labN,labC); connectRoomsLeftRight(labS,labN); connectRoomsLeftRight(labN,labSW); connectRoomsLeftRight(labE,labC); connectRoomsLeftRight(labC,labE); connectRoomsUpDown(labC,labS); connectRoomsUpDown(labSW,labE); connectRoomsUpDown(labE,greenLeft); //noooope connectRoomsLeftRight(labS,labSW); connectRoomsLeftRight(labSW,labS); Key yellowKey = new Key(yellowCastle,YELLOW); items.add(yellowKey); bumps.add(new KeyHitsGate(yellowKey,yellowGate)); Sword sword = new Sword(insideYellowCastle); //insideYellowCastle items.add(sword); Key blackKey = new Key(orange,BLACK); //orange //Key blackKey = new Key(blackCastle,BLACK); //orange items.add(blackKey); bumps.add(new KeyHitsGate(blackKey,blackGate)); dragon = new Dragon(greenLeft); items.add(dragon); movers.add(dragon); bumps.add(new DragonHitsGuy(dragon,g)); lawyar = new Lawyar(orangeInsideBlack); items.add(lawyar); movers.add(lawyar); bumps.add(new LawyarHitsGuy(lawyar,g)); Fuji fuji = new Fuji(purpleInsideBlack); // // Fuji fuji = new Fuji(yellowCastle); // items.add(fuji); events.add(new FujiInsideCastle(fuji,insideYellowCastle)); Microdot md = new Microdot(purpleInsideBlack); items.add(md); yellowGreen.addThinWall(R,md); greenLeft.addThinWall(L,null); Magnet magnet = new Magnet(labN); items.add(magnet); bumps.add(new GuyGrabsItem(g,magnet)); bumps.add(new GuyGrabsItem(g,md)); bumps.add(new GuyGrabsItem(g,fuji)); bumps.add(new GuyGrabsItem(g,sword)); bumps.add(new GuyGrabsItem(g,yellowKey)); bumps.add(new GuyGrabsItem(g,blackKey)); events.add(new ObjectOutsideOfRoom(blackKey)); events.add(new ObjectOutsideOfRoom(yellowKey)); events.add(new ObjectOutsideOfRoom(sword)); events.add(new ObjectOutsideOfRoom(fuji)); events.add(new ObjectOutsideOfRoom(md)); events.add(new ObjectOutsideOfRoom(magnet)); events.add(new MagnetAttractsItem(magnet,md)); events.add(new MagnetAttractsItem(magnet,yellowKey)); events.add(new MagnetAttractsItem(magnet,blackKey)); events.add(new MagnetAttractsItem(magnet,sword)); events.add(new MagnetAttractsItem(magnet,fuji)); bumps.add(new SwordHitsEnemy(sword,lawyar)); bumps.add(new SwordHitsEnemy(sword,dragon)); bumps.add(new GuyHitsGate(g,blackGate)); bumps.add(new GuyHitsGate(g,yellowGate)); Msg msg = new Msg(secret,"CREATED BY\nKIRK ISRAEL\n\nYOU ARE THE\nAWESOMEST"); items.add(msg); bumps.add(new GuyHitsWall(g,msg)); resetFolks(true); } void draw(){ background(GRAY); wincolor = color(random(255),random(255),random(255)); for(Item i : items){ if(i.inRoom(currentRoom) && i instanceof Wall){ i.draw(); } } for(Item i : items){ if(i.inRoom(currentRoom) && !(i instanceof Wall)){ i.draw(); } } for(Mover m : movers){ //print("--"+m); m.move(); } for(Bump b : bumps){ if(b.hits()) b.act(); } for(Event ev : events){ if(ev.test()) ev.act(); } if(hint != null){ // println(0); textAlign(CENTER,CENTER); fill(100); text(hint, 25,100,200,125); } } ////////////////////////////////////////////////////////// // // Guy // //////////////////////////////////////////////////////////// class Guy extends Item implements Mover{ float holdx, holdy; Item holding = null; Guy(){ super(null); w = 10; h = 10; } boolean frozen; boolean eaten; float GUYSPEED = 3; void move(){ if(mousePressed && millis()-startClick > 2000){ resetFolks(false); } else { } if(frozen) return; if(eaten){ x = dragon.x + 5; y = dragon.y + 15; } if(usingMouse){ pressUp = pressDown = pressLeft = pressRight = false; if(x < mouseX) pressRight = true; if(x + w > mouseX) pressLeft = true; if(y < mouseY) pressDown = true; if(y + h > mouseY) pressUp = true; } if(pressUp){ y -= GUYSPEED; } if(pressDown){ y += GUYSPEED; } if(pressLeft){ x -= GUYSPEED; } if(pressRight){ x += GUYSPEED; } moveHolding(); /* if(currentRoom.hit(g)){ bounce(); }*/ } void moveHolding(){ if(holding != null){ holding.myRoom = myRoom; holding.x = x + holdx; holding.y = y + holdy; } } int flash = 0; void grab(Item t){ holding = t; // while(overlap((Item)g,t)){ if(pressUp){ t.y -= GUYSPEED; } if(pressDown){ t.y += GUYSPEED; } if(pressLeft){ t.x -= GUYSPEED; } if(pressRight){ t.x += GUYSPEED; } // } holdx = t.x - x; holdy = t.y - y; flash = 10; } void drop(){ if(holding != null) flash = 10; holding = null; //flash = 10; } void draw(){ noStroke(); //println("flash"+flash); if(flash > 0) flash--; if(flash > 0 && flash < 10){ fill(255); } else { fill(currentRoom.c); } if(frozen){ fill(BLUE); } rect(x,y,w,h); } boolean guyCrossesHorizEdge(Guy g, Item thing){ return eitherEdgeInside(g.y,g.y+g.h,thing.y,thing.y+thing.h); } boolean guyCrossesVertEdge(Guy g, Item thing){ return eitherEdgeInside(g.x,g.x+g.w,thing.x,thing.x+thing.w); } boolean eitherEdgeInside(float rangeLeft, float rangeRight, float leftEdge, float rightEdge){ if((leftEdge > rangeLeft && leftEdge < rangeRight) || (rightEdge > rangeLeft && rightEdge < rangeRight)) return true; return false; } void bounce(Item thing){ /* float dir = 0; while(eitherEdgeInside(g.x,g.x+g.w,thing.x,thing.x+thing.w)){ print("X "); if(g.x < thing.x) dir = -1; else dir = 1; x += dir; } x += dir; x += dir; x += dir; while(eitherEdgeInside(g.y,g.y+g.h,thing.y,thing.y+thing.h)){ print("Y "); if(g.y < thing.y) dir=-1; else dir = 1; y+=dir; } y += dir; y += dir; y += dir; */ //if overlap(g.x,g.x+g.w,b.x,b.x+b.w) { // if( //} // overlap(a.y,a.y+a.h,b.y,b.y+b.h); while(overlap(g,thing)){ if(pressUp ){ y += GUYBOUNCE; } if(pressDown ){ y -= GUYBOUNCE; } if(pressLeft ){ x += GUYBOUNCE; } if(pressRight){ x -= GUYBOUNCE; } } // println("guy cheange"); } } int startClick ; void mousePressed(){ g.drop(); startClick = millis(); } boolean usingMouse = false; void mouseMoved(){ usingMouse = true; // g.x = mouseX; g.y = mouseY; } boolean pressUp, pressDown, pressLeft,pressRight; //key handling void keyPressed(){ if(usingMouse){ usingMouse = false; pressUp = pressDown = pressLeft = pressRight = false; } if(keyCode == ENTER || key == 'r'){ resetFolks(false); } if(keyCode == UP) pressUp = true; if(keyCode == DOWN) pressDown = true; if(keyCode == LEFT) pressLeft = true; if(keyCode == RIGHT) pressRight = true; } void keyReleased(){ usingMouse = false; if(keyCode == UP) pressUp = false; if(keyCode == DOWN) pressDown = false; if(keyCode == LEFT) pressLeft = false; if(keyCode == RIGHT) pressRight = false; if(key == ' '){ g.drop(); } } ////////////////////////////////////////////// // //Rooms // ////////////////////////////////////////////// void connectRoomsLeftRight(Room leftRoom, Room rightRoom){ RoomEnd rightOfLeft = new RoomEnd(leftRoom, R, rightRoom); RoomEnd leftOfRight = new RoomEnd(rightRoom, L, leftRoom); bumps.add(new GuyHitsRoomEnd(g,rightOfLeft)); bumps.add(new GuyHitsRoomEnd(g,leftOfRight)); } void connectRoomsUpDown(Room upRoom, Room downRoom){ RoomEnd belowTop = new RoomEnd(upRoom, D, downRoom); RoomEnd aboveBottom = new RoomEnd(downRoom, U, upRoom); bumps.add(new GuyHitsRoomEnd(g,belowTop)); bumps.add(new GuyHitsRoomEnd(g,aboveBottom)); } void makeCastleExit(Room castle, Room courtyard){ RoomEnd re = new RoomEnd(castle,D,courtyard); bumps.add(new GuyHitsRoomEndToDoor(g,re)); } class Room { color c; Room[] connects = new Room[4]; Room(color pc){ c = pc; } void blockAllBut(int dir){ for(int i = 0; i < dirs.length; i++){ // println("TRY "+i); if(dirs[i] != dir) addWall(dirs[i]); } } void addHalfWall(int dir){ Wall w1 = null,w2 = null; switch(dir){ case U: w1 = new Wall(this, 0.0, 0, 100.0, WALLSIZE ); w2 = new Wall(this, 150.0, 0, 100.0, WALLSIZE ); break; case D: w1 = new Wall(this, 0.0, ROOMSIZE-WALLSIZE, 100.0, WALLSIZE ); w2 = new Wall(this, 150.0, ROOMSIZE-WALLSIZE, 100.0, WALLSIZE ); break; default: throw new RuntimeException("Cant make wall "+dir); } items.add(w1); items.add(w2); bumps.add(new GuyHitsWall(g,w1)); bumps.add(new GuyHitsWall(g,w2)); } void addThinWall(int dir, Microdot item){ ThinWall w = new ThinWall(this,dir,item); items.add(w); bumps.add(new GuyHitsThinWall(g,w)); } void addWall(int dir){ Wall w = null; switch(dir){ case U: w = new Wall(this, 0,0,ROOMSIZE,WALLSIZE); break; case D: w = new Wall(this, 0,ROOMSIZE-WALLSIZE,ROOMSIZE,WALLSIZE); break; case L: w = new Wall(this, 0,0,WALLSIZE,ROOMSIZE); break; case R: w = new Wall(this, ROOMSIZE-WALLSIZE,0,WALLSIZE,ROOMSIZE); break; } if(w == null) throw new RuntimeException("illegal addWall "+dir); items.add(w); bumps.add(new GuyHitsWall(g,w)); } /* void addHorizDoor(int dir){ switch(dir){ case U: items.add(new Wall(this, 0,0,ROOMSIZE/3,WALLSIZE)); items.add(new Wall(this, ROOMSIZE*2/3,0,ROOMSIZE/3,WALLSIZE)); break; case D: items.add(new Wall(this, 0,ROOMSIZE-WALLSIZE,ROOMSIZE/3,WALLSIZE)); items.add(new Wall(this, ROOMSIZE*2/3,ROOMSIZE-WALLSIZE,ROOMSIZE/3,WALLSIZE)); break; } }*/ void addCastle(){ float BLOCKSIZE = ROOMSIZE/5; addWallAndInteraction(new Wall(this, 0,0,BLOCKSIZE,WALLSIZE)); addWallAndInteraction(new Wall(this, ROOMSIZE-BLOCKSIZE,0,BLOCKSIZE,WALLSIZE)); //left turret: addWallAndInteraction(new Wall(this, BLOCKSIZE,WALLSIZE,BLOCKSIZE,BLOCKSIZE*1.25)); //right turret addWallAndInteraction(new Wall(this, BLOCKSIZE*3,WALLSIZE,BLOCKSIZE,BLOCKSIZE*1.25)); addWallAndInteraction(new Wall(this, (ROOMSIZE-BLOCKSIZE)*.5-WALLSIZE, WALLSIZE+BLOCKSIZE*.5,BLOCKSIZE,BLOCKSIZE)); addWallAndInteraction(new Wall(this, (ROOMSIZE-BLOCKSIZE)*.5+WALLSIZE, WALLSIZE+BLOCKSIZE*.5,BLOCKSIZE,BLOCKSIZE)); addWallAndInteraction(new Wall(this, (ROOMSIZE-BLOCKSIZE)*.5-WALLSIZE - BLOCKSIZE/4, WALLSIZE+BLOCKSIZE*1.25,BLOCKSIZE*.75,BLOCKSIZE)); addWallAndInteraction(new Wall(this, 5+(ROOMSIZE-BLOCKSIZE)*.5-WALLSIZE+BLOCKSIZE, WALLSIZE+BLOCKSIZE*1.25,BLOCKSIZE*.75,BLOCKSIZE)); //capthings for(int i = 0; i < 7; i += 2){ addWallAndInteraction(new Wall(this,BLOCKSIZE + (i*BLOCKSIZE/7), 0, BLOCKSIZE/7,WALLSIZE)); addWallAndInteraction(new Wall(this,(3*BLOCKSIZE) + (i*BLOCKSIZE/7), 0, BLOCKSIZE/7,WALLSIZE)); } } void addWallAndInteraction(Wall w){ items.add(w); bumps.add(new GuyHitsWall(g,w)); } }//end room class RoomEnd extends Item{ Room dest; float xoff, yoff; int dir ; RoomEnd(Room pr, int pdir, Room pdest){ super(pr); dir = pdir; dest = pdest; switch(dir){ case U: case D: w = ROOMSIZE; h = 20; break; case L: case R: w = 20; h = ROOMSIZE; break; } switch(dir){ case U: x = 5; y = -h; break; case D: x = 0; y = ROOMSIZE-5; break; case L: x = -w+5; y = 0; break; case R: x = ROOMSIZE-5; y = 0; break; } } void adjustLocation(Item m){ switch(dir){ case U: m.y = ROOMSIZE - m.h - 8; break; case D: m.y = 8; break; case L: m.x = ROOMSIZE - m.w - 8; break; case R: m.x = 8; break; } } } class Wall extends Item{ Room r ; Wall(Room pr,float px, float py, float pw, float ph){ super(pr); x = px; y = py; w = pw; h = ph; r = pr; } void draw(){ color c = r.c; if(winning){ c = wincolor; } fill(c); noStroke(); rect(x,y,w,h); } } class ThinWall extends Wall{ Microdot opener; ThinWall(Room pr, int dir, Microdot pOpener){ super(pr,0,0,4,ROOMSIZE); if(dir == L){ x = 2 * WALLSIZE; } else { x = ROOMSIZE-2*WALLSIZE; } opener = pOpener; } void draw(){ noStroke(); if(opener != null && opener == g.holding){ fill(opener.cr); } else { fill(0); } rect(x,y,w,h); } } ////////////////////////////////////////////// // //Lab // ////////////////////////////////////////////// void lab(){ labN = new Room(BLUE); labC = new Room(BLUE); labE = new Room(BLUE); labSW = new Room(BLUE); labS = new Room(BLUE); Wall w; ///////////////////////////////// //Room labN w = new Wall(labN,0.0,0.0,100.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,150.0,0.0,100.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,83.33333,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,150.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,83.33333,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,150.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,83.33333,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,150.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,83.33333,66.666664,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,66.666664,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,233.33333,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,83.33333,83.33333,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,83.33333,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,233.33333,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,233.33333,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,233.33333,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,50.0,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,183.33333,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,233.33333,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,150.0,116.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,150.0,116.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,166.66666,116.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,166.66666,116.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,33.333332,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,100.0,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,200.0,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,33.333332,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,100.0,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,200.0,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,33.333332,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,100.0,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,200.0,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,0.0,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,33.333332,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,66.666664,233.33333,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,133.33333,233.33333,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,200.0,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labN,233.33333,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); //Room labC w = new Wall(labC,0.0,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,0.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,0.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,233.33333,0.0,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,0.0,66.666664,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,66.666664,100.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,0.0,83.33333,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,83.33333,100.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,0.0,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,233.33333,150.0,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,0.0,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,233.33333,166.66666,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,33.333332,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,0.0,233.33333,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,66.666664,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,100.0,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,133.33333,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,166.66666,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labC,200.0,233.33333,66.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); ///////////////////////////////// //Room labE w = new Wall(labE,0.0,0.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,100.0,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,133.33333,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,0.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,100.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,133.33333,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,100.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,133.33333,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,100.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,133.33333,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,0.0,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,100.0,66.666664,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,233.33333,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,0.0,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,100.0,83.33333,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,233.33333,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,33.333332,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,166.66666,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,0.0,150.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,150.0,116.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,150.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,0.0,166.66666,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,66.666664,166.66666,116.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,200.0,166.66666,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,0.0,233.33333,100.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labE,150.0,233.33333,100.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); //Room labSW w = new Wall(labSW,0.0,0.0,266.66666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,66.666664,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,83.33333,66.666664,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,200.0,66.666664,66.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,83.33333,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,83.33333,83.33333,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,200.0,83.33333,66.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,116.666664,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,233.33333,100.0,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,116.666664,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,233.33333,116.666664,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,233.33333,133.33333,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,150.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,33.333332,150.0,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,133.33333,150.0,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,233.33333,150.0,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,166.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,33.333332,166.66666,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,133.33333,166.66666,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,233.33333,166.66666,33.333332,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,33.333332,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,100.0,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,133.33333,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,200.0,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,33.333332,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,100.0,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,133.33333,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,200.0,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,33.333332,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,100.0,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,133.33333,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,200.0,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,0.0,233.33333,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,66.666664,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,100.0,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,133.33333,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,166.66666,233.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labSW,200.0,233.33333,66.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); //Room labS w = new Wall(labS,0.0,0.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,66.666664,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,100.0,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,133.33333,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,166.66666,0.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,0.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,100.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,133.33333,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,16.666666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,100.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,133.33333,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,33.333332,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,100.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,133.33333,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,50.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,66.666664,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,133.33333,66.666664,83.33333,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,233.33333,66.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,83.33333,66.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,150.0,83.33333,66.666664,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,233.33333,83.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,233.33333,100.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,233.33333,116.666664,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,233.33333,133.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,150.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,150.0,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,166.66666,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,166.66666,50.0,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,183.33333,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,200.0,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,33.333332,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,200.0,216.66666,16.666666,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); w = new Wall(labS,0.0,233.33333,249.99998,16.666666); items.add(w); bumps.add(new GuyHitsWall(g,w)); } ////////////////////////////////////////////// // // Item // ////////////////////////////////////////////// abstract class Item{ float x,y; float w,h; Room myRoom; Item(Room pRoom){ myRoom = pRoom; } boolean inRoom(Room pRoom){ if(myRoom == pRoom) return true; return false; } void setRoom(Room pRoom){ myRoom = pRoom; } void draw(){ noStroke(); fill(myRoom.c); rect(x,y,w,h); } } interface Mover{ void move(); } abstract class Enemy extends Item{ Enemy(Room pr){ super(pr); } abstract void die(); } class Magnet extends Item{ Magnet(Room pr){ super(pr); x = 145; y = 105; w = 20; h = 20; } void draw(){ noFill(); strokeWeight(3); stroke(0); arc(x+w/2,y+w/2,w,w,PI,2*PI); line(x,y+h/2,x,y+h); line(x+w,y+h/2,x+w,y+h); // strokeWeight(1); // stroke(255,0,0); // rect (x,y,w,h); } } class Microdot extends Item{ Microdot(Room pr){ super(pr); w = h = 3; x = y = 200; } color cr; void draw(){ noStroke(); if(g.holding == this){ cr = color(random(255),random(255),random(255)); } else { cr = color(128); } fill(cr); rect(x,y,w,h); } } class Msg extends Wall{ String m; Msg(Room r, String pm){ super(r,50,50,150,100); m = pm; } void draw(){ noStroke(); fill(wincolor); rect(x,y,w,h); fill(WHITE); textAlign(CENTER,CENTER); text(m,x,y,w,h); } } class Fuji extends Item{ Fuji(Room pr){ super(pr); x = 115; y = 110; w = 40; h = 30; } void draw(){ stroke(BLACK); strokeWeight(6); line(x+w/2,y,x+w/2,y+h); line(x+w/4,y,x+w/4,y+h/2); line(x+w/4,y+h/2,x+w/8,y+h*7/8); line(x+w/8,y+h*7/8,x,y+h); line(x+w*3/4,y,x+w*3/4,y+h/2); line(x+w*3/4,y+h/2,x+w*7/8,y+h*7/8); line(x+w*7/8,y+h*7/8,x+w,y+h); strokeWeight(1); stroke(RED); noFill(); // rect(x,y,w,h); } } class Key extends Item{ String label = "key"; color c; String getLabel(){return label;} Key(Room r, color pc){ super(r); x = 40; y = 120; w = 20; h = 10; c = pc; } void draw(){ stroke(c); strokeWeight(3); line(x,y+h/2,x+w/2,y+h/2); line(x,y+h/2,x,y+h); line(x+w/4,y+h/2,x+w/4,y+h); // line(x,y,x+w,y); //right part line(x+w*2/3,y,x+w,y); line(x+w*2/3,y,x+w*2/3,y+h); line(x+w,y,x+w,y+h); line(x+w*2/3,y+h,x+w,y+h); } } class Sword extends Item{ String getLabel(){return label;} String label = "sword"; Sword(Room r){ super(r); x = 75; y = 150; w = 15; h = 3; } void draw(){ fill(YELLOW); noStroke(); rect(x,y,w,h); pushMatrix(); translate(x,y-(h/4)); pushMatrix(); //fill(0,255,0); rotate(PI/4); rect(0,0,w/2+h,h); popMatrix(); pushMatrix(); // fill(0,0,200); rotate(-PI/4); rect(0,0,w/2,h); popMatrix(); popMatrix(); } } ////////////////////////////////////////////// // // Gate // ////////////////////////////////////////////// class Gate extends Item implements Mover{ float BIGH = 32; float SMALLH = 6; boolean closed = true; Room dest; String getLabel() { return "gate"; } Gate(Room r, Room pdest){ super(r); x = 113; y = 93; w = 20; h = 32; dest = pdest; } float showh = h; boolean pickupable(){ return false; } void move(){ if(closed && showh < BIGH) showh++; if(!closed && showh > SMALLH) showh--; } void draw(){ // println("Drawgate"); noFill(); // stroke(RED);strokeWeight(1); //rect(x,y,w,h); stroke(0); strokeWeight(2); for(float by = y; by < y + showh; by+=5){ line(x,by,x+w,by); } for(float bx = x; bx < x + w+1; bx+=5){ line(bx,y,bx,y+showh); } } boolean toggle(){ closed = !closed; return closed; } } ////////////////////////////////////////////// // //Enemies // ////////////////////////////////////////////// class DragonGuts extends Item{ DragonGuts(Room pr){ super(pr); w = 10; h = 30; } void draw(){ /* noFill(); strokeWeight(1); stroke(255,0,0); rect(x,y,w,h);*/ } } class Dragon extends Enemy implements Mover { DragonGuts guts; float GUTX = 5; float GUTY = 5; Dragon(Room pr){ super(pr); x = 40; y = 40; w = 20; h = 40; guts = new DragonGuts(pr); guts.x = x + GUTX; guts.y = y + GUTY; items.add(guts); bumps.add(new GuyHitsGuts(g,guts)); } int REST = 1; int BITE = 2; int DEAD = 3; int FULL = 4; int SPEED = 2; int biteTime; void openWide(){ biteTime = 40; mode = BITE; } int mode = REST; void move(){ if(mode != REST) return; float tx = g.x; float ty = g.y; if(myRoom != g.myRoom) { // tx = 80; // ty = 80; } if(x < tx) x+= SPEED; if(x > tx) x-= SPEED; if(y < ty) y+= SPEED; if(y > ty) y-= SPEED; guts.x = x +GUTX; guts.y = y + GUTY; } void die(){ mode = DEAD; } void draw(){ noFill(); strokeWeight(4); stroke(RED); float hx = 0; float hy = 0; if(mode == DEAD){ hx = hy = 5; } ellipse(x+hx+10,y+hy+5,10,10); ellipse(x+10,y+20,10,20); biteTime --; if(mode == REST || mode == FULL){ line(x,y+5,x-5,y+5); arc(x+10,y+35,10,10,PI*3/2,PI*5/2); } if(mode == BITE){ line(x+2,y+5,x-5,y-2); line(x+2,y+5,x-5,y+12); arc(x+10,y+35,10,10,PI/2,PI*3/2); if(biteTime <= 0){ if(overlap(this,g)){ g.eaten = true; hint = "you are eaten!\n\nhit return\n(or hold mouse button)\nto return to life"; mode = FULL; } else { mode = REST; } } } if(mode == DEAD){ line(x+15,y+2,x+15,y-3); arc(x+10,y+32,10,10,0,PI); } } } class Lawyar extends Enemy implements Mover{ Lawyar(Room pr){ super(pr); x = 40; y = 40; w = 30; h = 35; } float ang; void draw(){ // super.draw(); noStroke(); fill(255); stroke(0); strokeWeight(4); noFill(); float headx = 0; float heady = 0; float hatx = 0; float haty = 0; if(mode == DEAD){ headx = 20; heady = 20; hatx = 35; haty = 30; } else { ang +=.8; } ellipse(headx + x + w/2,heady+y+w/4, w/2,w/2); // ellipse(x + w/2,y+w*3/4, w*4/5,w*4/5); line(x+w/2,y+h/4+5,x,y+h); line(x+w/2,y+h/4+5,x+w,y+h); line(x,y+h,x+w,y+h); fill(0); noStroke(); fill(255,100); ellipse(x+w/8,(sin(ang)*10)+y+h/2,w*.75,w*.75); ellipse(x+w-w/8,(sin(ang)*10)+y+h/2,w*.75,w*.75); stroke(0); // rect(hatx+x+w/4,haty+y,w/2,4); // rect(hatx+x+w*3/8,haty+y-h/4,w/4,h/4); line(hatx+x+w*3/8,haty+y-h/4,hatx+x+w*3/8+w/8,haty+y-h/4+h/4); line(hatx+x+w*3/8+w/4,haty+y-h/4,hatx+x+w*3/8+w/8,haty+y-h/4+h/4); /*stroke(255,0,0); noFill(); strokeWeight(1); rect(x,y,w,h); */ } void die(){ mode = DEAD; } int SEEKING = 1; int MOVING = 2; int DEAD = 3; float span = 20; int mode = SEEKING; float a; float speed = 3; void move(){ float cx = x + w/2; float cy = y + h/2; float gcx = g.x + g.w/2; float gcy = g.y + g.h/2; if(myRoom != g.myRoom) { gcx = 125; gcy = 40; } if(mode == SEEKING) { a = atan2(gcy - cy, gcx-cx) + random(-.3,.3); } if(mode == MOVING){ x += cos(a)*speed; y += sin(a)*speed; } span--; if(span < 0){ span = 20; if(mode == SEEKING) mode = MOVING; else if(mode == MOVING) mode = SEEKING; } ; } } ////////////////////////////////////////////// // //Interactions // ////////////////////////////////////////////// abstract class Event{ abstract boolean test(); abstract void act(); } int SCREENSIZE=250; class FujiInsideCastle extends Event{ Room r; Fuji t; FujiInsideCastle(Fuji pt, Room pr){ t = pt; r = pr; } boolean test(){ if(t.myRoom == r) { doVictory(true); return true; } doVictory(false); return false; } void act(){ } } class ObjectOutsideOfRoom extends Event{ Item it; ObjectOutsideOfRoom(Item pi){ it = pi; } boolean test(){ if(g.holding == it) return false; return(it.x + it.w >= SCREENSIZE || it.x <= 0 || it.y + it.h >= SCREENSIZE || it.y <= 0); } void act(){ // println("OUT"); if(it.x <= 0) it.x = 10; if(it.x >= SCREENSIZE-it.w) it.x = SCREENSIZE-it.w-10; if(it.y <= 0) it.y = 10; if(it.y >= SCREENSIZE - it.h) it.y = SCREENSIZE-it.h-10; } } class MagnetAttractsItem extends Event{ Magnet m; Item t; MagnetAttractsItem(Magnet pm, Item pt){ m = pm; t = pt; } boolean test(){ if(g.holding == t){ return false; } if(t.myRoom == m.myRoom) return true; else return false; } void act(){ if(t.x < m.x) t.x++; if(t.x > m.x) t.x--; if(t.y < m.y+m.h) t.y++; if(t.y > m.y+m.h) t.y--; } } class LawyarHitsGuy extends Bump{ Guy g ; Lawyar s; LawyarHitsGuy(Lawyar ps, Guy pg){ super("lawyar hits guy",ps,pg); s = ps; g = pg; } void act(){ if(s.mode == s.DEAD) return; // println("FREEZE"); hint = "you are frozen!\n\nhit return\n(or hold mouse button)\nto return to life"; g.frozen = true; } } class DragonHitsGuy extends Bump{ Dragon d; Guy g; DragonHitsGuy(Dragon pd, Guy pg){ super("dragon htis guy",pd,pg); g = pg; d = pd; } void act(){ if(d.mode == d.REST) { d.openWide(); } else { if(d.mode == d.BITE && d.biteTime <= 0){ g.frozen = true; d.mode = d.FULL; } } } } class SwordHitsEnemy extends Bump{ Sword s; Enemy e; SwordHitsEnemy(Sword ps, Enemy pe){ super("sword hits enemy",ps,pe); s = ps; e = pe; } void act(){ e.die(); } } class GuyHitsRoomEnd extends Bump{ Guy g; RoomEnd re; GuyHitsRoomEnd(Guy pg, RoomEnd pre){ super("Guy_hits_roomend",pg,pre); g = pg; re = pre; } void act(){ hint = null; g.setRoom(re.dest); currentRoom = re.dest; re.adjustLocation(g); g.moveHolding(); } } class GuyHitsRoomEndToDoor extends GuyHitsRoomEnd{ Guy g; RoomEnd re; GuyHitsRoomEndToDoor(Guy pg, RoomEnd pre){ super(pg,pre); g = pg; re=pre; tag = "guyhitsroomendtodoor"; } void act(){ hint = null; g.setRoom(re.dest); currentRoom = re.dest; //g.x = 125; g.y = 130; g.moveHolding(); } } class KeyHitsGate extends OnetimeBump{ Gate gate; KeyHitsGate(Key k, Gate pg){ super("keyhitsgate",k,pg); gate = pg; } void act(){ gate.toggle(); } } class GuyHitsGate extends Bump{ Guy g; Gate gate; Room r; GuyHitsGate(Guy pg, Gate pgate){ super("guyhisgate",pg,pgate); g = pg; gate = pgate; } void act(){ // println("WAM"); if(gate.closed){ // println("BAM"); g.bounce(gate); } else { hint = null; g.myRoom = gate.dest; currentRoom =gate.dest; g.y = 245 - g.h; } } } class GuyGrabsItem extends OnetimeBump{ Guy m; Item t; GuyGrabsItem(Guy pm, Item it){ super("GuyGrabsItem",pm,it); m = pm; t = it; } void act(){ if(g.holding == t) return; g.grab(t); } } class GuyHitsWall extends Bump{ Guy m; Wall w; GuyHitsWall(Guy pm, Wall pw){ super("guyhitwall",pm,pw); m = pm; w = pw; if(thing1 == null || thing2 == null) throw new RuntimeException("exception in making "+tag+": thing1:"+thing1+" thing2"+thing2); } void act(){ // print("ouch "); g.bounce(w); } } class GuyHitsThinWall extends GuyHitsWall{ GuyHitsThinWall(Guy pm, ThinWall pw){ super(pm,pw); tw = pw; } ThinWall tw; void act(){ if(tw.opener == null || tw.opener != g.holding){ g.bounce(tw); } } } class GuyHitsGuts extends Bump{ Guy g; DragonGuts t; GuyHitsGuts(Guy pg, DragonGuts pt){ super("guy hts thing",pg,pt); g = pg; t = pt; } void act(){ if(! g.eaten){ g.bounce(t); } } } abstract class Bump { Item thing1, thing2; String tag; Bump(String ptag, Item p1, Item p2){ tag = ptag; thing1 = p1; thing2 = p2; } abstract void act(); boolean hits(){ if(thing1 == null || thing2 == null) throw new RuntimeException("exception in "+tag+": thing1:"+thing1+" thing2"+thing2); if(thing1.myRoom != thing2.myRoom) return false; //only things same room can hit return overlap(thing1,thing2); } } abstract class OnetimeBump extends Bump{ boolean wasOverlapping = false; OnetimeBump(String ptag, Item p1, Item p2){ super(ptag,p1,p2); } boolean hits(){ boolean isOverlapping = super.hits(); if(isOverlapping){ if(wasOverlapping) { wasOverlapping = true; return false; } else { wasOverlapping = true; return true; } } else { wasOverlapping = false; return false; } } } ////////////////////////////////////////////// // //Util // ////////////////////////////////////////////// float GUYSPEED = 3; float GUYBOUNCE = 2; color GRAY = color(180); color BLACK=color(0); color WHITE = color(255); color RED = color(255,0,0); color GREEN = color(0,200,0); color YELLOW = color(255,255,0); color YELLOWGREEN = color(100,128,0); color BLUE = color(0,0,255); color PURPLE = color(128,0,128); color ORANGE = color(255,128,0); color BROWN = color(128,64,0); float WALLSIZE = 16.66666; float ROOMSIZE = 250.0; static final int U = 0; static final int L = 1; static final int R = 2; static final int D = 3; boolean overlap(Item a, Item b){ return overlapHoriz(a,b) && overlapVert(a,b); } boolean overlapHoriz(Item a, Item b){ return overlap(a.x,a.x+a.w,b.x,b.x+b.w); } boolean overlapVert(Item a, Item b){ return overlap(a.y,a.y+a.h,b.y,b.y+b.h); } boolean overlap(float line1val1,float line1val2,float line2val1,float line2val2) { float line1min = min(line1val1,line1val2); float line1max = max(line1val1,line1val2); float line2min = min(line2val1,line2val2); float line2max = max(line2val1,line2val2); if(line1min < line2min && line1max < line2min) { return false; } if(line1min > line2max && line1max > line2max) { return false; } return true; } int[] dirs = {U,D,L,R};