0
applet制作で質問です。
現在簡単なアーチェリーゲームを作っています。STOPボ
タンを押すとボールが止まりそれが点数加算されていく
というものなのですが、画面がちらつきすぎて困ってい
ます。対処法を教えてください。あと、点数加算をそれ
ぞれの色で止まった点数を加算していきたいのですがど
ういうプログラムにすればよいでしょうか?
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Graphics;
import java.awt.Graphics2D;
public class p1122100 extends Applet implements
Runnable,ActionListener{
Image back;
Graphics buffer;
int x=0,y=0;
int move_x=5,move_y=6;
int time = 25;
int buttonPush=0;
int score=0;
Button stop;
Button slow;
Button midium;
Button fast;
public void init()
{
back=createImage(500,500);
buffer=back.getGraphics();
Thread th;
th=new Thread(this);
th.start();
stop=new Button("はなつ!");
add(stop);
stop.addActionListener(this);
slow=new Button("低速");
add(slow);
slow.addActionListener(this);
midium=new Button("普通");
add(midium);
midium.addActionListener(this);
fast=new Button("高速");
add(fast);
fast.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == slow){
time = 50;
}
if(e.getSource() == midium){
time = 25;
}
if(e.getSource() == fast){
time = 5;
}
if (e.getSource() == stop) {
time=30000;
}
}
public void run(){
for(;;){
x=x+move_x;
y=y+move_y;
if(x<0||x>480){
move_x=-move_x;
}
if(y<0||y>480){
move_y=-move_y;
}
repaint();
try{
Thread.sleep(time);
}
catch(InterruptedException e){}
}
}
public void paint(Graphics g)
{
Graphics2D g1 = (Graphics2D)g;
GradientPaint gp = new
GradientPaint(10,10,Color.RED,100,10,Color.BLUE,tr
ue);
g1.setPaint(gp);
g1.fillRect(0, 0, 500, 500);
g.setColor(Color.BLACK);
Graphics2D buffer = (Graphics2D)g;
buffer.setStroke(new
BasicStroke(50.0f));
buffer.drawOval(125, 125, 240, 240);
buffer.setColor(Color.yellow);
buffer.drawString("10点", 155,155);
buffer.setColor(Color.GREEN);
buffer.setStroke(new
BasicStroke(40.0f));
buffer.drawOval(165, 165, 160, 160);
buffer.setColor(Color.yellow);
buffer.drawString("20点", 185,185);
buffer.setColor(Color.BLUE);
buffer.setStroke(new
BasicStroke(30.0f));
buffer.drawOval(200, 200, 90, 90);
buffer.setColor(Color.yellow);
buffer.drawString("30点", 210,210);
buffer.setColor(Color.RED);
buffer.setStroke(new
BasicStroke(20.0f));
buffer.drawOval(225, 225, 40, 40);
buffer.setColor(Color.yellow);
buffer.drawString("50点", 255,255);
buffer.setColor(Color.gray);
buffer.fillOval(235, 235, 20, 20);
buffer.setColor(Color.red);
buffer.fillOval(x,y,20,20);
buffer.setColor(Color.black);
buffer.drawString("SCORE: "+score,
420,50);
g.drawImage(back,0,0,this);
}
public void update(Graphics g){
paint(g);
}
}