/*博饼,这是一个Applet程序,要求:记录已经获取的每种奖品的数目,如果某种奖品用完了,再博出的相应点数不获奖。
游戏结束的条件是:状元已经产生,而且奖品已经用完。跟踪每个获奖过程,一直到游戏结束。游戏结束时,提示用户游戏已经结束,并提示用户重新开始一局,开始新的游戏。
复制后保存为.java文件,编译后,再写一个HTML文件(附在2楼),保存在同一目录下
运行“appletviewer Cake.html”就可以看到运行界面了!,博饼的规则附在3楼,谢谢!有什么不理解的地方,欢迎发短信
共同探讨!*/
import java.awt.*; // Container, FlowLayout
import java.awt.event.*; // ActionEvent, ActionListener
import javax.swing.*; // JApplet, JButton, JLabel, JTextField
public class Cake extends JApplet implements ActionListener {
//定义色子点数的总个数,fre代表frequency
int[] fre = new int[7]; //牺牲一个空间来换取程序的可读性
int[] die = new int[7];//各色子的点数
int zhuangyuan = 0; //统计状元数
int duitang = 0; //统计对堂数
int sanhong = 0; //统计三红数
int sijin = 0; //统计四进数
int erju = 0; //统计二举数
int yixiu = 0; //统计一秀数
String result = " ";//用于输出获奖结果
JLabel[] dieLabel = new JLabel[7];
JTextField[] dieField = new JTextField[7];
JButton rollButton;
public void init(){
Container container = getContentPane();
container.setLayout( new FlowLayout() );
// create label and text field for die 1
for(int i = 1;i
dieLabel[i] = new JLabel( "Die"+i);
container.add( dieLabel[i] );
dieField[i] = new JTextField( 10 );
dieField[i].setEditable( false );
container.add( dieField[i] );
}
// create button user clicks to roll dice
rollButton = new JButton( "Roll Dice" );
rollButton.addActionListener( this );
container.add( rollButton );
}//end for init
public void paint(Graphics g){
super.paint(g);
g.drawString(result,20,150);
}
public void actionPerformed( ActionEvent e ){
for(int i = 1;i
fre[i] = 0 ;
}
rollDice();
displayMessage();
repaint();
}
public void rollDice(){
// pick random die values
for(int i = 1;i
die[i] = 1 + ( int )(Math.random() * 6);
fre[die[i]]++;
dieField[i].setText( Integer.toString( die[i] ) );//display result in the textfiled
}
}//end for rollDice
public void displayMessage(){
switch(fre[4]){
case 6 : showStatus("六勃红");
if(zhuangyuan==0) zhuangyuan++;
break;
case 5 : showStatus("五红");
if(zhuangyuan==0) zhuangyuan++;
break;
case 4 : if(fre[1]==2) { showStatus("状元插金华"); if(zhuangyuan==0) zhuangyuan++;}
else {showStatus("状元"); if(zhuangyuan==0) zhuangyuan++;} break;
case 3 : showStatus("三红"); if(sanhong<4) sanhong++; break;
case 2 : if(fre[1]==4||fre[2]==4||fre[3]==4||fre[5]==4||fre[6]==4){
showStatus("四进带二举");
if(sijin<8) sijin++;
if(erju<16) erju++;
}
else{
showStatus("二举");
if(erju<16) erju++;
}
break;
case 1 : if(fre[1]==5||fre[2]==5||fre[3]==5||fre[5]==5||fre[6]==5){
showStatus("五子带一秀");
if(zhuangyuan<1) zhuangyuan++;
if(yixiu<32) yixiu++;
}
else
if(fre[1]==4||fre[2]==4||fre[3]==4||fre[5]==4||fre[6]==4){
showStatus("四进带一秀");
if(sijin<8) sijin++;
if(yixiu<32) yixiu++;
}
else
if(fre[1]==1&&fre[2]==1&&fre[3]==1&&fre[5]==1&&fre[6]==1){
showStatus("对堂");
if(duitang<2) duitang++;
}
else
{
showStatus("一秀");
if(yixiu<32) yixiu++;
}
break;
case 0 : if(fre[2]==6||fre[3]==6||fre[5]==6||fre[6]==6){
showStatus("六勃黑");
if(zhuangyuan<1) zhuangyuan++;
}
else
if(fre[1]==6){
showStatus("遍地锦");
if(zhuangyuan<1) zhuangyuan++;
}
else
if(fre[1]==5||fre[2]==5||fre[3]==5||fre[5]==5||fre[6]==5){
showStatus("五子");
if(zhuangyuan<1) zhuangyuan++;
}
else
if(fre[1]==4||fre[2]==4||fre[3]==4||fre[5]==4||fre[6]==4){
showStatus("四进");
if(sijin<8) sijin++;
}
else
{
showStatus("罚黑");
}
break;
}//end for switch
result ="状元:/t" + zhuangyuan +"/n" + "对堂:/t" + duitang + "/n" + "三红:/t" + sanhong + "/n" +
"四进:/t" +sijin + "/n" + "二举:/t" + erju + "/n" + "一秀:/t" + yixiu +"/n";
if(zhuangyuan == 1 && duitang == 2 && sanhong ==4 && sijin ==8 && erju == 16 && yixiu == 32){
JOptionPane.showMessageDialog(null,"奖品已全部奖完了!","Over",JOptionPane.INFORMATION_MESSAGE);
zhuangyuan = 0;
duitang = 0;
sanhong = 0;
sijin = 0;
erju = 0;
yixiu = 0;
JOptionPane.showMessageDialog(null,"重新开始游戏!","Over",JOptionPane.INFORMATION_MESSAGE);
}//end for if
}//end for displayMessage
}
以下非程序代码:学了将进两个月的JAVA,而自己现在又住在厦门,所以突发其想,便写下了上面这个程序!程序主要体现了模块化设计,所以每个函数的功能一般都很单一,还考虑了事件传递机制!
希望对象我这样对JAVA有着浓厚兴趣的会员有所帮助!
版权所有&:Qdieyou(软院:03369138) 希望你们复制的时候也把我的ID附上,谢谢!