import javax.microedition.lcdui.*; import java.io.*; import java.util.*; import javax.microedition.lcdui.game.*; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; class Louend extends Canvas implements Runnable{ Liiguta nihuta; //Salvestamine seivi; Graphics g; Thread kell = new Thread(this); int servaruum=5; int kiirus=500; int laius_min=servaruum*2; int korgus_min=servaruum*2; int korgus_max=this.getHeight()-(servaruum*4); int laius_max=(this.getWidth()/2)-(servaruum*2); int samm=(korgus_max-korgus_min)/20; int kujundiX=4; int kujundiY=19; boolean[][] kujund = new boolean[4][4]; boolean[][] tabelis = new boolean[20][10]; boolean paus=false; public Louend(){ algvaartusta(); nihuta=new Liiguta(tabelis); //kujund=nihuta.tee_uus_kujund(); kujund=nihuta.liikuv_kujund; kell.start(); } protected void paint(Graphics graafika){ g=graafika; if(paus){ }else{ kujundus(); kujundid(); if(nihuta.manglabi){ skoor(); } } } /* * Joonistab kogu üldkujunduse alates raamist ja ruudustikust kuni punktiskoorini välja */ protected void kujundus(){ g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(0, 0, 0); g.drawRoundRect(servaruum,servaruum,getWidth()-(servaruum*2),getHeight()-(servaruum*2),servaruum,servaruum); g.drawRect(laius_min,korgus_min,(getWidth()/2)-(servaruum*4),getHeight()-(servaruum*6)); g.setColor(150, 150, 150); //horisontaalsed triibud int j=korgus_min; for(int i=0;i<=20;i++){ g.drawLine(laius_min,j,laius_max,j); j+=samm; } //vertikaalsed triibud j=laius_min; for(int i=0;i<=10;i++){ g.drawLine(j,korgus_min,j,korgus_max); j+=samm; } g.setColor(0, 0, 0); g.drawString("Punkte: "+String.valueOf(nihuta.skoor), laius_max+10, korgus_min,g.LEFT|g.TOP); g.drawString("Boonus: "+String.valueOf(nihuta.boonus), laius_max+10, korgus_min+15,g.LEFT|g.TOP); g.drawString("Kiirus: "+String.valueOf(kiirus), laius_max+15, korgus_max-10,g.LEFT|g.TOP); // järgmise kujundi paneel //horisontaalsed g.setColor(150, 150, 150); int j_=korgus_max/3; int laius_min_=(getWidth()/2)+servaruum; int laius_max_=laius_min_+(4*samm); for(int i=0;i<=4;i++){ g.drawLine(laius_min_,j_,laius_max_,j_); j_+=samm; } j_=laius_min_; int korgus_min_=korgus_max/3; int korgus_max_=(korgus_max/3)+(4*samm); for(int i=0;i<=4;i++){ g.drawLine(j_,korgus_min_,j_,korgus_max_); j_+=samm; } g.setColor(0, 0, 0); } /* * Joonistab ruudustiku sisu, ehk klotsid/kujundid + järgmise kujundi */ protected void kujundid(){ for(int i=0;i<20;i++){ for(int j=0;j<10;j++){ if(tabelis[i][j]==true){ int y=korgus_max-(i*samm)-samm; int x=laius_min+(j*samm); g.drawRect(x,y,6,6); } } } // Järgmine kujund for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ if(nihuta.jargmine[i][j]==true){ int y=(korgus_max/3)+(i*samm); int x=(getWidth()/2)+servaruum+(j*samm); g.drawRect(x,y,6,6); } } } } /* * joonistab parimate tulemuste edetabeli */ protected void skoor(){ if(nihuta.skoor>=100){ Tetris_3.c.addCommand(Tetris_3.c6); } g.setColor(255, 255, 255); int keskx=getWidth()/2; int kesky=(getHeight()/2)-45; g.fillRect(keskx-75,kesky,150,95); g.setColor(0, 0, 0); g.drawRect(keskx-75,kesky,150,95); kesky+=5; g.drawString("..::PARIMAD MÄNGIJAD::..", keskx-65,kesky,g.LEFT|g.TOP); kesky+=10; for(int i=1;i<=3;i++){ kesky+=10; g.drawString("#"+i, keskx-60,kesky,g.LEFT|g.TOP); g.drawString(nihuta.seivi.nimed[i], keskx-25,kesky,g.LEFT|g.TOP); g.drawString(String.valueOf(nihuta.seivi.punktiskoorid[i]), keskx+20,kesky,g.LEFT|g.TOP); } kesky+=20; g.drawString("Sinu skoor oli : "+String.valueOf(nihuta.skoor), keskx-60,kesky,g.LEFT|g.TOP); } /* * Klahvikuular. Peale iga vajutust värskendatakse ekraani */ protected void keyPressed(int nupukood){ if(getGameAction(nupukood)==Canvas.LEFT){tabelis=nihuta.vasakule(kujundiX,kujundiY,kujund);} if(getGameAction(nupukood)==Canvas.RIGHT){tabelis=nihuta.paremale(kujundiX,kujundiY,kujund);} if(getGameAction(nupukood)==Canvas.DOWN){tabelis=nihuta.alla(kujundiX,kujundiY,kujund);} if(getGameAction(nupukood)==Canvas.FIRE){kujund=nihuta.poora(kujundiX,kujundiY,kujund);} if(nihuta.manglabi==true){ kell=null; try{ gameover(); }catch(Exception e){} }else{ kujund=nihuta.liikuv_kujund; kujundiY=nihuta.y; kujundiX=nihuta.x; } repaint(); } /* * Mängu sisene kell, eraldi lõimes. * Iga ajaühiku jooksul värskendadatakse ekraani ning liigutatakse kujundit alla ühe ühiku võrra. * Ühtlasi määrab ära mängu kiiruse */ public void run(){ while(!nihuta.manglabi){ try{Thread.sleep(kiirus);}catch(Exception e){} if(paus){ }else{ tabelis=nihuta.alla(kujundiX,kujundiY,kujund); kujund=nihuta.liikuv_kujund; kujundiY=nihuta.y; kujundiX=nihuta.x; repaint(); } } try{gameover();}catch(Exception e){ //System.out.println("no krt, jälle kala:"+e); } } /* * Lööb mänguväljad nulli */ protected void algvaartusta(){ for(int i=0;i<20;i++){ for(int j=0;j<10;j++){ tabelis[i][j]=false; // lihtsalt testiks if((i==0)&&(j==0)||((i==0)&&(j==1))||((i==0)&&(j==2))||((i==0)&&(j==3))||((i==0)&&(j==4))||((i==0)&&(j==5))||((i==0)&&(j==6))||((i==0)&&(j==7))){ tabelis[i][j]=true; } } } //System.out.println("tabel algvaartustatud"); } protected void gameover() throws Exception{ //System.out.println("statistika"); g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(0, 0, 0); } }