`
buptwinux
  • 浏览: 13436 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
上篇对模拟掷色子的游戏进行了面向对象分析与设计,现在我把我的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;
	}
}
分享到:
评论

相关推荐

    Google Android SDK开发范例大全(完整版)

    余志龙,来自于手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及J2EE、JSP、Servlet、JavaBeans、PHP、C#等程序语言,熟悉面向对象技术与Eclipse...

    java源码包---java 源码 大量 实例

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    java源码包2

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的...

    java源码包3

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的...

    java源码包4

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员...

    JAVA上百实例源码以及开源项目源代码

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    JAVA上百实例源码以及开源项目

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    Google Android SDK开发范例大全(第3版) 1/5

    分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言,熟悉面向对象技术与Eclipse、...

    Google Android SDK开发范例大全(第3版) 4/5

    分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言,熟悉面向对象技术与Eclipse、...

    Google Android SDK开发范例大全(第3版) 3/5

    分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言,熟悉面向对象技术与Eclipse、...

    Google Android SDK开发范例大全(第3版) 5/5

    分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言,熟悉面向对象技术与Eclipse、...

Global site tag (gtag.js) - Google Analytics