📄 bobing.java
字号:
import java.applet.AudioClip;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Bobing extends JApplet implements ActionListener
{
//在运行时务必记得参数设置:x=450,y=500,骰子length=60,点r=6;
JLabel[] dieLabel=new JLabel[6];
JLabel resultLabel;
JTextField[] dieField=new JTextField[6];
JTextField resultField;
JButton rollButton;
int die[] = new int [6];//这个记录每个骰子的随机数
AudioClip sound;
//定义组件
public void init()
{
super.init();
Container container=getContentPane();
container.setLayout( new FlowLayout());
container.setBackground(new Color(177,228,240));
sound = getAudioClip(getDocumentBase(),"1.au");
Icon bug=new ImageIcon("pic.gif");
for(int i = 0;i < 6;i++)
{
dieLabel[i] = new JLabel("骰子"+(i+1));
this.add(dieLabel[i]);
dieField[i] = new JTextField(10);
this.add(dieField[i]);
}//设置显示骰子标签
for(int i=0;i<6;i++)
{
dieLabel[i].setSize(70, 30);
container.add(dieLabel[i]);
dieField[i].setEditable( false );
dieField[i].setSize(70, 20);
dieField[i].setBackground(Color.white);
dieField[i].setFont(new Font("黑体",Font.ITALIC,20));
dieField[i].setHorizontalAlignment(JTextField.CENTER);
dieField[i].setEditable(false);
container.add(dieField[i]);
}
resultLabel=new JLabel("结果:");
container.add(resultLabel);
resultField=new JTextField(20);
resultField.setHorizontalAlignment(JTextField.CENTER);
resultField.setBackground(Color.white);
resultField.setFont(new Font("微软雅黑",Font.ITALIC,20));
resultField.setEditable(false);
container.add(resultField);
rollButton = new JButton(bug);
rollButton.setRolloverIcon(bug);
rollButton.addActionListener( this );
container.add(rollButton);
resultField.setEditable(false);
}//end method init
public void paint(Graphics g)
{
super.paint(g);
Graphics2D g2d = ( Graphics2D ) g; // cast g to Graphics2D
// draw 2D ellipse filled with a blue-yellow gradient
g2d.setPaint( new GradientPaint(50,270,Color.RED,225,370, Color.YELLOW, true ) );
g2d.fillOval(50,270,350,200);
for(int count=0;count<=2;count++)
drawtouzi(die[count],125+70*count,300,g);
for(int count=3;count<=5;count++)
drawtouzi(die[count],125+70*(count-3),370,g);
}
public void actionPerformed( ActionEvent actionEvent )
{
String result;
result =rollDice();//rollDice返回String类型,结果存入result
resultField.setText(result);
repaint();
sound.play();
}
public void drawtouzi(int n,int xVal,int yVal,Graphics g){
g.setColor(new Color(249,250,170));
g.fillRoundRect(xVal, yVal,60,60, 10, 10);
if (n==1||n==4)
g.setColor(Color.RED);
else g.setColor(Color.BLACK);
switch (n)
{
case 1:
{
g.fillOval(xVal+24, yVal+24, 12,12);
break;
}
case 2:
{
g.fillOval(xVal+9, yVal+24, 12, 12);
g.fillOval(xVal+39, yVal+24, 12, 12);
break;
}
case 3:
{
g.fillOval(xVal+9, yVal+9, 12, 12);
g.fillOval(xVal+24, yVal+24, 12, 12);
g.fillOval(xVal+39,yVal+39, 12, 12);
break;
}
case 4:
{
g.fillOval(xVal+9, yVal+9, 12, 12);
g.fillOval(xVal+9, yVal+39, 12, 12);
g.fillOval(xVal+39, yVal+9, 12, 12);
g.fillOval(xVal+39, yVal+39, 12, 12);
break;
}
case 5:
{
g.fillOval(xVal+9, yVal+9, 12, 12);
g.fillOval(xVal+9, yVal+39, 12, 12);
g.fillOval(xVal+39, yVal+9, 12, 12);
g.fillOval(xVal+39, yVal+39, 12, 12);
g.fillOval(xVal+24, yVal+24, 12, 12);
break;
}
case 6:
{
g.fillOval(xVal+14, yVal+9, 12, 12);
g.fillOval(xVal+14, yVal+24, 12, 12);
g.fillOval(xVal+14, yVal+39, 12, 12);
g.fillOval(xVal+34, yVal+9, 12, 12);
g.fillOval(xVal+34, yVal+24, 12, 12);
g.fillOval(xVal+34, yVal+39, 12, 12);
break;
}
}
}
public String rollDice()
{
int[] sameDie = new int[] {0,0,0,0,0,0};//此数组存入摇骰子时1~6相同的数有多少个
String rollResult = "";//此字符串存入结果
for(int i=0;i<=5;i++)
{
die[i]=1+(int)(Math.random()* 6);
dieField[i].setText( Integer.toString(die[i]));
}//产生随机数
for(int count=0;count<=5;count++)
switch (die[count])
{
case 1 :
sameDie[0]++;
break;
case 2 :
sameDie[1]++;
break;
case 3 :
sameDie[2]++;
break;
case 4 :
sameDie[3]++;
break;
case 5 :
sameDie[4]++;
break;
case 6 :
sameDie[5]++;
break;
}//无其他情况,不加default
switch(sameDie[3])//先判断4的个数有几个,然后便于分类讨论
{
case 0:
for(int i = 0; i <= 5; i++)
{
if(sameDie[i]==4)
rollResult="四进,不错!";
if(sameDie[i]==5)
{
for(int countx=0;countx<=5;countx++)
if(sameDie[countx]==1)
rollResult ="五子带"+(countx+1)+"手气真好!";
}
if(sameDie[i]==6)
{
if(i==1)
rollResult="哇塞!恭喜!遍地锦";
else
rollResult="呜呜~黑六勃";
}
else
continue;//执行下一个循环
}
if(rollResult=="")
rollResult="啥都没有,快去洗洗手吧!";
break;
case 1:
for(int i=0;i<=5;i++)
{
if(sameDie[i]==4)
rollResult ="嘿嘿,四进带一秀";
if(sameDie[i]==5)
rollResult ="爽歪歪,五子带一秀";
else
continue;
}
if(sameDie[0]==1&&sameDie[1]==1&&sameDie[2] ==1&&sameDie[3]==1
&&sameDie[4]==1&&sameDie[5]==1)
rollResult="对堂,不可思议耶~";
else if(rollResult =="")
rollResult ="一秀,一般般啦~";
break;
case 2:
for(int i =0;i<=5;i++)
{
if( sameDie[i]==4)
rollResult = "四进带二举,好猛~";
}
if( rollResult =="")
rollResult ="二举,凑合~";
break;
case 3:
rollResult ="三红,差点状元喔~";
break;
case 4:
int sum=0;//sum记录当状元时带几
if(sameDie[0]==2)
rollResult ="状元插金花,这怎么可能!!!神啊!";
else
{
for(int countx=0;countx<=5;countx++)
{
if(sameDie[countx]==1)
sum=sum+countx+1;
else if(sameDie[countx]==2)
sum=sum+(countx+1)*2;
}
rollResult = "状元带"+sum+",太强了!";
}
break;
case 5:
for(int countx=0;countx<=5;countx++)
if(sameDie[countx]==1)
rollResult="五红带"+(countx+1);
break;
case 6:
rollResult="六勃红,这不是真的吧~";
break;
}//switch
return rollResult;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -