import java.awt.*; import java.awt.event.*; import java.awt.font.*; import java.awt.print.*; import javax.swing.*; public class typewrite { public static void main(String[] args) { JFrame w = new JFrame("typewrite game"); w.setSize(300, 400); w.setFont(new Font("",10,100000)); w.setBackground(Color.RED); MyPanel mp = new MyPanel(); w.add(mp); w.addKeyListener(mp); mp.addKeyListener(mp); Thread t = new Thread(mp); t.start(); w.setVisible(true); } } class MyPanel extends JPanel implements Runnable, KeyListener ,MouseListener{ private static final long serialVersionUID = 1L; int x[] = new int[10]; int y[] = new int[10]; char c[] = new char[10]; int sum = 1000; public MyPanel() { for (int i = 0; i < 10; i++) { x[i] = (int) (Math.random() * 260); y[i] = (int) (Math.random() * 300); c[i] = (char) (Math.random() * 26 + 97); } } public void paint(Graphics g) { g.clearRect(0, 0, 300, 400); g.setColor(Color.BLACK); for (int i = 0; i < 10; i++) { g.drawString("" + c[i], x[i], y[i]); } g.setColor(Color.GREEN); g.drawString("score: " + sum, 20, 10); if (sum < 0) { g.clearRect(0, 0, 300, 400); g.drawString("GAME OVER", 100, 200); } } public void run() { while (true) { for (int i = 0; i < 10; i++) { y[i]++; if (y[i] > 400) { y[i] = 0; x[i] = (int) (Math.random() * 260); c[i] = (char) (Math.random() * 27 + 97); sum -= 100; } } if (sum < 0) return; try { Thread.sleep(40); } catch (InterruptedException e) { e.printStackTrace(); } repaint(); } } @Override public void keyPressed(KeyEvent e) { char cc = e.getKeyChar(); int yy = -1; int index = -1; for (int i = 0; i < 10; i++) { if (cc == c[i]) { if (y[i] > yy) { yy = y[i]; index = i; } } } if(index>-1){ y[index]=0; x[index]=(int)(Math.random()*260); c[index]=(char)(Math.random()*26+97); sum+=10; }else{ sum-=100; } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } @Override public void mouseClicked(MouseEvent arg0) { } @Override public void mouseEntered(MouseEvent arg0) { } @Override public void mouseExited(MouseEvent arg0) { } @Override public void mousePressed(MouseEvent arg0) { } @Override public void mouseReleased(MouseEvent arg0) { } }
相关推荐
以上内容展现了指法练习小游戏在设计和实现上的技术细节,以及它如何作为Java编程教学中的一个综合应用实例来指导学生掌握Java Swing、多线程和事件处理等知识点。通过实践操作此小游戏,学生可以更好地理解和运用...
在本项目中,“基于Java的指法练习小游戏的设计与实现”是一个旨在帮助用户通过游戏化的方式提高键盘打字速度和准确性的程序。这个程序利用Java编程语言开发,它结合了教育与娱乐,使得学习过程更加有趣。以下是关于...
标题中的“java写的D调笛子指法”指的是一个基于Java编程语言开发的软件应用,该应用专注于帮助学习笛子的人进行D调的指法练习。这个程序可能包含了一个模拟笛子吹奏的界面,用户可以通过键盘进行练习,提高吹奏技巧...
本文将通过一个简单的指法练习游戏实例,详细介绍如何使用JBuilder 2005开发Applet应用,涉及的知识点广泛,包括图形用户界面设计、动画处理、声音播放、事件处理、多线程编程、I/O操作、Applet打包、安全模型、数字...
除了提供基础的乐理知识和指法练习,还应该具有教学互动性,通过游戏化的元素来增加学习的乐趣,帮助用户更好地记忆和理解钢琴学习的内容。通过不断的练习和挑战,用户可以逐步提高自己的演奏水平,达到一个又一个...
这个项目提供了一个虚拟的MIDI键盘界面,让用户能够在没有实体钢琴的情况下进行弹奏练习,对于初学者和爱好者来说,是一个非常方便的工具。它的设计灵感可能来自于http://frinika.appspot.com/,一个在线音乐创作...
在Ant中,可以通过`<java>`任务来运行已编译的Java类。 8. **调试与测试**:对于一个完整的项目,通常会有单元测试用例,使用JUnit或其他测试框架编写,确保代码的正确性。开发者可以使用Ant的`junit`任务来运行...
- **标准指法操作**:为了提高打字效率,学习标准指法至关重要,每个手指对应键盘上的一行字母,通过熟练的练习,可以实现盲打,提高输入速度。 教学过程中,采用理论与实践相结合的方式,理论部分利用多媒体教学...
在GuitarChord-Tab应用程序中,Java的这些特性得以充分利用,确保了程序在不同操作系统上的稳定运行,并提供了流畅的用户体验。 在GuitarChord-Tab应用中,Java的使用主要体现在以下几个方面: 1. **图形用户界面...