出世魚アニメーション
出世魚である【ぶり】の生涯をGUIでアニメーションにしてみた
10cm未満の稚魚だったモジャコが左に泳いでいくと……
体長20cmを超えるワカシになり……
最後は体長80cmを超える立派なぶりになるプログラムを作成。
//使用言語:java
//必要なパッケージをインポート
import java.awt.*;
import java.awt.event.*;
//フレームクラスの拡張
public class Fish extends Frame implements Runnable
{
//変数置き場
Image haikei; //背景
Image sakana; //魚
int kyori=1; //距離
int i; //for文で使う変数
String namae; //魚の名前を入れる
public static void main(String[] args)
{
//拡張したクラスからオブジェクトを作成
Fish sm=new Fish();
}
//Fishのコンストラクタ
public Fish()
{
//ウィンドウタイトルの設定
super("出世魚");
//ウィンドウ・イベントを受け取るためのリスナーの登録
addWindowListener(new SampleWindowListener());
//新しいスレッドの開始
Thread th;
th=new Thread(this);
th.start();
//ウインドウサイズの設定と表示指定
setSize(1500,400);
setVisible(true);
}
//スレッド処理
public void run()
{
try{
/*
変数iが1増えるごと0.5秒止め、画像を変える。
変数iが1増えるごと変数kyoriは90増える。
*/
for(i=0;i<10;i++){
kyori+=90;
repaint();
Thread.sleep(500);
}
}
catch(InterruptedException e){}
}
//グラフィック処理
public void paint(Graphics g)
{
//Toolkitの取得
Toolkit tk=getToolkit();
//背景画像の設定
haikei=tk.getImage("Image.jpg");
//魚と言葉をスレッド処理のiの値に合わせて適宜設定
/*
出世魚の名前は以下のサイトを参照した
https://umito.maruha-nichiro.co.jp/article56/
*/
switch(i){
case 0:
namae="モジャコ";
sakana=tk.getImage("Fish01.jpg");
break;
case 2:
namae="ワカシ";
sakana=tk.getImage("Fish02.jpg");
break;
case 4:
namae="イナダ";
sakana=tk.getImage("Fish03.jpg");
break;
case 6:
namae="ワラサ";
sakana=tk.getImage("Fish04.jpg");
break;
case 8:
namae="ブリ";
sakana=tk.getImage("Fish05.jpg");
break;
}
//各画像表示
g.drawImage(haikei,0,0,this); //背景表示
g.drawString(namae,50+kyori,75); //文字列表示。iが増えるごとに位置が右に移動する
g.drawImage(sakana,10+kyori,100,this); //魚の画像表示。iが増えるごとに位置が右に移動する
}
//ウインドウを閉じるための処理
//ウインドウの×マークをクリックされたときにこのメソッドが実行される
class SampleWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
}
/*
[結果]
モジャコがぶりになった
*/