日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

J2ME游戏开发中时钟的简单实现

發布時間:2025/3/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 J2ME游戏开发中时钟的简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在java.util包中有一個TimerTask類,你可以擴展這個類并且實現他的run()方法,在run()方法中編寫我們的邏輯代碼。如果我們想制作一個游戲時鐘,那么非常簡單我們編寫一個GameClock類擴展TimerTask,GameClock需要維持一個實例變量timeLeft,這樣我們就可以記錄游戲剩余的時間了,在每次run()運行的時候把timeLeft減1就可以了。有時候我們需要始終暫停以及重新啟動,這并不復雜,在GameClock中添加一個boolean類型的標記就可以了。下面給出GameClock的代碼:

/*
?* GameClock.java
?*
?* Created on 2005年7月18日, 上午11:00
?*
?* To change this template, choose Tools | Options and locate the template under
?* the Source Creation and Management node. Right-click the template and choose
?* Open. You can then make changes to the template in the Source Editor.
?*/

package com.j2medev.gameclock;
import java.util.TimerTask;
/**
?*
?* @author Administrator
?*/
public class GameClock extends TimerTask{
???
??? private int timeLeft = 60;//時鐘的默認時間
??? private boolean pause = false;
??? /** Creates a new instance of GameClock */
??? public GameClock() {
??? }
???
??? public GameClock(int value){
??????? timeLeft = value;
??? }
???
??? public void run(){
??????? if(!pause){
??????????? timeLeft--;
??????? }
??? }
???
??? public void pause(){
??????? pause = true;
??? }
???
??? public void resume(){
??????? pause = false;
??? }
???
??? public int getTimeLeft(){
??????? return timeLeft;
??? }
???
??? public void setTimeLeft(int _value){
??????? this.timeLeft = _value;
??? }
}

  當我們使用這個時鐘的時候,只需要把它的一個實例作為參數傳給Timer的schedule()方法即可。例如

??????clock = new GameClock(30);
??????timer.schedule(clock,0,1000);

  接下來我們編寫一個簡單的游戲界面測試一下時鐘。我們在程序啟動的時候開始計時,每隔一秒鐘timeLeft會減少1,并且在手機屏幕上顯示當前剩余的時間。如果timeLeft為0的時候代表游戲已經結束了。因此我們需要這樣判斷游戲的狀態。

??? public void verifyGameState(){
??????? timeLeft = clock.getTimeLeft();
??????? if(timeLeft == 0){
??????????? going = false;
??????? }
??? }

  為了測試時鐘的暫停功能,我們接收用戶的按鍵行為,如果左鍵被按下,那么調用clock的pause()方法,如果右鍵被按下則調用clock的resume()方法。

??? public void userInput(){
??????? int keyStates = this.getKeyStates();
??????? if((keyStates & GameCanvas.LEFT_PRESSED) != 0){
??????????? clock.pause();
??????? }else if((keyStates & GameCanvas.RIGHT_PRESSED) != 0){
??????????? clock.resume();
??????? }
???????????
??? }

  下面給出MIDlet和Canvas的代碼:

/*
?* ClockCanvas.java
?*
?* Created on 2005年7月18日, 上午11:04
?*
?* To change this template, choose Tools | Options and locate the template under
?* the Source Creation and Management node. Right-click the template and choose
?* Open. You can then make changes to the template in the Source Editor.
?*/

package com.j2medev.gameclock;
import java.util.Timer;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.*;

/**
?*
?* @author Administrator
?*/
public class ClockCanvas extends GameCanvas implements Runnable {
???
??? private Timer timer = new Timer();
??? private GameClock clock = null;
??? private boolean going = true;
??? int timeLeft = 0;
??? /** Creates a new instance of ClockCanvas */
??? public ClockCanvas() {
??????? super(false);
??? }
???
??? public void run(){
??????? clock = new GameClock(30);
??????? timer.schedule(clock,0,1000);
??????? while(going){
??????????? verifyGameState();
??????????? userInput();
??????????? repaint();
??????????? try{
??????????????? Thread.sleep(100);
??????????? }catch(Exception e){
??????????????? e.printStackTrace();
??????????? }
???????????
??????? }
??? }
???
??? public void userInput(){
??????? int keyStates = this.getKeyStates();
??????? if((keyStates & GameCanvas.LEFT_PRESSED) != 0){
??????????? clock.pause();
??????? }else if((keyStates & GameCanvas.RIGHT_PRESSED) != 0){
??????????? clock.resume();
??????? }
???????????
??? }
???
??? public void paint(Graphics g){
??????? int color = g.getColor();
??????? g.setColor(0xffffff);
??????? g.fillRect(0,0, this.getWidth(), this.getHeight());
??????? g.setColor(color);
???????
??????? if(timeLeft == 0){
??????????? g.drawString("游戲結束", this.getWidth()/2, this.getHeight()/4, Graphics.HCENTER|Graphics.BOTTOM);
??????? }else{
??????????? g.drawString("游戲剩余時間:"+timeLeft, this.getWidth()/2, this.getHeight()/4, Graphics.HCENTER|Graphics.BOTTOM);
???????????
??????? }
???????
???????
??? }
???
??? public void verifyGameState(){
??????? timeLeft = clock.getTimeLeft();
??????? if(timeLeft == 0){
??????????? going = false;
??????? }
??? }
???
??? public void start(){
??????? Thread t = new Thread(this);
??????? t.start();
??? }
???
??? public void stop(){
??????? going = false;
??? }
???
}

/*
?* TestMidlet.java
?*
?* Created on 2005年7月18日, 上午11:00
?*/

package com.j2medev.gameclock;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
?*
?* @author? Administrator
?* @version
?*/
public class TestMidlet extends MIDlet {
???
??? private Display display = null;
???
??? public void startApp() {
??????? display = Display.getDisplay(this);
??????? ClockCanvas canvas = new ClockCanvas();
??????? canvas.start();
??????? display.setCurrent(canvas);
??? }
???
??? public void pauseApp() {
??? }
???
??? public void destroyApp(boolean unconditional) {
??? }
}

  程序運行的截圖如下:

javascript:resizepic(this) border=0>

   總結:本文實現了一個游戲開發中可能用到的時鐘程序,代碼并不復雜。希望能對大家有所幫助。

轉載于:https://www.cnblogs.com/java123/archive/2009/06/18/1505670.html

總結

以上是生活随笔為你收集整理的J2ME游戏开发中时钟的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 全国男人的天堂网 | 黄色wwwww| 亚洲精品69| 国产东北女人做受av | 日韩一级精品 | 国产黄色录相 | 免费在线观看不卡av | 91免费黄视频| 日韩精品中文字幕一区二区 | 男女插插插视频 | 大胸美女啪啪 | 影音先锋在线看片资源 | 国产视频在线观看免费 | 丁香花电影高清在线阅读免费 | 一区不卡在线观看 | www久久久com| 91国偷自产中文字幕久久 | 完全免费av | 手机成人av在线 | 欧美精品久久96人妻无码 | 日韩丝袜一区 | 久久久久亚洲精品中文字幕 | 苍井空浴缸大战猛男120分钟 | 色一区二区三区四区 | 国产99久久九九精品无码 | 久久视频一区二区三区 | 日本黄色大片视频 | 婷婷av一区二区三区 | 日韩av一区二区在线播放 | 国产伦精品一区二区三区视频免费 | av怡红院 | www.88av| 亚洲色图校园春色 | 日韩女人性猛交 | 国产成人+综合亚洲+天堂 | 91私拍| 日本黄色美女网站 | jizz日本视频 | 一级黄色aa| 福利社午夜 | 久久精品99久久久久久 | 国产999在线观看 | 欧美综合色区 | 超碰caopor | 国产精品久久77777 | 小sao货水好多真紧h无码视频 | 免费看黄色片的网站 | 亚洲欧美一区二区三区四区 | 中文字幕av亚洲精品一部二部 | www.久草.com| 69视频在线| 久草aⅴ | 毛片基地在线播放 | 免费草逼视频 | 亚洲欧美国产高清va在线播放 | 亚洲最大综合网 | 欧美大片在线观看 | 一区二区自拍 | 色撸撸在线观看 | 国产日韩欧美不卡 | 久久mm| 亚洲福利av | 三级黄网站| 一区二区视| 91在线国产观看 | 日本在线www| 黄色a一级片 | 成人妇女淫片aaaa视频 | 免费精品视频一区二区三区 | 国产成人无码AA精品区 | 超碰免费公开在线 | 东京热毛片 | 精品国产一区二区三区在线 | 亚洲论理 | 久久机热这里只有精品 | a天堂资源在线 | 狠狠躁夜夜躁av无码中文幕 | 一区二区三区欧美视频 | 影音先锋中文字幕资源 | 我要看免费毛片 | 欧美成人免费观看视频 | 桃色在线视频 | 亚洲av成人精品日韩在线播放 | 欧美日韩亚 | 小嫩嫩12欧美 | 成年网站在线观看 | 午夜影院私人 | 免费在线不卡视频 | 偷拍一区二区 | 欧洲精品在线播放 | 欧美亚洲丝袜 | 欧美日本| 日本天堂在线播放 | 美女裸片 | 久久国产视频播放 | 白丝女仆被免费网站 | 中国av在线 | 蜜臀99久久精品久久久久小说 | 亚洲精品午夜精品 |