新聞中心
游戲規(guī)則:[請玩家仔細閱讀]

成都創(chuàng)新互聯(lián)公司秉承專業(yè)、誠信、服務、進取的價值觀,堅持以客戶為中心、客戶至上的服務理念,以“關注企業(yè)需求,實現(xiàn)企業(yè)價值”為導向,努力為企業(yè)提供全面優(yōu)質的互聯(lián)網(wǎng)應用服務。服務包括域名與空間、虛擬空間、企業(yè)郵箱、網(wǎng)站建設、網(wǎng)站優(yōu)化、網(wǎng)絡營銷解決方案和咨詢服務,以幫助企業(yè)客戶應用互聯(lián)網(wǎng)。
(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低于0分時,玩家輸;
(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;
(3)游戲過程中,玩家可以刷新?lián)淇伺?但每刷新一次都會扣3分;
(4)玩家將四張撲克牌,用+、-、*、/及適當?shù)睦ㄌ柦M合起來,并把組合的表達式【用英文輸入法】填到輸入框里面【注意每張紙牌只可以使用一次】;
(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數(shù)學規(guī)律,及是否為游戲顯示的四張撲克牌的上的數(shù)字;
(6)如果輸入合法,將系統(tǒng)將計算玩家所輸入的表達式的值,如果正確則得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();//創(chuàng)建窗口框架
- Dimension screen=frame.getToolkit().getScreenSize();//獲取顯示器的分辨率
- Container con=frame.getContentPane();//給窗體框架添加容器
- TextField txtField=new TextField(30);//輸入表達式的區(qū)域
- JPanel Buttompnl=new JPanel(); //按鈕和其他組件的面板
- private int count=43;//初始積分40
- JLabel Title=new JLabel("歡迎使用頭腦風暴之心算24點----劉學煒、范碧天、許培濤、陳燕茜同組合作設計");
- JTextArea Count=new JTextArea();//用于顯示游戲規(guī)則及提示
- 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();//引入隨機函數(shù)類對象
- private float [] myStatus=new float[4];//四張撲克牌上對應的數(shù)字
- private char [] mystatus=new char[4];//四張撲克牌上對應的花色
- private float[] numbers=new float[4];//輸入表達式的四個數(shù)字
- 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("游戲規(guī)則:[請玩家仔細閱讀]" +
- "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低于0分時,玩家輸;" +
- "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
- "\n(3)游戲過程中,玩家可以刷新?lián)淇伺?但每刷新一次都會扣3分;"+
- "\n(4)玩家將四張撲克牌,用+、-、*、/及適當?shù)睦ㄌ柦M合起來,并把組合的表達式【用英文輸入法】填到輸入框里面【注意每張紙牌只可以使用一次】;"+
- "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數(shù)學規(guī)律,及是否為游戲顯示的四張撲克牌的上的數(shù)字;"+
- "\n(6)如果輸入合法,將系統(tǒng)將計算玩家所輸入的表達式的值,如果正確則得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);//添加開始按鈕監(jiān)聽器
- btnOk.setActionCommand("ok");
- btnOk.addActionListener(this); //添加確定按鈕監(jiān)聽器
- pokerPanel.add(poker1);
- pokerPanel.add(poker2);
- pokerPanel.add(poker3);
- pokerPanel.add(poker4);
- pokerPanel.add(Count,BorderLayout.SOUTH);
- }
- //監(jiān)聽器設計
- 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上一道題的系統(tǒng)答案是:"+c.outputs);
- try{for(int i=0;i<4;i++){
- myStatus[i]=(float) ((int)(ran.nextFloat()*14+1));//隨機產(chǎn)生四張牌
- mystatus[i]=(char) ('A'+(int)(ran.nextFloat()*4));//隨機產(chǎn)生花色
- 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))//檢驗所產(chǎn)生的紙牌是否能夠算出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("游戲規(guī)則:[請玩家仔細閱讀]" +
- "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低于0分時,玩家輸;" +
- "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
- "\n(3)游戲過程中,玩家可以刷新?lián)淇伺?但每刷新一次都會扣3分;"+
- "\n(4)玩家將四張撲克牌,用+、-、*、/及適當?shù)睦ㄌ柦M合起來,并把組合的表達式【用英文輸入法】填到輸入框里面【注意每張紙牌只可以使用一次】;"+
- "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數(shù)學規(guī)律,及是否為游戲顯示的四張撲克牌的上的數(shù)字;"+
- "\n(6)如果輸入合法,將系統(tǒng)將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;" +
- "\n(7)若玩家在1分30秒后才算出答案,則得4分,有鬼得8分,錯誤扣2分;"
- );
- count=43;//初始積分40
- new MasgDlg(this,"對不起,挑戰(zhàn)失??!重新游戲請按【確定】,退出游戲請按【退出】");
- }
- 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){//輸入不合法,或者沒有輸入正確的數(shù)字
- txtField.requestFocus();
- new MsgDlg("您輸入的表達式不合法或你使用的數(shù)字不是撲克牌上的數(shù)字,請重新輸入!",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("游戲規(guī)則:[請玩家仔細閱讀]" +
- "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低于0分時,玩家輸;" +
- "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
- "\n(3)游戲過程中,玩家可以刷新?lián)淇伺?但每刷新一次都會扣3分;"+
- "\n(4)玩家將四張撲克牌,用+、-、*、/及適當?shù)睦ㄌ柦M合起來,并把組合的表達式【用英文輸入法】填到輸入框里面【注意每張紙牌只可以使用一次】;"+
- "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數(shù)學規(guī)律,及是否為游戲顯示的四張撲克牌的上的數(shù)字;"+
- "\n(6)如果輸入合法,將系統(tǒng)將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;" +
- "\n(7)若玩家在1分30秒才算出答案,則得4分,有鬼得8分,錯誤扣2分;"
- );
- count=43;
- new MasgDlg(this,"對不起,挑戰(zhàn)失?。≈匦掠螒蛘埌础敬_定】,退出游戲請按【退出】");
- }
- 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上一道題的系統(tǒng)答案是:"+c.outputs);
- }
- else{//遇鬼,正常加分方法
- count+=10;
- Count.setText("\n您目前的積分是:"+count+"\n恭喜你,你的輸入正確!獲得10分獎勵,請做下一道題" +
- "\n上一道題的系統(tǒng)答案是:"+c.outputs);
- }
- }
- else{//普通加分
- if(timeshow.usedTime/60>=2){//超時,普通加分
- count+=4;
- Count.setText("\n您目前的積分是:"+count+"\n恭喜你,你的輸入正確!但超出1分30秒,獲得4分獎勵,請做下一道題"+
- "\n上一道題的系統(tǒng)答案是:"+c.outputs);
- }
- else{//普通加分
- count+=5;
- Count.setText("\n您目前的積分是:"+count+"\n恭喜你,你的輸入正確!獲得5分獎勵,請做下一道題"+
- "\n上一道題的系統(tǒng)答案是:"+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("游戲規(guī)則:[請玩家仔細閱讀]" +
- "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低于0分時,玩家輸;" +
- "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
- "\n(3)游戲過程中,玩家可以刷新?lián)淇伺?但每刷新一次都會扣3分;"+
- "\n(4)玩家將四張撲克牌,用+、-、*、/及適當?shù)睦ㄌ柦M合起來,并把組合的表達式【用英文輸入法】填到輸入框里面【注意每張紙牌只可以使用一次】;"+
- "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數(shù)學規(guī)律,及是否為游戲顯示的四張撲克牌的上的數(shù)字;"+
- "\n(6)如果輸入合法,將系統(tǒng)將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;" +
- "\n(7)若玩家在1分30秒后才算出答案,則得4分,有鬼得8分,錯誤扣2分;"
- );
- count=43;
- new MasgDlg(this,"恭喜您,挑戰(zhàn)成功!重新游戲請按【確定】,退出游戲請按【退出】");
- }
- 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;//記錄左括號個數(shù)
- int RBracketNum=0;//記錄右括號個數(shù)
- int LBracketPla =
網(wǎng)頁題目:代碼分享:心算24小游戲
URL標題:http://m.fisionsoft.com.cn/article/dpsseps.html


咨詢
建站咨詢
