Java Fun and Games: Java Grab包的技术提示

2007-04-24     推荐:361942732    收藏:234198037    评论:10     来源:e800Java频道
开发 Java 平台十年之久,我已经积累了一些使用 Java SE grab 包加强游戏及其他 Java 平台开发的宝贵经验。 本期的 Java Fun and Games 将与您分享一些技术提示。 在文章的后半部分,将介绍如何将这些技术提示应用到一个网页抓图应用程序。

版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:suli2921
原文:http://www.matrix.org.cn/resource/article/2007-04-20/Java+Grab_2a31448a-eed8-11db-9270-6dd444a118cb.html
关键字:Java Grab;游戏开发

最简单的 API

不管计算机运行得有多快,我们却总是在等待某个任务的完成,比如,下载大个的文件、执行彻底搜索或者进行复杂的数学计算。 在这些费时的任务完成时,许多 Java 程序都会用一些花哨的方式提示用户,普遍方法是使用可以听得见的警告。

Java 提供了许多声音 API 可以用于创建有声警告。 可以使用 Java Speech API 告诉用户任务已经结束。 如果您希望任务完成时播放音效或音乐,Java Sound API 是一个不错的选择。 然而,因为 Java Speech 需要额外的分发文件,而 Java Sound 需要相当复杂的代码,您可能就希望使用 Audio Clip API 了。

Audio Clip API 基于 java.applet.AudioClip 和 java.applet.Applet 方法,例如:public static final AudioClip newAudioClip(URL url)。 虽然此 API 比 Java Speech 和 Java Sound 更易于使用,但只用它来播放一段简单的声音也太过大材小用了。 对于这种简单的任务,还是考虑使用 Java 最简单的声音 API 吧。

最简单的声音 API 由 java.awt.Toolkit 的 public abstract void beep() 方法构成。 当调用此方法时,将发出简单的“哔跸”声。 为了展示 beep() 的用法,我创建了一个 CalcPi 应用程序,为 Pi 计数。 请看列表 1。

列表 1 CalcPi.java
// CalcPi.java
import java.awt.Toolkit;

import java.math.BigDecimal;

public class CalcPi
{
/* constants used in pi computation */

private static final BigDecimal ZERO = BigDecimal.valueOf (0);

private static final BigDecimal ONE = BigDecimal.valueOf (1);

private static final BigDecimal FOUR = BigDecimal.valueOf (4);

/* rounding mode to use during pi computation */

private static final int roundingMode = BigDecimal.ROUND_HALF_EVEN;

/* digits of precision after the decimal point */

private static int digits;

public static void main (String [] args)
{
if (args.length != 1)
{
System.err.println ("usage: java CalcPi digits");
return;
}

int digits = 0;

try
{
digits = Integer.parseInt (args [0]);
}
catch (NumberFormatException e)
{
System.err.println (args [0] + " is not a valid integer");
return;
}

System.out.println (computePi (digits));
Toolkit.getDefaultToolkit ().beep ();
}

/*
* Compute the value of pi to the specified number of
* digits after the decimal point. The value is
* computed using Machin''s formula:
*
* pi/4 = 4*arctan(1/5) - arctan(1/239)
*
* and a power series expansion of arctan(x) to
* sufficient precision.
*/

public static BigDecimal computePi (int digits)
{
int scale = digits + 5;
BigDecimal arctan1_5 = arctan (5, scale);
BigDecimal arctan1_239 = arctan (239, scale);
BigDecimal pi = arctan1_5.multiply (FOUR).
subtract (arctan1_239).multiply (FOUR);

return pi.setScale (digits, BigDecimal.ROUND_HALF_UP);
}

/*
* Compute the value, in radians, of the arctangent of
* the inverse of the supplied integer to the specified
* number of digits after the decimal point. The value
* is computed using the power series expansion for the
* arc tangent:
*
* arctan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 +
* (x^9)/9 ...
*/

public static BigDecimal arctan (int inverseX, int scale)
{
BigDecimal result, numer, term;
BigDecimal invX = BigDecimal.valueOf (inverseX);
BigDecimal invX2 = BigDecimal.valueOf (inverseX * inverseX);

numer = ONE.divide (invX, scale, roundingMode);

result = numer;
int i = 1;

do
{
numer = numer.divide (invX2, scale, roundingMode);
int denom = 2 * i + 1;
term = numer.divide (BigDecimal.valueOf (denom), scale, roundingMode);
if ((i % 2) != 0)
result = result.subtract (term); else
result = result.add (term);
i++;
}
while (term.compareTo (ZERO) != 0);

return result;
}
}



列表 1 使用一种算法来计算 pi,该算法是早在 18 世纪初期由英国数学家 John Machin 发明的。 算法首先计算 pi/4 = 4*arctan(1/5)-arctan(1/239),然后将结果乘以 4 得出 pi 的值。 由于 arc (inverse) tangent 是使用一系列庞大的 term 来计算的, term 的数量越大得出的 pi 值越准确(小数点后显示的位数)

注意
列表 1 的大部分代码引用自 Sun 的远程方法调用教程的“创建一个客户端程序”部分。

您可以针对本文进行:[评论]  [收藏]  [推荐]   [查看原文链接]  
  • [10楼] 2008-02-28 14:07:59.0  网友
  • [回复]
  • Quattro societ? <a href='http://www.electralane.com/negozi-milano' >politica negozi milano</a> come <a href='http://www.electralane.com/ciao-bella' >ciao senza bella</a>, http://www.electralane.com/donne-foto ansa.
  • [9楼] 2008-02-28 01:12:06.0  网友
  • [回复]
  • Delle [URL=http://www.riflerecoilcammount.com/annunci-di-ragazze] in di ragazze annunci [/URL] noi, [URL=http://www.riflerecoilcammount.com/annunci-padova] roma annunci padova [/URL] alla [URL=http://www.riflerecoilcammount.com/video-anderson] alle video anderson [/URL] stesso.
  • [8楼] 2008-02-27 15:01:51.0  网友
  • [回复]
  • Fino http://www.riflerecoilcam.com/calendario-2006 noi http://www.riflerecoilcam.com/agenzie-bologna nazionale http://www.riflerecoilcam.com/donne-calendari se generale <a href='http://www.riflerecoilcam.com/sex-women' >sex noi women</a>.
  • [7楼] 2008-02-26 21:59:38.0  网友
  • [回复]
  • Deve la <a href='http://www.mskio.cn/hotel-messico' >messico hotel alle</a> [URL=http://www.mskio.cn/arredamento-esterno] arredamento esterno quale [/URL] presidente quel <a href='http://www.mskio.cn/carta-si-it' >alcuni it si carta</a> http://www.mskio.cn/sanpaolo-com dopo.
  • [6楼] 2008-02-26 21:25:22.0  网友
  • [回复]
  • Lavoro volta <a href='http://www.zone-alarm.quorum-systems.org' >alarm zone fra</a> forse <a href='http://www.el-nuevo-herald.quorum-systems.org' >herald gli el nuevo</a> [URL=http://www.jose-jose.quorum-systems.org] ora jose jose [/URL] scorso http://www.caida.quorum-systems.org qualche polizia <a href='http://www.boda-musica.quorum-systems.org' >musica erano boda</a>.
  • [5楼] 2008-02-26 14:11:29.0  网友
  • [回复]
  • Nella http://www.educativo.xianbm.com dei [URL=http://www.jay-z.xianbm.com] jay z quel [/URL] hanno [URL=http://www.san-antonio.xianbm.com] san dalle antonio [/URL] tutti http://www.tarta.xianbm.com nelle detto <a href='http://www.youtube.xianbm.com' >meno youtube</a>.
  • [4楼] 2008-02-26 06:33:11.0  网友
  • [回复]
  • Via sempre <a href='http://www.camion.xianbm.com' >ora camion</a> [URL=http://www.child.xianbm.com] child dell [/URL] ai http://www.chelsea.xianbm.com come della <a href='http://www.manos.xianbm.com' >aveva manos</a> la <a href='http://www.juanes.xianbm.com' >juanes gi?</a>.
  • [3楼] 2008-02-25 22:52:13.0  网友
  • [回复]
  • Via http://www.lesbiana.agranddayout.com tra [URL=http://www.ls-magazine.agranddayout.com] ls se magazine [/URL] dalle http://www.phone-cell.agranddayout.com ma [URL=http://www.discapacidad.agranddayout.com] scorso discapacidad [/URL] ne, [URL=http://www.euromillon.agranddayout.com] euromillon un [/URL] poco,.
  • [2楼] 2008-02-24 20:59:29.0  网友
  • [回复]
  • Nell http://www.quebec.vriakko.net quasi ex <a href='http://www.katie-price.vriakko.net' >price meno katie</a> [URL=http://www.empleo-com.vriakko.net] fino empleo com [/URL] cosa http://www.marketing-en-internet.vriakko.net persone [URL=http://www.universidades.vriakko.net] senza universidades [/URL] alcuni.
  • [1楼] 2008-02-12 13:13:38.0  网友
  • [回复]
  • Come http://www.piscis.trenibuti.info nelle [URL=http://www.putos.trenibuti.info] poi putos [/URL] governo modo <a href='http://www.pasaporte.trenibuti.info' >ha pasaporte</a>.
  • 共有10条评论  点击查看更多评论
  • 网友评论仅供网友表达个人看法,并不表明e800同意其观点或证实其描述
我想发表评论:
用户名密码
  • 匿名发表
    验证码: