Java模拟弹球效果(监听键盘)

简介: 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class BallGame extends Frame { 5 6 Image sun = Toolkit.
 1 import java.awt.*;
 2 import java.awt.event.*;
 3 
 4 public class BallGame  extends Frame {
 5     
 6     Image sun = Toolkit.getDefaultToolkit().getImage("sun.jpg");
 7     
 8     double x=200;
 9     double y=200;
10     boolean left,right,up,down;
11     public void paint(Graphics  g){
12         g.drawImage(sun, (int)x, (int)y, null);
13         if(left){
14             x = x-10;
15         }
16         if(right){
17             x = x+10;
18         }
19         if(up){
20             y = y-10;
21         }
22         if(down){
23             y = y+10;
24         }
25         
26     }
27     
28     void launchFrame(){
29         setSize(500,400);
30         setLocation(80, 80);
31         setBackground(Color.black);
32         setTitle("火星十一郎");
33         myEvent();
34         setVisible(true);
35         new PaintThread().start();  
36         addKeyListener(new KeyMonitor());
37     }
38     
39     public static void main(String[] args){  
40         new BallGame().launchFrame();
41     }
42     
43     class PaintThread extends Thread {
44         public void run(){
45             while(true){
46                 repaint();
47                 try {
48                     Thread.sleep(40);
49                 } catch (InterruptedException e) {
50                     e.printStackTrace();
51                 }   //1秒=1000毫秒!
52             }
53         }
54     }
55     
56     class  KeyMonitor extends KeyAdapter {
57         public void keyPressed(KeyEvent e){
58             if(37==e.getKeyCode()){
59                 left=true;
60             }
61             if(39==e.getKeyCode()){
62                 right = true;
63             }
64             if(38==e.getKeyCode()){
65                 up = true;
66             }
67             if(40==e.getKeyCode()){
68                 down = true;
69             }
70         }
71         
72         public void keyReleased(KeyEvent e){
73             if(37==e.getKeyCode()){
74                 left=false;
75             }
76             if(39==e.getKeyCode()){
77                 right = false;
78             }
79             if(38==e.getKeyCode()){
80                 up = false;
81             }
82             if(40==e.getKeyCode()){
83                 down = false;
84             }
85         }
86     }
87     private void myEvent()
88     {
89         this.addWindowListener(new WindowAdapter()//窗口监听
90         {
91             public void windowClosing(WindowEvent e)
92             {
93                 System.exit(0);
94             }
95         });
96     }
97 }

 

目录
相关文章
|
3月前
|
安全 机器人 Java
|
1月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
62 1
|
1月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
13 0
|
6月前
|
Java
java_键盘录入、随机数
本文介绍了Java中键盘录入和Random类的使用。键盘录入用于从用户那里获取数据,通过导入`java.util.Scanner`,创建`Scanner`对象,调用`nextInt()`或`nextDouble()`读取整数和小数,`next()`读取字符串。Random类用于生成随机整数,导入该类后创建对象,调用`nextInt(int bound)`生成[0, bound-1]范围内的随机数。在JDK17及以上版本,可以使用`nextInt(int start, int end)`生成[start, end)范围的随机数。常见应用包括猜数字游戏和随机点名。
60 0
|
4月前
|
关系型数据库 MySQL Java
|
5月前
|
Java Android开发
Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。
【6月更文挑战第23天】 Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。客户端连接服务器,发送"Hello, Server!"后关闭。注意Android中需避免主线程进行网络操作。
105 4
|
5月前
|
存储 Java 数据库
Java一分钟之-JPA实体监听器:@PrePersist, @PostLoad
【6月更文挑战第15天】JPA实体监听器通过`@PrePersist`等注解在实体生命周期关键点执行逻辑,例如设置默认值或处理并发更新。常见问题包括监听器未注册、并发冲突和性能影响。示例展示了如何在`@PrePersist`中设置默认创建时间和`@PostLoad`时初始化关联数据。使用监听器能增强灵活性,但也需注意潜在问题和优化。
130 6
|
4月前
|
安全 机器人 Java
|
4月前
|
存储 程序员
JavaWeb之Listener监听器
JavaWeb之Listener监听器
79 0
|
5月前
|
Java 编译器
一篇文章讲明白java键盘输入多种方法
一篇文章讲明白java键盘输入多种方法
39 0
下一篇
无影云桌面