Upload
jenchoke-tachagomain
View
1.480
Download
0
Embed Size (px)
Citation preview
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/