十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
游戏规则:[请玩家仔细阅读]

成都创新互联公司秉承专业、诚信、服务、进取的价值观,坚持以客户为中心、客户至上的服务理念,以“关注企业需求,实现企业价值”为导向,努力为企业提供全面优质的互联网应用服务。服务包括域名与空间、虚拟空间、企业邮箱、网站建设、网站优化、网络营销解决方案和咨询服务,以帮助企业客户应用互联网。
(1)点击开始游戏进行游戏,玩家初始积分是40分,当玩家积分超过100分时,玩家赢,低于0分时,玩家输;
(2)游戏开始时,会自动随机生成一定可以通过四则运算得到24的四张扑克牌【J、Q、K、大小鬼记作10】;
(3)游戏过程中,玩家可以刷新扑克牌,但每刷新一次都会扣3分;
(4)玩家将四张扑克牌,用+、-、*、/及适当的括号组合起来,并把组合的表达式【用英文输入法】填到输入框里面【注意每张纸牌只可以使用一次】;
(5)单击确定按钮,游戏将会判断你输入的表达式是否符合数学规律,及是否为游戏显示的四张扑克牌的上的数字;
(6)如果输入合法,将系统将计算玩家所输入的表达式的值,如果正确则得5分,有鬼且正确加10分,错误扣2分;
(7)若玩家在1分30秒后才算出答案,则得4分,有鬼得8分,错误扣2分;
Java代码片段:
- import java.awt.BorderLayout;
 - import java.awt.Color;
 - import java.awt.Container;
 - import java.awt.Dimension;
 - import java.awt.FlowLayout;
 - import java.awt.Font;
 - import java.awt.Label;
 - import java.awt.TextField;
 - import java.awt.event.ActionEvent;
 - import java.awt.event.ActionListener;
 - import java.awt.event.WindowAdapter;
 - import java.awt.event.WindowEvent;
 - import java.net.URL;
 - import java.util.Random;
 - import javax.swing.ImageIcon;
 - import javax.swing.JButton;
 - import javax.swing.JFrame;
 - import javax.swing.JLabel;
 - import javax.swing.JPanel;
 - import javax.swing.JTextArea;
 - public class Calculate24 implements ActionListener{
 - JFrame frame=new JFrame();//创建窗口框架
 - Dimension screen=frame.getToolkit().getScreenSize();//获取显示器的分辨率
 - Container con=frame.getContentPane();//给窗体框架添加容器
 - TextField txtField=new TextField(30);//输入表达式的区域
 - JPanel Buttompnl=new JPanel(); //按钮和其他组件的面板
 - private int count=43;//初始积分40
 - JLabel Title=new JLabel("欢迎使用头脑风暴之心算24点----刘学炜、范碧天、许培涛、陈燕茜同组合作设计");
 - JTextArea Count=new JTextArea();//用于显示游戏规则及提示
 - MyTimer timeshow=new MyTimer();//显示时间
 - JPanel pokerPanel=new JPanel();//显示扑克牌的面板
 - JButton btnStart=new JButton("开始游戏/洗牌");//开始游戏和刷牌的按钮
 - JButton btnOk=new JButton("确定");//确定按钮
 - Label label=new Label("请输入表达式:");//显示输入表达式
 - JLabel poker1=new JLabel();//显示四张扑克牌
 - JLabel poker2=new JLabel();
 - JLabel poker3=new JLabel();
 - JLabel poker4=new JLabel();
 - private Check c=new Check();//引入check类的对象
 - Random ran=new Random();//引入随机函数类对象
 - private float [] myStatus=new float[4];//四张扑克牌上对应的数字
 - private char [] mystatus=new char[4];//四张扑克牌上对应的花色
 - private float[] numbers=new float[4];//输入表达式的四个数字
 - private float[] different=new float[4];//调整积分的差别
 - private boolean addscore=false;//判断是否加双倍积分
 - Calculate24(){
 - frame.setTitle("头脑风暴之心算24点");
 - Count.setEditable(false);
 - Count.setLineWrap(true);
 - Count.setWrapStyleWord(true);
 - Count.setSize(600, 85);
 - Count.setBackground(new Color(18,132,57));
 - Count.setText("游戏规则:[请玩家仔细阅读]" +
 - "\n(1)点击开始游戏进行游戏,玩家初始积分是40分,当玩家积分超过100分时,玩家赢,低于0分时,玩家输;" +
 - "\n(2)游戏开始时,会自动随机生成一定可以通过四则运算得到24的四张扑克牌【J、Q、K、大小鬼记作10】;" +
 - "\n(3)游戏过程中,玩家可以刷新扑克牌,但每刷新一次都会扣3分;"+
 - "\n(4)玩家将四张扑克牌,用+、-、*、/及适当的括号组合起来,并把组合的表达式【用英文输入法】填到输入框里面【注意每张纸牌只可以使用一次】;"+
 - "\n(5)单击确定按钮,游戏将会判断你输入的表达式是否符合数学规律,及是否为游戏显示的四张扑克牌的上的数字;"+
 - "\n(6)如果输入合法,将系统将计算玩家所输入的表达式的值,如果正确则得5分,有鬼且正确加10分,错误扣2分;" +
 - "\n(7)若玩家在1分30秒后才算出答案,则得4分,有鬼得8分,错误扣2分;"
 - );
 - //界面组件的相关设计
 - con.add(Title,BorderLayout.NORTH);
 - con.add(Buttompnl,BorderLayout.SOUTH);
 - con.add(pokerPanel,BorderLayout.CENTER);
 - Buttompnl.add(btnStart);
 - Buttompnl.add(label);
 - Buttompnl.add(txtField);
 - btnStart.setActionCommand("start");
 - btnStart.addActionListener(this);//添加开始按钮监听器
 - btnOk.setActionCommand("ok");
 - btnOk.addActionListener(this); //添加确定按钮监听器
 - pokerPanel.add(poker1);
 - pokerPanel.add(poker2);
 - pokerPanel.add(poker3);
 - pokerPanel.add(poker4);
 - pokerPanel.add(Count,BorderLayout.SOUTH);
 - }
 - //监听器设计
 - public void actionPerformed(ActionEvent e) {
 - //按下开始按钮
 - Count.setFont(new Font("Dialog",Font.PLAIN,20));
 - if(e.getActionCommand().equals("start")){
 - timeshow.usedTime=0;//时间归零
 - timeshow.timer.start(); //开始计时
 - Buttompnl.add(btnOk);
 - Buttompnl.add(timeshow.usedTimeLabel);
 - timeshow.timeText.setText("0分0秒");
 - Buttompnl.add(timeshow.timeText);
 - count-=3;//刷牌扣3分
 - Count.setText("\n\n您目前的积分是:"+count+
 - "\n上一道题的系统答案是:"+c.outputs);
 - try{for(int i=0;i<4;i++){
 - myStatus[i]=(float) ((int)(ran.nextFloat()*14+1));//随机产生四张牌
 - mystatus[i]=(char) ('A'+(int)(ran.nextFloat()*4));//随机产生花色
 - if(myStatus[i]>10f){//对J、Q、K、鬼作10处理
 - different[i]=myStatus[i]-10f;
 - myStatus[i]-=different[i];
 - }
 - else
 - different[i]=0f;
 - if(i==3&&!c.check(myStatus))//检验所产生的纸牌是否能够算出24
 - i=2;
 - }
 - if(count<0){//查看刷牌后剩余的积分是否小于0
 - timeshow.timer.stop();//停止计时
 - timeshow.usedTime=0;//重新时间归零
 - for(int i=0;i<4;i++){//返回初始界面
 - myStatus[i]=0f;
 - mystatus[i]='A';
 - }
 - NewPanel(myStatus,mystatus);
 - Buttompnl.remove(btnOk);
 - txtField.setText("");
 - Count.setFont(new Font("Dialog",Font.PLAIN,12));
 - Count.setText("游戏规则:[请玩家仔细阅读]" +
 - "\n(1)点击开始游戏进行游戏,玩家初始积分是40分,当玩家积分超过100分时,玩家赢,低于0分时,玩家输;" +
 - "\n(2)游戏开始时,会自动随机生成一定可以通过四则运算得到24的四张扑克牌【J、Q、K、大小鬼记作10】;" +
 - "\n(3)游戏过程中,玩家可以刷新扑克牌,但每刷新一次都会扣3分;"+
 - "\n(4)玩家将四张扑克牌,用+、-、*、/及适当的括号组合起来,并把组合的表达式【用英文输入法】填到输入框里面【注意每张纸牌只可以使用一次】;"+
 - "\n(5)单击确定按钮,游戏将会判断你输入的表达式是否符合数学规律,及是否为游戏显示的四张扑克牌的上的数字;"+
 - "\n(6)如果输入合法,将系统将计算玩家所输入的表达式的值,如果正确则得5分,有鬼且正确加10分,错误扣2分;" +
 - "\n(7)若玩家在1分30秒后才算出答案,则得4分,有鬼得8分,错误扣2分;"
 - );
 - count=43;//初始积分40
 - new MasgDlg(this,"对不起,挑战失败!重新游戏请按【确定】,退出游戏请按【退出】");
 - }
 - else{
 - for(int i=0;i<4;i++)
 - myStatus[i]+=different[i];
 - NewPanel(myStatus,mystatus);//显示生成的四张扑克牌
 - for(int i=0;i<4;i++){
 - myStatus[i]-=different[i];
 - if(different[i]==4)//双倍加分条件,遇鬼
 - addscore=true;
 - }
 - }
 - }catch(Exception e1){
 - }
 - }
 - //按下确定按钮
 - else if (e.getActionCommand().equals("ok")){
 - try{float result=calculateString(txtField.getText().trim());
 - if(result==-1f){//输入不合法,或者没有输入正确的数字
 - txtField.requestFocus();
 - new MsgDlg("您输入的表达式不合法或你使用的数字不是扑克牌上的数字,请重新输入!",this);
 - }else if(result!=24f){//输入合法,但计算结果不是24
 - timeshow.usedTime-=8%60;//减去输入时间
 - count-=2; //错误扣2分
 - if(count<0){ //判断积分是否小于0
 - timeshow.timer.stop();
 - timeshow.usedTime=0;
 - timeshow.timeText.setText("0分0秒");
 - for(int i=0;i<4;i++){//返回初始界面
 - myStatus[i]=0f;
 - mystatus[i]='A';
 - }
 - NewPanel(myStatus,mystatus);
 - Buttompnl.remove(btnOk);
 - txtField.setText("");
 - Count.setFont(new Font("Dialog",Font.PLAIN,12));
 - Count.setText("游戏规则:[请玩家仔细阅读]" +
 - "\n(1)点击开始游戏进行游戏,玩家初始积分是40分,当玩家积分超过100分时,玩家赢,低于0分时,玩家输;" +
 - "\n(2)游戏开始时,会自动随机生成一定可以通过四则运算得到24的四张扑克牌【J、Q、K、大小鬼记作10】;" +
 - "\n(3)游戏过程中,玩家可以刷新扑克牌,但每刷新一次都会扣3分;"+
 - "\n(4)玩家将四张扑克牌,用+、-、*、/及适当的括号组合起来,并把组合的表达式【用英文输入法】填到输入框里面【注意每张纸牌只可以使用一次】;"+
 - "\n(5)单击确定按钮,游戏将会判断你输入的表达式是否符合数学规律,及是否为游戏显示的四张扑克牌的上的数字;"+
 - "\n(6)如果输入合法,将系统将计算玩家所输入的表达式的值,如果正确则得5分,有鬼且正确加10分,错误扣2分;" +
 - "\n(7)若玩家在1分30秒才算出答案,则得4分,有鬼得8分,错误扣2分;"
 - );
 - count=43;
 - new MasgDlg(this,"对不起,挑战失败!重新游戏请按【确定】,退出游戏请按【退出】");
 - }
 - else//输出用户所输入的表达式的值
 - {
 - Count.setText("\n您目前的积分是:"+count+"\n对不起,您输入的表达式的值是"+result+",扣除2分,请重新输入!");
 - }
 - }else if(result==24f){//输入正确,得到24
 - timeshow.usedTime-=8%60;//减去输入时间
 - if(addscore){//遇鬼,双倍积分
 - addscore=false;
 - if(timeshow.usedTime>90){//遇鬼,超时加分方法
 - count+=8;
 - Count.setText("\n您目前的积分是:"+count+"\n恭喜你,你的输入正确!但超出1分30秒,获得8分奖励,请做下一道题"+
 - "\n上一道题的系统答案是:"+c.outputs);
 - }
 - else{//遇鬼,正常加分方法
 - count+=10;
 - Count.setText("\n您目前的积分是:"+count+"\n恭喜你,你的输入正确!获得10分奖励,请做下一道题" +
 - "\n上一道题的系统答案是:"+c.outputs);
 - }
 - }
 - else{//普通加分
 - if(timeshow.usedTime/60>=2){//超时,普通加分
 - count+=4;
 - Count.setText("\n您目前的积分是:"+count+"\n恭喜你,你的输入正确!但超出1分30秒,获得4分奖励,请做下一道题"+
 - "\n上一道题的系统答案是:"+c.outputs);
 - }
 - else{//普通加分
 - count+=5;
 - Count.setText("\n您目前的积分是:"+count+"\n恭喜你,你的输入正确!获得5分奖励,请做下一道题"+
 - "\n上一道题的系统答案是:"+c.outputs);
 - }
 - }
 - timeshow.usedTime = 0;
 - txtField.setText("");
 - txtField.requestFocus();
 - if(count>=100){
 - timeshow.timer.stop();
 - timeshow.usedTime=0;
 - timeshow.timeText.setText("0分0秒");
 - for(int i=0;i<4;i++){
 - myStatus[i]=0f;
 - mystatus[i]='A';
 - }
 - NewPanel(myStatus,mystatus);
 - Buttompnl.remove(btnOk);
 - txtField.setText("");
 - Count.setFont(new Font("Dialog",Font.PLAIN,12));
 - Count.setText("游戏规则:[请玩家仔细阅读]" +
 - "\n(1)点击开始游戏进行游戏,玩家初始积分是40分,当玩家积分超过100分时,玩家赢,低于0分时,玩家输;" +
 - "\n(2)游戏开始时,会自动随机生成一定可以通过四则运算得到24的四张扑克牌【J、Q、K、大小鬼记作10】;" +
 - "\n(3)游戏过程中,玩家可以刷新扑克牌,但每刷新一次都会扣3分;"+
 - "\n(4)玩家将四张扑克牌,用+、-、*、/及适当的括号组合起来,并把组合的表达式【用英文输入法】填到输入框里面【注意每张纸牌只可以使用一次】;"+
 - "\n(5)单击确定按钮,游戏将会判断你输入的表达式是否符合数学规律,及是否为游戏显示的四张扑克牌的上的数字;"+
 - "\n(6)如果输入合法,将系统将计算玩家所输入的表达式的值,如果正确则得5分,有鬼且正确加10分,错误扣2分;" +
 - "\n(7)若玩家在1分30秒后才算出答案,则得4分,有鬼得8分,错误扣2分;"
 - );
 - count=43;
 - new MasgDlg(this,"恭喜您,挑战成功!重新游戏请按【确定】,退出游戏请按【退出】");
 - }
 - else{
 - for(int i=0;i<4;i++){
 - myStatus[i]=(float) ((int)(ran.nextFloat()*14+1));
 - mystatus[i]=(char) ('A'+(int)(ran.nextFloat()*4));
 - if(myStatus[i]>10f){
 - different[i]=myStatus[i]-10f;
 - myStatus[i]-=different[i];
 - }
 - else
 - different[i]=0f;
 - if(i==3&&!c.check(myStatus))
 - i=2;
 - }
 - for(int i=0;i<4;i++)
 - myStatus[i]+=different[i];
 - NewPanel(myStatus,mystatus);
 - for(int i=0;i<4;i++){
 - myStatus[i]-=different[i];
 - if(different[i]==4)
 - addscore=true;
 - }
 - }
 - }
 - }catch(Exception e1){
 - e1.printStackTrace();
 - }
 - }
 - }
 - private float calculateString(String str) {
 - // 判断玩家输入的表达式的合法性
 - int LBracketNum=0;//记录左括号个数
 - int RBracketNum=0;//记录右括号个数
 - int LBracketPla =
 当前标题:代码分享:心算24小游戏 
网页链接:http://zsjierui.cn/article/dpsseps.html