博饼小游戏java源代码(精选2篇)
博饼小游戏java源代码 篇1
厦门中秋博饼程序!(JAVA编写)
/*博饼,这是一个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
// 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
rollDice();
displayMessage();repaint();}
public void rollDice(){ // pick random die values for(int i = 1;i
}//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 }
--------
html>
把红色字体的内容复制后,存盘为“Cake.html”,跟Cake.java存放在同一个目录下,然后双击“Cake.html”文件,也可以看到运行的结果!(前提:.java的文件已经编译通过,生成”Cake.class“文件
--------------------
博饼规则如下:
基本原则:红的点数比黑的好,红4的点数越多越好。点数相同的越多越好,点数越大越好。
具体规矩:
1、一秀(又称秀才):六粒骰子中有一粒为4点。共32个一秀
2、二举(又称举人):六粒骰子中有两粒为4点。共16个二举
3、四进(又称进士):六粒骰子有四粒点数相同(除点数为4外,四个骰子点数为4是状元)即为四进;共8个四进
4、三红(又称探花):六粒骰子中有三粒的点数为4点;共4个三红
5、对堂(又称榜眼):一般为六粒骰子为123456。共2个对堂。如果对堂一直没人博到,可以约定用112233或334455替代对堂。
6、状元:有四粒骰子为4点即是状元
最大的状元:六粒骰子都是四点,所有的奖品都是他的。也就是通吃啦,博到的人实在旺得不得了。实际操作中大多是把桌子上所有还没博到的奖品以及两个对堂都搬回家。
次大的状元:六粒骰子有四粒为4,两粒为1,即为状元插金花,可以把状元和连两个对堂一起带回家了
其他状元:
六粒骰子都是1点,叫六浦
六粒骰子有五粒为4,叫五红带另外那个点
六粒骰子有五粒相同(除四点外),就叫五子带另外那个点数
六粒骰子有四粒为4,另两粒除四和同时为1外,叫状元带**(**指非4的两粒骰子点数相加的数值)。例如有有四粒为4,另两粒为1和6的话,叫状元带7
备注:以上状元的顺序按从大到小排列。
六粒骰子都是相同,但不是1也不是4,叫黑六浦。这是比较另类的状元。也叫关灯抢。
博到关灯抢代表你的运气实在太差了。出现这种情况要把灯关掉大家抢饼。就是把坏运气散掉的意思
有趣的现象:
博中状元的人或博得奖品比较多的人,就代表当前鸿运当头或者来年福星高照。所以状元经常是乔迁新居,结婚,生子的人,或老板或比较有财运的人,总之就是有喜事的人或有财气的人比较容易拿状元或者拿大奖。大家博完了可以看看是不是这样。
博饼小游戏java源代码 篇2
1.abstract class Name { private String name;public abstract boolean isStupidName(String name){} }大侠们,这有何错误?答案: 错。abstract method必须以分号结尾,且不带花括号。
2.public class Something { void doSomething(){ private String s = “";int l = s.length();} }有错吗? 答案: 错。局部变量前不能放置任何访问修饰符(private,public,和protected)。final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。
3.abstract class Something { private abstract String doSomething();}这好像没什么错吧? 答案: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢?(同理,abstract method前不能加final)。
4.public class Something { public int addOne(final int x){ return ++x;} }这个比较明显。
答案: 错。int x被修饰成final,意味着x不能在addOne method中被修改。
5.public class Something {
public static void main(String[] args){ Other o = new Other();new Something().addOne(o);}
public void addOne(final Other o){ o.i++;} } class Other { public int i;}和上面的很相似,都是关于final的问题,这有错吗? 答案: 正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference,(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。
6.class Something { int i;
public void doSomething(){ System.out.println(”i = “ + i);} } 有什么错呢? 看不出来啊。
答案: 正确。输出的是”i = 0“。int i属於instant variable(实例变量,或叫成员变量)。instant variable有default value。int的default value是0。
7.class Something { final int i;
public void doSomething(){ System.out.println(”i = “ + i);} }和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗? 答案: 错。final int i是个final的instant variable(实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor(构造器)结束之前被赋予一个明确的值。可以修改为”final int i = 0;“。
8.public class Something {
public static void main(String[] args){ Something s = new Something();
System.out.println(”s.doSomething()returns “ + doSomething());}
public String doSomething(){ return ”Do something...“;} } 看上去很完美。
答案: 错。看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。static method不能直接call non-static methods。可改成”System.out.println(“s.doSomething()
returns
”
+ s.doSomething());“。同理,static method不能访问non-static instant variable。
9.此处,Something类的文件名叫 OtherThing.javaclass Something {
private static void main(String[] something_to_do){ System.out.println(”Do something...“);} } 这个好像很明显。
答案: 正确。从来没有人说过Java的Class名字必须和其文件名相同。但public class的名字必须和文件名相同。
10.interface A{
int x = 0;} class B{ int x =1;}
class C extends B implements A { public void pX(){ System.out.println(x);}
public static void main(String[] args){ new C().pX();} } 答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。
11.interface Playable {
void play();} interface Bounceable { void play();}
interface Rollable extends Playable, Bounceable { Ball ball = new Ball(”PingPang“);}
class Ball implements Rollable { private String name;public String getName(){ return name;}
public Ball(String name){ this.name = name;}
public void play(){
ball = new Ball(”Football“);System.out.println(ball.getName());} }这个错误不容易发现。
答案: 错。”interface Rollable extends Playable, Bounceable“没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的”Ball ball = new Ball(“PingPang”);“。任何在interface里声明的interface variable(接口变量,也可称成员变量),默认为public static final。也就是说”Ball ball = new Ball(“PingPang”);“实际上是”public static final Ball ball = new Ball(“PingPang”);“。在Ball类的Play()方法中,”ball = new Ball(“Football”);“改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在”ball = new Ball(“Football”);“这里显示有错。
JAVA编程题 1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset import java.util.*;public class bycomma{
public static String[] splitStringByComma(String source){ if(source==null||source.trim().equals(”“))
return null;
StringTokenizer commaToker=new tringTokenizer(source,”,“);String[] result = new String[commaToker.countTokens()];int i=0;
while(commaToker.hasMoreTokens()){ result[i] = commaToker.nextToken();i++;} return result;} public static void main(String args[]){
String[] s = splitStringByComma(”5,8,7,4,3,9,1“);int[] ii = new int[s.length];for(int i = 0;i
for(int i=(s.length-1);i>=0;i--){ System.out.println(ii[i]);} } }
2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。package test.format;import java.text.NumberFormat;import java.util.HashMap;public class SimpleMoneyFormat { public static final String EMPTY = ”“;public static final String ZERO = ”零“;public static final String ONE = ”壹“;public static final String TWO = ”贰“;public static final String THREE = ”叁“;public static final String FOUR = ”肆“;public static final String FIVE = ”伍“;public static final String SIX = ”陆“;public static final String SEVEN = ”柒“;public static final String EIGHT = ”捌“;public static final String NINE = ”玖“;public static final String TEN = ”拾“;public static final String HUNDRED = ”佰“;public static final String THOUSAND = ”仟“;public static final String TEN_THOUSAND = ”万“;public static final String HUNDRED_MILLION = ”亿“;public static final String YUAN = ”元“;public static final String JIAO = ”角“;public static final String FEN = ”分“;public static final String DOT = ”.“;
private static SimpleMoneyFormat formatter = null;private HashMap chineseNumberMap = new HashMap();private HashMap chineseMoneyPattern = new HashMap();private
NumberFormat
numberFormat NumberFormat.getInstance();private SimpleMoneyFormat(){
numberFormat.setMaximumFractionDigits(4);numberFormat.setMinimumFractionDigits(2);
= numberFormat.setGroupingUsed(false);chineseNumberMap.put(”0“, ZERO);chineseNumberMap.put(”1“,ONE);chineseNumberMap.put(”2“, TWO);chineseNumberMap.put(”3“, THREE);chineseNumberMap.put(”4“, FOUR);chineseNumberMap.put(”5“, FIVE);chineseNumberMap.put(”6“, SIX);chineseNumberMap.put(”7“, SEVEN);chineseNumberMap.put(”8“, EIGHT);chineseNumberMap.put(”9“, NINE);chineseNumberMap.put(DOT, DOT);chineseMoneyPattern.put(”1“, TEN);chineseMoneyPattern.put(”2“, HUNDRED);chineseMoneyPattern.put(”3“, THOUSAND);chineseMoneyPattern.put(”4“, TEN_THOUSAND);chineseMoneyPattern.put(”5“, TEN);chineseMoneyPattern.put(”6“, HUNDRED);chineseMoneyPattern.put(”7“, THOUSAND);chineseMoneyPattern.put(”8“, HUNDRED_MILLION);} public static SimpleMoneyFormat getInstance(){ if(formatter == null)
formatter = new SimpleMoneyFormat();return formatter;} public String format(String moneyStr){
checkPrecision(moneyStr);String result;
result = convertToChineseNumber(moneyStr);result = addUnitsToChineseMoneyString(result);
return result;}
public String format(double moneyDouble){
return format(numberFormat.format(moneyDouble));}
public String format(int moneyInt){
return format(numberFormat.format(moneyInt));}
public String format(long moneyLong){
return format(numberFormat.format(moneyLong));} public String format(Number moneyNum){
return format(numberFormat.format(moneyNum));
private String convertToChineseNumber(String moneyStr){ String result;
StringBuffer cMoneyStringBuffer = new StringBuffer();for(int i = 0;i < moneyStr.length();i++){
cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1)));
//拾佰仟万亿等都是汉字里面才有的单位,加上它们
int indexOfDot = cMoneyStringBuffer.indexOf(DOT);int moneyPatternCursor = 1;for(int i = indexOfDot1)
cMoneyStringBuffer.delete(cMoneyStringBuffer.length()1, JIAO);
cMoneyStringBuffer.insert(cMoneyStringBuffer.length(), FEN);if(cMoneyStringBuffer.indexOf(”零角零分“)!=-1)//没有零头,加整 cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(”零角零分“), cMoneyStringBuffer.length(), ”整“);
else if(cMoneyStringBuffer.indexOf(”零分“)!=-1)//没有零分,加
整
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(”零分“), cMoneyStringBuffer.length(), ”整“);else { if(cMoneyStringBuffer.indexOf(”零角“)!=-1)
cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf(”零角“),cMoneyStringBuffer.indexOf(”零角“)+2);
tmpBuffer.append(”整“);
} result = cMoneyStringBuffer.toString();return result;} private void checkPrecision(String moneyStr){ int
fractionDigits
=
moneyStr.length()
-moneyStr.indexOf(DOT)-1;
if(fractionDigits > 2)throw new RuntimeException(”金额“ + moneyStr + ”的小数位多于两位。“);//精度不能比分低
} public static void main(String args[]){ System.out.println(getInstance().format(new Double(10010001.01)));} }
3、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 答:父类:
package test;
public class FatherClass { public FatherClass(){
System.out.println(”FatherClass Create“);} } 子类: package test;
import test.FatherClass;
public class ChildClass extends FatherClass { public ChildClass(){
System.out.println(”ChildClass Create“);}
public static void main(String[] args){ FatherClass fc = new FatherClass();ChildClass cc = new ChildClass();} }
输出结果: C:>java test.ChildClass FatherClass FatherClass Create
ChildClass Create
4、内部类的实现方式? 答:示例代码如下:
package test;
public class OuterClass { private class InterClass { public InterClass(){
System.out.println(”InterClass Create“);} }
public OuterClass(){
InterClass ic = new InterClass();System.out.println(”OuterClass Create“);}
public static void main(String[] args){ OuterClass oc = new OuterClass();}
Create }
输出结果: C:>java test/OuterClass InterClass Create
OuterClass Create 再一个例题:
public class OuterClass { private double d1 = 1.0;//insert code here }
You need to insert an inner class declaration at line 3.Which two inner class declarations are valid?(Choose two.)
A.class InnerOne{ public static double methoda(){return d1;} } B.public class InnerOne{ static double methoda(){return d1;} } C.private class InnerOne{ double methoda(){return d1;} } D.static class InnerOne{ protected double methoda(){return d1;} } E.abstract class InnerOne{ public abstract double methoda();} 说明如下: 一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。故 A、B 错 二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。故 D 错 三.非静态内部类的非静态成员可以访问外部类的非静态变量。故 C 正确 四.答案为C、E
5、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
答:Server端程序: package test;import java.net.*;import java.io.*;public class Server { private ServerSocket ss;private Socket socket;private BufferedReader in;private PrintWriter out;public Server(){ try {
ss=new ServerSocket(10000);while(true){
socket = ss.accept();String
RemoteIP
= socket.getInetAddress().getHostAddress();String RemotePort = ”:“+socket.getLocalPort();System.out.println(”A in!IP:“+RemoteIP+RemotePort);in
=
new
BufferedReader(new client
come InputStreamReader(socket.getInputStream()));String line = in.readLine();
System.out.println(”Cleint send is :“ + line);out
=
new PrintWriter(socket.getOutputStream(),true);out.println(”Your Message Received!“);out.close();in.close();socket.close();}
}catch(IOException e){ out.println(”wrong“);} }
public static void main(String[] args){ new Server();} }
Client端程序: package test;import java.io.*;import java.net.*;public class Client { Socket socket;BufferedReader in;PrintWriter out;public Client(){ try {
System.out.println(”Try to Connect to 127.0.0.1:10000“);socket = new Socket(”127.0.0.1“,10000);System.out.println(”The Server Connected!“);System.out.println(”Please enter some Character:");BufferedReader
line
=
new
BufferedReader(new InputStreamReader(System.in));
out = new PrintWriter(socket.getOutputStream(),true);Out
3、接口和内部类、抽象类的特征答:接口:在一个类里,只有申明没有实现。内部类:是在一个类的内部定义的一个类;抽象类:是以abstract 定义的,里面至少有一个抽象方法。
4、文件读写的基本类
答:File Reader 类和FileWriter类分别继承自Reader类和Writer类。FileReader类用于读取文件,File Writer类用于将数据写入文件,这两各类在使用前,都必须要调用其构造方法创建相应的对象,然后调用相应的read()或 write()方法。
6、线程的基本概念、线程的本状态以及状态之间的关系 ?新建(Born): 新建的线程处于新建状态?就绪(Ready): 在创建线程后,它将处于就绪状态,等待 start()方法被调用?运行(Running): 线程在开始执行时进入运行状态?睡眠(Sleeping): 线程的执行可通过使用 sleep()方法来暂时中止。在睡眠后,线程将进入就绪状态?等待(Waiting): 如果调用了 wait()方法,线程将处于等待状态。用于在两个或多个线程并发运行时。?挂起(Suspended): 在临时停止或中断线程的执行时,线程就处于挂起状态。?恢复(Resume): 在挂起的线程被恢复执行时,可以说它已被恢复。?阻塞(Blocked)– 在线程等待一个事件时(例如输入/输出操作),就称其处于阻塞状态。?死亡(Dead)– 在 run()方法已完成执行或其 stop()方法被调用之后,线程就处于死亡状态。
5、串行化的注意事项以及如何实现串行化答:如果有循环引用是不可以串行化的。对象输出流的WriteObject方法和 对象输入流的ReadObect 方法
7、线程的同步、如何实现线程的同步答:当两个或多个线程同时访问同一个变量,并且以个线程需要修改这个变量。就要用到线程同步。在Java 中,同步是通过 synchronized 关键字来定义的。诺是想同步化某程序段,可以使用 synchronized(object){}方法,其中{}内的程序语句被同步化。
9、socket通信(tcp/udp区别及JAVA的实现方式)TCP——传输控制协议,具有极高的可靠性,保证数据包按照顺序准确到达,但其也有着很高的额外负担。UDP——使用者数据元协议,并不能保证数据包会被成功的送达,也不保证数据包到达的顺序,但其传输速度很快。大多数我们会使用TCP,偶尔才会动用UDP,如声音讯号,即使少量遗失,也无
关紧要。
10、JAVA的事件委托机制和垃圾回收机制
java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返回。垃圾回收机制 垃圾收集是将分配给对象但不在使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收
11、JDBC调用数据库的基本步骤导入必要的类,装入JDBC驱动程序,识别数据源,分配一个Connection对象,分配一个Statement对象,使用Statement执行一个查询,从返回的ResultSet对象中检索数据,关闭ResultSet,关闭Statement对象,关闭Connection对象
12、解析XML文件的几种方式和区别答:Dom解析 在内存中创建一个DOM树,能随机访问文件内容,也可以修改原文件内容SAX解析 线性解析,不能随机访问,也无法修改原文件Dom解析要先用SAX解析创建DOM树
13、JAVA的四种基本权限的定义public private protected 默认
【博饼小游戏java源代码】推荐阅读:
文字冒险游戏源代码03-12
vb拼图游戏教程代码10-20
fc游戏金手指代码12-22
java源代码06-29
Java小游戏01-10
java多人射击游戏11-22
源代码专业影评07-13
源代码安全测试论文10-20
图书管理系统源代码08-02
书店管理系统源代码08-11