`
qdzheng
  • 浏览: 67901 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

贴一个简单的击键类Java小游戏

    博客分类:
  • Java
阅读更多
游戏内容:单词由窗口上部落下,玩家在单词掉落到窗口底部前,输入该单词,输入正确后,单词消失。这只是个简单的示例,没有做成绩统计等相关功能。

截图:


package fun.dwords;
import ...;
public class DWords extends JFrame {
	String[] words = { "good", "slow", "goods", "goodbye", "bye", "byte",
			"bits", "sister", "monkey", "word", "world", "left", "leave" };
	JPanel panel;
	Image img = new ImageIcon("background/jessica_alba.jpg").getImage();

	public DWords() {
		panel = new JPanel() {
			@Override
			public void paint(Graphics g) {
				g.drawImage(img, 0, 0, null);
				super.paintChildren(g);
			}

		};
		add(panel);
		panel.setLayout(null);

		JPanel btnPanel = new JPanel();
		add(btnPanel, BorderLayout.SOUTH);
		JButton btnStart = new JButton("Start");
		btnPanel.add(btnStart);
		btnStart.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Thread thd = new Thread() {
					public void run() {
						downWords();
					}
				};
				thd.start();
				DWords.this.requestFocus();
			}
		});

		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(500, 400);
		setTitle("word  word  down...");
		setVisible(true);
		this.requestFocus();
	}

	public void resetWords() {
		Component[] lb = panel.getComponents();
		for (int i = 0; i < lb.length; i++) {
			WordLabel wl = (WordLabel) lb[i];
			wl.reset();
		}
	}

	public void downWords() {
		Random rand = new Random(System.currentTimeMillis());

		for (int i = 0; i < words.length; i++) {
			WordLabel wl = new WordLabel(words[i]);
			wl.setForeground(new Color(255, 0, 0));
			panel.add(wl);
			wl.setBounds(rand.nextInt(panel.getWidth() - 50), 0, 120, 25);
			panel.validate();

			addKeyListener(wl);
			Thread thd = new Thread(wl);
			thd.start();

			try {
				Thread.sleep(2000);
			} catch (InterruptedException ex) {
			}
		}
	}

	static String fmtHeader = "<html><span style=\"color:red\">";
	static String fmtMiddle = "</span><span style=\"color:black;\">";
	static String fmtTail = "</span></html>";

	private class WordLabel extends JLabel implements Runnable, KeyListener {
		volatile boolean removed = false;
		volatile String fmtWord;
		String word;
		int idx = 0;

		public WordLabel(String word) {
			super(fmtHeader + fmtMiddle + word + fmtTail);
			this.fmtWord = fmtHeader + fmtMiddle + word + fmtTail;
			this.word = word;
		}

		public void run() {
			int y = getY();
			while (y < getParent().getHeight()) {
				y += 2;

				setText(fmtWord);
				setLocation(getX(), y);

				if (removed) {
					break;
				}
				try {
					Thread.sleep(150);
				} catch (InterruptedException ex) {

				}
			}
			JPanel panel = (JPanel) getParent();
			panel.remove(this);
			DWords.this.removeKeyListener(this);
			panel.validate();
			panel.repaint();
		}

		@Override
		public void keyPressed(KeyEvent e) {
			// TODO Auto-generated method stub

		}

		@Override
		public void keyReleased(KeyEvent e) {
		}

		@Override
		public void keyTyped(KeyEvent e) {
			char c = e.getKeyChar();
			if (c == word.charAt(idx)) {
				idx++;
				if (idx == word.length()) {
					removed = true;
					DWords.this.resetWords();
				}
			} else {
				idx = 0;
			}

			if (idx > 0) {
				fmtWord = fmtHeader + word.substring(0, idx) + fmtMiddle
						+ word.substring(idx) + fmtTail;
			} else {
				fmtWord = fmtHeader + fmtMiddle + word.substring(idx) + fmtTail;
			}

		}

		public void reset() {
			idx = 0;
			fmtWord = fmtHeader + fmtMiddle + word.substring(idx) + fmtTail;
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		final DWords dw = new DWords();
		new Thread() {
			public void run() {
				dw.downWords();
			}
		}.start();
	}

}

  • 描述: 屏幕截图
  • 大小: 114.9 KB
分享到:
评论

相关推荐

    java简易小游戏.zip

    java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏java简易小游戏java简易小游戏 java简易小游戏java简易小游戏...

    java贪吃蛇小游戏代码java小游戏源码.zip

    【文件名称列表】:由于提供的信息只有一个总文件名“java贪吃蛇小游戏代码java小游戏源码”,我们可以假设压缩包内包含了多个相关的Java类文件,如Game.java(主程序类)、Snake.java(蛇的类)、Food.java(食物类...

    一个用Java写的连连看小游戏.zip

    一个用Java写的连连看小游戏.zip一个用Java写的连连看小游戏.zip 一个用Java写的连连看小游戏.zip一个用Java写的连连看小游戏.zip 一个用Java写的连连看小游戏.zip一个用Java写的连连看小游戏.zip 一个用Java写的...

    一个简易的躲避子弹飞机小游戏,基于最简单的java ui.zip

    一个简易的躲避子弹飞机小游戏,基于最简单的java ui 一个简易的躲避子弹飞机小游戏,基于最简单的java ui 一个简易的躲避子弹飞机小游戏,基于最简单的java ui 一个简易的躲避子弹飞机小游戏,基于最简单的java ui ...

    java小游戏jar

    总的来说,【Java小游戏Jar】是一个体现Java编程基础和游戏开发原理的实例,对于初学者来说,它提供了一个实际应用所学知识的平台,同时也能锻炼解决问题和逻辑思考的能力。通过分析和改进这样的项目,开发者可以...

    Java小游戏 netbeans自作

    【Java小游戏 netbeans自作】是一个使用NetBeans IDE开发的项目,主要涵盖了Java编程语言、图形用户界面(GUI)设计以及游戏开发的基础知识。NetBeans是Java开发者常用的集成开发环境,它提供了丰富的代码提示、自动...

    7个Java小游戏源代码

    7个Java小游戏源代码 解压密码是:yykings

    java类的小游戏

    Java 类的小游戏是一种基于Java编程语言开发的简单游戏,它通常由一系列的Java类组成,这些类协同工作来实现游戏的逻辑、用户交互以及图形显示。对于初学者来说,学习和分析这样的小游戏代码是一个很好的实践机会,...

    JAVA 射击生存类小游戏,可用于学习参考

    本篇文章将深入探讨一个基于Java的射击生存类小游戏——"ZombieCrisis",旨在为初学者提供一个学习和参考的实例。 首先,游戏的核心在于其逻辑控制和交互设计。"ZombieCrisis"的控制方式清晰明了,支持双人模式,...

    一个简单的java小游戏.zip

    java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发...

    一个基于JAVA的类魔塔小游戏 a Java based MagicTowerlike game.zip

    java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发...

    Java小游戏迷宫

    【Java小游戏迷宫】是一款利用Java编程语言开发的娱乐项目,它展示了Java在游戏开发中的应用,特别是对于教育和初级开发者来说,这是一个很好的实践案例。Java作为一种跨平台的编程语言,具有面向对象、稳定性和高...

    java小游戏,窗体程序

    Java小游戏是一种基于Java编程语言开发的简单互动娱乐软件,通常用于教学、练习编程技能或提供休闲娱乐。在本压缩包中,包含三个小游戏:打砖块、大球吃小球和飞机大战。这些游戏展示了Java在图形用户界面(GUI)和...

    java简单小游戏代码

    Java简单小游戏代码主要涉及到的是Java编程语言的基础应用和游戏开发的基本概念。对于初学者来说,这是一个很好的实践项目,可以帮助理解面向对象编程的概念以及如何在实际项目中应用它们。以下是这个小游戏可能涉及...

    java字母小游戏代码

    从给定的代码片段来看,这是一款基于Java的简单打字练习小游戏,主要目标是通过键盘输入来消除从屏幕上方落下的字母。游戏利用了Java的Swing图形库和线程处理来实现动态效果和用户交互。下面我们将深入分析这款小...

    用java写的一个拼图小游戏

    标题中的“用java写的一个拼图小游戏”表明这是一个使用Java编程语言开发的简易拼图游戏。在Java中,我们可以利用其面向对象的特性,构建出模块化的游戏逻辑。游戏可能包含多个类,如主程序类、图片处理类、拼图逻辑...

    java小游戏之2048

    Java2048是一个简单的基于Java语言的2048游戏。这个游戏的目的是通过使用键盘的方向键来移动所有的方块,并合并相同的方块...Java2048小游戏是一个简单而有趣的游戏,它可以帮助你锻炼逻辑思维能力,提高手眼协调能力。

    一个简单的Java拼图小游戏.zip

    java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发 小游戏 经典游戏 游戏源码 课程设计 java游戏开发...

    java小游戏连连看

    本文将深入探讨一个基于Java编写的连连看小游戏,它不仅为玩家提供娱乐,更是学习Java游戏编程的理想实例。 连连看游戏的基本原理是通过消除相同图案的对子来达到游戏目标。在Java实现中,我们首先需要创建游戏界面...

Global site tag (gtag.js) - Google Analytics