import java.util.*; import java.awt.*; // // Element // public class object32 implements GameObject{ int teller=0; int py=0; //player y int px=0; //player x int f=4; private Image image; public Image ballinhole; public Sound sound; public Global global; public String arg1=new String(""); public String arg2=new String(""); public String method=new String(""); public String retval=new String(""); public String list[]=new String[10]; int state=0; private int objnumber=32; static final int objtarget=42; int pos=0; boolean debug=false; String methods[]={ "add", "delete", "hit", "event1", "event2", "event", "fill", "resetevent", ""}; public void init(Global glbl){ global=glbl; if(debug)System.out.println("init object32!"); image=global.loadImage(global.Server, global.Directory+getNr()+global.Extention, global.game); sound=global.loadSound(global.Server, global.Directory+"1.au"); ballinhole=global.loadImage(global.Server, global.Directory+getNr()+"_200"+global.Extention, global.game); for(int i=0; i<10;i++) list[i]=new String(""); } public Image getImage(int framenr,int dir){return image;} public void execute(){ if(method.compareTo("add")==0) add(); if(method.compareTo("hit")==0) hit(); if(method.compareTo("event")==0) event(); if(method.compareTo("event1")==0) event1(); if(method.compareTo("event2")==0) event2(); if(method.compareTo("resetevent")==0) resetevent(); if(method.compareTo("fill")==0) fill(); } public void setMethod(String s){ method=s; } public String getRetval(){ return retval; } public void setArg(int i, String value){ list[i]=value; } public void add(){ System.out.println("arg1: "+list[0]+" "+list[1]); retval=arg1+arg2; } public boolean is(String meth){ boolean retval=false; int m=methods.length; for(int i=0; i < m && !retval; i++){ if(methods[i].compareTo(meth) == 0) retval=true; } return retval; } public void hit(){ int nextobj=0; //System.out.println("object: "+getNr()+" staic:"+objtarget); if(global.playsound){ if(sound!=null){ sound.play(); } } // Global.Playerstate global.playerstate=1; // Display Duke push movement // original it is the location of the player // but when ball hits ball it is the location of the ball py=Integer.parseInt(list[0]); px=Integer.parseInt(list[1]); System.out.println("Hit arrived in objecT: "+getNr()+" .. and the dir is : "+global.dir+ "py = "+py+" playery: "+global.playery+" px : "+px+ " playerx :"+global.playerx); if(global.playerx == px && global.playery == py){ if(getNr()==32 && global.usernr != 1002)return; if(getNr()==35 && global.usernr != 1000)return; if(getNr()==37 && global.usernr != 1001)return; if(getNr()==39 && global.usernr != 1003)return; } if(global.getProperty("collide").indexOf("false") == 0){ System.out.println("ANIMATION !!!");System.out.println("ANIMATION !!!");System.out.println("ANIMATION !!!"); // assume we are going to collide with other powers global.setProperty("collide", "true"); for(int i=0; i < global.PLAYERFRAMES; i++) global.animationstack.add(global.frameticker++,global.playery, global.playerx, global.usernr , 1 ,"true" , global.dir, global.playery,global.playerx);; } // animation to the global.dir switch(global.dir){ case 0: // right if(global.preventmovepush(py, px, global.dir))return; nextobj=global.grid.getobject(py, px+(global.MAXFRAMES*2)); if(nextobj==getNr()+200) right_fill(); switch(nextobj){ case 1: right_push(); break; case 47: case 147: righttodown(py,px+global.MAXFRAMES); break; case 48: case 148: righttoup(py,px+global.MAXFRAMES); break; default: // no push break; } break; case 1: // up if(global.preventmovepush(py, px, global.dir))return; nextobj=global.grid.getobject(py-(global.MAXFRAMES*2), px); if(nextobj==getNr()+200)up_fill(); switch(nextobj){ case 1: up_push(); break; case 46: case 146: uptoright(py-global.MAXFRAMES,px); break; case 47: case 147: uptoleft(py-global.MAXFRAMES,px); break; default: // no push break; } break; case 2: // left if(global.preventmovepush(py, px, global.dir))return; nextobj=global.grid.getobject(py, px-(global.MAXFRAMES*2)); if(nextobj==getNr()+200)left_fill(); switch(nextobj){ case 1: left_push(); break; case 46: case 146: lefttodown(py,px-global.MAXFRAMES); break; case 49: case 149: lefttoup(py,px-global.MAXFRAMES); break; default: // no push break; } break; case 3: // down if(global.preventmovepush(py, px, global.dir))return; nextobj=global.grid.getobject(py+(global.MAXFRAMES*2), px); if(nextobj==getNr()+200)down_fill(); switch(nextobj){ case 1: down_push(); break; case 48: case 148: downtoleft(py+global.MAXFRAMES,px); break; case 49: case 149: downtoright(py+global.MAXFRAMES,px); break; default: // no push break; } break; } state=1; if(debug)System.out.println(" Hit on object32"); } public void left_push(){ int animationframe=0; boolean stop=false; if(px-global.MAXFRAMES > 0){ global.grid.setyx(py,px-global.MAXFRAMES,1); }else{ global.animationstack.add(global.frameticker++,py, px-global.MAXFRAMES, getNr() ,animationframe,"true" , global.dir, py, px-global.MAXFRAMES); } for(int xx=px-global.MAXFRAMES; xx > 0 && !stop; xx-=global.MAXFRAMES){ int oo=global.grid.getobject(py, xx-(global.MAXFRAMES*1)); System.out.println(" LEFT push .. oo = "+oo+ " xx: "+xx); if(oo==1){ for(int i=0; i0?i-f:0)), 1 ,animationframe, "true", global.dir, py, xx-global.MAXFRAMES); global.animationstack.add(global.frameticker++,py, xx-i, getNr() ,animationframe,i==global.MAXFRAMES?"true":"false", global.dir, py, xx-global.MAXFRAMES); } }else{ System.out.println( "LEFT PUSH .. we hit something : "+oo); stop=true; global.animationstack.add(global.frameticker++,py, xx, getNr() ,animationframe,"true", global.dir, py, xx); if(oo == 46 || oo == 146) // object / which moves the ball to different dir { lefttodown(py,xx); } if(oo == 49 || oo == 149) { lefttoup(py,xx); } if(oo == 32 || oo == 35 || oo == 37 || oo == 39){ global.gameobject[oo].setMethod("hit"); global.gameobject[oo].setArg(0,""+py); global.gameobject[oo].setArg(1,""+xx); global.gameobject[oo].execute(); } } } } public void right_push(){ int animationframe=0; boolean stop=false; global.grid.setyx(py,px+global.MAXFRAMES,1); for(int xx=px+global.MAXFRAMES; xx < global.MAXW*global.MAXFRAMES && !stop; xx+=global.MAXFRAMES){ int oo=global.grid.getobject(py, xx+(global.MAXFRAMES*1)); System.out.println("xx: "+xx+" global.MAXW*mxframes: "+(global.MAXW*global.MAXFRAMES)+" oo : "+oo); if(oo==1){ for(int i=0; i0?i-f:0)), 1 ,animationframe, "false", global.dir, py, xx+global.MAXFRAMES); global.animationstack.add(global.frameticker++,py, xx+i, getNr() ,animationframe,"false", global.dir, py, xx+global.MAXFRAMES); } }else{ stop=true; global.animationstack.add(global.frameticker++,py, xx, getNr() ,animationframe,"true", global.dir, py, xx); if(oo==47 || oo==147){ righttodown(py,xx); } if(oo==48 || oo==148){ righttoup(py,xx); } if(oo == 32 || oo == 35 || oo == 37 || oo == 39){ global.gameobject[oo].setMethod("hit"); global.gameobject[oo].setArg(0,""+py); global.gameobject[oo].setArg(1,""+xx); global.gameobject[oo].execute(); } } } } public void up_push(){ int animationframe=0; boolean stop=false; if(py-(global.MAXFRAMES*1) > 0){ global.grid.setyx(py-global.MAXFRAMES,px,1); }else{ if(global.grid.getobject(py-(global.MAXFRAMES*2),px) == 1) global.animationstack.add(global.frameticker++, py-global.MAXFRAMES , px, getNr() ,animationframe,"true", global.dir, py-global.MAXFRAMES, px); else stop=true; } for(int yy=py-global.MAXFRAMES; yy > 0 && !stop; yy-=global.MAXFRAMES){ int oo=global.grid.getobject(yy-(global.MAXFRAMES*1), px); if(oo==1){ for(int i=0; i0?i-f:0)), px, 1 , 0 , "true", global.dir, yy-global.MAXFRAMES, px); global.animationstack.add(global.frameticker++, yy-i , px, getNr() ,animationframe,i==global.MAXFRAMES?"true":"false", global.dir, yy-global.MAXFRAMES, px); } }else{ global.animationstack.add(global.frameticker++,yy, px, getNr() ,0,"true", global.dir, yy, px); stop=true; if(oo == 47 || oo == 147){ uptoleft(yy,px); } if(oo == 46 || oo == 146){ uptoright(yy,px); } if(oo == 32 || oo == 35 || oo == 37 || oo == 39){ global.gameobject[oo].setMethod("hit"); global.gameobject[oo].setArg(0,""+yy); global.gameobject[oo].setArg(1,""+px); global.gameobject[oo].execute(); } } } } public void down_push(){ int animationframe=0; boolean stop=false; global.grid.setyx(py+global.MAXFRAMES,px,1); for(int yy=py+global.MAXFRAMES; yy < global.MAXH*global.MAXFRAMES && !stop; yy+=global.MAXFRAMES){ int oo=global.grid.getobject(yy+(global.MAXFRAMES*1), px); if(oo==1){ for(int i=0; i0?i-f:0)), px, 1 , 0 , "false", global.dir, yy+global.MAXFRAMES, px); global.animationstack.add(global.frameticker++, yy+i , px, getNr() ,animationframe,"false", global.dir, yy+global.MAXFRAMES, px); } }else{ global.animationstack.add(global.frameticker++,yy, px, getNr() ,0,"true", global.dir, yy, px); stop=true; if(oo == 48 || oo == 148){ downtoleft(yy,px); } if(oo == 49 || oo == 149){ downtoright(yy,px); } if(oo == 32 || oo == 35 || oo == 37 || oo == 39){ global.gameobject[oo].setMethod("hit"); global.gameobject[oo].setArg(0,""+yy); global.gameobject[oo].setArg(1,""+px); global.gameobject[oo].execute(); } } } } public void left_fill(){ global.grid.setyx(py,px-global.MAXFRAMES,1); global.grid.setyx(py,px-(global.MAXFRAMES*2),1); global.game.redraw(py,px-(global.MAXFRAMES*1)); global.game.redraw(py,px-(global.MAXFRAMES*2)); } public void right_fill(){ global.grid.setyx(py,px+global.MAXFRAMES,1); global.grid.setyx(py,px+(global.MAXFRAMES*2),1); global.game.redraw(py,px+(global.MAXFRAMES*1)); global.game.redraw(py,px+(global.MAXFRAMES*2)); } public void up_fill(){ global.grid.setyx(py-global.MAXFRAMES,px,1); global.grid.setyx(py-(global.MAXFRAMES*2),px,1); global.game.redraw(py-(global.MAXFRAMES*1),px); global.game.redraw(py-(global.MAXFRAMES*2),px); } public void down_fill(){ global.grid.setyx(py+global.MAXFRAMES,px,1); global.grid.setyx(py+(global.MAXFRAMES*2),px,1); global.game.redraw(py+(global.MAXFRAMES*1),px); global.game.redraw(py+(global.MAXFRAMES*2),px); } public void event2(){ } public void event1(){ } public String toString(){ return "object"+getNr(); } public int getNr(){return objnumber;} public void resetevent(){ } public void event(){ // put everything here like a 'run' method switch(state){ case 1: event1(); break; case 2: event2(); break; } // draw image } // // // // DIRECTIONAL CHANGE // // public void lefttodown(int py, int xx){ if(global.grid.getobject(py+global.MAXFRAMES,xx-global.MAXFRAMES)==1){ // Using animation stack to remove the all of where it is // currently on the screen // global.animationstack.add(global.frameticker++,py, xx, 1 ,0,"true", global.dir, py, xx); px=xx-global.MAXFRAMES; py+=global.MAXFRAMES; global.dir=3; down_push(); } } public void righttodown(int py, int xx){ // Using animation stack to remove the all of where it is // currently on the screen // if(global.grid.getobject(py+global.MAXFRAMES,xx+global.MAXFRAMES)==1){ global.animationstack.add(global.frameticker++,py, xx, 1 ,0,"true", global.dir, py, xx); px=xx+global.MAXFRAMES; py+=global.MAXFRAMES; global.dir=3; down_push(); } } public void uptoright(int yy, int px){ if(global.grid.getobject(yy-global.MAXFRAMES,px+global.MAXFRAMES)==1){ global.animationstack.add(global.frameticker++,yy, px, 1 ,0,"true", global.dir, yy, px); px=px+global.MAXFRAMES; py=yy-global.MAXFRAMES; global.dir=0; right_push(); } } public void uptoleft(int yy, int px){ if(global.grid.getobject(yy-global.MAXFRAMES,px-global.MAXFRAMES)==1){ global.animationstack.add(global.frameticker++,yy, px, 1 ,0,"true", global.dir, yy, px); px=px-global.MAXFRAMES; py=yy-global.MAXFRAMES; global.dir=2; left_push(); } } public void righttoup(int py, int xx){ if(global.grid.getobject(py-global.MAXFRAMES,xx+global.MAXFRAMES)==1){ global.animationstack.add(global.frameticker++,py, xx, 1 ,0,"true", global.dir, py, xx); px=xx+global.MAXFRAMES; py=py-global.MAXFRAMES; global.dir=1; up_push(); } } public void downtoleft(int yy, int px){ if(global.grid.getobject(yy+global.MAXFRAMES,px-global.MAXFRAMES)==1){ global.animationstack.add(global.frameticker++,yy, px, 1 ,0,"true", global.dir, yy, px); px=px-global.MAXFRAMES; py=yy+global.MAXFRAMES; global.dir=2; left_push(); } } public void downtoright(int yy, int px){ if(global.grid.getobject(yy+global.MAXFRAMES,px+global.MAXFRAMES)==1){ global.animationstack.add(global.frameticker++,yy, px, 1 ,0,"true", global.dir, yy, px); px=px+global.MAXFRAMES; py=yy+global.MAXFRAMES; global.dir=0; right_push(); } } public void lefttoup(int py, int xx){ int xr=global.grid.getobject(py-global.MAXFRAMES,xx-global.MAXFRAMES); if(xr==1){ // Using animation stack to remove the all of where it is // currently on the screen // global.animationstack.add(global.frameticker++,py, xx, 1 ,0,"true", global.dir, py, xx); px=xx-global.MAXFRAMES; py=py-global.MAXFRAMES; global.dir=1; up_push(); }else{ System.out.println("NOT 1 -- -1?"); } } public void fill(){ int y=Integer.parseInt(list[1]); int x=Integer.parseInt(list[2]); int calcy=y==0?0:y/global.MAXFRAMES; int calcx=x==0?0:x/global.MAXFRAMES; global.grid.setyx(y,x,1); global.game.redraw(y,x); } }