WEB开发网
开发学院WEB开发Jsp Java Fun and Games: Java Grab包的技术提示 阅读

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

 2008-01-05 20:21:30 来源:WEB开发网   
核心提示: 开发 java 平台十年之久,我已经积累了一些使用 Java SE grab 包加强游戏及其他 Java 平台开发的宝贵经验,Java Fun and Games: Java Grab包的技术提示, 本期的 Java Fun and Games 将与您分享一些技术提示, 在文章的后半部分,我创建了一个 CalcPi
   开发 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;
  }
}


Tags:Java Fun and

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接