前提
Timerクラスを使って定期実行する描画のプログラミングを作りました。
デバックでだいぶ減らしたのですが、ここからどうすればいいのかわからなかったので教えてほしいです。
また、作ろうとしている動作が正常にできるかも判断してほしいです。描画のクラスは描画だけの時に動いたので問題ないと思います。
実現したいこと
正n角形を1秒ごとに正三角形から正n角形まで描画する。
角数が増えるごとに前の描画を消しています。
発生している問題・エラーメッセージ
PolygonTimer.java:20: エラー: 式の開始が不正です public void setI(){this.i++;} ^ PolygonTimer.java:22: エラー: <identifier>がありません System.out.print("How many squares do you want to draw?:"); ^ PolygonTimer.java:22: エラー: 型の開始が不正です System.out.print("How many squares do you want to draw?:"); ^ PolygonTimer.java:31: エラー: 型の開始が不正です if(i = n;){ ^ PolygonTimer.java:31: エラー: <identifier>がありません if(i = n;){ ^ PolygonTimer.java:31: エラー: 型の開始が不正です if(i = n;){
該当のソースコード
java
1import javax.swing.JFrame; 2import javax.swing.JPanel; 3import java.awt.Color; 4import java.awt.Graphics; 5import java.util.Timer; 6import java.util.TimerTask; 7import java.util.Scanner; 8 9class PolygonTimer{ 10 11 private int i = 3; 12 Scanner stdIn = new Scanner (System.in); 13 public static void main(String[] args){ 14 15 16 GameWindow gw = new GameWindow("circle and polygon",1000,1000); 17 gw.add(new DrawCanvas(i)); 18 gw.setVisible(true); 19 20 public void setI(){this.i++;} 21 22 System.out.print("How many squares do you want to draw?:"); 23 int n = stdIn.nextInt(); 24 Timer timer = new Timer(); 25 TimerTask task = new TimerTask(){ 26 27 public void run(){ 28 gw.DrawCanvas(3); 29 gw.setI(); 30 } 31 if(i = n;){ 32 timer.cancel();} 33 34 }; 35 36 public void start(){timer.schedule(task,1000,1000);} 37 38 39 } 40 41 42class DrawCanvas extends JPanel{ 43 44 public void paintComponent(Graphics g) { 45 super.paintComponent(g); 46 47 48g.clearRect(0,0,1000,1000); 49 50 int x0 = 500; 51 int y0 = 500; 52 int r = 400; 53 int x[] = new int[i]; 54 int y[] = new int[i]; 55 56 double delta = ( 2 *Math.PI )/ (double)i; 57 58 for(int l = 0; l<i; l++) { 59 x[l] = (int)(-Math.cos(Math.PI/2.0 + delta * l)*r) + x0; 60 y[l] = (int)(-Math.sin(Math.PI/2.0 + delta * l)*r) + y0; 61 } 62 63 g.setColor(Color.red); 64 g.drawPolygon(x, y, i); 65 i++; 66 67 } 68 69 public void paint(Graphics g) { 70 super.paint(g); 71 g.setColor(Color.blue); 72 g.drawOval(100, 100, 800, 800); 73 } 74 75 } 76 77class GameWindow extends JFrame{ 78 public GameWindow(String title, int width, int height) { 79 super(title); 80 setDefaultCloseOperation(EXIT_ON_CLOSE); 81 setSize(width,height); 82 setLocationRelativeTo(null); 83 setResizable(false); 84 85 } 86} 87
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
こちらの質問が複数のユーザーから「調査したこと・試したことが記載されていない質問」という指摘を受けました。





回答3件
あなたの回答
tips
プレビュー