可以发我一份能削草除根的坦克大战版本吗 谢谢亲

我想问一下我写的坦克大战 出现了下面的错误 请大家帮我看看谢谢了 - ITeye问答
我是一名初学者 在学韩顺平老师的java教程 写程序的时候遇到问题了 出现了空指针错误 能否请各位朋友帮我看看是什么问题吗 谢谢大家了
* 功能:坦克大战2.0版(坦克可以上下左右移动)
package com.qinweiping.
import java.awt.*;
import java.awt.event.KeyE
import java.awt.event.KeyL
import javax.swing.*;
import java.util.*;
public class MyTankGame2 extends JFrame{
MyPanel mp=
public static void main(String [] args){
MyTankGame2 mtg=new MyTankGame2();
//构造方法
public MyTankGame2(){
mp=new MyPanel();
Thread t =new Thread(mp);
t.start();
this.add(mp);
//注册监听
this.addKeyListener(mp);
this.setSize(400,300);
this.setVisible(true);
//我的面板(tank的移动和活动区域)
class MyPanel extends JPanel implements KeyListener, Runnable{
//定义一个我的坦克
Hero hero=
//定义一个敌人的坦克组
Vector&EnemyTank& ets=new Vector&EnemyTank&();
int enSize=3;
public void MyPanel(){
hero=new Hero(10,10);
//初始化敌人的坦克
for(int i=0;i&enSi++){
EnemyTank et=new EnemyTank((i+1)*50,0);
//给敌人的坦克初始化颜色
et.setColor(0);
et.setDirect(2);
ets.add(et);
//重写paint方法
public void paint(Graphics g){
//调用父类的方法
super.paint(g);
//把活动区域的颜色改为黑色
g.fillRect(0, 0, 400, 300);
//画出自己的坦克
this.drawTank(hero.getX(),hero.getY(),g,this.hero.direct,1);
//画出子弹
if(hero.s!=null){
g.draw3DRect(hero.s.x, hero.s.y, 1, 1, false);
//画出敌人的坦克
for(int i=0;i&ets.size();i++){
this.drawTank(ets.get(i).getX(), ets.get(i).getY(), g, ets.get(i).direct, 0);
this.repaint();
public void drawTank(int x ,int y,Graphics g,int direct ,int type){
//判断是什么类型的坦克
switch(type){
g.setColor(Color.cyan);
g.setColor(Color.yellow);
switch(direct){
//g.setColor(Color.CYAN);
//画出坦克 到时候封装成函数
//1 画出矩形
g.fillRect(hero.getX(), hero.getY(), 5, 30);
//2画出左边的矩形
g.fillRect(hero.getX()+15, hero.getY(), 5, 30);
//3画出中间的矩形
g.fillRect(hero.getX()+5, hero.getY()+5, 10, 20);
g.fill3DRect(x, y, 5, 30,false);
//2画出左边的矩形
g.fill3DRect(x+15, y, 5, 30,false);
//3画出中间的矩形
g.fill3DRect(x+5, y+5, 10, 20,false);
//4画出圆形
g.fillOval(x+5, y+10, 10, 10);
g.drawLine(x+10, y+15, x+10, y);
//炮筒向右
//画出矩形
g.fill3DRect(x, y, 30, 5, false);
g.fill3DRect(x, y+15, 30, 5, false);
g.fill3DRect(x+5, y+5, 20, 10, false);
g.fillOval(x+10, y+5, 10, 10);
g.drawLine(x+15, y+10, x+30, y+10);
g.fill3DRect(x, y, 5, 30,false);
//2画出左边的矩形
g.fill3DRect(x+15, y, 5, 30,false);
//3画出中间的矩形
g.fill3DRect(x+5, y+5, 10, 20,false);
//4画出圆形
g.fillOval(x+5, y+10, 10, 10);
g.drawLine(x+10, y+15, x+10, y+30);
g.fill3DRect(x, y, 30, 5, false);
g.fill3DRect(x, y+15, 30, 5, false);
g.fill3DRect(x+5, y+5, 20, 10, false);
g.fillOval(x+10, y+5, 10, 10);
g.drawLine(x+15, y+10, x, y+10);
//键按下处理 a左 s下 w上 d右
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_W){
//设置我的坦克的方向
this.hero.setDirect(0);
this.hero.moveUp();
}else if(e.getKeyCode()==KeyEvent.VK_D){
this.hero.setDirect(1);
this.hero.moveRight();
}else if(e.getKeyCode()==KeyEvent.VK_S){
this.hero.setDirect(2);
this.hero.moveDown();
}else if(e.getKeyCode()==KeyEvent.VK_A){
this.hero.setDirect(3);
this.hero.moveLeft();
}if(e.getKeyCode()==KeyEvent.VK_J){
this.hero.shotEnemy();
//重新绘制panel
this.repaint();
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
public void keyTyped(KeyEvent e) {
public void run(){
while(true){
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
this.repaint();
package com.qinweiping.
import com.qinweiping.tankwar.MyTankGame2;
class Tank{
//定义坦克横坐标
//定义坦克纵坐标
//坦克方向 0 表示上 1表示右 2表示下 3表示左
int direct=0;
//设置坦克的速度
int speed=1;
//定义构造方法 中间用this来接收 x y的值
public Tank(int x,int y){
public int getX() {
public void setX(int x) {
public int getY() {
public void setY(int y) {
public int getDirect() {
public void setDirect(int direct) {
this.direct =
public int getSpeed() {
public void setSpeed(int speed) {
this.speed =
public int getColor() {
public void setColor(int color) {
this.color =
//我的坦克 其中要调用父类的构造函数来初始化子类的成员变量(tank的共性只要
//只要调用父类的构造方法即可)
class Shot implements
Runnable {
int speed=1;
Shot(int x, int y,int direct){
this.direct=
public void run() {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
switch (this.direct) {
System.out.println("子弹的x坐标x="+x+"y="+y);
//敌人的坦克
class EnemyTank extends Tank{
public EnemyTank(int x,int y){
super(x,y);
class Hero extends Tank{
//子弹具有发射的方法
public void shotEnemy(){
while(true){
switch(this.direct){
s=new Shot(x+10,y,0);
s=new Shot(x+30,y+10,1);
s=new Shot(x+10,y+30,2);
s=new Shot(x,y+10,3);
Thread t=new Thread(s);
t.start();
public Hero(int x,int y){
super(x, y);
//坦克向上移动
public void moveUp(){
//坦克向右移动
public void moveRight(){
public void moveDown(){
public void moveLeft(){
下载次数: 4
楼上正解。
public void MyPanel(){
}//是普通方法
public MyPanel(){
}//是构造方法
而在MyTankGame2类中
mp=new MyPanel();
实际调用的是默认的构造方法
public MyPanel(){
}//而这个方法并没有初始化 hero
this.drawTank(hero.getX(),hero.getY(),g,this.hero.direct,1);这句就会空指针异常
实际上是需要在mp=new MyPanel();
初始化hero
class MyPanel extends JPanel implements KeyListener, Runnable{
//定义一个我的坦克
Hero hero=
//定义一个敌人的坦克组
Vector&EnemyTank& ets=new Vector&EnemyTank&();
int enSize=3;
public [color=red]void去掉 [/color]MyPanel(){
hero=new Hero(10,10);
//初始化敌人的坦克
for(int i=0;i&enSi++){
EnemyTank et=new EnemyTank((i+1)*50,0);
//给敌人的坦克初始化颜色
et.setColor(0);
et.setDirect(2);
ets.add(et);
& //我的面板(tank的移动和活动区域)
class MyPanel extends JPanel implements KeyListener, Runnable{
//定义一个我的坦克
Hero hero=
//定义一个敌人的坦克组
Vector&EnemyTank& ets=new Vector&EnemyTank&();
int enSize=3;
public void MyPanel(){
hero=new Hero(10,10);
//初始化敌人的坦克
for(int i=0;i&enSi++){
EnemyTank et=new EnemyTank((i+1)*50,0);
//给敌人的坦克初始化颜色
et.setColor(0);
et.setDirect(2);
ets.add(et);
public void MyPanel(){& //把这里的void去掉看看
已解决问题
未解决问题毕业论文致谢
致  谢本文的顺利完成,凝聚了众多的帮助和温暖。尤其需要感谢的是我的论文导师车桂老师,在确定论文题目和方向的时候,车老师仔细分析了我个人的各方面情况,以选择出适合我且对我以后的学习和生活有所帮助和启发的论题;在准备论文期间,由于要赶去深圳参加香港中文大学崇基学院的研究生面试,以及进行面试的准备,我有些不知所措,车老师那时总是积极地鼓励我,还为我推荐了许多十分有效的资料指导我的学习方向;同时她也时刻关心着我的崇基学院的面试状况,在深圳面试期间也多次接到车老师打来表示关心的电话。在辅导我的论文期间车老师既是对我的学习给予指导的老师,也像是对我的生活关怀备至的妈妈,同时还是与我谈天说笑的朋友。在去车老师家请她指导论文的时候我也接触到了车老师的妈妈可爱的桂奶奶,虽然已是将近八十高龄,但她弹琴、唱歌、游泳、养生等等优雅又从容的生活观念和态度让我对人之垂暮有了重新的更健康更乐观的认识。大学本科最后最珍贵的时间里,我的生命因为有了车老师的参与而增添了更多温暖与感动!在这里要真诚的对她说一句:车老师,谢谢您!其实最与我的日常生活相关且时刻影响着我的论文进度、论文质量的,应该是与我日夜相处在一起的室友们,她们也是我大学四年最重要的收获、最珍贵的记忆、最深刻的反思、最多欢笑的源泉和最想拥抱的人。在我论文期间及大学四年里一直敦促我认真学习最后帮我论文排版和解决众多电脑技术问题的吴悠,虽然舒适的五星级的家就在学校旁边却一直愿意在宿舍跟我们做伴的任劳任怨之余维仪,还有我最亲近的米安然,对其我只有一句话,三个字:&我爱你&,且我愿承诺和期盼,这爱有始 无终。对于我十八至二一这不知道是不是最华丽但一定是最美好的年岁里,因为遇见你们,我对生命充满感激。如果时空真的存在于不同的隧道里,我想我一定不想换道,也不愿重来,更不会后悔,现在的一切,都是我最想要的。最后想提一下离我的大学生活最远也最近的人,我的奶奶,她对我的爱、关心与牵挂,到目前为止,是我生命最重要的阳光和空气,是我勇敢地生活在这世界上最骄傲的底气,是我用任何形式的感谢都无法表达的欣喜!=========================我去答辩了,迟到了迟到了 !!!,祝我好运!!Good luck 亲爱的熊吐吐
分享这篇日志的人也喜欢
不想拖后腿
小凶浪~~~
一天一个样
蓝队加个油啊?
热门日志推荐
人人最热标签
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@vip.sina.com··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场晚上打开抖音,天呐!涨了好多粉,现在激动得睡不着,谢谢大家的关注和点赞,我一定把这个好消息告诉我班上的熊孩子们-搞笑视频-搜狐视频
晚上打开抖音,天呐!涨了好多粉,现在激动得睡不着,谢谢大家的关注和点赞,我一定把这个好消息告诉我班上的熊孩子们
推荐出品人(暴力小毛巾被)
(hhhhh-SSS)
第三方登录:红米手机 &
电视盒子 &
智能硬件 &
骨灰级手机控
扫码下载App一键签到 升级加速
蓝牙联机版坦克大战(FC移植坦克)
&来自老版论坛
扫一扫!手机看帖更爽
游游戏信息:坦克大战
游戏名称:BattleCity
游戏版本: 不好意思,这游戏还真没版本号
游戏大小:274kb
发布日期:2011年
支持系统:Android2.3及以上是否中文:是
小米亲测:是MI2A&&4.1.1JRO03L MIUI 3.6.14
《坦克大战(BattleCity)》绝对是经典之作。此游戏移植于FC也就是小霸王学习机。小米2A亲测,完美运行,并且支持蓝牙联机
此游戏支持游戏关卡修改(仅限单人游戏)。蓝牙联机时,不支持关卡修改。但是生命修改支持。
此游戏支持修改生命条数3—5条命。对于玩过的朋友,这足够了。
而且该游戏区别于其它FC移植游戏的一大特点,就是在震动方面。很多FC游戏每个操作都会震动
但是这款游戏震动可关闭。只有当你点在无意义的地方,才有震动反馈。相当人性化。
来几张图看看效果:
扫描二维码,手机查看本帖
gggg测试空军建军节
看看还有没有
ddddddddddd
为难看不见地址
急急如律令路宽
·来自小米手机2
[龇牙][龇牙][龇牙][龇牙]
?????看不到软件
·来自红米手机2 电信版
腾讯地图 5.3.0零流量地图 不联网更快更稳定 .txt
腾讯地图 5.3.0零流量地图 不联网更快更稳定 .txt
·来自移动端
明知醒后给红红红红红红红红红红红红红
VSv啊v的v三个三个
京ICP证110507号 京ICP备号

我要回帖

更多关于 削草除根 的文章

 

随机推荐