游戏规则:[请玩家仔细阅读]
成都创新互联公司秉承专业、诚信、服务、进取的价值观,坚持以客户为中心、客户至上的服务理念,以“关注企业需求,实现企业价值”为导向,努力为企业提供全面优质的互联网应用服务。服务包括域名与空间、虚拟空间、企业邮箱、网站建设、网站优化、网络营销解决方案和咨询服务,以帮助企业客户应用互联网。
(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://www.gawzjz.com/qtweb2/news44/9394.html网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联