面向对象分析与设计——一个简单模拟掷色子游戏的实现(二)

上篇对模拟掷色子的游戏进行了面向对象分析与设计,现在我把我的CODE发上来,大家参考下。基本上是完全实现了UML类图里的方法,代码量不大,还有一些界面设计我用的是SWT,所以增加了代码的长度。我把完整的程序打包成了JAR包,双击即可运行(前提是你的机器必须安装java虚拟机),由于附件限制暂时没有上传。
代码如下:
主类:
DiceGame.java
package cn.winux.dicegame;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class DiceGame
{
private static int wincounter=0;
private static int failecounter=0;
private static int money=100;

public static void initialize()
{
final Player player = new Player();
Die die = new Die();
Display display = new Display().getDefault();
final Shell shell = new Shell();
shell.setText("UML-excise-投掷色子游戏");
shell.setBounds(400, 150, 500, 400);
shell.open();
//-----------------------------------------------------------------------
//-----------------------定义组产生边框效果--------------------------------
Group group1 = new Group(shell, SWT.NONE);
group1.setBounds(10, 10, 300, 260);

final Group group2 = new Group(shell, SWT.NONE);
group2.setBounds(330, 10, 140, 260);

final Group group3 = new Group(group2, SWT.COLOR_BLACK);
group3.setBounds(20, 100, 100, 80);
group3.setText("公告牌");

Label label = new Label(group2, SWT.COLOR_INFO_BACKGROUND|SWT.WRAP|SWT.LEFT);
//此处刚开始定义的是Text text = new Text(group2, SWT.COLOR_INFO_BACKGROUND|SWT.WRAP|SWT.LEFT);
//当给文本框的属性加上SWT.COLOR_INFO_BACKGROUND时,SWT.WRAP失去作用
//为了让颜色和面板一致就使用了标签组件
label.setBounds(10, 20, 120, 200);
label.setText("Author:winux from buptsse email:wwwshuimu@163.com");
//-----------------------定义显示色子值的文本框---------------------------------------
final Text text1 = new Text(group1, SWT.CENTER);
text1.setFont(new Font(display, "黑体", 120, SWT.BOLD));
text1.setBounds(20, 20, 120, 150);
final Text text2 = new Text(group1, SWT.CENTER);
text2.setFont(new Font(display, "黑体", 120, SWT.BOLD));
text2.setBounds(160, 20, 120, 150);
//------------------------投掷按钮-----------------------------------------
final Button button_play = new Button(shell, SWT.PUSH);
//button_play.
button_play.setBounds(100, 300, 100, 30);
button_play.setText("掷色子");
//-----------------------退出----------------------------------------------
Button button_quit = new Button(shell, SWT.PUSH);
button_quit.setBounds(250, 300, 100, 30);
button_quit.setText("退出");
//------------------------监听掷色子按钮-------------------------------------------
final Text text_win = new Text(group3, SWT.COLOR_INFO_BACKGROUND);
text_win.setBounds(5, 15, 90, 20);
text_win.setText("你赢了:"+wincounter+"局");

final Text text_faile = new Text(group3, SWT.COLOR_INFO_BACKGROUND);
text_faile.setBounds(5, 35, 90, 20);
text_faile.setText("你输了:"+failecounter+"局");

final Text text_money = new Text(group3, SWT.COLOR_INFO_BACKGROUND);
text_money.setText("赌金:$"+money);
text_money.setBounds(5, 55, 90, 20);

SelectionAdapter sl = new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
int result=0;
text1.setText(player.play()+"");
result=result+player.play();
text2.setText(player.play()+"");
result=Integer.parseInt(text1.getText())+Integer.parseInt(text2.getText());
//------------------------------------------------------------------------
if(result==7&&money>0)
{
wincounter++;
money+=10;
MessageDialog.openInformation(shell, "结果", "你赢得了整个世界!!!");
text_win.setText("你赢了:"+wincounter+"局");
text_money.setText("赌金:$"+money);
}
else
if(money>0)
{
failecounter++;
money-=5;
MessageDialog.openInformation(shell, "结果", "你输掉了你的裤衩!!!");
text_faile.setText("你输了:"+failecounter+"局");
text_money.setText("赌金:$"+money);
}
else
{
MessageDialog.openWarning(shell, "必杀令", "你可以跳楼了!!!");
}
}
};
button_play.addSelectionListener(sl);
//------------------------------------------------------------------------
//------------------监听退出按钮动作----------------------------------------
SelectionAdapter s2 = new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
shell.close();
}
};
button_quit.addSelectionListener(s2);
//-------------------------------------------------------------------------

//-----------------主窗口一直存在直到被销毁----------------------------------
while(!shell.isDisposed())
{
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
public static void main(String []args)
{
initialize();
}
}


色子类:
Dia.java

package cn.winux.dicegame;

import java.util.Random;

public class Die
{
public int getint;
public int roll()
{
return this.getint=1+(int)(Math.random()*6);//产生1到6的随机数
}
}


赌徒类:
Player.java

package cn.winux.dicegame;

public class Player
{
private String name;
public void Player(String name)
{
this.name=name;
}
public int play()
{
int die;//定义色子
die=new Die().roll();
return die;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值