j2me game concept

18
J2ME J2ME Game Concept Game Concept

Upload: jenchoke-tachagomain

Post on 15-Apr-2017

1.480 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: J2ME  Game Concept

J2MEJ2MEGame Game

ConceptConcept

Page 2: J2ME  Game Concept

หวใจหลกของการสรางเกมสหวใจหลกของการสรางเกมส การออกแบบการเลนของเกมสใหงายตอความเขาใจการออกแบบการเลนของเกมสใหงายตอความเขาใจ ขนาดของรปภาพทแสดงผลบนหนาจอขนาดของรปภาพทแสดงผลบนหนาจอ ขนาดของ ขนาดของ filesfiles เสยงเสยง หรอ รปภาพตางๆทนำามาใชหรอ รปภาพตางๆทนำามาใช

ตองไมมขนาดใหญจนเกนไปตองไมมขนาดใหญจนเกนไป จดลำาดบของ จดลำาดบของ game loop game loop ใหมรปแบบใหมรปแบบ การเขยน การเขยน Thread Thread และใช และใช runnable runnable ใหคำานงถงใหคำานงถงMemory Memory และ และ condition condition ของเกมสของเกมส

Page 3: J2ME  Game Concept

หลกการออกแบบเกมสหลกการออกแบบเกมส อปกรณใชในการพฒนาตามความตองการของเกมสอปกรณใชในการพฒนาตามความตองการของเกมส

– ความละเอยดของหนาจอความละเอยดของหนาจอ– ขนาดของขนาดของ jar filejar file– เลอกรนหรอซรสของอปกรณเลอกรนหรอซรสของอปกรณ

เปาหมายของเกมสเปาหมายของเกมส– จะทำายงไงใหผเลนเกดความสนกและทาทายจะทำายงไงใหผเลนเกดความสนกและทาทาย– ทำาไมใหเกดความเบอเมอเลนบอยๆทำาไมใหเกดความเบอเมอเลนบอยๆ– สรางความนาสนใจในเกมสสรางความนาสนใจในเกมส– สรางเนอเรองใหกบเกมสสรางเนอเรองใหกบเกมส

เกมสจะตองไมเลนยากหรอเรวเกนไป เกมสจะตองไมเลนยากหรอเรวเกนไป แตตองสรางความทาทายแตตองสรางความทาทาย

Page 4: J2ME  Game Concept

ClassicClassic Game LoopGame LoopStart

getInput

Moving

checkCollision

Repent

Process End Games

Page 5: J2ME  Game Concept

Category GameCategory GameAction GameAction GamePuzzle GamePuzzle GameStrategy GameStrategy GameOthers GameOthers Game

Page 6: J2ME  Game Concept

Apple TreeApple Treeimportimport java.io.*; java.io.*;importimport java.util.Random; java.util.Random;importimport javax.microedition.lcdui.*; javax.microedition.lcdui.*;importimport javax.microedition.lcdui.game.*; javax.microedition.lcdui.game.*;importimport javax.microedition.media.*; javax.microedition.media.*;importimport javax.microedition.midlet.*; javax.microedition.midlet.*;

publicpublic classclass appletree appletree extendsextends MIDlet { MIDlet {AppleCanvas canvas = AppleCanvas canvas = newnew AppleCanvas(); AppleCanvas();

publicpublic appletree() {} appletree() {}protectedprotected voidvoid destroyApp( destroyApp(booleanboolean arg0) arg0) throwsthrows

MIDletStateChangeException {}MIDletStateChangeException {}protectedprotected voidvoid pauseApp() {} pauseApp() {}protectedprotected voidvoid startApp() startApp() throwsthrows MIDletStateChangeException MIDletStateChangeException

{{Display display = Display.Display display = Display.getDisplaygetDisplay((thisthis););canvas.start();canvas.start();display.setCurrent(canvas);display.setCurrent(canvas);}}

}}

Page 7: J2ME  Game Concept

classclass AppleCanvas AppleCanvas extendsextends GameCanvas GameCanvas implementsimplements Runnable { Runnable {

booleanboolean running; running;intint cx, cy, w, h; cx, cy, w, h;intint delay = 20; delay = 20;Sprite cowboy;Sprite cowboy;Sprite appletree_bg;Sprite appletree_bg;

LayerManager layerManager;LayerManager layerManager;Apple apple[]= Apple apple[]= newnew Apple[8]; Apple[8];

Random position_x = Random position_x = newnew Random(); Random(); intint score = 0; score = 0;

Page 8: J2ME  Game Concept

protectedprotected AppleCanvas() { AppleCanvas() {supersuper((truetrue););w = getWidth();w = getWidth();h = getHeight();h = getHeight();cx = w/2;cx = w/2;cy = h/2;cy = h/2;

Image img_cowboy =Image img_cowboy =nullnull;;Image img_appleTree = Image img_appleTree = nullnull;;

trytry { {img_cowboy = Image.img_cowboy = Image.createImagecreateImage("/image/cowboy.png");("/image/cowboy.png");img_appleTree = Image.img_appleTree = Image.createImagecreateImage("/image/appletree.png");("/image/appletree.png");} } catchcatch (IOException e) {} (IOException e) {}cowboy = cowboy = newnew Sprite(img_cowboy,32,48); Sprite(img_cowboy,32,48);appletree_bg = appletree_bg = newnew Sprite(img_appleTree); Sprite(img_appleTree);layerManager = layerManager = newnew LayerManager(); LayerManager();layerManager.append(cowboy);layerManager.append(cowboy);new_Apple();new_Apple();layerManager.append(appletree_bg);layerManager.append(appletree_bg);

}}

Page 9: J2ME  Game Concept

publicpublic voidvoid new_Apple(){ new_Apple(){forfor((intint i=0;i<apple.length;i++){ i=0;i<apple.length;i++){apple[i] = apple[i] = newnew Apple(); Apple();apple[i].setW(w);apple[i].setW(w);apple[i].setH(h);apple[i].setH(h);layerManager.append(apple[i].getTumbleweed());layerManager.append(apple[i].getTumbleweed());}}

}}publicpublic voidvoid run() { run() {

Graphics g = getGraphics();Graphics g = getGraphics();whilewhile(running){(running){input();input();drawScreen(g);drawScreen(g);forfor((intint i=0;i<apple.length;i++){ i=0;i<apple.length;i++){ifif(apple[i].getTumbleweed().collidesWith(cowboy, (apple[i].getTumbleweed().collidesWith(cowboy, falsefalse)){)){apple[i].setY(h+1);apple[i].setY(h+1);score++;score++;playBgSound("/sound/power_sound.wav");playBgSound("/sound/power_sound.wav");}}}}trytry {Thread. {Thread.sleepsleep(delay);} (delay);} catchcatch (InterruptedException e) {} (InterruptedException e) {}}}

}}

Page 10: J2ME  Game Concept

protected protected void playBgSound(final String a) {void playBgSound(final String a) {Runnable r = new Runnable()Runnable r = new Runnable()

{{public void run() {public void run() {try {try {InputStream in = InputStream in =

getClass().getResourceAsStream(a);getClass().getResourceAsStream(a);Player player = Manager.Player player = Manager.createPlayercreatePlayer(in, "audio/x-(in, "audio/x-wav");wav");

player.start();player.start();}catch (Exception e) {}}catch (Exception e) {}}}

};};new Thread(r).start();new Thread(r).start();

}}

Page 11: J2ME  Game Concept

privateprivate voidvoid input() { input() {intint keyState = getKeyStates(); keyState = getKeyStates();ifif(keyState== (keyState== LEFT_PRESSEDLEFT_PRESSED){ ){

cx = cx - 5;cx = cx - 5;cx = Math.cx = Math.maxmax(0, cx);(0, cx);cowboy.setTransform(2);cowboy.setTransform(2);cowboy.nextFrame();cowboy.nextFrame();

} } elseelse ifif(keyState== (keyState== RIGHT_PRESSEDRIGHT_PRESSED){){cx = cx + 5;cx = cx + 5;cx = Math.cx = Math.minmin(cx, w-32);(cx, w-32);cowboy.setTransform(0);cowboy.setTransform(0);cowboy.nextFrame();cowboy.nextFrame();

}}}}

Page 12: J2ME  Game Concept

publicpublic voidvoid start() { start() {running = running = truetrue;;Thread t = Thread t = newnew Thread( Thread(thisthis););t.start();t.start();

forfor((intint i=0;i<apple.length;i++) { i=0;i<apple.length;i++) {apple[i].start_thread();apple[i].start_thread();

}}}}

Page 13: J2ME  Game Concept

voidvoid drawScreen(Graphics g){ drawScreen(Graphics g){String score_string = "Score = "+score+"";String score_string = "Score = "+score+"";g.setColor(255,255,255);g.setColor(255,255,255);g.fillRect(0, 0, w, h);g.fillRect(0, 0, w, h);cowboy.setPosition(cx, h - 48);cowboy.setPosition(cx, h - 48);forfor((intint i=0;i<apple.length;i++) { i=0;i<apple.length;i++) {

apple[i].getTumbleweed().setPosition(apple[i].getX(),apple[i].getY());apple[i].getTumbleweed().setPosition(apple[i].getX(),apple[i].getY());}}appletree_bg.setPosition(15, 0);appletree_bg.setPosition(15, 0);layerManager.paint(g, 0, 0);layerManager.paint(g, 0, 0);g.setColor(0,0,0);g.setColor(0,0,0);g.drawString(score_string,0,10,0);g.drawString(score_string,0,10,0);flushGraphics();flushGraphics();}}

}}

Page 14: J2ME  Game Concept

แนะนำ�รปแบบ แนะนำ�รปแบบ gamegame GameGame boy scoutboy scout

รปแบบการทำางานของเกมสรปแบบการทำางานของเกมส– เราทำาหนาทเปนลกเสอ พาคนแก ขามถนนไปสงทจดเราทำาหนาทเปนลกเสอ พาคนแก ขามถนนไปสงทจด

หมาย หมาย – โดย จะตองพาไปโดยไมโดนรถชนโดย จะตองพาไปโดยไมโดนรถชน– และพาไปสงใหถกจดดวยถงจะไดคะแนนและพาไปสงใหถกจดดวยถงจะไดคะแนน

Page 15: J2ME  Game Concept

เก�ะกล�งถนน

+2 +5-1 -1 -1 -1

หยดเวลา

+1

Random

Page 16: J2ME  Game Concept

แนะนำ�รปแบบ แนะนำ�รปแบบ gamegame ทบตวตนทบตวตน

รปแบบการทำางานของเกมสรปแบบการทำางานของเกมส– ตองทบหวตวทขนมาจากหลมโดยจะมหลมอย ตองทบหวตวทขนมาจากหลมโดยจะมหลมอย 9 9 หลม โดยจะกดตโดยใช เลย หลม โดยจะกดตโดยใช เลย 1 - 91 - 9

Page 17: J2ME  Game Concept

1 2 3

4 5 6

7 8 9

ตวหลอกถ�ไปตกดตจะเสยคะแนน

ถ�กดตทนจะไดคะแนน การเพงความสนกของเกมสทำาไดโดยการเพงความสนกของเกมสทำาไดโดย

• เพงความเรวเพงความเรว• เพง เพง Sprite Sprite ใหมรปแบบการแสดงตางกนใหมรปแบบการแสดงตางกน• เพงเสยงทดตนเตนเพงเสยงทดตนเตน• เพมหรอลด หลมเชนเรมตนท เพมหรอลด หลมเชนเรมตนท 3 3 หลมกอนหลมกอนตอจากนนจงเพมไปเลอยๆจนถง ตอจากนนจงเพมไปเลอยๆจนถง 9 9 หลมหลม• ถาผานแตละดานจะมภาพ ถาผานแตละดานจะมภาพ animationanimationใหดพรอมเสยงเพลงใหดพรอมเสยงเพลง

Page 18: J2ME  Game Concept

WEBWEB http://www.java2s.com/http://www.java2s.com/ http://www.developer.com/http://www.developer.com/ http://www.dbarnes.com/http://www.dbarnes.com/ http://www.j2mecodex.com/http://www.j2mecodex.com/ http://developers.sun.com/mobility/http://developers.sun.com/mobility/

midp/midp/