import java.util.*; import java.awt.*; // // End point of marble // // This object dictates all the objects // // public class object248 extends object{ long oldtime=0; private General general; int state=0; boolean debug=false; Sound splash; int TIME=300; int here; int pos; int rolldir=1; int rollx=0; int rolly=0; int rollpos=1; int o=249; // Object to investigate public object248(){ objnumber=248; methods[0]="hit"; methods[1]="action1"; methods[2]="event"; } public void init(Global glbl){ global=glbl; image=global.loadImage(global.Server, global.Directory+"248"+global.Extention, global.show); sound=global.loadSound(global.Server, global.Directory+"248.au"); splash=global.loadSound(global.Server, global.Directory+"3.au"); general=new General(global,getNr()); // Locates the starting object = 249 here=global.grid.next(0,0,248); pos=global.grid.next(0,0,249); global.grid.set(pos,250); // change into ball position frame o=249; } public void execute(){ if(method.compareTo("event")==0) event(); if(method.compareTo("resetevent")==0) resetevent(); if(method.compareTo("event1")==0) event1(); if(method.compareTo("action1")==0) action1(); if(method.compareTo("hit")==0){ hit(); return; } } public void hit(){ // Is ball in pocket? if(pos==here){ global.grid.set(here,1); global.doboard=true; } } public void action1(){ state=1; } // Action methods public void event1(){ if(general != null) state=general.push(state); } public void event2(){ global.freeze=false; global.aftermoves=true; state=3; } public void resetevent(){ if(global.object==248 && global.perform) state=1; } public void event(){ Date d=new Date(); if(d.getTime() < oldtime+TIME)return; oldtime=d.getTime(); // Move the marble moveMarble(); // put everything here like a 'run' method switch(state){ case 1: event1(); break; case 2: event2(); break; } // draw image } public void moveMarble(){ // find the marble int f=global.grid.get(pos); int r=0; //System.out.println("Pos: "+pos+" object on pos: "+f+" "); switch(o){ // +-- Start object case 249: // f==253 doesn't exist :) // end of start object switch(f){ case 252: // Check if there is an object on the right r=global.grid.get(pos+global.STEPP); switch(r){ case 254: o=254; global.grid.set(pos,249); pos+=global.STEPP; global.grid.set(pos,256); rolldir=1; //f=256; break; case 275: o=275; global.grid.set(pos,249); pos+=global.STEPP; global.grid.set(pos,277); rolldir=1; break; case 281: o=281; global.grid.set(pos,249); pos+=global.STEPP; global.grid.set(pos,283); rolldir=1; break; default: rolldir=-1; global.grid.set(pos,f+rolldir); break; } // switch r break; // start object begin case 250: // check if ther is an object on the left (this is not true for 249) // if not rolldir=1; global.grid.set(pos,f+rolldir); break; default: global.grid.set(pos,f+rolldir); break; } // switch f break; // -- case 254: switch(f){ // Begin of -- case 255: // check if ther is an object on the left // if not r=global.grid.get(pos-global.STEPP); System.out.println("(254) Object found on the left: "+r); switch(r){ case 249: o=249; global.grid.set(pos,254); pos-=global.STEPP; global.grid.set(pos,251); //f=252; rolldir=-1; break; case 254: o=254; global.grid.set(pos,254); pos-=global.STEPP; global.grid.set(pos,259); //f=261;; rolldir=-1; break; case 261: o=261; global.grid.set(pos,254); pos-=global.STEPP; global.grid.set(pos,263); rolldir=1; break; case 288: o=288; global.grid.set(pos,254); pos-=global.STEPP; global.grid.set(pos,293); rolldir=-1; break; default: rolldir=1; global.grid.set(pos,f+rolldir); break; }// switch r break; // end of -- case 260: // Check if there is an object on the right r=global.grid.get(pos+global.STEPP); // if not System.out.println("(254)Object found on the riht: "+r); switch(r){ case 254: o=254; global.grid.set(pos,254); pos+=global.STEPP; global.grid.set(pos,256); rolldir=1; //f=255; break; case 275: o=275; global.grid.set(pos, 254); // object back pos+=global.STEPP; global.grid.set(pos,277); rolldir=1; break; case 281: o=281; global.grid.set(pos,254); pos+=global.STEPP; global.grid.set(pos,283); rolldir=1; break; case 248: // finish global.grid.set(pos,254); global.grid.set(here, 1); rolldir=0; break; default: rolldir=-1; global.grid.set(pos,f+rolldir); break; } // switch r break; default: global.grid.set(pos,f+rolldir); break; } // switch f break; // -| corner case 261: switch(f){ case 262: // Check if there is an object on the right (-- or -|) r=global.grid.get(pos+global.STEPP); switch(r){ case 254: o=254; global.grid.set(pos,261); pos+=global.STEPP; global.grid.set(pos,256); rolldir=1; break; case 275: o=275; global.grid.set(pos,261); // back object pos+=global.STEPP; global.grid.set(pos,277); rolldir=1; break; case 281: o=281; global.grid.set(pos,261); pos+=global.STEPP; global.grid.set(pos,283); rolldir=1; break; case 248: // finish global.grid.set(pos,261); global.grid.set(here, 1); rolldir=0; break; default: rolldir=1; global.grid.set(pos,f+rolldir); break; } break; case 267: r=global.grid.get(pos-(((global.WIDTH)*global.STEPP)*global.STEPP)); // Check if there is on object ABOVE ( | or |-) switch(r){ case 268: o=268; global.grid.set(pos,261); // set object back pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos, 270); rolldir=1; break; case 275: o=275; global.grid.set(pos,261); // back object pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos, 279); rolldir=-1; break; case 281: o=281; global.grid.set(pos,261); // back object pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos, 286); rolldir=-1; break; case 288: o=288; global.grid.set(pos, 261); pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,290); rolldir=1; break; default: rolldir=-1; global.grid.set(pos,f+rolldir); break; } // switch r break; default: global.grid.set(pos,f+rolldir); break; } break; case 268: switch(f){ case 269: // check below if htere is an object r=global.grid.get(pos+((global.WIDTH*global.STEPP)*global.STEPP)); switch(r){ case 261: o=261; global.grid.set(pos,268); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,266); rolldir=-1; break; case 268: o=268; global.grid.set(pos,268); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,272); rolldir=-1; break; case 281: o=281; global.grid.set(pos,268); // set boject back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,286); rolldir=-1; break; default: rolldir=1; global.grid.set(pos,f+rolldir); break; } // switch r break; case 274: // check above if htere is an object r=global.grid.get(pos-((global.WIDTH*global.STEPP)*global.STEPP)); switch(r){ case 261: o=261; global.grid.set(pos,268); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,263); rolldir=1; break; case 268: o=268; global.grid.set(pos,268); // set object back pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,273); rolldir=-1; break; case 275: o=275; global.grid.set(pos,268); // set boject back pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,279); rolldir=-1; break; case 281: o=281; global.grid.set(pos,268); // set boject back pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,286); rolldir=-1; break; case 288: o=288; global.grid.set(pos, 268); pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,290); rolldir=1; break; default: rolldir=-1; global.grid.set(pos,f+rolldir); break; } // switch r break; default: global.grid.set(pos, f+rolldir); break; } break; case 275: switch(f){ case 276: r=global.grid.get(pos-global.STEPP); // check left switch(r){ case 261: o=261; global.grid.set(pos,275); // set object back pos-=global.STEPP; global.grid.set(pos,263); rolldir=1; break; case 254: o=254; global.grid.set(pos,275); // put object back pos-=global.STEPP; global.grid.set(pos,259); rolldir=-1; break; case 249: o=249; global.grid.set(pos,275); // put object back pos-=global.STEPP; global.grid.set(pos,251); rolldir=-1; break; case 288: o=288; global.grid.set(pos,275); // set object back pos-=global.STEPP; global.grid.set(pos,293); rolldir=-1; break; default: rolldir=1; global.grid.set(pos,f+rolldir); break; } // switch r break; case 280: r=global.grid.get(pos+((global.WIDTH*global.STEPP)*global.STEPP)); // check down switch(r){ case 268: o=268; global.grid.set(pos,275); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,273); rolldir=-1; break; case 261: o=261; global.grid.set(pos,275); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,266); rolldir=-1; break; case 281: o=281; global.grid.set(pos,275); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,286); rolldir=-1; break; default: rolldir=-1; global.grid.set(pos,f+rolldir); break; } // switch r; break; default: global.grid.set(pos,f+rolldir); break; } break; case 281: switch(f){ case 282: // check left r=global.grid.get(pos-global.STEPP); switch(r){ case 261: o=261; global.grid.set(pos,281); // set object back pos-=global.STEPP; global.grid.set(pos,263); rolldir=1; break; case 254: o=254; global.grid.set(pos,281); // put object back pos-=global.STEPP; global.grid.set(pos,259); rolldir=-1; break; case 249: o=249; global.grid.set(pos,281); // put object back pos-=global.STEPP; global.grid.set(pos,251); rolldir=-1; break; case 288: o=288; global.grid.set(pos,281); // set object back pos-=global.STEPP; global.grid.set(pos,293); rolldir=-1; break; default: rolldir=1; global.grid.set(pos,f+rolldir); break; } // switch r break; case 287: // check up r=global.grid.get(pos-((global.WIDTH*global.STEPP)*global.STEPP)); switch(r){ case 261: o=261; global.grid.set(pos,281); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,263); rolldir=1; break; case 268: o=268; global.grid.set(pos,281); // set object back pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,270); rolldir=1; break; case 275: o=275; global.grid.set(pos,281); // set boject back pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,279); rolldir=-1; break; case 288: o=288; global.grid.set(pos, 281); // set object back pos-=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,290); rolldir=1; break; default: rolldir=-1; global.grid.set(pos,f+rolldir); break; } // switch r break; default: global.grid.set(pos,f+rolldir); break; } break; // |- case 288: switch(f){ // right check case 294: // Check if there is an object on the right r=global.grid.get(pos+global.STEPP); switch(r){ case 254: o=254; global.grid.set(pos,288); pos+=global.STEPP; global.grid.set(pos,256); rolldir=1; break; case 275: o=275; global.grid.set(pos,288); // back object pos+=global.STEPP; global.grid.set(pos,277); rolldir=1; break; case 281: o=281; global.grid.set(pos,288); pos+=global.STEPP; global.grid.set(pos,283); rolldir=1; break; case 248: // finish global.grid.set(pos,288); global.grid.set(here, 1); rolldir=0; break; default: rolldir=-1; global.grid.set(pos,f+rolldir); break; } break; // down check case 289: r=global.grid.get(pos+((global.WIDTH*global.STEPP)*global.STEPP)); switch(r){ case 268: o=268; global.grid.set(pos,288); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,273); rolldir=-1; break; case 261: o=261; global.grid.set(pos,288); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,266); rolldir=-1; break; case 281: o=281; global.grid.set(pos,288); // set object back pos+=((global.WIDTH*global.STEPP)*global.STEPP); global.grid.set(pos,286); rolldir=-1; break; default: rolldir=1; global.grid.set(pos,f+rolldir); break; } // switch r; break; default: global.grid.set(pos,f+rolldir); break; } // switch f break; } // switch o global.boardrow=pos==0?0:pos/(global.WIDTH*global.STEPP); global.boardcol=pos==0?0:pos%(global.WIDTH*global.STEPP); global.boardwidth=-1; global.boardheight=-1; global.doboard=true; } }