import java.util.*; import java.awt.*; // // PUSH ONCE OBJECT // // When object/person gets near it it will push one place away // // public class object78 extends object{ long oldtime=0; int list[]=new int[1000]; Image image2; int ppw,pph=0; Image img[]=new Image[10]; int crashstate=0; int listnr=0; private int state=1; boolean no=false; int looper=0; // display part of the monkey turning int ll=0; // ll = number of monkey Sound crashsound; boolean crash=false; int pos=0; public object78(){ objnumber=78; methods[0]="hit"; methods[1]="resetevent"; methods[2]="action1"; methods[3]="action2"; methods[4]="action3"; methods[5]="action4"; methods[6]="event"; methods[7]="event1"; methods[8]="event2"; methods[9]="aftermove"; } public void init(Global glbl){ boolean found=false; global=glbl; if(image==null){ image=global.loadImage(global.Server,global.Directory+"78"+global.Extention,global.show); image2=global.loadImage(global.Server,global.Directory+"78_1"+global.Extention,global.show); sound=global.loadSound(global.Server, global.Directory+"78.au"); crashsound=global.loadSound(global.Server, global.Directory+"78_1.au"); } for(int i=0; i < 7; i++){ img[i]=global.loadImage(global.Server,global.Directory+"78_"+i+global.Extention,global.show); if(img[i]==null){ img[i]=image; } } int nr=0; listnr=0; // global.setObjectState(78,"0"); crashstate=0; pos=0; while(!found){ nr=global.grid.next(nr==0?0:nr%(global.WIDTH*global.STEPP),nr==0?0:nr/(global.WIDTH*global.STEPP), 78); if(nr < 0) found=true; else{ // Add the position to the list list[listnr++]=nr; } nr++; } crash=false; if(listnr < 1) no=true; // No object 78 found on level (?) else no=false; } public void execute(){ if(method.compareTo("aftermove")==0) aftermove(); if(method.compareTo("hit")==0) hit(); if(method.compareTo("resetevent")==0) resetevent(); if(method.compareTo("event1")==0) event1(); if(method.compareTo("event2")==0) event2(); if(method.compareTo("event") == 0) event(); } public void aftermove(){ pos=0; } // machine crashes public void crash(){ for(int i=0; i < global.WIDTH; i++) for(int j=0;j < global.HEIGHT; j++) global.grid_items[j*global.STEPP][i*global.STEPP]=177; if(global.playsound){ crashsound.play(); } } // // // --- // // check the machine // ---- // public void event1(){ int cw=0; int ch=0; int cd=0; int x=global.player.getX(); int y=global.player.getY(); int pw=x==0?0:x; int ph=y==0?0:y; boolean stop=false; int o; //objet int o1; // object behind object int PUSHER=77; try{ // For all object78 we have for(int kd=0; kd < listnr ; kd++){ cw=list[kd]==0?0:((list[kd])%(global.WIDTH*global.STEPP)); ch=list[kd]==0?0:((list[kd] )/ (global.WIDTH*global.STEPP)); if(!crash){ // UP o=global.grid.getxy(cw,ch-global.STEPP); o1=global.grid.getxy(cw,ch-global.STEPP-global.STEPP); if(o > 1 || (pw == cw && ph == (ch-global.STEPP)) && o != PUSHER){ // remove object (maybe pusher) global.grid.setxy(cw,ch-global.STEPP,1); if(o!=PUSHER) global.grid.setxy(cw,ch-global.STEPP-global.STEPP,o); if(o!=PUSHER){ if((o1 != 1 && !crash) || (pw == cw && ph == (ch-global.STEPP-global.STEPP))){ Date date=new Date(); oldtime=date.getTime()+10; ppw=cw==0?0:cw/global.STEPP; pph=ch==0?0:ch/global.STEPP; crash=true; }else{ if(o > 1){ if(global.playsound)sound.play(); global.grid.setxy(cw,ch-global.STEPP-global.STEPP,o); } else{ if(global.playsound)sound.play(); global.player.set(cw,ch-global.STEPP-global.STEPP); } global.grid.setxy(cw,ch-global.STEPP, PUSHER); } } show(); } // DOWN o=global.grid.getxy(cw,ch+global.STEPP); o1=global.grid.getxy(cw,ch+global.STEPP+global.STEPP); if(o > 1 || (pw == cw && ph == (ch+global.STEPP)) && o != PUSHER){ // remove object (maybe pusher) global.grid.setxy(cw,ch+global.STEPP,1); if(o!=PUSHER) global.grid.setxy(cw,ch+global.STEPP+global.STEPP,o); if(o!=PUSHER){ if((o1 != 1 && !crash) || (pw == cw && ph == (ch+global.STEPP+global.STEPP))){ Date date=new Date(); oldtime=date.getTime()+10; ppw=cw==0?0:cw/global.STEPP; pph=ch==0?0:ch/global.STEPP; crash=true; }else{ if(o > 1){ if(global.playsound)sound.play(); global.grid.setxy(cw,ch+global.STEPP+global.STEPP,o); } else{ if(global.playsound)sound.play(); global.player.set(cw,ch+global.STEPP+global.STEPP); } global.grid.setxy(cw,ch+global.STEPP, PUSHER); } } show(); } // RIGHT o=global.grid.getxy(cw+global.STEPP,ch); o1=global.grid.getxy(cw+global.STEPP+global.STEPP,ch); if(o > 1 || ( ch == ph && pw==(cw+global.STEPP)) && o != PUSHER){ // remove object (maybe pusher) global.grid.setxy(cw+global.STEPP,ch,1); if(o!=PUSHER) global.grid.setxy(cw+global.STEPP+global.STEPP,ch,o); if(o!=PUSHER){ if((o1 != 1 && !crash) || (ph == ch && pw == (cw+global.STEPP+global.STEPP))){ Date date=new Date(); oldtime=date.getTime()+10; ppw=cw==0?0:cw/global.STEPP; pph=ch==0?0:ch/global.STEPP; crash=true; }else{ if(o > 1){ if(global.playsound)sound.play(); global.grid.setxy(cw+global.STEPP+global.STEPP,ch,o); } else{ if(global.playsound)sound.play(); global.player.set(cw+global.STEPP+global.STEPP, ch); } global.grid.setxy(cw+global.STEPP,ch, PUSHER); } } show(); } // LEFT o=global.grid.getxy(cw-global.STEPP,ch); o1=global.grid.getxy(cw-global.STEPP-global.STEPP,ch); if(o > 1 || ( ch == ph && pw==(cw-global.STEPP)) && o != PUSHER){ // remove object (maybe pusher) global.grid.setxy(cw-global.STEPP,ch,1); if(o!=PUSHER) global.grid.setxy(cw-global.STEPP-global.STEPP,ch,o); if(o!=PUSHER){ if((o1 != 1 && !crash) || (ph == ch && pw == (cw-global.STEPP-global.STEPP))){ Date date=new Date(); oldtime=date.getTime()+10; ppw=cw==0?0:cw/global.STEPP; pph=ch==0?0:ch/global.STEPP; crash=true; }else{ if(o > 1){ if(global.playsound)sound.play(); global.grid.setxy(cw-global.STEPP-global.STEPP,ch,o); } else{ if(global.playsound)sound.play(); global.player.set(cw-global.STEPP-global.STEPP, ch); } global.grid.setxy(cw-global.STEPP,ch, PUSHER); } } show(); } }else{ show(); } } }catch(Exception egeg){ System.out.println(" Exception aftermove in object78!"+egeg); } if(crash){ if(global.playsound) global.freeze=true; global.State=global.DONOTHING; // crash(); state=3; } } public void show(){ global.boardrow=-1; global.boardcol=-1; global.boardwidth=-1; global.boardheight=-1; global.doboard=true; } public void hit(){ } public void event1s(){ if(no)return; Date d=new Date(); if(d.getTime() < oldtime+1000)return; oldtime=d.getTime(); } public void event2(){ /* // global.freeze=false; global.doreload=true; // ESCape // redo the level global.resetevent=true; // tell environment to execute resetevent state=0; */ } public void resetevent(){ // Date d=new Date();oldtime=d.getTime(); listnr=0; state=1; global.freeze=false; crashstate=0; no=true; } public void event(){ // put everything here like a 'run' method switch(state){ case 1: event1(); break; case 2: event2(); break; case 3: event3();break; case 4: event4();break; } // draw image } public void event3(){ Date d=new Date(); if((long)(d.getTime()) < oldtime+50)return; oldtime=(long)d.getTime(); global.freeze=true; global.State=global.DONOTHING; global.show.graphicsboard.setColor(new Color(crashstate*30, 0,0)); global.show.graphicsboard.fillRect(0,0,global.WIDTH*global.show.SIZE,(global.HEIGHT+1)*global.show.SIZE); global.show.graphicsboard.drawImage(img[crashstate], ppw*global.show.SIZE, pph*global.show.SIZE,global.show); // play sound if(global.playsound)crashsound.play(); if(crashstate++ > 7) state=4; } public void event4(){ System.out.println("event4"); state=1; crash=false; crashstate=0; global.setInfo("The machine exploded!"); global.doreload=true; // ESCape // redo the level global.resetevent=true; // tell environment to execute resetevent global.freeze=false; } }