Chủ Nhật, 18 tháng 11, 2012

giới hạn màn hình

tức nhiên nếu cứ để cho những chiếc xe chạy ra khỏi giới hạn của màn hình thì chẳng biết nó sẽ đi tới đâu, thật sự thì nó không thể nào đi quá giới hạn của biến int nhưng mà ta cũng có thể coi là đó là một nơi vô tận. bây giờ ta sẽ giới hạn khả năng di chuyển của chúng, nhưng chiếc xe khi gặp khung màn hình thì không di chuyển thêm nữa. ta biến đổi T.java như sau:

//T.java

import javax.microedition.lcdui.*;

public class T {
F d;
int x,y,f,color,w,h;
long lm=0;
byte[][] shape={{0,1,0,1,1,1,1,0,1},{1,0,1,1,1,1,0,1,0},{0,1,1,1,1,0,0,1,1},{1,1,0,0,1,1,1,1,0}};

public T(int x,int y,int color,int w, int h){
this.x=x;
this.y=y;
this.color=color;
d=new F(x+16,y+16,0xf00000,50);
this.w=w;
this.h=h;
}

boolean check(){return (lm<System.currentTimeMillis()-60);}

public void paint(Graphics g,int k){
switch(k){
case -1: f=0; if(check()){y-=16; if(y<0)y=0; lm=System.currentTimeMillis();} break;
case -2: f=1; if(check()){y+=16; if(y>h-16*3)y=h-16*3; lm=System.currentTimeMillis();} break;
case -3: f=2; if(check()){x-=16; if(x<0)x=0; lm=System.currentTimeMillis();} break;
case -4: f=3; if(check()){x+=16; if(x>w-16*3) x=w-16*3; lm=System.currentTimeMillis();}break;
case -5: d.f=this.f; break;}
g.setColor(color);
for(int i=0;i<shape[f].length;i++){
int c=i%3,r=(i-c)/3;
g.fillRect(x+c*16,y+r*16,16*shape[f][i],16*shape[f][i]);}
d.fire(g,x+16,y+16);
}
}

. Do hàm khởi tạo trong T.java đã thay đổi nên trong game.java ta cũng thay đổi khởi tạo cho biến tx

public game(Midlet m){
this.m=m;
setFullScreenMode(true);
w=getWidth();
h=getHeight();
fh=f.getHeight();
t=new T(0,0,0xf0f0f0,w,h);
x=new T(w-16*3,h-16*3,0x6060f0,w,h);}

* Kết quả rất mãn nguyện:

Đăng nhận xét