[img=650x230]http://img386.imageshack.us/img386/338/corsacavalli.png[/img]
Semplice,e molto ridumentale quindi decisamente migliorabile,corsa di cavalli basata su una semplice gestione dei Thread e utilizzo della classe Canvas e Graphics.
Corsa:
Cavallo:
MyCanvas:
EDIT: di seguito l'immagine di ogni singolo cavallo (da inserire nella cartella "image" che a sua volta deve trovarsi nella stessa cartella del programma java):
Semplice,e molto ridumentale quindi decisamente migliorabile,corsa di cavalli basata su una semplice gestione dei Thread e utilizzo della classe Canvas e Graphics.
Corsa:
Codice:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Corsa extends JFrame implements ActionListener{
MyCanvas canvas=new MyCanvas(this);
JButton start=new JButton("START");
JLabel count=new JLabel(" ");
JPanel pan=new JPanel();
Cavallo c1,c2,c3,c4;
public Corsa(){
add(canvas,"Center");
add(pan,"South");
pan.add(start);
pan.add(count);
canvas.repaint();
start.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Corsa dei cavalli");
setSize(993,383);
setLocation(15,139);
setVisible(true);
show();
}
public void actionPerformed(ActionEvent e){
c1=new Cavallo(canvas,"c1");
c2=new Cavallo(canvas,"c2");
c3=new Cavallo(canvas,"c3");
c4=new Cavallo(canvas,"c4");
try{Thread.sleep(100);}catch(Exception ex){}
count.setText("GO!!!");
c1.start();c2.start();c3.start();c4.start();
}
public void win(String win_n){
JOptionPane.showMessageDialog(null,"Ha vinto il cavallo numero "+win_n+"!!!",
"MESSAGGIO:", JOptionPane.ERROR_MESSAGE);
}
}
Cavallo:
Codice:
public class Cavallo extends Thread{
MyCanvas canvas;
String n_c;
int end=0;
public Cavallo(MyCanvas c,String cavallo){
canvas=c;
n_c=cavallo;
}
public void run(){
while(end<900){
int vs=(int)(Math.random()*10);
canvas.move(n_c,vs);
int st=(int)(Math.random()*100);
end+=vs;
try{sleep(st);}catch(Exception e){}
}
}
}
Codice:
import javax.swing.*;
import java.awt.*;
public class MyCanvas extends Canvas{
Image img=Toolkit.getDefaultToolkit().getImage("image/san.png");
int d_c1=20,d_c2=20,d_c3=20,d_c4=20;
boolean win=false;
Corsa corsa;
public MyCanvas(Corsa c){
corsa=c;
}
public void paint(Graphics g){
g.setColor(Color.LIGHT_GRAY);//base di partenza
g.fillRect(5,15,90,280);
g.setColor(Color.GREEN);
g.fillRect(90,15,880,280);
g.setColor(Color.GRAY); //barre sopra il verde
g.fillRect(5,2,965,10);
g.fillRect(5,75,965,10);
g.fillRect(5,150,965,10);
g.fillRect(5,220,965,10);
g.fillRect(5,300,965,10);
g.setColor(Color.BLACK);//barra di partenza
g.fillRect(80,15,10,280);
int h=0,l=0;
boolean c=false;
while(h<280){ //genera la bandiera a scacchi
for(int i=0;i<3;i++){
if(c==false){
g.setColor(Color.BLACK);
c=true;
}else{
g.setColor(Color.WHITE);
c=false;
}
g.fillRect((880+l),(15+h),10,10);
l+=10;
}
l=0;
h+=10;
}
//immagine dei cavalli
g.drawImage(img,d_c1,20,50,50,Color.RED,this);
g.drawImage(img,d_c2,95,50,50,Color.ORANGE,this);
g.drawImage(img,d_c3,165,50,50,Color.YELLOW,this);
g.drawImage(img,d_c4,235,50,50,Color.BLUE,this);
}
public void move(String n_c,int a){
for(int i=1;i<=a;i++){
if(n_c.equals("c1")){d_c1++;}
if(n_c.equals("c2")){d_c2++;}
if(n_c.equals("c3")){d_c3++;}
if(n_c.equals("c4")){d_c4++;}
}
repaint();
String win_n="";
if(win==false){
if(d_c1>=900){win=true;win_n="1";}
if(d_c2>=900){win=true;win_n="2";}
if(d_c3>=900){win=true;win_n="3";}
if(d_c4>=900){win=true;win_n="4";}
if(win==true){
corsa.win(win_n);
}
}
}
}
EDIT: di seguito l'immagine di ogni singolo cavallo (da inserire nella cartella "image" che a sua volta deve trovarsi nella stessa cartella del programma java):