今天看了一下Java的基础语法,决定跟着项目把后续的基础内容过一遍,在B站上找到了坦克大战的教学视频,从此项目着手。
跟着视频里的内容敲出如下代码,实现登陆框和己方坦克的初始位置:
import java.awt.*;
import java.awt.event.*;
//0.2v 让坦克动起来 1,将位置改变为变量。2,启动线程不断重画,每次重画改变坦克位置
public class TankClient extends Frame{
int x = 50, y = 50;
public static void main(String[] args) {
TankClient tc = new TankClient();
tc.LauchFrame();
}
//画坦克,override TankClient
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.RED); //己方坦克为红色
g.fillOval(x, y, 30, 30);//画圆,即坦克。 x,y为坦克位置,改为变量
g.setColor(c);//换回原来的颜色
y += 5; //重画一次改变位置
}
//画登陆框
public void LauchFrame() {
this.setLocation(400, 300);//左上角位置
this.setSize(800, 600); //分辨率
this.setTitle("TankWar"); //标题名字
this.setBackground(Color.GREEN); //背景颜色
//关闭窗口,使用匿名类
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);//不能改变窗口大小
setVisible(true);
new Thread(new PaintThread()).start();
}
//内部类 线程重画
private class PaintThread implements Runable{
public void run() {
while(true) {
repaint();
try {
Thread.sleep(50);
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
然而出现The constructor Thread(TankClient.PaintThread) is undefined错误,无法实现坦克的动态变化。下一步看线程创建的相关知识点。