実現したいこと
javaにてルーレットの作成をしようとしています。
ルーレットのイメージとしては
http://www.web-roulette.com/
このサイトのような
・X人から一人を選ぶというようなルーレットを作る
・回るアニメーションを用いてそれがだんだん遅くなってストップする。
といった感じです。
発生している問題
これらを制作するためにどういった方法をとっていけばいいのかわからず壁にあたっております。
とりあえず何かを回転させる処理が必要だと思い、画像を回転させるような処理を作りました。
X等分の円を用意し、それをだんだん遅くしていき、止める。といった案を考え以下のプログラムを考えました。
このプログラムでは任意の画像が回転するだけです。
このプログラムの路線で目的のルーレットを作成することができるでしょうか?
どういったプログラムを追加すれば作ることができるでしょうか?
ぜひご教授ください。
java
1import java.awt.Color; 2import java.awt.Graphics; 3import java.awt.Graphics2D; 4import java.awt.Image; 5import java.awt.Toolkit; 6import java.awt.Button; 7import java.awt.event.ActionEvent; 8import java.awt.event.ActionListener; 9import java.lang.String; 10import javax.swing.ImageIcon; 11import javax.swing.JFrame; 12import javax.swing.JPanel; 13import javax.swing.Timer; 14import static java.lang.Math.PI; 15 16 17public class roulette extends JFrame { 18 final static int C00 = 1 ; //速度変更 19 20 public roulette() { 21 DrawPanel Pmain = new DrawPanel(); 22 add(Pmain); 23 24 new Timer(C00, Pmain).start(); 25 26 } 27 28 public static void main(String[] args) { 29 Toolkit.getDefaultToolkit().setDynamicLayout(true); 30 31 JFrame Pmain = new roulette(); 32 Pmain.setLayout(null); 33 Pmain.setTitle("るーれっと"); 34 Pmain.setDefaultCloseOperation(EXIT_ON_CLOSE); 35 Pmain.setBackground(Color.white); 36 Pmain.setSize(500, 500); 37 Pmain.setVisible(true); 38 39 Button StopButton = new Button(); 40 StopButton.setLabel("stop"); 41 Pmain.add(StopButton); 42 StopButton.setBounds(10, 10, 60, 60); 43 StopButton.setForeground(Color.WHITE); 44 StopButton.setBackground(Color.RED); 45 } 46} 47 48 49 50//以下ルーレット部分 51class DrawPanel extends JPanel implements ActionListener { 52 int n; 53 String C00 = "image"+n+".png"; //任意のn 54 Image I00; 55 int I01; 56 int I02; 57 int I03 = 0; 58 59 public DrawPanel() { 60 setBackground(Color.white); 61 I00 = new ImageIcon(C00).getImage(); 62 I01 = I00.getWidth(this); 63 I02 = I00.getHeight(this); 64 } 65 66 public void actionPerformed(ActionEvent A00) { 67 I03 = ++I03 % 360; 68 repaint(); 69 } 70 71 public void paintComponent(Graphics A00) { 72 Graphics2D Pmain = (Graphics2D)A00; 73 Pmain.setColor(Color.white); 74 Pmain.fillRect(0, 0, getWidth(), getHeight()); 75 Pmain.rotate(I03 * PI / 180, getWidth() / 2.0, getHeight() / 2.0); 76 Pmain.drawImage(I00, (getWidth() - I01) / 2, (getHeight() - I02) / 2, this); 77 } 78}
あなたの回答
tips
プレビュー