关于这个小游戏,所要理解的是Java面向对象的思维,封装、继承以及多态,在这里,比较突出的是Java封装的思想,作为操作者的我们,可以把这个游戏的制作看为三部分,一个是事件的地点(海),一个是事件(游动的鱼),以及事件的操作者(玩家)。
现在先大概了解下所要用到的主要知识,先来看看怎样运用Swing。
package test;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyFirstFrame extends JFrame{
//程序的入口,主方法
public static void main(String[] args){
System.out.println("Hello");
//内存中创建了一个默认不可见的窗体对象
MyFirstFrame frame=new MyFirstFrame();
//设置窗体的大小 宽600px 高450px
frame.setSize(600, 450);
//设置窗体的标题
frame.setTitle("我是一个窗口喔");
//创建一个存放组件的容器 面板
JPanel panel=new JPanel();
//创建两个组件 按钮
JButton btn1=new JButton("登录");//按钮
JButton btn2=new JButton("重置");
JTextField textFiel=new JTextField();//文本域
textFiel.setText("please input here!");
//将两个按钮添加到面板容器上
panel.add(btn1);
panel.add(btn2);
panel.add(textFiel);
//将存放了两个按钮的容器面板 添加到窗体上
frame.add(panel);
//让该窗体在桌面上可见
frame.setVisible(true);
}
}
这里用到的是最基本的swing知识,只要继承JFrame,然后根据自身需要创建相关组件就行,比较简单。
再来了解下关于多线程,线程是独立的线程,代表的是独立的执行空间,因Thread是Java中用来表示线程的类,因此,要建立线程就得创建Thread。每个java应用程序会启动一个主线程——将main()放在它自己执行空间的最开始处,下面给出两个程序作为例子。
ThreadDemo.java
package test;
public class ThreadDemo {
public static void main(String[] args) {
MyThread 张三=new MyThread("吃了吗?");
MyThread 李四=new MyThread("吃饱了?");
System.out.println("***************");
张三.start();
李四.start();
System.out.println("%%%%%%%%%%%%%%%%");
}
}
MyThread.java
package test;
public class MyThread extends Thread{
String word;
public MyThread(String word){
this.word=word;
}
public void talk(){
System.out.println(word);
}
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
talk();
}
}
}
所执行的结果为:
从这个小例子中可以看出,此例中有三个线程,主线程在main里面,首先执行的是主线程,打印出*和%号。再执行的是另两个线程,且“吃饱了”和“吃了吗”在打印的时候没有什么特定的规律,是两个线程随机的抢占资源,进行执行输出的。