j2me game concept

Post on 15-Apr-2017

1.480 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

J2MEJ2MEGame Game

ConceptConcept

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

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

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

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

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

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

ClassicClassic Game LoopGame LoopStart

getInput

Moving

checkCollision

Repent

Process End Games

Category GameCategory GameAction GameAction GamePuzzle GamePuzzle GameStrategy GameStrategy GameOthers GameOthers Game

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);}}

}}

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;

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);

}}

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) {}}}

}}

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();

}}

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();

}}}}

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();

}}}}

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

}}

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

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

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

เก�ะกล�งถนน

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

หยดเวลา

+1

Random

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

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

1 2 3

4 5 6

7 8 9

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

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

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

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/

top related