Insane
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ụ:
02:37:06, 02-06-2016

một nhân vật trên nền không
đây là bài đơn giản nhất mà ai cũng có thể làm được, và nó là bắt đầu cho những gì đó thật phức tạp sau này. Chúng ta sẽ cho hiện thị ra một hình ảnh của nhân vật và điều hướng nó cũng như hình ảnh mà nó sẽ xuất hiện trên màn hình. Hình ảnh mà ta sử dụng ở đây là một hình ảnh gồm 8 hình ảnh nhỏ, mỗi ảnh nhỏ sẽ gọi là khung ảnh và được tính từ 0, ứng với mỗi khung là một hướng mà nhân vật chúng ta sẽ hiện thị. Mỗi khung là 16x16, vậy 8 khung là 128x16
img
Và đây là file RPG.java của chúng ta
C:\Users\thanhliem\Documents\NetBeansProjects\RPG\src\RPG.java

<?php
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();}
}
?>

Copy code

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
<?php
/*
 * 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) {
    }
}
?>

Copy code

Kết quả đây :

img


Source: RPG-49912.zip
Jar: RPG-44072.jar

Like: 0

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