1
/
5

出世魚アニメーション

出世魚である【ぶり】の生涯を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);
		}
	}

}


/*
[結果]
モジャコがぶりになった

*/