我想做的只是掷骰子并有一个掷骰子动画(只是在掷骰子时显示随机骰子值)
到目前为止,我的模具代码:
import java.awt.*;
import javax.swing.*;
public class diePanel extends JPanel{
private int dieValue;
private boolean onHold=false;
private int pNum;
public diePanel(){
super();
}
public void setPlayerNumber(int pNum){
this.pNum=pNum;
}
public void setDieValue(int dieValue){
this.dieValue=dieValue;
}
public int checkDieValue(){
return dieValue;
}
public void roll(){
dieValue=(int) ((Math.random()*6)+1);
repaint();
}
public void changeOnHold(){
onHold=!onHold;
}
public void unHold(){
onHold=false;
}
public boolean checkOnHold(){
return onHold;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setSize(50,50);
this.setVisible(true);
if(pNum==1){
if(dieValue==1){
if(onHold==false){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillOval(23,23,5,5);
}
else if(dieValue==2){
if(onHold==false){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
}
else if(dieValue==3){
if(onHold==false){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==4){
if(onHold==false){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
}
else if(dieValue==5){
if(onHold==false){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==6){
if(onHold==false){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.black);
}
else{
g.setColor(Color.white);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(7,23,5,5);
g.fillOval(38,23,5,5);
}
}
if(pNum==2){
if(dieValue==1){
if(onHold==false){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillOval(23,23,5,5);
}
else if(dieValue==2){
if(onHold==false){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
}
else if(dieValue==3){
if(onHold==false){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==4){
if(onHold==false){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
}
else if(dieValue==5){
if(onHold==false){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==6){
if(onHold==false){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.blue);
}
else{
g.setColor(Color.green);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(7,23,5,5);
g.fillOval(38,23,5,5);
}
}
if(pNum==3){
if(dieValue==1){
if(onHold==false){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillOval(23,23,5,5);
}
else if(dieValue==2){
if(onHold==false){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
}
else if(dieValue==3){
if(onHold==false){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==4){
if(onHold==false){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
}
else if(dieValue==5){
if(onHold==false){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==6){
if(onHold==false){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.pink);
}
else{
g.setColor(Color.orange);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(7,23,5,5);
g.fillOval(38,23,5,5);
}
}
if(pNum==4){
if(dieValue==1){
if(onHold==false){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillOval(23,23,5,5);
}
else if(dieValue==2){
if(onHold==false){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
}
else if(dieValue==3){
if(onHold==false){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==4){
if(onHold==false){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
}
else if(dieValue==5){
if(onHold==false){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(23,23,5,5);
}
else if(dieValue==6){
if(onHold==false){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillRoundRect(0, 0, 50, 50, 10, 10);
if(onHold==true){
g.setColor(Color.red);
}
else{
g.setColor(Color.gray);
}
g.fillOval(7,7,5,5);
g.fillOval(38,38,5,5);
g.fillOval(7,38,5,5);
g.fillOval(38,7,5,5);
g.fillOval(7,23,5,5);
g.fillOval(38,23,5,5);
}
}
}
}
我呼吁在我的框架中滚动:
for(int i=0;i<numDice;i++){
die[i].setPlayerNumber(cPlayer+1);
if(die[i].checkOnHold()==false){
for(int i2=0;i2<100;i2++){
die[i].roll();
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
repaint();
}
}
}
使用 repaint() 只是导致按下的按钮被延迟
任何帮助将非常感激
谢谢