坦克java代码 java tank程序代码

看了马士兵老师的坦克大战java程序,想按照自己的思路动手编一下 , 结果界面背景设置不了,java 作图 不一定要继承JFrame或者Frame坦克java代码,但是所有的组件必须放到顶层容器坦克java代码 , Java Swing 有三种顶层容器
JFrame:用来设计类似于Windows系统中的窗口形式的应用程序 。
·JDialog:和JFrame类似 , 只不过JDialog是用来设计对话框 。
·JApplet:用来设计可以在嵌入在网页中的Java小程序 。
而且坦克java代码你的代码 Kosese001既然继承了JFrame那么坦克java代码他的构造就是个JFrame,你下面又new JFrame("坦克大战");这样何必继承 , 直接在构造里面实现操作就可以把Kosese001中 , 
你的背景色没有显示出来,是由于JFrame 是顶层容器 , 它默认的布局会设置它的背景色,除非你在前面 加上 jfrmMain.setLayout(null);使得布局变成空布局 , 下面的jfrmMain.getContentPane().setBackground(Color.green);才会生效,或者你可以通过设置JFrame上组件的背景色来完成同样的效果比如 mypaint = new MyPaint();
mypaint.setBackground(Color.green); 还有啥不懂的 可以问坦克java代码我 。
JAVA坦克大战,这段代码为什么子弹的坐标在变,却不能repaint,但是按下任意键盘的建却重绘了呢?Mypanel坦克java代码的run方法里要调用repaint方法否则你坦克java代码的repaint方法只会在keyPressed发生的时候才调用
修改一下两个地方
(1)
// 键盘获取事件的函数
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getKeyCode() == KeyEvent.VK_J) {
if (hero.shot.size()5) {
hero.shott();
}
}
if (arg0.getKeyCode() == KeyEvent.VK_W) {
hero.setSDC(hero.getSpeed(), 0, hero.getColor());
hero.moveUp();
} else if (arg0.getKeyCode() == KeyEvent.VK_S) {
hero.setSDC(hero.getSpeed(), 1, hero.getColor());
hero.moveDown();
} else if (arg0.getKeyCode() == KeyEvent.VK_A) {
hero.setSDC(hero.getSpeed(), 2, hero.getColor());
hero.moveLeft();
} else if (arg0.getKeyCode() == KeyEvent.VK_D) {
hero.setSDC(hero.getSpeed(), 3, hero.getColor());
hero.moveRight();
}
/**
* 这个repaint注释掉
*/
//this.repaint();
}
(2)
// 线程
/**
* 一秒钟60帧
*/
public void run() {
// TODO Auto-generated method stub
while(true){
this.repaint();
try {
Thread.sleep(1000 / 60);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
完整代码如下:
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class aaa extends JFrame {
public static void main(String[] args) {
aaa a1 = new aaa();
Thread t1 = new Thread(a1.mp);
t1.start();
}
MyPanel mp = null;
public aaa() {
mp = new MyPanel();
this.add(mp);
this.addKeyListener(mp);
this.setSize(500, 500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyPanel extends JPanel implements KeyListener, Runnable {
MyTank hero = null;
VectorEmenyTank emeny = new VectorEmenyTank();
int emsize = 5;
// 键盘获取事件的函数
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getKeyCode() == KeyEvent.VK_J) {
if (hero.shot.size()5) {
hero.shott();
}
}
if (arg0.getKeyCode() == KeyEvent.VK_W) {
hero.setSDC(hero.getSpeed(), 0, hero.getColor());
hero.moveUp();
} else if (arg0.getKeyCode() == KeyEvent.VK_S) {

推荐阅读