`
qdzheng
  • 浏览: 66861 次
  • 性别: 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简易小游戏...

    15个java小游戏源码合集

    15个java小游戏源码合集:Java打猎射击游戏,Java对对碰按钮版(最终版),Java俄罗斯方块2,Java飞行射击类游戏,Java推箱子2,Java网络五子棋2等等15个Java小游戏源码。

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

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

    7个Java小游戏源代码

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

    java迷宫小游戏

    java迷宫小游戏java迷宫小游戏java迷宫小游戏java迷宫小游戏java迷宫小游戏

    极简击船小游戏——java核心技术hit the dots界面版

    java核心技术一书中,击沉dotcoms小游戏,自己写了个很简单的界面,写得不怎么样,bug还有很多,为了学界面写着玩儿的,上传上来留作纪念

    java小游戏开发代码

    java窗口小游戏开发,可作为java初级入门者学习使用。直接运行src\cn\zlr\game包下的MyFrame这个类可看到其中一个小游戏的运行。其他小游戏可能存在不完整的情况,读者可自行拓展

    一个按键类小游戏

    一个按键类小游戏 。实现了字符随机出现,简单界面 还有一些 速度改变,还行吧

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

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

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

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

    Java小游戏Java雷电游戏Java小游戏Java雷电游戏Java小游戏Java雷电游戏Java小游戏Java雷电游戏

    Java雷电小游戏,要是你们能做出这个游戏的话Java基础还是会更扎实一些的。安装好了会自动弹出那个窗口。安装目录中有那个源码,桌面上会有一个plane的图标点击就可以进去了。

    java编写一个贪吃蛇小游戏.zip

    java编写一个贪吃蛇小游戏.zipjava编写一个贪吃蛇小游戏.zip java编写一个贪吃蛇小游戏.zipjava编写一个贪吃蛇小游戏.zip java编写一个贪吃蛇小游戏.zipjava编写一个贪吃蛇小游戏.zip java编写一个贪吃蛇小游戏.zip...

    Java小游戏 netbeans自作

    随机小游戏增强版 netbeans模式

    使用Java写的一个简易的贪吃蛇小游戏.zip

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

    一个网上找的简单的java贪吃蛇小游戏.zip

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

    原生JAVA写的一个拼图小游戏.zip

    原生JAVA写的一个拼图小游戏原生JAVA写的一个拼图小游戏 原生JAVA写的一个拼图小游戏原生JAVA写的一个拼图小游戏 原生JAVA写的一个拼图小游戏原生JAVA写的一个拼图小游戏 原生JAVA写的一个拼图小游戏原生JAVA写的一...

    java简易版推箱子小游戏

    本游戏是简易版的基于java的推箱子小游戏,只是简易的一关配有图形化界面,希望对大家有所帮助

Global site tag (gtag.js) - Google Analytics