Java发射子弹出错_能帮我看看这个子弹的坐标哪里错了吗
已结贴√
问题点数:40 回复次数:3
能帮我看看这个子弹的坐标哪里错了吗
我的这个坦克哪里错了啊
运行坦克可以正常移动,但是子弹的坐标老是错误,子弹也飞不出去,到底是哪里错了啊,检查很久了
package unfinished;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TryTank
{
MyPanel my;
JFrame jf;
public static void main(String[] args)
{
TryTank tr = new TryTank();
}
public TryTank()
{
jf = new JFrame("我的坦克大战");
my = new MyPanel();
jf.addKeyListener(my);
Thread t2 = new Thread(my);
t2.start();
my.setBackground(Color.black);
jf.add(my);
jf.setVisible(true);
jf.setSize(400,300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyPanel extends JPanel implements KeyListener,Runnable
{
Mine t;
public MyPanel()
{
t = new Mine(10,10);
}
public void paint(Graphics g)
{
super.paint(g);
t.setType(2);
t.setSpeed(4);
this.paintTank(t.getX(), t.getY(), g, t.getDirect(), t.getType());
if(t.b != null&&t.b.isAlive == true)
{
t.b.setSpeed(2);
g.fillOval(t.b.getX(), t.b.getY(), 2, 2);
}
}
//画坦克
public void paintTank(int x, int y, Graphics g, int direct, int type)
{
//判断颜色,1是敌人,黄色。2是自己,红色
if(type == 1)
{
g.setColor(Color.YELLOW);
switch(direct)
{
case 1:
g.fill3DRect(x, y,5,30,false);
g.fill3DRect(x+5,y+5,10,20,false);
g.fill3DRect(x+15,y,5,30,false);
g.fillOval(x+4,y+10,10,10);
g.drawLine(x+9,y+15,x+9,y-4);
break;
case 2:
g.fill3DRect(x, y,30,5,false);
g.fill3DRect(x+5,y+5,20,10,false);
g.fill3DRect(x,y+15,30,5,false);
g.fillOval(x+10,y+5,10,10);
g.drawLine(x+15,y+10,x+34,y+10);
break;
case 3:
g.fill3DRect(x, y,5,30,false);
g.fill3DRect(x+5,y+5,10,20,false);
g.fill3DRect(x+15,y,5,30,false);
g.fillOval(x+4,y+10,10,10);
g.drawLine(x+9,y+15,x+9,y+34);
break;
case 4:
g.fill3DRect(x, y,30,5,false);
g.fill3DRect(x+5,y+5,20,10,false);
g.fill3DRect(x,y+15,30,5,false);
g.fillOval(x+10,y+5,10,10);
g.drawLine(x+15,y+10,x-4,y+10);
}
}
else if(type == 2)
{
g.setColor(Color.RED);
switch(direct)
{
case 1:
g.fill3DRect(x, y,5,30,false);
g.fill3DRect(x+5,y+5,10,20,false);
g.fill3DRect(x+15,y,5,30,false);
g.fillOval(x+4,y+10,10,10);
g.drawLine(x+9,y+15,x+9,y-4);
break;
case 2:
g.fill3DRect(x, y,30,5,false);
g.fill3DRect(x+5,y+5,20,10,false);
g.fill3DRect(x,y+15,30,5,false);
g.fillOval(x+10,y+5,10,10);
g.drawLine(x+15,y+10,x+34,y+10);
break;
case 3:
g.fill3DRect(x, y,5,30,false);
g.fill3DRect(x+5,y+5,10,20,false);
g.fill3DRect(x+15,y,5,30,false);
g.fillOval(x+4,y+10,10,10);
g.drawLine(x+9,y+15,x+9,y+34);
break;
case 4:
g.fill3DRect(x, y,30,5,false);
g.fill3DRect(x+5,y+5,20,10,false);
g.fill3DRect(x,y+15,30,5,false);
g.fillOval(x+10,y+5,10,10);
g.drawLine(x+15,y+10,x-4,y+10);
}
}
}
@Override
public void keyTyped(KeyEvent e)
{
}
@Override
public void keyPressed(KeyEvent e)
{
//设置WASD为移动
if(e.getKeyCode() == KeyEvent.VK_W)
{
t.setDirect(1);
t.moveUp();
}
else if(e.getKeyCode() == KeyEvent.VK_D)
{
t.setDirect(2);
t.moveRight();
}
else if(e.getKeyCode() == KeyEvent.VK_S)
{
t.setDirect(3);
t.moveDown();
}
else if(e.getKeyCode() == KeyEvent.VK_A)
{
t.setDirect(4);
t.moveLeft();
}
if(e.getKeyCode() == KeyEvent.VK_J)
{
t.fired();
}
this.repaint();
}
@Override
public void keyReleased(KeyEvent e)
{
}
@Override
public void run()
{
try
{
Thread.sleep(100);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
this.repaint();
}
class Tank
{
int x = 10, y = 10;
public Tank(int x, int y)
{
this.x = x;
this.y = y;
}
public int getX()
{
return x;
}
public void setX(int x)
{
this.x = x;
}
public int getY()
{
return y;
}
public void setY(int y)
{
this.y = y;
}
}
class Mine extends Tank
{
int type = 0,direct = 1,speed =1;
Bullet b;
public Mine(int x, int y)
{
super(x,y);
}
public int getType()
{
return type;
}
public void setType(int type)
{
this.type = type;
}
public int getDirect()
{
return direct;
}
public void setDirect(int direct)
{
this.direct = direct;
}
public int getSpeed()
{
return speed;
}
public void setSpeed(int speed)
{
this.speed = speed;
}
//坦克移动
public void moveUp()
{
y-=this.getSpeed();
}
public void moveRight()
{
x+=this.getSpeed();
}
public void moveDown()
{
y+=this.getSpeed();
}
public void moveLeft()
{
x-=this.getSpeed();
}
//开火
public void fired()
{
switch(this.direct)
{
case 1:
b = new Bullet(x+10,y,1);
case 2:
b = new Bullet(x+30,y+10,2);
case 3:
b = new Bullet(x+10,y+30,3);
case 4:
b = new Bullet(x,y+10,4);
}
Thread t1 = new Thread(b);
t1.start();
}
}
class Bullet implements Runnable
{
int x = 10, y = 10,speed = 1,direct = 1;
boolean isAlive = true;
public Bullet(int x, int y,int direct)
{
this.x = x;
this.y = y;
this.direct = direct;
}
public int getX()
{
return x;
}
public void setX(int x)
{
this.x = x;
}
public int getY()
{
return y;
}
public void setY(int y)
{
this.y = y;
}
public int getSpeed()
{
return speed;
}
public void setSpeed(int speed)
{
this.speed = speed;
}
public int getDirect()
{
return direct;
}
public void setDirect(int direct)
{
this.direct = direct;
}
public void run()
{
while(true)
{
try
{
Thread.sleep(50);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
switch(this.direct)
{
case 1:
y-=this.getSpeed();
break;
case 2:
x+=this.getSpeed();
break;
case 3:
y+=this.getSpeed();
break;
case 4:
x-=this.getSpeed();
break;
}
System.out.println("["+x+","+y+"]");
// if(x<0||x>400||y<0||y>300);
// {
// isAlive = false;
// break;
// }
}
}
}
}
Java发射子弹出错_能帮我看看这个子弹的坐标哪里错了吗相关推荐
- 自学java编译老是出错_编写HelloWorld程序编译时提示写入HelloWorld时出错是什么意思...
编写HelloWorld程序编译时提示写入HelloWorld时出错是什么意思 这个能出错的地方就难说了,能给出代码或者错误提示吗 为什么javac编译后说写入错误呢HelloWorld.java : ...
- java打开文件出错_打开文件错误太多,java.io.FileNotFoundException
在我的程序中,我有循环扫描一堆文件并读取其内容.问题发生在大约1500个文件的迭代中,似乎无法再现(或理解(由我)) 问题: java.io.FileNotFoundException: /path/ ...
- 自学java编译老是出错_为什么按照书上的代码,编译老是出错?
老是又小伙伴在群里说我的代码是按照书上的代码敲的,就是编译不过?想不通呀!目前市面上的一些书都是十来年以前编写的了,你不幸看的还是这些书,错误原因就在这里. 比如谭浩强的C语言程序设计这个本书都出了N ...
- java服务器内部出错_服务器遇到内部错误,导致无法完成此请求
在上个月我完成了一个项目,它运行正常的一切.但今天我试图运行该项目,但我无法看到项目的输出. 我收到以下错误. 输入例外报告 说明服务器遇到内部错误,导致无法完成此请求. 例外 java.io.Fil ...
- java jdk 未知错误_解决JAVA JDK安装出错的最常见问题,帮你排除困扰
一般来说,安装JAVA JDK的整个流程是很简单的,只要按照提示进行操作即可,就不会出现问题.但是呢,有小伙伴反映说,之前安装了JAVA JDK,进行卸载重装的时候出现错误提示,"正在进行另 ...
- 让电脑死机的java代码_小编为你win7系统Java活动脚本出错导致电脑死机的还原方法...
随着电脑的使用率越来越高,我们有时候可能会遇到win7系统Java活动脚本出错导致电脑死机问题,如果我们遇到了win7系统Java活动脚本出错导致电脑死机的问题,要怎么处理win7系统Java活动脚本 ...
- java让电脑死机怎么办,主编帮你win10系统Java活动脚本出错导致电脑死机的方法...
今天和大家分享一下win10系统Java活动脚本出错导致电脑死机问题的解决方法,在使用win10系统的过程中经常不知道如何去解决win10系统Java活动脚本出错导致电脑死机的问题,有什么好的办法去解 ...
- Java web小项目_个人主页(2)—— 边缘加速原理与实现
摘自:Java web小项目_个人主页(2)-- 边缘加速原理与实现 作者:丶PURSUING 发布时间: 2021-03-27 14:44:40 网址:https://blog.csdn.net/w ...
- java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at
[http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...
最新文章
- 银行不能成为外国资本的“***”
- centos设置ip
- paddlepaddle测试安装_百度paddlepaddle深度学习7日入门-CV疫情特辑心得
- Duplicated Numbers (10分)
- php放量文档,成交量放量过顶买入法(图解)
- 重磅!Facebook 更新 PyTorch 1.1,打算跨 GPU 分割神经网络 | 技术头条
- 打印十字图-蓝桥杯历届试题
- linux中ldd命令查看二进制文件(程序或库)所依赖的其他库(LIBTIFF_4.0未定义的引用问题)
- 晶振匹配电容如何计算?--转载
- 怎么查看电脑连接的wifi密码?2种方法分享给大家!
- 视频贴片广告有哪些形式,视频贴片广告展示形式如何?
- 弗兰克赫兹实验计算机仿真实验报告,大学物理实验
- 扇贝单词与百词斩的竞品分析
- play Framework 配置
- 2023全网首发抖音标签检测程序源码+花800买的/最新版本
- BD15AAANB10派克伺服阀
- 计算机视觉基础-图像色彩空间转换
- frequentism-and-bayesianism-chs-ii
- 马克扎克伯格节俭_马克·扎克伯格的垃圾实在很难抢
- excel工作簿打开密码破解
热门文章
- C#中Windows Media Player控件使用实例|方法
- Tinker 热修复框架模拟使用
- java获取tomcat路径
- pl/sql developer 设置oracle的date类型默认显示样式
- 深入理解php 匿名函数和 Closure
- Javascript document对象常用的方法和属性
- context.Request.Files超过了最大请求长度
- [Node.js] nodejs 连接 mysql数据库
- Snabbdom(虚拟dom-4-init函数)
- php迭代器实例,PHP迭代器和生成器用法实例分析