logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Thủ thuật » Nokia s40 » » Xem bài viết
Xuống dưới »
avatar by Pham_loi Pham_loi
Chức vụ:
08:47:18, 29-07-2015

nhân vật và Sprite
Bài này sẽ chỉ cho bạn cách tạo ra những nhân vật trong game như thế nào, khác với map là những ô vuông được sắp xếp theo một trật tự cố định, nhân vật thì có nhiều sự chuyển động hơn và class Sprite cho phép chúng ta làm được điều đó:
Công thức
<?php
Sprite s
=new Sprite(ảnh nguồn,dài spritecao sprite); //nếu ảnh nguồn có dài và cao là bội số của dài và cao sprite thì ta tạo được một sprite động (tức là chiều dài và chiều cao ảnh nguồn sẽ chia hết cho chiều dài và chiều cao của ảnh nguồn), khi đó chúng ta có thể cho hiển thị một frame nào đó ra ngoài bằng cách gọi s.setFrame(index frame). Còn về setPosition và paint thì tượng tự như tiledlayer.
?>

Copy code

Bây giờ chúng ta tạo một class mới, class này có tác dụng tạo một Sprite mới từ một ảnh nguồn và cho hiển thị tại frame chỉ định cũng như một điểm xuất hiện trên graphics.
add.java
<?php
import javax
.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class 
add{
private 
Sprite s;
public 
add(){}
void addsprite(Graphics g,Image im,int f,int x,int y){
s=new Sprite(im,32,32);
s.setFrame(f);
s.setPosition(x,y);
s.paint(g);
}
}
?>

Copy code

Để dùng class này vào trong class map bài trước ta thêm vào map.java như sau( ở đây tôi dùng một ảnh nguồn gồm 4 frame
):
<?php
import javax
.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class 
map extends GameCanvas implements Runnable
{
private 
vd main;
private 
add sp=new add();
private 
Graphics g=getGraphics();
int w=getWidth();
int h=getHeight();
private 
Image t,ch;
private 
TiledLayer tl;
private 
int x=w/2,y=h/2,f=0;
private 
boolean play=true;
private 
intmap={
4,4,4,1,1,4,4,4,4,4,
4,4,1,1,4,4,4,4,4,4,
4,4,1,1,4,4,1,1,4,4,
4,4,1,1,3,1,1,4,4,4,
4,4,1,1,1,1,1,1,4,4,
4,4,4,4,1,1,1,2,4,4,
1,4,4,4,1,1,4,4,4,4,
1,4,4,4,1,1,4,4,4,1,
1,4,4,4,4,4,4,4,4,1,
1,1,4,4,4,4,4,4,1,1
};
public 
map(vd main){
super(false);
this.main=main;}
void start(){
Thread t=new Thread(this); t.start();}
public 
void run()
{
try{
ch=Image.createImage("/s.png");
t=Image.createImage("/t.png");}catch(Exception e){}
tl=new TiledLayer(10,10,t,32,32);
for(
int i=0;i<map.length;i++){
int col=i%10;
int row=(i-col)/10;
tl.setCell(col,row,map[i);}
while(
play){ input();
g.setColor(0x000000);
g.fillRect(0,0,w,h);
tl.setPosition(x,y);
tl.paint(g);
sp.addsprite(g,ch,f,w/2,h/2);
flushGraphics();
try{
Thread.sleep(30);}catch(Exception e){}//cho ngung mot thoi gian
}
}
void input(){
int k=getKeyStates();
if(
k==UP_PRESSED){y+=3f=1;}
if(
k==LEFT_PRESSED){x+=3f=2;}
if(
k==RIGHT_PRESSED){x-=3f=3;}
if(
k==DOWN_PRESSED){y-=3f=0;}
}
}
?>

Copy code


Chỉnh sửa lúc 2016-07-11 05:59 bởi Pham_loi
Like: 0

Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014

XtGem Forum catalog