Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [J2ME] hướng dẫn tạo menu lựa chọn game

    bài này tôi sẽ hướng dẫn các bạn tạo menu với các lựa chọn trong J2ME

    tạo lớp Point.java

    Mã:
    package Zstar; import javax.microedition.xml.rpc.Operation; /**** @author zstar*/public class Point { private int X = 0;private int Y = 0; public Point() {} public Point(int x, int y) {this.X = x;this.Y = y;} public int getX() {return this.X;} public int getY() {return this.Y;}}
    tạo lớp Menu.java kế thừa từ GameCanvas

    Mã:
    package Zstar.menu; import Zstar.Point;import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*; /**** @author ZSTAR*/ public class Menu extends GameCanvas { private String[] options = {"New Game", "Map Editor", "High Score", "About", "Exit"};private Point locationMenu = new Point(30, 30);private int itemWidth;private int item_space = 15;private Image itemSelect;private Image itemUnselect;private Graphics g;private int itemHeight;private int currentIndex = 0;private int white = 0xffffff;private int black = 0x000000;private Font font; public Menu() {super(false);setFullScreenMode(true);try {this.g = this.getGraphics();itemSelect = Image.createImage("/Images/butoption_Press.png");itemUnselect = Image.createImage("/Images/butoption_unPress.png");this.itemHeight = itemSelect.getHeight();this.itemWidth = itemUnselect.getWidth();this.font = Font.getFont(Font.STYLE_ITALIC, Font.FACE_SYSTEM, Font.SIZE_SMALL);this.locationMenu = new Point(this.getWidth() / 2 - this.itemWidth / 2, this.locationMenu.getY());g.setFont(font);} catch (Exception e) {};} public void Draw() {for (int i = 0; i < options.length; i++) {if (currentIndex == i) {g.drawImage(itemSelect, locationMenu.getX(), locationMenu.getY() + i * itemHeight + item_space, Graphics.LEFT | Graphics.TOP); } else {g.drawImage(itemUnselect, locationMenu.getX(), locationMenu.getY() + i * itemHeight + item_space, Graphics.LEFT | Graphics.TOP);}g.drawString((i + 1) + ". " + options[i], locationMenu.getX() + 15, locationMenu.getY() + i * itemHeight + item_space + 5, Graphics.TOP | Graphics.LEFT);this.flushGraphics();}} private void clear_Item(int i) {g.setColor(this.white);g.fillRect(locationMenu.getX(), locationMenu.getY() + i * itemHeight + item_space, itemWidth, itemHeight);g.drawImage(itemUnselect, locationMenu.getX(), locationMenu.getY() + i * itemHeight + item_space, Graphics.LEFT | Graphics.TOP);g.setColor(this.black);g.drawString((i + 1) + ". " + options[i], locationMenu.getX() + 15, locationMenu.getY() + i * itemHeight + item_space + 5, Graphics.TOP | Graphics.LEFT); flushGraphics();} private void Draw_nextItem(int i) {clear_Item(i);g.drawImage(itemSelect, locationMenu.getX(), locationMenu.getY() + i * itemHeight + item_space, Graphics.LEFT | Graphics.TOP);g.drawString((i + 1) + ". " + options[i], locationMenu.getX() + 15, locationMenu.getY() + i * itemHeight + item_space + 5, Graphics.TOP | Graphics.LEFT);flushGraphics();} public void keyPressed(int keyCode) {switch (getGameAction(keyCode)) {case UP:clear_Item(currentIndex);menuSelectChange(-1);Draw_nextItem(currentIndex);break;case DOWN:clear_Item(currentIndex);menuSelectChange(1);Draw_nextItem(currentIndex);break;case FIRE://xu ly khi chon;break;}} private void menuSelectChange(int h) {//viec lua chon menu se chay vong troncurrentIndex += h + options.length;currentIndex = currentIndex % options.length;}}
    Tạo 1 Midlet để test menu như sau

    Mã:
    package Zstar; import Zstar.menu.*;import javax.microedition.lcdui.Display;import javax.microedition.midlet.*; /*** @author ZSTAR*/public class MenuMidlet extends MIDlet {private Menu menu; public void startApp() {menu=new Menu();menu.Draw();Display.getDisplay(this).setCurrent(menu);} public void pauseApp() {} public void destroyApp(boolean unconditional) {}}
    kết quả :
    [IMG]http:/zoqla.bay.livefilestore.com/y1pb_PyDhERuRlU-yMGoAiYndh-M1qp0JczQUXtz25fsED_QV8IY1FP4SBvbEI0HVD5eiq-JrKslOfNXHKj2K9Ib2e7TADKhaam/menu.png?psid=1[/IMG]

    menu sẽ được chọn khi bấm phím up,down
    chúc các bạn vui vẻ

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    anh hướng dẫn em thêm về sự kiện nút FIRE với khi mà tích vài nút NEW GAME thì nó hiện ra 1 trang 1 lớp canvas mới em đã làm thử nhưng bịn lối là java.lang.NullPointerException

  3. #3
    Trích dẫn Gửi bởi mapsaker
    anh hướng dẫn em thêm về sự kiện nút FIRE với khi mà tích vài nút NEW GAME thì nó hiện ra 1 trang 1 lớp canvas mới em đã làm thử nhưng bịn lối là java.lang.NullPointerException
    - Nút Fire code trên mình có sẵn rồi mà ? bạn code gì thì bỏ vào thôi
    - lỗi thì bạn phải đưa code lên mình mới biết chứ
    thường thì 1 ứng dụng j2me mình chỉ dùng duy nhất 1 lớp GameCanvas
    điều này có vài cái lợi :
    - tránh bị giật hình nếu dùng nhiều canvas
    - vẽ nhanh hơn , vì ko phải get graphics nhiều lần
    - bộ thu gom gc cũng đỡ phải làm việc nhiều

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    sau khi tạo được menu rồi làm sao để cho chương trình vào menu để sử dụng được

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •