`
gonglil
  • 浏览: 32088 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java写的打字游戏

    博客分类:
  • java
阅读更多
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//public class Test1 {
// public static void main(String[] args) {
//  Dazi dazi = new Dazi();
//  dazi.setFrame();
// }
//}
public class Dazi implements KeyListener,Runnable{
JFrame jf;// 主框架;
JMenuBar mainBar;
Thread t = null;
JPanel jp1;// 三位数字
JPanel jp5;// 级数线宽面板
JPanel jp6; // 得分的线宽面板
JLabel jtf;// 显示得分信息
JMenu fileMenu;
JMenu helpMenu;
JLabel jl1 = new JLabel();
JLabel jl2 = new JLabel();
JLabel jl3 = new JLabel();
JLabel jl4 = new JLabel();
int x[]={160,220,280,340};
int y[]={20,20,20,20};
String[][] str4 = new String[4][2];

String tempStr= "";

int flagCount = 0;

int score = 0;

int jibie = 10;

boolean startFlag = false;
public String getstring() {
  int x = (int) (10 * Math.random());
  int y = (int) (10 * Math.random());
  int z = (int) (10 * Math.random());
  String str = "" + x + y + z;
  return str;
}
public void setFrame() {
  jf = new JFrame("dz");
  jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  jf.setBounds(100, 100, 500, 500);
  jf.setLayout(null);
  set4Str();
  jf.addKeyListener(this);
  jf.setVisible(true);
//  jp1 = new JPanel();
//  jl2 = new JLabel();
//  jl3 = new JLabel();
//  jl4 = new JLabel();
  showMenu(); // 设置菜单
  showTool(); // 设置工具条
  showScore();
  jf.setResizable(false);
  //xunhuan();
//  jp1.setBounds(120, 0, 370, 450);
 
}

private void set4Str() {
  String str = getstring();
  str4[0][0] = str;
  str4[0][1] = "" + 0;
  jl1.setText(str);
    str = getstring();
  str4[1][0] = str;
  str4[1][1] = "" + 0;
  jl2.setText(str);
    str = getstring();
  str4[2][0] = str;
  str4[2][1] = "" + 0;
  jl3.setText(str);
    str = getstring();
  str4[3][0] = str;
  str4[3][1] = "" + 0;
  jl4.setText(str);
}

public void xunHuan(){
  while(y[0]<=500){
   try {
    Thread.sleep(459);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   for(int i=0;i<4;i++){
    y+=jibie;   
   }
   if(!isLive()) {
    if(getDisapperStr().equals("1")) {
     String str = getstring();
     str4[0][0] = str;
     str4[0][1] = "" + 0;
     jl1.setText(str);
     y[0] = 20;
     jl1.setBounds(new Rectangle(x[0], y[0], 50, 50));
    }else if(getDisapperStr().equals("2")) {
     String str = getstring();
     str4[1][0] = str;
     str4[1][1] = "" + 0;
     jl2.setText(str);
     y[1] = 20;
     jl2.setBounds(new Rectangle(x[1], y[1], 50, 50));
    }else if(getDisapperStr().equals("3")) {
     String str = getstring();
     str4[2][0] = str;
     str4[2][1] = "" + 0;
     jl3.setText(str);
     y[2] = 20;
     jl3.setBounds(new Rectangle(x[2], y[2], 50, 50));
    }else{
     String str = getstring();
     str4[3][0] = str;
     str4[3][1] = "" + 0;
     jl4.setText(str);
     y[3] = 20;
     jl4.setBounds(new Rectangle(x[3], y[3], 50, 50));
    }
    //加分
    score += 10;
    String scoreStr = "得分:" + score;
    jtf.setText(scoreStr);
   
   }else {
    if(isOver()) {
     for(int i=0; i<y.length; i++) {
      y = 20;
     }
     set4Str();
     JOptionPane.showMessageDialog(jf, "游戏结束!", "提示",
       JOptionPane.INFORMATION_MESSAGE);
     return;
    }
    jl1.setBounds(new Rectangle(x[0], y[0], 50, 50));
    jl2.setBounds(new Rectangle(x[1], y[1], 50, 50));
    jl3.setBounds(new Rectangle(x[2], y[2], 50, 50));
    jl4.setBounds(new Rectangle(x[3], y[3], 50, 50));
   }
   jf.add(jl1);
   jf.add(jl2);
   jf.add(jl3);
   jf.add(jl4);
  }
}

/**
  * 判断四个串是否存在
  * @return 若存在 返回true 否则false
  */
private boolean isLive() {
  boolean flag = true;
  for(int i=0; i<str4.length; i++) {
   if(!str4[1].equals("0")) {
    flag = false;
   }
  }
  return flag;
}

private String getDisapperStr() {
  String str = "";
  for(int i=0; i<str4.length; i++) {
   if(!str4[1].equals("0")) {
    str = str4[1];
    break;
   }
  }
  return str;
}


private boolean isOver() {
  boolean overFalg = false;
  for(int i=0; i<y.length; i++) {
   if(y >= 430) {
    overFalg = true;
   }
  }
  return overFalg;
}

public void showMenu() {
  mainBar = new JMenuBar();
  fileMenu = new JMenu("游戏"); // 设置菜单栏选项
  helpMenu = new JMenu("帮助");// 设置菜单栏选项
  // jf.setJMenuBar(mainBar);//将菜单栏添加到主框架里面
  JMenuItem startItem = new JMenuItem("开始游戏(O)", 'O'); // 设置游戏里面的开始选项
  JMenuItem exitItem = new JMenuItem("结束游戏(X)", 'X');// 设置游戏里面的结束选项
  startItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
    InputEvent.CTRL_MASK));// 设置开始选项的快捷键
  startItem.addActionListener(
    new ActionListener() {
     public void actionPerformed(ActionEvent e) {
      startFlag = true;
      //System.out.println("begin");
     }
    }
  );
  exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
    InputEvent.CTRL_MASK));// 设置退出选项的快捷键
  exitItem.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(jf, "你应经结束游戏了", "提示",
      JOptionPane.INFORMATION_MESSAGE);
    System.exit(0);
   }
  });
  JMenuItem aboutItem = new JMenuItem("关于(A)", 'A');// 设置帮助里的关于选项
  aboutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
    InputEvent.CTRL_MASK));// 设置关于选项的快捷键
  aboutItem.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(jf, "这是一个简单的打字游戏", "提示",
      JOptionPane.INFORMATION_MESSAGE);
   }
  });
  mainBar.add(fileMenu);// 将游戏菜单添加到主菜单中
  mainBar.add(helpMenu);// 将帮助菜单添加到主菜单中
  fileMenu.add(startItem);// 将开始菜单添加到游戏菜单中
  fileMenu.add(exitItem);// 将退出菜单添加到游戏菜单中
  helpMenu.add(aboutItem);// 将关于菜单添加到帮助菜单中
  jf.setJMenuBar(mainBar);
}
public void showTool() {
  Container contentPane = jf.getContentPane();
  JToolBar jtb = new JToolBar(); // 设置工具条
  jtb.setSize(125, 350);
  contentPane.add(jtb, BorderLayout.WEST);
  mainBar = new JMenuBar();// 定义主菜单
  JRadioButton[] buttons = new JRadioButton[10];
  jp5 = new JPanel();
  jp5.setSize(100, 300);
  jp5.setBorder(BorderFactory.createTitledBorder("选择级数"));
  jp5.setLayout(new GridLayout(9, 1));
  ButtonGroup bg = new ButtonGroup();
  JRadioButton b1 = new JRadioButton("1", true);
  b1.addItemListener(
    new ItemListener() {
     public void itemStateChanged(ItemEvent e) {
      if(e.getStateChange() == e.SELECTED) {
       setJibie(1);
      }
     }
    }
  );
  bg.add(b1);
  jp5.add(b1);
  JRadioButton b2 = new JRadioButton("2");
  b2.addItemListener(
    new ItemListener() {
     public void itemStateChanged(ItemEvent e) {
      if(e.getStateChange() == e.SELECTED) {
       setJibie(2);
      }
     }
    }
  );
  bg.add(b2);
  jp5.add(b2);
  JRadioButton b3 = new JRadioButton("3");
  b3.addItemListener(
    new ItemListener() {
     public void itemStateChanged(ItemEvent e) {
      if(e.getStateChange() == e.SELECTED) {
       setJibie(3);
      }
     }
    }
  );
  bg.add(b3);
  jp5.add(b3);
  JRadioButton b4 = new JRadioButton("4");
  b4.addItemListener(
    new ItemListener() {
     public void itemStateChanged(ItemEvent e) {
      if(e.getStateChange() == e.SELECTED) {
       setJibie(4);
      }
     }
    }
  );
  bg.add(b4);
  jp5.add(b4);
  JRadioButton b5 = new JRadioButton("5");
  b5.addItemListener(
    new ItemListener() {
     public void itemStateChanged(ItemEvent e) {
      if(e.getStateChange() == e.SELECTED) {
       setJibie(5);
      }
     }
    }
  );
  bg.add(b5);
  jp5.add(b5);
//  for (int i = 2; i < buttons.length; i++) {
//   buttons = new JRadioButton("" + i);
//   bg.add(buttons);
//   jp5.add(buttons);
//   buttons.addItemListener(new ItemListener() {
//
//    public void itemStateChanged(ItemEvent e) {
//     if(e.getStateChange() == e.SELECTED) {
//     }
//    }
//   });
//  }
  jtb.add(jp5);
}
public void showScore() {
  jp6 = new JPanel();
  jp6.setBounds(30, 350, 100, 30);
  jtf = new JLabel("得分:00");
  jp6.add(jtf);
  jf.add(jp6);
  jf.setVisible(true);
}
public void keyPressed(KeyEvent e) { 
   tempStr +=e.getKeyChar();
   flagCount ++;
  if(flagCount == 3) {
   for(int i=0; i<str4.length; i++) {
    if(tempStr.equals(str4[0])) {
     str4[1] = "" + (i+1);
     break;
    }
   }
   flagCount = 0;
   tempStr = "";
  }
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}

public static void main(String[] args) {
Dazi dazi = new Dazi();
dazi.setFrame();
new Thread(dazi).start();
}
public void setJibie(int jibie) {
  this.jibie = jibie * 10;
}
public void run() { 
  while (true) {
   try {
    if(startFlag) {
     xunHuan();
     startFlag = false;
    }
    Thread.sleep(500);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 
}
}







分享到:
评论

相关推荐

    java写的打字游戏.zip

    java写的打字游戏java写的打字游戏java写的打字游戏 java写的打字游戏java写的打字游戏java写的打字游戏 java写的打字游戏java写的打字游戏java写的打字游戏 java写的打字游戏java写的打字游戏java写的打字游戏 java...

    Java编程基础课设 Java打字游戏.zip

    Java编程基础课设 Java打字游戏.zipJava编程基础课设 Java打字游戏.zip 、Java编程基础课设 Java打字游戏.zipJava编程基础课设 Java打字游戏.zip Java编程基础课设 Java打字游戏.zipJava编程基础课设 Java打字游戏....

    Java打字小游戏

    在这个打字游戏中,Java的事件处理机制、图形用户界面(GUI)设计以及多线程技术被用于构建游戏的各种功能,如用户交互、游戏逻辑以及网络通信。 其次,JMF(Java Media Framework)是Java平台上的多媒体处理框架,...

    Java简单英文打字游戏

    通过分析和实践这个简单的Java打字游戏源码,初学者能够对Java语言的基本结构有更深入的理解,并且能够逐步掌握面向对象编程的概念。此外,还能锻炼解决问题的能力,因为实际编程往往涉及到调试和优化代码,这对于...

    java打字游戏源代码

    根据提供的文件信息,我们可以分析并总结...综上所述,这个 Java 打字游戏源代码展示了 Java Swing、多线程、AWT Graphics API、随机数生成以及事件处理机制等多个方面的应用,非常适合用于教学和学习 Java 编程基础。

    java打字小游戏

    【Java打字小游戏】是一款基于Java编程语言开发的简单打字练习应用,旨在帮助用户提高打字速度和准确性。此项目对于初学者来说是一个很好的实践案例,它展示了如何利用Java进行基本的游戏开发,同时也可以作为熟悉...

    java 打字游戏.rar

    Java打字游戏是一款基于Java编程语言开发的简单游戏,它旨在帮助用户提高打字速度和准确性。游戏的核心机制是展示单词或句子,并要求玩家在限定时间内正确输入。在这个项目中,我们可以看到Java语言的一些关键应用,...

    JAVA编写的打字游戏

    总的来说,这个Java打字游戏是一个很好的学习示例,它涵盖了GUI编程、事件处理、数据结构、多线程、文件操作等多个Java核心概念。通过阅读和分析源码,开发者不仅可以提升Java编程技能,还能了解游戏开发的基本流程...

    用java实现打字游戏

    用java实现一个简单的打字游戏,自己编写的

    java打字游戏源码+可执行程序

    Java打字游戏是一款基于Java编程语言开发的教育娱乐软件,主要目的是提高用户的打字速度和准确性。通过模拟真实的打字环境,用户可以在游戏中学习和练习打字技巧,使其成为一种寓教于乐的方式。本资源包含游戏的可...

    java打字游戏(附有源代码)

    【Java打字游戏详解】 Java打字游戏是一种利用编程技术实现的互动娱乐程序,它能够帮助用户提高打字速度和准确性。在这个项目中,我们主要关注的是如何使用Java语言来设计这样一个游戏。以下是对这个打字游戏的关键...

    Java打字软件游戏

    Java打字软件游戏是一款利用Java编程语言开发的教育软件,主要目标是帮助用户提升打字速度和准确性。在这款软件中,用户不仅可以进行基础的打字训练,还可以通过各种打字游戏来增加学习的趣味性,使打字变得更加轻松...

    Java打字游戏源代码

    【Java打字游戏源代码】是一个适合初学者和进阶者深入理解Java编程语言,特别是多线程概念的实例项目。这个项目的核心是利用Java语言编写一个打字游戏,通过与用户交互,提高用户的打字速度和准确性。下面将详细阐述...

    打字小游戏 java swing

    2. **组件使用**:在打字游戏中,可能使用了`JFrame`作为主窗口,`JLabel`展示待打字的文本,`JTextArea`或`JTextField`作为输入区,`JProgressBar`显示打字进度,`JButton`控制游戏的开始和暂停,以及可能的`...

    java 多线程 打字游戏

    【Java多线程打字游戏】是一个非常适合Java初学者学习的项目,它涵盖了Java编程语言中的几个关键概念,包括多线程、AWT(Abstract Window Toolkit)和Swing图形用户界面库。在这个打字游戏中,玩家需要在限定时间内...

    java写的打字游戏源代码

    游戏开始后,屏幕上方同时有四个数字分四列下落,每个数字由三位组成(随机生成,但首位不可相同)。玩家用键盘依次输入数字,如果输入的数字序列与某一... 作业题目,这个只是粗略写的,分享一下!希望对大家有点帮助

Global site tag (gtag.js) - Google Analytics