import javax.microedition.lcdui.*; import java.util.*; public class M2ng extends Canvas implements CommandListener{ static final int RUUTE_REAS=8; int ruuduKylg; int pikkus; int laius; int dx; int dy; Timer t; Vector Nupud=new Vector(); Ruut valikuRuut=new Ruut(0,1,false); Ruut valitudRuut=new Ruut(0,1, false); boolean valitud=false; Ruut must; boolean liiguVasakule=false; Command exit=new Command("Välju", Command.EXIT,1); Command undo=new Command("Undo", Command.SCREEN, 2); public M2ng(){ addCommand(exit); addCommand(undo); setCommandListener(this); pikkus=getHeight(); laius=getWidth(); int lyhemKylg=pikkus>laius?laius:pikkus; ruuduKylg=lyhemKylg/RUUTE_REAS; dx=(laius-lyhemKylg)/2; dy=(pikkus-lyhemKylg)/2; reset(); } public void commandAction(Command command, Displayable displayable) { if (command==exit){ JaneseMang.instance.notifyDestroyed(); } if (command==undo){ teeUndo(); // ARVUTI KÄIK! teeUndo(); // MINU KÄIK! } } void teeUndo(){ if (JaneseMang.ajalugu.empty()){ return; } Liigutus tmp=(Liigutus)JaneseMang.ajalugu.pop(); Ruut nupp=getNupp(tmp.kuhu.x, tmp.kuhu.y); nupp.liiguta(tmp.kust.x, tmp.kust.y); } void reset(){ if (!Nupud.isEmpty()){ Nupud.removeAllElements(); } for(int x=1; x=RUUTE_REAS || y>=RUUTE_REAS || x<0 || y<0){ return new Ruut(0,1,false); } Ruut tmp; for(int i=0; i0){ valikuRuut.x--; } } if (getGameAction(kood)==UP){ if (valikuRuut.y>0){ valikuRuut.y--; } } if (getGameAction(kood)==DOWN){ if (valikuRuut.y<(RUUTE_REAS-1)){ valikuRuut.y++; } } if (getGameAction(kood)==FIRE){ if (valikuRuut.liiguta(valikuRuut.x, valikuRuut.y) && !valitud){ Ruut mis=getNupp(valikuRuut.x, valikuRuut.y); if (mis!=null && !mis.olenMust){ valitudRuut.x=valikuRuut.x; valitudRuut.y=valikuRuut.y; valitud=true; } } else if (valitud && valikuRuut.x==valitudRuut.x && valikuRuut.y==valitudRuut.y){ valitud=false; }else{ liigutaNuppu(); } } } public void showNotify(){ t=new Timer(); TimerTask tt=new TimerTask(){ public void run(){ liiguta(); } }; t.schedule(tt,50,50); } public void hideNotify(){ t.cancel(); } }