Và đây là file RPG.java của chúng ta
C:\Users\thanhliem\Documents\NetBeansProjects\RPG\src\RPG.java |
import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.*; public class RPG extends Canvas{ //các biến này bao gồm kích thước màn hình w,h, khung hiện tại hiện thị f, phím nhấn k int w,h,f=2,k; //biến thời gian ghi lại mốc thời gian di chuyển cuối cùng long lm=0; //nhân vật được tạo qua lớp Sprite là có sẵn trong GameCanvas Sprite nv; //hình ảnh sử dụng Image im; public RPG(){ setFullScreenMode(true); w=getWidth(); h=getHeight(); try{ //tạo hình ảnh trước im=Image.createImage("/nv.png"); //tạo Sprite sau khi đã có hình ảnh, mỗi khung nhỏ là 16x16 nv=new Sprite(im,16,16);}catch(Exception e){}} public void paint(Graphics g){ //lệnh tô màn hình g.setColor(0); g.fillRect(0,0,w,h); //hàm xử lí di chuyển theo phím bấm move(); //vẽ nhân vật ra màn hình thông qua hàm paint có sẵn của lớp Sprite nv.paint(g); //cho vẽ lại repaint();} public void keyPressed(int k){this.k=k;} public void keyReleased(int k){this.k=0;} //hàm di chuyển sẽ xữ lí phím bấm k để xác định khung của nhân vật void move(){ //ở đây cho kiểm tra nếu lần di chuyển cuối cùng cách thời gian hiện tại 20 milli giây thì cho di chuyển tiếp. if(lm<curr()-20&&k!=0){ //công thức xử lí phím và khung hiện tại để cho ra khung ảnh phù hợp, bạn tự thế vào và xem nó có đúng không nhé. f=f%2==0?(-k-1)*2+1:(-k-1)*2; //sau khi di chuyển thì cho mốc thời gian lần cuối thay đổi. lm=curr(); } //đặt giá trị khung ảnh và vị trí nhân vật trên màn hình. nv.setFrame(f); nv.setPosition(w/2,h/2); } //hàm trả về thời gian hiện tại, do sử dụng nhiều lần nên làm riêng một hàm cho khõi phải mất công viết lại. long curr(){return System.currentTimeMillis();} }Chúng ta cũng cần một Midlet.java để ứng dụng hoạt động được.
C:\Users\thanhliem\Documents\NetBeansProjects\RPG\src\Midlet.java |
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Midlet extends MIDlet { public void startApp() { Display.getDisplay(this).setCurrent(new RPG()); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }Kết quả đây :
source jar
Không có nhận xét nào:
Đăng nhận xét