Snack's 1967

MXH AVATAR[iOS, ANDROI, JAVA]
IWIN ONLINE 2013[iOS, ANDROI, JAVA]
NAM QUỐC SƠN HÀ - KHÍ PHÁCH ANH HÙNG[iOS, ANDROI, JAVA]
MOBIARMY- SO TÀI SÚNG NHỰA[iOS, ANDROI, JAVA]
MUSIC CITY-NHẢY AUDITION[iOS, ANDROI, JAVA]
Tự tạo 1 game xe tăng với j2me




kết quả của ta sẽ như thế này. ta không cần phải thiết kế thêm class X nữa mà chúng ta dùng class T để tạo luôn xe tăng chướng ngại, chỉ cần đổi màu một chút là được, và kết quả ta được như sau:
















Tất nhiên trong file game.java chúng ta cũng phải thay đổi một chút để đưa hai đối tượng T này vào:





import javax.microedition.lcdui.*;



public class game extends Canvas {

String["> smenu={"play game","help","about"};

int w,h,fh,mindex=0,mode=0,k;

Midlet m;

Font f=Font.getDefaultFont();

T t,x;



public game(Midlet m){

this.m=m;

setFullScreenMode(true);

w=getWidth();

h=getHeight();

fh=f.getHeight();

t=new T(0,0,0xf0f0f0);

x=new T-192;}



public void paint(Graphics g){

g.setColor(0);

g.fillRect(0, 0, w, h);

g.setColor(0xf0f0f0);

switch(mode){

case 0: //vẽ menu

//vẽ thanh index

g.fillRect0/2+mindex*fh, w, fh);

//vẽ các menu

for0{

if(i==mindex){g.setColor(0);}else{g.setColor(0xf0f0f0);}

g.drawString0/2+i*fh, Graphics.HCENTER|Graphics.TOP);

}

break;

case 1: //vẽ game play

g.drawString0;

t.paint(g, k);

x.paint(g, k);

break;

case 2: //vẽ help

g.drawString0;

break;

case 3: //vẽ about

g.drawString0;

break;}

//vẽ nút lệnh

g.setColor(0xf0f0f0);

g.drawString("exit", 0, h, Graphics.LEFT|Graphics.BOTTOM);

g.drawString("back", w, h, Graphics.RIGHT|Graphics.BOTTOM);

repaint();}



protected void keyReleased(int k){this.k=0;}



public void keyPressed(int k){

this.k=k;

//cho di chuyển vị trí thanh menu

if(mode==0){

if-1mindex--;

if-2mindex++;

if(mindex<0 )mindex=smenu.length-1;

if(mindex==smenu.length)mindex=0;



//thay đổi mode khi lựa chọn menu

if-5mode=mindex+1;

//các lệnh cho menu góc màn hình

if-6m.notifyDestroyed();}

if-7mode=0;}

}





. Bây giờ thì viết thêm class F nữa, đây sẽ là đạn bắn ra từ các xe.



//F.java

import javax.microedition.lcdui.*;

public class F {

int x,y,color,f=-1,speed;

long lm=0;

public F(int x,int y,int color,int speed){

this.x=x;

this.y=y;

this.color=color;

this.speed=speed;}

public void fire(Graphics g,int x,int y){

if-1{this.x=x; this.y=y;}

g.setColor(color);

if(System.currentTimeMillis()%500<250)

g.fillRect(this.x,this.y,16,16);



if-1-speed){

switch(f){

case 0: this.y-=16; break;

case 1: this.y+=16; break;

case 2: this.x-=16; break;

case 3: this.x+=16; break;}

lm=System.currentTimeMillis();}

if-1&gt;240||Math.abs0&gt;320)){f=-1;}

}

}




. cuối cùng thì mỗi xe đều có khả năng nhả đạn, nên trong T class ta chỉnh sửa lại một chút để tạo khả năng bắn đạn cho các xe này.



//T.java

import javax.microedition.lcdui.*;



public class T {

F d;

int x,y,f,color;

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){

this.x=x;

this.y=y;

this.color=color;

d=new F32;}

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



public void paint(Graphics g,int k){

switch(k){

case -1: f=0; if(check()){y-=16; lm=System.currentTimeMillis();} break;

case -2: f=1; if(check()){y+=16; lm=System.currentTimeMillis();} break;

case -3: f=2; if(check()){x-=16; lm=System.currentTimeMillis();} break;

case -4: f=3; if(check()){x+=16; lm=System.currentTimeMillis();}break;

case -5: d.f=this.f; break;}

g.setColor(color);

for0{

int c=i%3,r=0/3;

g.fillRect0;}

d.fire32;

}

}














kết quả ta được như thế này.






====
====
trúng đạn


bây giờ tôi sẽ thêm một hàm vào trong game.java để phát hiện xem khi nào thì xe ta bị trúng đạn hoặc là xe địch bị ta bắn trúng.





//game.java



import javax.microedition.lcdui.*;



public class game extends Canvas {

String["> smenu={"play game","help","about"};

int w,h,fh,mindex=0,mode=0,k;

Midlet m;

Font f=Font.getDefaultFont();

T t,x;





public game(Midlet m){

this.m=m;

setFullScreenMode(true);

w=getWidth();

h=getHeight();

fh=f.getHeight();

t=new T(0,0,0xf0f0f0);

x=new T-192;}



public void paint(Graphics g){

g.setColor(0);

g.fillRect(0, 0, w, h);

g.setColor(0xf0f0f0);

switch(mode){

case 0: //vẽ menu

//vẽ thanh index

g.fillRect0/2+mindex*fh, w, fh);

//vẽ các menu

for0{

if(i==mindex){g.setColor(0);}else{g.setColor(0xf0f0f0);}

g.drawString0/2+i*fh, Graphics.HCENTER|Graphics.TOP);

}

break;

case 1: //vẽ game play

g.drawString0;

t.paint(g, k);

x.paint(g, 0);



//nếu như là kiểm tra thấy đạn của xe này chạm xe kia thì cho xe kia bị đổi màu, tức nhiên là trong thực tế bạn có thể cho nó biến mất



if(check(t,x)){x.color-=0x000010;}

if(check(x,t)){t.color-=0x100000;}



break;

case 2: //vẽ help

g.drawString0;

break;

case 3: //vẽ about

g.drawString0;

break;}

//vẽ nút lệnh

g.setColor(0xf0f0f0);

g.drawString("exit", 0, h, Graphics.LEFT|Graphics.BOTTOM);

g.drawString("back", w, h, Graphics.RIGHT|Graphics.BOTTOM);

repaint();}



protected void keyReleased(int k){this.k=0;}



public void keyPressed(int k){

this.k=k;

//cho di chuyển vị trí thanh menu

if(mode==0){

if-1mindex--;

if-2mindex++;

if(mindex<0)mindex=smenu.length-1;

if(mindex==smenu.length)mindex=0;

//thay đổi mode khi lựa chọn menu

if-5mode=mindex+1;

//các lệnh cho menu góc màn hình

if-6m.notifyDestroyed();}

if-7mode=0;}







 //hàm check này nhận giá trị là 2 kiểu T và sau đó kiểm tra xem tọa độ đạn của xe đầu và tọa độ của xe sau nếu như mà chạm nhau thì trả lại giá trị true, tương đương với nghĩa là đã bắn trúng.



boolean check(T a, T b){

int xc=0/16/3;

int yc=0/16/3;

if-1{return true;}

return false;}




}





* kết quả như sau, sau khi trúng đạn xe địch thay đổi màu:


...
Từ khóa: Tự, tạo, 1, game, xe, tăng, với, j2me
Lên trên Có thể bạn quan tâm
Chia sẻ:facebookYahoo Zing TwitterGoogle[sms]G+GO
BB Code:
Link:
4