情報処理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を間違えないよう注意しましょう。