我正在创建一个小型Java Jpanel游戏,其中应该有一个火箭,它通过箭头上下移动,并通过太空射击。
触发方法应按以下方式工作:按下空格键,东西触发并在屏幕上移动,然后当它碰到某个x时,它就会消失。此外,您只能发射一次,直到另一颗子弹消失为止。
我不知道我在做什么错。首先,在我的代码启动后,您会看到子弹在屏幕上飞舞。
2,子弹没有消失。
第三,即使其他子弹仍然可见,它也允许我再次开火。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.*;
@SuppressWarnings("serial")
public class SpaceGame extends JPanel implements ActionListener{
Timer t = new Timer(2, this);
private ImageIcon rocket,asteroid,bullet;
private JLabel rocketlabel,ast1,ast2,ast3,bulletLabel;
public static int y=90,dy=0,bulletX=110,bulletY,i=0,canFire;
//public sound sound;
static boolean bulletFired=false;;
static JFrame f = new JFrame();
SpaceGame(){
this.setBackground(Color.black);
rocket = new ImageIcon(getClass().getResource("rocketFinal.png"));
rocketlabel= new JLabel(rocket);
this.add(rocketlabel);
asteroid = new ImageIcon(getClass().getResource("asteroid.png"));
ast1=new JLabel(asteroid);
ast2=new JLabel(asteroid);
ast3=new JLabel(asteroid);
bullet = new ImageIcon(getClass().getResource("bulletReal.png"));
bulletLabel = new JLabel(bullet);
canFire=1;
bulletLabel.setVisible(false);
this.add(ast1);this.add(ast2);this.add(ast3);this.add(bulletLabel);
f.addKeyListener(new controller());
this.setLayout(null);
this.setVisible(true);
}
public class controller implements KeyListener{
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode== KeyEvent.VK_UP) {
dy=-1;
}
if(keyCode== KeyEvent.VK_DOWN) {
dy=1;
}
if(keyCode== KeyEvent.VK_SPACE) {
if(canFire==0) {
System.out.println(String.valueOf(canFire));
bulletFired = true;
bulletY = y;
bulletX=110;
}canFire=1;
}
}
@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_UP: dy=0; break;
case KeyEvent.VK_DOWN: dy=0; break;
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
rocketlabel.setBounds(45,y,rocket.getIconWidth(),80);
fireBullet();
paintStars(g);
t.start();
}
public void paintStars(Graphics g) {
g.setColor(Color.yellow);
for(int i=0; i<5;i++) {
Random rand = new Random();
int o = rand.nextInt(500);
int p = rand.nextInt(300);
g.fillOval(o, p, 3, 3);
}
}
public void actionPerformed(ActionEvent e) {
if(y==-20) y=249;
if(y==250)y=-20;
y+=dy;
if(bulletFired=true) {
bulletX++;
if(bulletX==455)bulletFired=false;bulletLabel.setVisible(false);System.out.println(String.valueOf(bulletX)); canFire=0;
}
repaint();
}
public void fireBullet(){
if(bulletFired=true) {
bulletLabel.setVisible(true);
bulletLabel.setBounds(bulletX,bulletY+25,bullet.getIconHeight(),bullet.getIconWidth());
}
}
public static void main(String[] args) {
String filepath = "SpaceGameMusic.wav";
musicStuff musicPlayer = new musicStuff();
musicPlayer.playMusic(filepath);
SpaceGame t = new SpaceGame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(t);
f.setSize(500,335);
f.setVisible(true);
f.setResizable(false);
}
}
问题很简单,我忘记了在if(boolean)语句中使用==。
因此,我试图找出每个月(本例中为6月至7月)销售额变化最大的客户。 以下是我为了这个实践而创建的模型数据: 根据以上两个表,答案应该是CustomerID为10的客户,1998年6月至7月销售额增加350.28。 下面是我实现目标的代码;基本上,我创建了两个视图,一个是每年每个客户6月份的销售额总和,另一个是每年每个客户7月份的销售额总和,然后从7月份的销售额中减去6月份的销售额: 但是,我的输出
问题内容: 我正在尝试使用CASE表达式创建一个持久化的计算列: MSDN明确表示CASE是确定性的,这里 但是,我得到一个错误: 消息4936,级别16,状态1,行1表’Calendar’中的计算列’PreviousDate’无法保留,因为该列是不确定的。 当然,我可以创建一个标量UDF并将其显式声明为确定性的,但是有没有更简单的方法呢?我已经在获取最新的Service Pack中。谢谢。 问题
首先,使用setspn命令为用户注册服务主体名称。 setspn-CS/dummy@abc.com dummy user setspn-l虚拟用户 给出输出为 CS公司/dummy@abc.com 接下来,当使用 /mapUser 选项执行 ktpass 命令时,将修改用户帐户的服务主体名称,以便删除域组件。 ktpass/pass Password @ 123-out dummy . 1 . k
我通过使用map函数迭代来显示我的状态,这是一个数组。此外,我有一个按钮,在点击反转数组。 我认为我想做什么是相当明显的。但这对我不起作用,我不知道为什么。我必须单击两次来完成第一次还原,出现了奇怪的情况,即呈现的数组和Chrome中React开发工具在组件状态中显示的数组不匹配。 我无法解释这种行为。我开始认为这与我从道具中获得阵列有关,但我真的不知道。有什么想法吗?
以下是他们关于协会课程的演讲幻灯片: 有时,关联具有的属性或行为不仅仅属于两端的类。我们可以使用关联类对此进行建模。假设下图对学生分配到模块的模型进行了建模。 属性< code>finalMark不适合关联的任何“end”。此外,有必要为每个学生(每个模块)记录一个以上的分数,反之亦然。因此,属性< code>finalMark是< code>Student和< code>Module之间关联的属
我在react窗口列表元素中使用React/MUI Popover,并且无法正确定位Popover-它总是在窗口的左上角结束(组件无法在锚元素[in the docs])。 所以为了暂时解决这个问题,我决定使用参数来设置一个绝对位置——在我的例子中,就在窗口的中间。那也不行。 我已经查看了Chrome开发工具中的值,一切似乎都正常(即,我使用该工具时确实得到了一个锚定;我得到了有效的位置左/顶值;