Runnableインターフェイスサンプル|Javaから楽しく学ぶ!ゲームプログラミング専門学校

Javaから楽しく学ぶ!ゲームプログラミング専門学校

ゲームプログラミングとはその名のとおりゲームのプログラムを作ることを指します。『Javaから楽しく学ぶ!ゲームプログラミング専門学校』ではゲームプログラミングについて、実際にゲームプログラムをJAVAプログラミング言語を使用し、作成していきながら詳しく解説していきます。

Runnableインターフェイスサンプル

 


【動作内容】
Javaアプレット画面をクリックすると「●」が動き、もう一度クリックすると停止します。

【解説記事】
Runnableインターフェイス

【ソースコード】
import java.applet.*;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class SmpRunnable extends Applet implements Runnable, MouseListener{
private Circle cir1;
private Circle cir2;
private Thread th;
private boolean running;
private int width;
private int height;

public void init(){
width = getSize().width; //Javaアプレット画面横幅サイズ取得
height = getSize().height; //Javaアプレット画面縦幅サイズ取得
addMouseListener(this); //マウスイベントを受け取り準備
}
public void start(){
cir1 = new Circle(width, height, 0, 50, 5, 0, 10, 10);
cir2 = new Circle(width, height, 50, 80, 5, 5, 15, 15);
running = false;
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mousePressed(MouseEvent e){
if(running == false){
running = true;
th = new Thread(this);
th.start(); //Javaアプレット画面描画用スレッド起動
cir1.start();
cir2.start();
}else{
running = false;
cir1.end();
cir2.end();
}
}
public void mouseReleased(MouseEvent e){
}
public void run(){
try{
while(running){
repaint();
Thread.sleep(100);
}
}catch(Exception e){}
}
public void paint(Graphics g){
g.fillOval(cir1.getPosX(), cir1.getPosY(),
cir1.getSizeX(), cir1.getSizeY());
g.fillOval(cir2.getPosX(), cir2.getPosY(),
cir2.getSizeX(), cir2.getSizeY());
}
}

class Circle implements Runnable{
Thread th;
boolean running;
int width;
int height;
int posX;
int posY;
int dx;
int dy;
int sizeX;
int sizeY;

Circle(int width, int height, int posX, int posY,
int dx, int dy, int sizeX, int sizeY){
this.width = width; //Javaアプレット画面横幅サイズ格納
this.height = height; //Javaアプレット画面縦幅サイズ格納
this.dx = dx; //サークル横移動距離格納
this.dy = dy; //サークル縦移動距離格納
this.sizeX = sizeX; //サークル横幅サイズ格納
this.sizeY = sizeY; //サークル縦幅サイズ格納
this.posX = posX; //サークル横座標初期位置格納
this.posY = posY; //サークル縦座標初期位置格納
running = false;
}
public void run(){
try{
while(running){
posX += dx;
posY += dy;

if(posX > width - sizeX){
dx = -5;
}
if(posX < 0){
dx = 5;
}
if(posY > height - sizeY){
dy = -5;
}
if(posY < 0){
dy = 5;
}
Thread.sleep(100);
}
}catch(Exception e){}
}
public void start(){
running = true;
th = new Thread(this);
th.start();
}
public void end(){
running = false;
}
public int getPosX(){
return posX;
}
public int getPosY(){
return posY;
}
public int getSizeX(){
return sizeX;
}
public int getSizeY(){
return sizeY;
}
}


トラックバック:0Edit
Copyright © Javaから楽しく学ぶ!ゲームプログラミング専門学校 All Rights Reserved.
当サイトのテキストや画像等すべての転載転用・商用販売を固く禁じます