じゃんけんゲームを作ってみよう4

 

ちいさなプログラムでも、自分で考えて作ってみると
色々な発見があり、スキルも向上します。
コピペで動かしただけでは、動いて当たり前ですし、感動もありません。

毎度、管理人イガジーです。

という訳で、ぜひ自分流のじゃんけんゲームを作ってみてください。
当ブログのコード(プログラム)は、あくまでも1例ですから。

まずは、例によって(?)画面づくりからコーディングしてみましょう。
(※ プログラムを書くことをコーディングと言います。)

画像(アイコン)入りのボタンに使う絵を、専用に用意するのも
ひとつのやりかたですが、ここでは元絵を少し縮小してアイコンにしてみます。

元絵は次のようにして読み込みます。

BufferedImage imc=null; // フィールドで定義
// ...(中略)
String picname="janken.png";
try {
	imc=ImageIO.read(new File(picname));
} catch (IOException e) {
	System.out.println(picname + " read error!");
	System.exit(1);
}

それを別のBufferedImageに縮小して格納するには

BufferedImage []bi = new BufferedImage[3]; // フィールドで定義
finel int ICONSZ=60;
Graphics g2;
// ... (中略)
for (int i=0;i<3;++i) {
	bi[i]=new BufferedImage(ICONSZ,ICONSZ,BufferedImage.TYPE_INT_ARGB);
	g2=bi[i].getGraphics();
	g2.drawImage(imc, 0, 0, ICONSZ, ICONSZ, 100*i, 0, 100*i+100, 100, f);
	g2.dispose();
}

透明を含む画像(png)を扱うので、TYPE_INT_ARGB を使います。
drawImageの最後の f は、JFrameですが、nullでも可です。
元絵(グー、チョキ、パー)は 100×100 ですが、
60×60(ICONSZ)に縮小して描画します。
g2.drawImage(imc, 0, 0, ICONSZ, ICONSZ, 100*i, 0, 100*i+100, 100, f);

g2.drawImage(元画像, 
描画先左上dx0, 描画先左上dy0, 描画先右下dx1, 描画先右下dy1,
元画像左上sx0, 元画像左上sy0, 元画像右下sx1, 元画像右下sx1,
Frameまたはnull);

を指定します。
描画先と元画像のサイズが異なれば自動的に拡大縮小されます。
(単純な拡大縮小処理のようなのであまり美しくはありません)。

こうして生成したBufferedImage bi[] は、
JButton [] jb=new JButton[3]; に対して
bj[i]=new JButton(new ImageIcon(bi[i]));とすれば、アイコン入りボタンの出来上がりです。
出来上がったボタンは、Jpanelにaddしてゆけば良いでしょう。

3つなので、配列を使わずに3回(3個)書き下す方法もありますが
ループ化する練習をした方が良いと思います。

全体のコードは、明日掲載します。
それまでに、ぜひ自分で書いてみてください。

ご意見、ご質問、リクエストなどは、ご遠慮なくコメント、あるいは
メールフォームからお送りください。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)