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写的打字游戏java写的打字游戏java写的打字游戏 java写的打字游戏java写的打字游戏java写的打字游戏 java写的打字游戏java写的打字游戏java写的打字游戏 java写的打字游戏java写的打字游戏java写的打字游戏 java...
Java编程基础课设 Java打字游戏.zipJava编程基础课设 Java打字游戏.zip 、Java编程基础课设 Java打字游戏.zipJava编程基础课设 Java打字游戏.zip Java编程基础课设 Java打字游戏.zipJava编程基础课设 Java打字游戏....
在这个打字游戏中,Java的事件处理机制、图形用户界面(GUI)设计以及多线程技术被用于构建游戏的各种功能,如用户交互、游戏逻辑以及网络通信。 其次,JMF(Java Media Framework)是Java平台上的多媒体处理框架,...
通过分析和实践这个简单的Java打字游戏源码,初学者能够对Java语言的基本结构有更深入的理解,并且能够逐步掌握面向对象编程的概念。此外,还能锻炼解决问题的能力,因为实际编程往往涉及到调试和优化代码,这对于...
根据提供的文件信息,我们可以分析并总结...综上所述,这个 Java 打字游戏源代码展示了 Java Swing、多线程、AWT Graphics API、随机数生成以及事件处理机制等多个方面的应用,非常适合用于教学和学习 Java 编程基础。
【Java打字小游戏】是一款基于Java编程语言开发的简单打字练习应用,旨在帮助用户提高打字速度和准确性。此项目对于初学者来说是一个很好的实践案例,它展示了如何利用Java进行基本的游戏开发,同时也可以作为熟悉...
Java打字游戏是一款基于Java编程语言开发的简单游戏,它旨在帮助用户提高打字速度和准确性。游戏的核心机制是展示单词或句子,并要求玩家在限定时间内正确输入。在这个项目中,我们可以看到Java语言的一些关键应用,...
总的来说,这个Java打字游戏是一个很好的学习示例,它涵盖了GUI编程、事件处理、数据结构、多线程、文件操作等多个Java核心概念。通过阅读和分析源码,开发者不仅可以提升Java编程技能,还能了解游戏开发的基本流程...
用java实现一个简单的打字游戏,自己编写的
Java打字游戏是一款基于Java编程语言开发的教育娱乐软件,主要目的是提高用户的打字速度和准确性。通过模拟真实的打字环境,用户可以在游戏中学习和练习打字技巧,使其成为一种寓教于乐的方式。本资源包含游戏的可...
【Java打字游戏详解】 Java打字游戏是一种利用编程技术实现的互动娱乐程序,它能够帮助用户提高打字速度和准确性。在这个项目中,我们主要关注的是如何使用Java语言来设计这样一个游戏。以下是对这个打字游戏的关键...
Java打字软件游戏是一款利用Java编程语言开发的教育软件,主要目标是帮助用户提升打字速度和准确性。在这款软件中,用户不仅可以进行基础的打字训练,还可以通过各种打字游戏来增加学习的趣味性,使打字变得更加轻松...
【Java打字游戏源代码】是一个适合初学者和进阶者深入理解Java编程语言,特别是多线程概念的实例项目。这个项目的核心是利用Java语言编写一个打字游戏,通过与用户交互,提高用户的打字速度和准确性。下面将详细阐述...
2. **组件使用**:在打字游戏中,可能使用了`JFrame`作为主窗口,`JLabel`展示待打字的文本,`JTextArea`或`JTextField`作为输入区,`JProgressBar`显示打字进度,`JButton`控制游戏的开始和暂停,以及可能的`...
【Java多线程打字游戏】是一个非常适合Java初学者学习的项目,它涵盖了Java编程语言中的几个关键概念,包括多线程、AWT(Abstract Window Toolkit)和Swing图形用户界面库。在这个打字游戏中,玩家需要在限定时间内...
游戏开始后,屏幕上方同时有四个数字分四列下落,每个数字由三位组成(随机生成,但首位不可相同)。玩家用键盘依次输入数字,如果输入的数字序列与某一... 作业题目,这个只是粗略写的,分享一下!希望对大家有点帮助