| 情報処理2z(Java version) 課題5:得点の表示と乱数の発生 |
応用課題
難関応用課題
文字の表示には g.drawString 命令を使います。 当然、仮想画面へのプリントは ofscr_g.drawString になります。 (Graphics ofscr_g; と宣言した場合)
x, y は文字の書き始めの座標です。
g.drawString("Hello, World", 50, 100); /* (50, 100) にプリント */
|
次に得点などの変数を表示する方法です。 C での printf と少し方法が違うので注意して下さい。 "+" を使って連結することが可能です。*1
(int point = 123;などと、あらかじめ変数の宣言と初期化をしておく)
g.drawString("Point:[ " + point + " ]", 50, 100); /* 変数を + で連結 */
|
上の壁にあたるたびに得点を加点するには、pointの 初期値を0にしておいて、壁反射の処理で以下のようにします。
if(上の壁にあたったら)
{dy=-dy;
point=point+1;}
|
上の壁の色を変えた一部分あたった時のみ 得点を加点するには、以下のようにします。
if(上の壁にあたったら)
{
dy=-dy;
if(x>..&&x<...) /* 色を変えた部分の範囲 */
{point=point+1;}
}
|
Java でランダムは以下の様に使います。
<<プログラムの先頭に追加>> import java.util.*; /* ランダムを使うのに必要なクラスを import */ <<変数の定義の部分に追加>> Random ran; /* Rondom 型クラスの定義 */ <<初期化の部分に追加>> ran = new Random(); /* Random クラスの初期化 */ <<ランダムを使用>> dy = ran.nextInt() % 4; /* -3 〜 +3 までのうちのどれかをとる */ |
run メソッドの中での ran.nextInt() が実際ランダムを発生させている部分です。
この ran.nextInt() は int の最小値から最大値までのうちのどれか一つをとります(負の数字も含みます)。 よって割り算の余りを求める演算子 "%" を使って自分の取りたい値に調整します。
これで 4 で割った余りを取るので、 dy には -3 から +3 までの整数のうちのどれか一つが入ることになります。
import java.awt.*;
public class font extends java.applet.Applet
{
String font_names[];
public void init(){
// まず、使用可能なフォントを探す。
font_names = Toolkit.getDefaultToolkit().getFontList();
for(int i=0;i |
このソースファイルをコンパイルし、 MS-DOS でアプレットビューアを使って実行すると MS-DOS の画面に使用可能なフォントの名前が出てきます。
例えば TimesRoman でプリントしたい場合はこの様にします。
import java.awt.*;
public class fontp extends java.applet.Applet
{
public void paint(Graphics g){
Font f = new Font("TimesRoman", Font.PLAIN, 15); /* 15 はフォントサイズ */
g.setFont(f);
g.drawString("Hello, World", 50, 100); /* (50, 100) にプリント */
}
}
|
To: report
cc: 自分のログイン名
Subject: 2z5
です。
Subjectを間違えないよう注意しましょう。