- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉,我不知道如何正确表达标题。但我正在制作一个 Java 游戏,屏幕底部有一个桨,您可以左右移动它以避免小行星坠落。我的桨可以工作,但我不知道如何制作一颗下落的小行星。小行星目前只是一个矩形。我还希望能够调整速度和小行星坠落的数量。这是我的代码:
public class Main extends Applet implements KeyListener, MouseListener {
private Rectangle rect;
private Rectangle asteroidrect;
private ArrayList<Integer> keysDown;
private Image dbImage;
private Graphics dbg;
Random randomGenerator = new Random();
int speed = 8;
int level = 1; // change to 0 once start menu works
int xpos, ypos;
int blockx = 0;
int blocky = 0;
int width = 1024;
int height = 768;
String version = "0.0.1";
public static final int START_X_POS = 160;
public static final int START_Y_POS = 160;
public static final int START_WIDTH = 256;
public static final int START_HEIGHT = 64;
boolean startClicked;
boolean asteroid = false;
public void init() {
setSize(width, height);
addKeyListener(this);
addMouseListener(this);
setBackground(Color.black);
Frame c = (Frame)this.getParent().getParent();
c.setTitle("Asteroid Attack - Version " + version);
keysDown = new ArrayList<Integer>();
rect = new Rectangle(460, 700, 64, 12);
asteroidrect = new Rectangle(0, 0, 48, 48);
addAsteroid();
}
public void update(Graphics g) {
dbImage = createImage(this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
if (dbImage == null) {}
dbg.setColor(getBackground ());
dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);
dbg.setColor(getForeground());
paint(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
if (level != 0) {
g2.setPaint(Color.gray);
g2.fill(rect);
//if (asteroid == true) {
g2.setPaint(Color.red);
g2.fill(asteroidrect);
//}
}
}
@Override
public void keyPressed(KeyEvent e) {
if (!keysDown.contains(e.getKeyCode()))
keysDown.add(new Integer(e.getKeyCode()));
moveChar();
}
@Override
public void keyReleased(KeyEvent e) {
keysDown.remove(new Integer(e.getKeyCode()));
}
public void moveChar() {
if (level != 0) {
int x = rect.x;
int y = rect.y;
if (keysDown.contains(KeyEvent.VK_LEFT)) {
x -= speed;
}
if (keysDown.contains(KeyEvent.VK_RIGHT)) {
x += speed;
}
rect.setLocation(x, y);
repaint();
}
}
public void addAsteroid() {
asteroid = true;
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void mouseClicked(MouseEvent me) {
if (level == 0) {
xpos = me.getX();
ypos = me.getY();
if (xpos >= START_X_POS && ypos >= START_Y_POS && xpos <= START_X_POS + START_WIDTH && ypos <= START_X_POS + START_HEIGHT ) {
level = 1;
}
}
}
@Override
public void mouseEntered(MouseEvent me) {}
@Override
public void mouseExited(MouseEvent me) {}
@Override
public void mouseReleased(MouseEvent me) {}
@Override
public void mousePressed(MouseEvent me) {}
}
如您所见,我已经添加了一个小行星物体和矩形。
最佳答案
看看这个例子。我使用了三个具有不同 x 和 y 点的不同小行星(矩形)。我用不同的偏移量来绘制它们。我使用了 Sing Timer 来设置重画的延迟。每隔几毫秒,y 位置就会改变并重新绘制。我还添加了上下键绑定(bind)以减慢或加快延迟。如果您有任何疑问,请告诉我。
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class Asteroids extends JPanel {
int astr1X = 50;
int astr1Y = 30;
int astr2X = 150; // x and y for 3 different asteriods
int astr2Y = 60;
int astr3X = 250;
int astr3Y = 45;
private final static int OFFSET = 5;
private final static int WIDTH = 20;
private final static int HEIGHT = 20;
private Timer timer = null;
public Asteroids() {
timer = new Timer(300, new ActionListener() { // timer with 150 millisecond delay
public void actionPerformed(ActionEvent e) {
astr1Y += OFFSET; // add 5 t the y poistion
astr2Y += OFFSET;
astr3Y += OFFSET;
if (astr1Y > 590) // if y is size of screen
astr1Y = 10; // make it 0. This brings
if (astr2Y > 590) // asteroid back to top
astr2Y = 10;
if (astr3Y > 590)
astr3Y = 10;
repaint();
}
});
timer.start();
Action downAction = new AbstractAction() { // slows down the timer
public void actionPerformed(ActionEvent e) {
int delay = timer.getDelay();
if (delay < 1000) {
delay += 100;
timer.setDelay(delay);
}
}
};
Action upAction = new AbstractAction() { // speeds up the timer
public void actionPerformed(ActionEvent e) {
int delay = timer.getDelay();
if (delay > 100) {
delay -= 100;
timer.setDelay(delay);
}
}
};
getInputMap().put(KeyStroke.getKeyStroke("UP"), "upAction"); // up key binding
getActionMap().put("upAction", upAction);
getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "downAction"); // down key binding
getActionMap().put("downAction", downAction);
}
private static void createAndShowGui() {
JFrame frame = new JFrame();
frame.add(new Asteroids());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public Dimension getPreferredSize() {
return new Dimension(350, 600);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(astr1X, astr1Y, WIDTH, HEIGHT);
g.fillRect(astr2X, astr2Y, WIDTH, HEIGHT);
g.fillRect(astr3X, astr3Y, WIDTH, HEIGHT);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
关于Java Sprite 掉落?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707114/
任何人都可以评论是否对图像使用 Sprite 的决定?我看到以下好处/权衡(其中一些可以减轻): 单个图像上的 Sprite 优点: 需要管理的图像更少 更容易实现主题图像 图像交换 (JS/CSS)
所以,我一直在 Unity 工作,但我决定是时候换成我更了解的东西了:JavaScript。我一直在考虑切换到 Phaser.js,但我有一些关于我什至在 Unity 中遇到的问题的问题,而且我在互联
所以我有一个木偶要在 Sprite Kit 中显示。木偶是由一堆不同的 body 部位组成的,当然每个部位都是一个.png。 所以我的过程是:我有一个 Marionette 对象(SKNode 子类)
我有一个 Sprite ,我将其初始化为 SKSPriteNode,它不断地从另一个 Sprite 上弹起,也以相同的方式初始化。 我无法弄清楚两者之间的冲突,并且到目前为止堆栈上没有任何帮助。 我将
标题说明了一切。我想知道 Sprite.getcontentsize、Sprite.gettexture、Sprite.getscale 之间有什么区别。以及它们是如何使用的。在这个问题之后我找不到任
我有兴趣尝试创建一些游戏,即在新的 sprite 工具包中。但是,对于我心目中的游戏,我宁愿使用方向键而不是操纵杆。因为我将从 Cocos 搬过来,所以我的旧程序不再有效(所以那个 dpad 也不会)
我正在 LibGdx 中开发 2D 射击游戏。 我不得不提一下,我是 LibGdx 的新手,我正在努力理解它是如何工作的。我有几年的Java和Android编程经验,所以我了解游戏概念。 我感兴趣的是
我正在使用 Compass 生成 CSS Sprite 。 我找到了一种方法来定义一次 Sprite 并在不同的 .scss 文件中使用它,但我不确定这是正确的解决方案。 到目前为止,我能找到的最好方
我在游戏中遇到背景音乐问题。当我从主菜单场景切换到游戏场景时,它停止,但是当游戏场景切换到gameOver场景时,它不停止。当我选择重播时,音乐也会重叠(从gameOver场景切换回游戏场景)。 要播
我是一名使用 libgdx 引擎的新程序员,想知道 Sprite 批处理的行为。特别是如何在程序生命周期中将 Sprite 添加到批处理中以进行绘制。到目前为止, Sprite 的所有示例都使用了一些
这可能是个愚蠢的问题,但如果有人能帮助我,我将不胜感激。 我有一个由 3 个垂直堆叠的不同图像组成的 Sprite ,但我试图让中间的图像(高度为 1px 和宽度为 194)重复,只是那条 1px 的
我正在尝试为我正在构建的菜单加载 spritesheet,但它不是一次显示一个图像,而是在元素的不同位置显示整个 spritesheet。 这是我使用两张图片的 CSS 代码: #mymenu ul.
我有两个 Sprite 组,ship_list 有 20 个飞船 Sprite ,all_sprites 有这 20 个 Sprite ,加上玩家 Sprite 。在主循环中,当检测到玩家与 ship
我制作了这个我可以抓取并四处移动的 Sprite 。我的问题是我希望能够“抛出” Sprite 。意思是,当我释放 Sprite 时,我希望它继续沿着我移动它的方向前进。就像扔球一样。 我该怎么办?
我目前正在开发 HTML/CSS 模板,我将实现以下社交媒体图标: http://www.premiumpixels.com/freebies/41-social-media-icons-png/ 它
在我的游戏中,我希望能够收集硬币。我有一个该硬币 Sprite 的数组列表,这样我就可以单独绘制多个硬币。这些硬币也随着背景移动(模拟汽车驾驶),我想要它,所以当硬币撞到汽车时,它会消失并被收集。感谢
我是 cocos2D 的新手,谁能提出一个简单的解决方案? 我有一个风车,风车上有 8 个条,每个条以 45 度隔开,其中风车的一半在屏幕上,一半在屏幕外。我想旋转风车,让它永远旋转。我还想在风车杆的
我使用的是主播中心分支,刚刚发现我的游戏出现的问题大部分都是这个原因。有没有一种方法可以使用 Sprite 的左下角而不是使用 (0, 0) 作为其中心来设置 Sprite ? 谢谢! 最佳答案 发现
我是 magic-importing我的 Sprite : // Creating a concatenated sprite image out of all sprites in the "/im
这个问题在这里已经有了答案: How do I detect collision in pygame? (5 个答案) 关闭去年。 想要创建一个包含 10 张图像的组。稍后屏幕上的图像不应重叠。我尝
我是一名优秀的程序员,十分优秀!