??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美午夜黄色,中文在线√天堂,中文字幕影音在线http://www2.blogjava.net/Andyluo/category/8654.html<table><tr><td>ȝw体、提升技能、修w养?lt;br>
Eclipse, Linux, GWT, Google, AJAX<br>
</td><td> </td><td>
<script type="text/javascript"><!--
google_ad_client = "pub-9685945790422740";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td></tr></table>zh-cnWed, 28 Feb 2007 02:40:11 GMTWed, 28 Feb 2007 02:40:11 GMT60- J2ME|络E序中判断一ơ数据发送的l束http://www.aygfsteel.com/Andyluo/archive/2006/03/19/36103.html|明|明Sun, 19 Mar 2006 13:30:00 GMThttp://www.aygfsteel.com/Andyluo/archive/2006/03/19/36103.htmlhttp://www.aygfsteel.com/Andyluo/comments/36103.htmlhttp://www.aygfsteel.com/Andyluo/archive/2006/03/19/36103.html#Feedback2http://www.aygfsteel.com/Andyluo/comments/commentRss/36103.htmlhttp://www.aygfsteel.com/Andyluo/services/trackbacks/36103.html
如下代码所C:(x)
//接收到的数据存到字节数larray
int (tng)firstChar (tng)= (tng)inputStream.read();
int (tng)length (tng)= (tng)inputStream.available();
byte[] (tng)array (tng)= (tng)new (tng)byte[length+1];
array[0] (tng)= (tng)(byte)firstChar;
inputStream.read(array,1,length);
]]> - J2ME Tutorial, Part 3: 探究MIDP 2.0的游戏API(?http://www.aygfsteel.com/Andyluo/archive/2005/12/16/24281.html|明|明Fri, 16 Dec 2005 11:58:00 GMThttp://www.aygfsteel.com/Andyluo/archive/2005/12/16/24281.htmlhttp://www.aygfsteel.com/Andyluo/comments/24281.htmlhttp://www.aygfsteel.com/Andyluo/archive/2005/12/16/24281.html#Feedback0http://www.aygfsteel.com/Andyluo/comments/commentRss/24281.htmlhttp://www.aygfsteel.com/Andyluo/services/trackbacks/24281.html
构徏J2ME游戏Q用TiledLayer构造背?/b>
在这一节中Q我们要使用TiledLayercMؓ(f)游戏d一个背景。游戏界面分Z个区域:(x)剙表示天空Qcouple精灉|在的中部是地面,底部是大每个区域分别用一?2*32像素的不同颜色图片进行填充,填充的工作由TiledLayercd成?br />
首先屏q分?2*32的小Ҏ(gu)Q行和列的烦(ch)引都?开始,如图4?br />

(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) ?4. 均匀分割屏幕
(0,0)?1,4)的方DC天I,(2,0)?2,4)表示地面Q?3,0)?4,4)表示面。我们用?中的囄填充对应Ҏ(gu)?br />

?5. 背景囄
背景囄的第一部分(32*32)表示地面Q第二部分表C大PW三部分表示天空。用TiledLayerӞ囄的烦(ch)引是?开始的Q不?Q所以地面图像的位置?Q大h2Q天I是3Q。TiledLayercd以将?分割成三张图片,然后用每张图片填充对应的Ҏ(gu)。在q里Q我们用三个 32*32大小囄填充5?列的背景Q部分代码如下:(x)
// (tng)加蝲囄
backgroundImg (tng)= (tng)I(yng)mage.createImage("/tiledLayer1.gif");
// (tng)创徏TiledLayer背景
background (tng)= (tng)new (tng)TiledLayer(5, (tng)5, (tng)backgroundImg, (tng)32, (tng)32);
TiledLayer构造器的前两个参数表示背景大小Q第三个是图像,最后两个是每个格子的长和宽。TiledLayercdҎ(gu)格子的大切割图像,然后攑ֈ背景的对应方g?br />
最后剩下的是讄每个Ҏ(gu)里放|的囑փ?jin)。创景的所有代码都在createBackground()Ҏ(gu)里,如下所C。在MyGameCanvas cȝstart()里调用这个方法,然后在buildGameScreen()Ҏ(gu)的最后添加background.paint(g)Q这使得 TiledLayer实例自q制到屏幕上?br />
// (tng)使用TiledLayer创徏背景
private (tng)void (tng)createBackground() (tng)throws (tng)I(yng)OException
{
(tng) (tng) (tng) (tng)// (tng)加蝲囄
(tng) (tng) (tng) (tng)backgroundImg (tng)= (tng)I(yng)mage.createImage("/tiledLayer1.gif");
(tng) (tng) (tng) (tng)// (tng)创徏tiledLayer背景
(tng) (tng) (tng) (tng)background (tng)= (tng)new (tng)TiledLayer(5, (tng)5, (tng)backgroundImg, (tng)32, (tng)32);
(tng) (tng) (tng) (tng)// (tng)布置囑փ的数l?/span>
(tng) (tng) (tng) (tng)int[] (tng)cells (tng)= (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)3, (tng)3, (tng)3, (tng)3, (tng)3, (tng) (tng)// (tng)天空
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)3, (tng)3, (tng)3, (tng)3, (tng)3, (tng) (tng)// (tng)天空
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)1, (tng)1, (tng)1, (tng)1, (tng)1, (tng) (tng)// (tng)地面
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)2, (tng)2, (tng)2, (tng)2, (tng)2, (tng) (tng)// (tng)大v
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)2, (tng)2, (tng)2, (tng)2, (tng)2 (tng) (tng) (tng)// (tng)大v
(tng) (tng) (tng) (tng)};
(tng) (tng) (tng) (tng)// (tng)讄背景
(tng) (tng) (tng) (tng)for(int (tng)i (tng)= (tng)0; (tng)i (tng)< (tng)cells.length; (tng)i++)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int (tng)column (tng)= (tng)i (tng)% (tng)5;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int (tng)row (tng)= (tng)(i (tng)- (tng)column) (tng)/ (tng)5;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)background.setCell(column, (tng)row, (tng)cells[i]);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)// (tng)讄背景位置
(tng) (tng) (tng) (tng)background.setPosition(GAME_ORIGIN_X, (tng)GAME_ORIGIN_Y);
}
最l效果如??br />

(tng) (tng) (tng) ?6. d?jin)背景的游戏截?br />
原文见:(x)http://today.java.net/pub/a/today/2005/07/07/j2me3.html?page=4

]]> - J2ME Tutorial, Part 3: 探究MIDP 2.0的游戏API(?http://www.aygfsteel.com/Andyluo/archive/2005/12/12/23435.html|明|明Mon, 12 Dec 2005 03:39:00 GMThttp://www.aygfsteel.com/Andyluo/archive/2005/12/12/23435.htmlhttp://www.aygfsteel.com/Andyluo/comments/23435.htmlhttp://www.aygfsteel.com/Andyluo/archive/2005/12/12/23435.html#Feedback0http://www.aygfsteel.com/Andyluo/comments/commentRss/23435.htmlhttp://www.aygfsteel.com/Andyluo/services/trackbacks/23435.html 原文? http://today.java.net/pub/a/today/2005/07/07/j2me3.html?page=3
定义游戏的角色和特征
一个只能将囄左右Ud的游戏是没有意思的。我们现在要Ҏ(gu)?的代码作一些改动,让它变得更有些。首先我们要定义游戏昄的边界,q样能保证在所有设备上的大一_(d)先定义一些常量,如下代码所C:(x)
//游戏边界
public static final int GAME_WIDTH = 160;
public static final int GAME_HEIGHT = 160;

// 游戏屏幕的原点坐标(左上角)(j)
public final int GAME_ORIGIN_X = (getWidth() - GAME_WIDTH) / 2;
public final int GAME_ORIGIN_Y = (getHeight() - GAME_HEIGHT) / 2;

// couple精灵上下区域的高度
public final int SECTION_HEIGHT = 64;

// couple精灉|回移动的基准位(baseQ?/SPAN>
public final int BASE = GAME_ORIGIN_Y + GAME_HEIGHT - SECTION_HEIGHT;

// couple精灵蟩跃的最大高?/SPAN>
public final int MAX_HEIGHT = 32;
(注意Q我们这里引入了(jin)一?EM>游戏特征Qcouple精灵很快就可以在屏q上跛_?
在游戏屏q上定义的这些常量规定了(jin)游戏的边界,如图2所C?BR>

?2. 用常量定义游戏边?BR>
当然Q我们现在需要修改代码来使用q些帔R。在清单1的代码中d一个buildGameScreen(Graphics g)Ҏ(gu)Q如下代码所C:(x)
private void buildGameScreen(Graphics g)


{
// 讄ȝ为黑?/SPAN>
g.setColor(0x000000);
// l制游戏边界
g.drawRect(GAME_ORIGIN_X, GAME_ORIGIN_Y, GAME_WIDTH, GAME_HEIGHT);

// l制基准U?/SPAN>
g.drawLine(GAME_ORIGIN_X, BASE, GAME_ORIGIN_X + GAME_WIDTH, BASE);

//标出couple精灵能跛_的最高(sh)|?/SPAN>
g.drawLine(GAME_ORIGIN_X, BASE - MAX_HEIGHT, GAME_ORIGIN_X + GAME_WIDTH, BASE - MAX_HEIGHT);
}
再在updateGameScreen()Ҏ(gu)里绘制couple之前d一个该Ҏ(gu)的调用,q要couple精늚开始位|由CENTER_Y改ؓ(f)BASEQ在start()Ҏ(gu)里设|coupleY = BASEQ?/P>
couple精灵可以左右移动,我们要限制它走出边界Q更改calculateCoupleX()Ҏ(gu)里左右移动的代码Q避免坐标超?gu)界。修改后的代码如下:(x)
private void calculateCoupleX(int keyState)


{
// Ҏ(gu)Ud方向改变x坐标
if((keyState & LEFT_PRESSED) != 0)

{
coupleX = Math.max(
GAME_ORIGIN_X + coupleImg.getWidth() / 2,
coupleX - dx);
}
else if((keyState & RIGHT_PRESSED) != 0)

{
coupleX = Math.min(
GAME_ORIGIN_X + GAME_WIDTH - coupleImg.getWidth() / 2,
coupleX + dx);
}
}
Ҏ(gu)使用Math.max()和min()函数使图片显C在游戏边界内。注意我们在计算中还考虑?jin)图片的大小?/P>
我们刚才说过要实现couple精灵在屏幕上蟩跃的功能Q我们现在增加一个方法囄在Y轴上UdQ蟩跃时Ud的具体\径将不受玩家影响?/P>
在清?的代码中d三个新的实例变量Qup、jumpHeight 和random。如下所C:(x)
// 表示couple精늧动方向的标识
private boolean up = true;

// 跌高度Q蟩跃时随机生成
private int jumpHeight = MAX_HEIGHT;

// 随机C生器
public Random random = new Random();
jumpHeight初始D设ؓ(f)MAX_HEIGHT。jumpHeight变量?x)在couple精灉|ơ蟩跃时动态设为随机|新增的calculateCoupleY()Ҏ(gu)如下Q?/P>
private void calculateCoupleY(int keyState)


{
// (g)查couple精灉|否在跌
if(up)

{
// (g)查小_是否跛_?jin)最大高?/SPAN>
if((coupleY > (BASE - jumpHeight + coupleImg.getHeight())))

{
//没达到最大高度,l箋(hu)上升
coupleY -= dy;
}
else if(coupleY == (BASE - jumpHeight + coupleImg.getHeight()))

{
// C(jin)最大高度,开始下?/SPAN>
coupleY += dy;

// 修改方向标识
up = false;
}
}
else

{
// 精灉|在下降,(g)查是否到地面?jin)?/SPAN>
if(coupleY < BASE)

{
// q没有,l箋(hu)下降
coupleY += dy;
}
else if(coupleY == BASE)

{
// 到达地面Q算一个新的随机高度(于{于最大高度)(j)
int hyper = random.nextInt(MAX_HEIGHT + 1);
// 保证跌高度大于囑փ高度
if(hyper > coupleImg.getHeight())

{
jumpHeight = hyper;
}

// 往(xin)上蟩
coupleY -= dy;

// 重置方向标识
up = true;
}
}
}
你可能已l发觉,q个Ҏ(gu)不依赖于用户的按键,传入的keyState信息也没有用到。传入这个值是Z(jin)与calculateCoupleX()Ҏ(gu)保持一致。方法刚开始时通过渐增coupleY变量gcouple精灵上升,直到辑ֈq次的蟩跃高度(刚开始是MAX_HEIGHTQ。达到这个高度后Q小_开始往(xin)下降Q降到BASE后又随机生成一个介于MAX_HEIGHT和图像高度之间的数|按这个高度开始下一ơ蟩跃?/P>
游戏的整个效果是一个以随机高度跌的couple精灵,它可以在用户的操U下左右Ud。图3是游戏的一个截屏:(x)

?3. 游戏截屏

]]>- J2ME Tutorial, Part 3: 探究MIDP 2.0的游戏API(?http://www.aygfsteel.com/Andyluo/archive/2005/12/08/23003.html|明|明Thu, 08 Dec 2005 10:01:00 GMThttp://www.aygfsteel.com/Andyluo/archive/2005/12/08/23003.htmlhttp://www.aygfsteel.com/Andyluo/comments/23003.htmlhttp://www.aygfsteel.com/Andyluo/archive/2005/12/08/23003.html#Feedback2http://www.aygfsteel.com/Andyluo/comments/commentRss/23003.htmlhttp://www.aygfsteel.com/Andyluo/services/trackbacks/23003.html原文见:(x)http://today.java.net/pub/a/today/2005/07/07/j2me3.html?page=2
构徏一个J2ME游戏Q从GameCanvascd?/STRONG>
GameCanvascȝ(h)承自CanvasQ提供了(jin)一个屏q后端的~冲区,所有的l制操作都先在这个缓冲区里进行。当所有绘制操作完成后Q我们调用flushGraphics()Ҏ(gu)缓冲区内容输出到屏q。这U双~冲机制可以使图像的Ud更加qx(chng)Q避免图像的闪烁。缓冲区大小{于屏幕的大,而且每一个GameCanvas实例有且仅有一个缓冲区?/P>
GameCanvascL供一U存储按键状态的机制Q我们可以通过它方便的?jin)解用户与游戏的交互。这U机制可以跟t用hҎ(gu)键的ơ数Q调用getKeyStates()Ҏ(gu)q回所有游戏键按键状态的二进制表C,1代表上次调用Ҏ(gu)后按q该键,0表示上次调用后还没有按过该键。我们可以跟t的游戏状态有Q这里的键都是在Canvasc里定义的)(j)QDOWN_PRESSED, UP_PRESSED, RIGHT_PRESSED, LEFT_PRESSED, FIRE_PRESSED, GAME_A_PRESSED, GAME_B_PRESSED, GAME_C_PRESSED和GAME_D_PRESSED?/P>
首先扩展GameCanvasc,定制一个游戏画布,代码见清?。清?是运行例子的MIDlet?BR>
package com.j2me.part3;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;

import java.io.IOException;

public class MyGameCanvas
extends GameCanvas
implements Runnable


{
public MyGameCanvas()

{
super(true);
}
public void start()

{
try

{
//导入couple囄Q坐标定位在屏幕中央
coupleImg = Image.createImage("/couple.gif");
coupleX = CENTER_X;
coupleY = CENTER_Y;
}
catch(IOException ioex)

{
System.err.println(ioex);
}
Thread runner = new Thread(this);
runner.start();
}
public void run()

{
//获取d的graphics对象
Graphics g = getGraphics();
while(true) //无穷循环

{
//Z上一个代码清单列出的l构
//首先(g)查游戏状?/SPAN>
verifyGameState();
//(g)查用戯?/SPAN>
checkUserInput();
//更新屏幕
updateGameScreen(getGraphics());
//休息一下,控制h频率
try

{
Thread.currentThread().sleep(30);
}
catch(Exception e)

{}
}
}
private void verifyGameState()

{
//现在先不做Q何操?/SPAN>
}
private void checkUserInput()

{
//获取按键信息
int keyState = getKeyStates();
//计算x轴位|?/SPAN>
calculateCoupleX(keyState);
}
private void updateGameScreen(Graphics g)

{
//清空屏幕背景
g.setColor(0xffffff);
g.fillRect(0, 0, getWidth(), getHeight());
//couple囄l制到当前坐标位|?/SPAN>
g.drawImage(
coupleImg, coupleX, coupleY, Graphics.HCENTER |
Graphics.BOTTOM);
flushGraphics();
}
private void calculateCoupleX(int keyState)

{
//判断Ud方向
if((keyState & LEFT_PRESSED) != 0)

{
coupleX -= dx;
}
else if((keyState & RIGHT_PRESSED) != 0)

{
coupleX += dx;
}
}
private Image coupleImg;
private int coupleX;
private int coupleY;
private int dx = 1; //Ud?BR>
//屏幕中心(j)
public final int CENTER_X = getWidth() / 2;
public final int CENTER_Y = getHeight() / 2;
}
清单 1. MyGameCanvasQ游戏画布的W一个版?/P>
清单 2 是用这个游戏画布的MIDlet:
package com.j2me.part3;

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;

public class GameMIDlet extends MIDlet


{
MyGameCanvas gCanvas;
public GameMIDlet()

{
gCanvas = new MyGameCanvas();
}
public void startApp()

{
Display d = Display.getDisplay(this);
gCanvas.start();
d.setCurrent(gCanvas);
}
public void pauseApp()

{}
public void destroyApp(boolean unconditional)

{}
}
清单 2. q行游戏CZ的MIDletc?/P>
使用Wireless工具建立一个工E,导入q两个类Q然后生成ƈq行工程。确保你的工E目录r(sh)es中有q个囄文g
Qƈ保证名称为couple.gif, ?是运行结果?BR>

?. 构徏一个游戏:(x)使用GameCanvasc?/P>
使用讑֤的方向键可以左右Ud屏幕中的图像,q是通过从checkUserInput()里取得按键状态,然后调用calculateCoupleX()Q通过按键状态与GameCanvas里预定义的按键D行与操作(&)Q得到用户当前按的键Q然后将实例变量更新Q最l反映到讑֤屏幕上?/P>
囑փ是在updateGameScreen()Ҏ(gu)里被l制到屏q上的。这个方法用传入的Graphics对象q行l制Q每一个GameCanvas只有一个Graphics对象。方法首先擦除上ơ绘制的囑փQ然后基于当前的coupleX|q有一直不变的coupleY|(j)l制couple.gif囑փ,最后将~冲区的数据输出到屏q?/P>
run()Ҏ(gu)里的循环体遵循我们刚开始提出的游戏l构。@环每30毫秒(g)查一ơ用戯入ƈh屏幕。你可以试着这个值改变(sh)下,q会(x)改变h的频率?/P>
最后,注意MyGameCanvas的构造器里调用了(jin)父类GameCanvas的构造方法,传入的参Cؓ(f)trueQ这表示从Canvascȝ(h)承的按键事g机制被抑制了(jin)Q因为我们的代码不需要这些通知机制。我们的游戏状态用GameCanvas里自带的按键信息Q由getKeyStates()Ҏ(gu)取得Q来处理已经_?jin)。通过抑制“keyPressed”、“keyReleased”和“keyRepeated”等通知机制Q可以提高游戏的性能?/P>
]]> - J2ME Tutorial, Part 3: 探究MIDP 2.0的游戏API (一)http://www.aygfsteel.com/Andyluo/archive/2005/12/07/22911.html|明|明Wed, 07 Dec 2005 12:40:00 GMThttp://www.aygfsteel.com/Andyluo/archive/2005/12/07/22911.htmlhttp://www.aygfsteel.com/Andyluo/comments/22911.htmlhttp://www.aygfsteel.com/Andyluo/archive/2005/12/07/22911.html#Feedback0http://www.aygfsteel.com/Andyluo/comments/commentRss/22911.htmlhttp://www.aygfsteel.com/Andyluo/services/trackbacks/22911.html原文见:(x)http://today.java.net/pub/a/today/2005/07/07/j2me3.html
J2ME是一个很行的用于移动设备游戏开发的q_。J2ME中的MIDP 2.0引入?jin)一个新的API包,它提供了(jin)一些定义好的游戏结构,q在以前?.0版中要通过很多累赘?sh)码来实现。在q部分tutorial中,我们?x)学习(fn)这个API包,然后用它开发一个小游戏Qؓ(f)?jin)学习(fn)需要,我们?x)用到包中所有的c)(j)。这个包是javax.microedition.lcdui.game. 它的建立Z我们前两ơ学的J2ME概念?/P>
J2ME游戏APIQ摘?/STRONG>
javax.microedition.lcdui.game包只?个类QGameCanvas, Layer, Sprite, TiledLayer和LayerManager. q?个类提供?jin)开发各U游戏应用的q_?/P>
Layer?STRONG>Sprite
?STRONG>TiledLayer的父cR这个类装?jin)游戏中可视化元素的行?f)。可视化元素可以是小_QspriteQ?代表一个可以在屏幕上来回移动的独立囑ŞQ或l成动画的一l图形)(j)Q?BR>或是一个背景层Q通过很少的图片,可以生成庞大游戏中的背景。我们可以用Layer来布|图形和q行可视化操作。Layer的子c通过重写paint(Graphics g)Ҏ(gu)元素绘制到屏幕上?/P>
LayerManagercd以控制各层的l制?qing)绘刉序,因此我们可以更方便地理游戏中的可视化元素(包括精灵和背景层?j)?/P>
GameCanvascL展了(jin)上两节我们讲q的Canvasc(dQ,提供一个在屏幕后端q行(off-screen)的缓冲区Q所有绘制操作都先在q个~冲Zq行Q然后再昄到屏q。它q提供了(jin)得到用户按键信息的快h法?/P>
最好的学习(fn)Ҏ(gu)应该是写一个完整的游戏,通过q个游戏我们可以了(jin)解游戏制作的Ҏ(gu)面面。我们在介绍完这个小游戏的构造后Q针对目前还没有游戏开发经验的Q,?x)在开发游戏的q程中具体介l包中的每个cR?/P>
构徏游戏的简短入?
游戏和动L建立在重复执行某D代码的机制上的。这D代码跟t实例变量的|然后更新相应状态。基于当前游戏状态,代码游戏元素绘制到屏幕上。实例变量值是随着用户交互和游戏内部行改变的?/P>
代码的重复执行是通过这D代码放入@环中实现的。在q入循环前,先检查一下实例变量,看是否要l箋(hu)游戏Q否则退出@环。ؓ(f)?jin)控制实例变量的更新频率Q其实是屏幕h的频率)(j)Q@环体中的代码应该每次休眠一D|_(d)毫秒计)(j)?/P>
游戏的结构如下列代码所C:(x)
// ȝ
public class MainClass


{
private GameCanvas canvas = new MyGameCanvas();


public MainClass()

{
// 开始一个线E?/SPAN>
canvas.start();
}
// 其他代码
}


// 实际q行l制的类
public class MyGameCanvas extends GameCanvas implements Runnable


{
public MyGameCanvas()

{
// 初始?/SPAN>
}
public void start()

{
// 初始?BR>
// 执行l制U程
Thread runner = new Thread(this);
runner.start();
}
private void run()

{
// 或者?keeprunning = true)
// keeprunning是一个控制游戏状态的实例变量

while(true)

{


// (g)查游戏是否达?nbsp;
// 某个边界值或Ҏ(gu)条g
verifyGameState();


// 从用户那里得到输入,然后更新描述游戏元素状态的变量?nbsp;
checkUserInput();


// 使用Graphics对象当前游戏状态绘制到屏幕?/SPAN>

updateGameScreen(getGraphics());


// 控制屏幕更新的频?nbsp;

Thread.sleep(milliseconds);
}
}
}
我们在以下几节中用这个结构来开发一个游戏?/P>
]]>
վ֩ģ壺
|
ɶ|
Դ|
|
ˮ|
|
¯|
ϼ|
|
|
|
Т|
|
Ϣ|
ʯ|
˫|
ޭ|
ͩ|
ƽ½|
|
ͭ|
|
|
|
|
|
㶫ʡ|
ƽ|
Ϫ|
ʡ|
|
|
|
ɽ|
|
ֹ|
ˮ|
Ĭ|
ҵ|
|
¡|