J2ME Game Concept

1,498 views

Published on

การออกแบบการเล่นของเกมส์ให้ง่ายต่อความเข้าใจ
ขนาดของรูปภาพที่แสดงผลบนหน้าจอ
ขนาดของ files เสียง หรือ รูปภาพต่างๆที่นำมาใช้
ต้องไม่มีขนาดใหญ่จนเกินไป
จัดลำดับของ game loop ให้มีรูปแบบ
การเขียน Thread และใช้ runnable ให้คำนึงถึง
Memory และ condition ของเกมส์

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,498
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
2
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

J2ME Game Concept

  1. 1. J2ME Game Concept
  2. 2. หัวใจหลักของการสร้างเกมส์  การออกแบบการเล่นของเกมส์ให้ง่ายต่อความเข้าใจ  ขนาดของรูปภาพที่แสดงผลบนหน้าจอ  ขนาดของ files เสียง หรือ รูปภาพต่างๆที่นำามาใช้ ต้องไม่มีขนาดใหญ่จนเกินไป  จัดลำาดับของ game loop ให้มีรูปแบบ  การเขียน Thread และใช้ runnable ให้คำานึงถึง Memory และ condition ของเกมส์
  3. 3. หลักการออกแบบเกมส์  อุปกรณ์ใช้ในการพัฒนาตามความต้องการของเกมส์ – ความละเอียดของหน้าจอ – ขนาดของ jar file – เลือกรุ่นหรือซีรีส์ของอุปกรณ์  เป้าหมายของเกมส์ – จะทำายังไงให้ผู้เล่นเกิดความสนุกและท้าทาย – ทำาไม่ให้เกิดความเบื่อเมื่อเล่นบ่อยๆ – สร้างความน่าสนใจในเกมส์ – สร้างเนื่อเรื่องให้กับเกมส์ เกมส์จะต้องไม่เล่นยากหรือเร็วเกินไป แต่ต้องสร้างความท้าทาย
  4. 4. Classic Game Loop Start getInput Moving check Collision Repent Process End Games
  5. 5. Category Game  Action Game  Puzzle Game  Strategy Game  Others Game
  6. 6. Apple Tree import java.io.*; import java.util.Random; import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.*; import javax.microedition.media.*; import javax.microedition.midlet.*; public class appletree extends MIDlet { AppleCanvas canvas = new AppleCanvas(); public appletree() {} protected void destroyApp(boolean arg0) throws MIDletStateChangeException {} protected void pauseApp() {} protected void startApp() throws MIDletStateChangeException { Display display = Display.getDisplay(this); canvas.start(); display.setCurrent(canvas); } }
  7. 7. class AppleCanvas extends GameCanvas implements Runnable { boolean running; int cx, cy, w, h; int delay = 20; Sprite cowboy; Sprite appletree_bg; LayerManager layerManager; Apple apple[]= new Apple[8]; Random position_x = new Random(); int score = 0;
  8. 8. protected AppleCanvas() { super(true); w = getWidth(); h = getHeight(); cx = w/2; cy = h/2; Image img_cowboy =null; Image img_appleTree = null; try { img_cowboy = Image.createImage("/image/cowboy.png"); img_appleTree = Image.createImage("/image/appletree.png"); } catch (IOException e) {} cowboy = new Sprite(img_cowboy,32,48); appletree_bg = new Sprite(img_appleTree); layerManager = new LayerManager(); layerManager.append(cowboy); new_Apple(); layerManager.append(appletree_bg); }
  9. 9. public void new_Apple(){ for(int i=0;i<apple.length;i++){ apple[i] = new Apple(); apple[i].setW(w); apple[i].setH(h); layerManager.append(apple[i].getTumbleweed()); } } public void run() { Graphics g = getGraphics(); while(running){ input(); drawScreen(g); for(int i=0;i<apple.length;i++){ if(apple[i].getTumbleweed().collidesWith(cowboy, false)){ apple[i].setY(h+1); score++; playBgSound("/sound/power_sound.wav"); } } try {Thread.sleep(delay);} catch (InterruptedException e) {} } }
  10. 10. protected void playBgSound(final String a) { Runnable r = new Runnable() { public void run() { try { InputStream in = getClass().getResourceAsStream(a); Player player = Manager.createPlayer(in, "audio/x-wav"); player.start(); }catch (Exception e) {} } }; new Thread(r).start(); }
  11. 11. private void input() { int keyState = getKeyStates(); if(keyState== LEFT_PRESSED){ cx = cx - 5; cx = Math.max(0, cx); cowboy.setTransform(2); cowboy.nextFrame(); } else if(keyState== RIGHT_PRESSED){ cx = cx + 5; cx = Math.min(cx, w-32); cowboy.setTransform(0); cowboy.nextFrame(); } }
  12. 12. public void start() { running = true; Thread t = new Thread(this); t.start(); for(int i=0;i<apple.length;i++) { apple[i].start_thread(); } }
  13. 13. void drawScreen(Graphics g){ String score_string = "Score = "+score+""; g.setColor(255,255,255); g.fillRect(0, 0, w, h); cowboy.setPosition(cx, h - 48); for(int i=0;i<apple.length;i++) { apple[i].getTumbleweed().setPosition(apple[i].getX(),apple[i].getY()); } appletree_bg.setPosition(15, 0); layerManager.paint(g, 0, 0); g.setColor(0,0,0); g.drawString(score_string,0,10,0); flushGraphics(); } }
  14. 14. แนะนำำรูปแบบ  game Game boy scout รูปแบบการทำางานของเกมส์ – เราทำาหน้าที่เป็นลูกเสือ พาคนแก่ ข้ามถนนไปส่งที่ จุดหมาย – โดย จะต้องพาไปโดยไม่โดนรถชน – และพาไปส่งให้ถกจุดด้วยถึงจะได้คะแนน ู
  15. 15. -1 +2 -1 -1 -1 +5 Random หยุดเวลา เกำะกลำงถนน +1
  16. 16. แนะนำำรูปแบบ game  ทุบตัวตุ่น รูปแบบการทำางานของเกมส์ – ต้องทุบหัวตัวที่ขึ้นมาจากหลุมโดยจะมีหลุมอยู่ 9 หลุม โดยจะกดตีโดยใช้ เลย 1 - 9
  17. 17. 1 2 3 ตัวหลอก ถ้ำไปตกดตีจะ 4 5 6 เสียคะแนน 7 8 9 ถ้ำกดตีทันจะ ได้คะแนน การเพิ่งความสนุกของเกมส์ทำาได้โดย • เพิ่งความเร็ว • เพิ่ง Sprite ให้มีรูปแบบการแสดงต่างกัน • เพิ่งเสียงที่ดตื่นเต้น ู • เพิ่มหรือลด หลุมเช่นเริ่มต้นที่ 3 หลุมก่อน ต่อจากนันจึงเพิ่มไปเลือยๆจนถึง 9 หลุม ้ ่ • ถ้าผ่านแต่ละด่านจะมีภาพ animation ให้ดูพร้อมเสียงเพลง
  18. 18. WEB  http://www.java2s.com/  http://www.developer.com/  http://www.dbarnes.com/  http://www.j2mecodex.com/  http://developers.sun.com/mobility/midp/

×