appletを使ったプログラミング2
前回も違う質問をさせて頂いたのですが、bubble sortとselection sortを
ボタンを押す事によって順次長方形を左から右に動かしたいのですが、
どのようにしたら良いのか止まってしまいました。
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.Random;
import java.io.*;
public class GUI extends Applet
{
public void update(Graphics g)
{
paint(g);
}
Button button = new Button("Sort Me");
Label text = new Label("Pink: Selection Sort" + "\n" + "Green: Inseration Sort");
int[] store = new int[20];
public static int[] findValue(int [] store){
int rand;
for (int i = 0; i < store.length; i ++){
do{
rand = (int)(Math.random()*51)+10;
}
while(doesExists(rand, store, i));
store[i] = rand;
}
return store;
}
private static boolean doesExists(int rand, int[] arr, int i){
if(i != 0){
for(int j =0; j < i; j++){
if(rand == arr[j]){
return true;
}
}
}
return false;
}
int Counter = 0;
int xScale = 0;
public void displayRectangles(Graphics g)
{
if(Counter < 20)
{
xScale += 12;
int x = 80 + xScale;
int H = store[Counter];
g.setColor(Color.pink);
g.fillRect(x, (140 - H), 10, H);
g.setColor(Color.green);
g.fillRect(x, 140, 10, H);
Counter++;
}
}
private void Rectangles(int xScale, int y, int W, int Counter){
this.xScale = xScale;
this.Counter = Counter;
}
public void setxScale(int xScale){
this.xScale = xScale;
}
public void setCounter(int Counter){
this.Counter = Counter;
}
public int getxScale(){
return xScale;
}
public int getCounter(){
return Counter;
}
public void selectionSort(int[] list){
int min,temp;
int n = list.length;
for(int p = 0; p < n-1; p++){
min = p;
for (int i = p+1; i < n; i++){
if (list[i]<list[min])
min = i;
if (p != min){
temp = list[p];
list[p] = list[min];
list[min] = temp;
}
}
}
}
public void insertionSort (int[] list){
int i,temp;
int n = list.length;
for(int k = 1;k < n; k++){
temp = list[k];
i = k;
while (i > 0 && temp < list[i-1]){
list[i] = list[i -1];
i--;
}
list[i] = temp;
}
}
public void init()
{
setSize(500, 350);
setBackground(Color.WHITE);
add(button);
add(text);
button.addActionListener(new buttonHandler());
store = findValue(store);
}
int c = 0;
public void paint(Graphics g)
{
//scrambleRectangles(store); // scrambled array will be newStore[]
c++;
displayRectangles(g);
if(c < 20)
{
repaint();
}
}
int count = 0;
class buttonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
count ++;
button.setLabel("pass " + count);
if(e.getActionCommand()=="pass")
repaint();
}
}
}
最終形は以下のリンクの様にしたいのですが、どのようにしたら良いのか分かりません。
http://hills.ccsf.cc.ca.us/~cconner/Java/Sorts/S …
どなたかアドバイス頂けますでしょうか?
よろしくお願い致します。
補足
そのやり方だと、うまく動きません。リンクが切れてしまったのでここに新しいファイルのリンクを書きます。 http://cid-a07786ab8de28b5b.skydrive.live.com/self.aspx/.Public/Field.java