ボールが動いていくプログラム
いつかゲームが作れたらいいねなんて思ってる人はきっと多いと思う。
かくいう自分もその一人で、ようやく思ってるだけから実行に移そうかなとか考え中。
ちょうどJavaをやる機会があったのでとりあえずボール動かしてみたよ。次の目標は壁での跳ね返りだね。
まともに参考にするならこちらのサイトが良いと思います。
多くのサンプルコードもあってとてもありがたい。
参考:ボールを動かす - 人工知能に関する断想録
ソースは続きを読むから:
import java.awt.*; //メインのクラス public class MoveBall{ int width, height; //縦横サイズ Frame mainF; //フレーム Canvas mainC; //キャンバス public MoveBall(){ //サイズ設定して width = 500; height = 500; //キャンバスの大きさと背景色を指定 mainC = new MainCanvas(); mainC.setSize(200,200); mainC.setBackground(Color.blue); //フレームの大きさと背景色を指定、キャンバスをフレームに載せる mainF = new Frame("moving ball"); mainF.setBackground(Color.green); mainF.setSize(width,height); mainF.setLayout(new FlowLayout()); mainF.add(mainC); mainF.setVisible(true); } public static void main(String[] args){ //main関数でインスタンス化を行います MoveBall frame = new MoveBall(); } } //キャンバスクラス //こいつがスレッド立ててそっちでボールを動かすよ class MainCanvas extends Canvas implements Runnable{ int x, y; //ボールの位置 int vx = 1; //移動量 int vy = 1; //移動量 Thread thread; //スレッド準備 //コンストラクタは位置を指定してスレッド開始 public MainCanvas(){ x = 5; y = 5; thread = new Thread(this); thread.start(); } //x,yの位置にボール描くよ public void paint(Graphics g){ g.setColor(Color.white); g.fillOval(x, y, 10, 10); } //x,yの移動を行うスレッドです //スレッドを立てるとrunメソッドが呼ばれるので //そこでメインループさせときます public void run(){ while (true) { x += vx; y += vy; repaint(); //早すぎて困るのでスリープ try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } }