- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我基本上正在编写这个基本的街机游戏,我需要圆圈来发射看起来像子弹或导弹的小矩形,以便在按下空格键时击中坏人,但我不知道如何实现。
这是我到目前为止的代码:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class main extends Applet implements Runnable, KeyListener {
private Image i;
private Graphics doubleG;
// x and y are used to set (x,y) positions
// dx and dy are the changes in position
private int x = 850;
private int y = 850;
private int x2 = 100;
private int y2 = 100;
private int dx = 50;
private int radius = 30;
private int dx2 = 4;
private int dy2 = 4;
private int x3 = 100;
private int y3 = 200;
private int dx3 = 5;
private int dy3 = 5;
private int x4 = 100;
private int y4 = 300;
private int dx4 = 3;
private int dy4 = 3;
public void init(){
setSize(1920,1080);
setBackground(Color.black);
addKeyListener(this);
}
public void start(){
Thread thread = new Thread(this);
thread.start();
}
public void run() {
while(true){
//Enemy
if(x2 + dx2 > this.getWidth() - radius - 1){
x2 = this.getWidth() - radius - 1;
dx2 = -dx2;
}
if(x2 + dx2 < 0 + radius){
x2 = 0 + radius;
dx2 = -dx2;
}
x2 += dx2;
// Enemy
if(x3 + dx3 > this.getWidth() - radius - 1){
x3 = this.getWidth() - radius -1;
dx3 = -dx3;
}
if(x3 + dx3 < 0 + radius){
x = 0 + radius;
dx3 = -dx3;
}
x3 += dx3;
// Enemy
if(x4 + dx4 > this.getWidth() - radius - 1){
x4= this.getWidth() - radius -1;
dx4 = -dx4;
}
if(x4 + dx4 < 0 + radius){
x4 = 0 + radius;
dx4 = -dx4;
}
x4 += dx4;
// EVERYTHING ABOVE KEEPS ASTEROIDS IN THE SCREEN ALLOWING IT TO BOUNCE OFF WALLS
repaint();
try{
Thread.sleep(17);
} catch (InterruptedException e){
e.printStackTrace();
}
}
}
public void stop(){
}
public void update(Graphics g){
// this function stops the flickering problem every time the ball moves by copying the image instead of repainting it
if(i == null){
i = createImage(this.getSize().width, this.getSize().height);
doubleG = i.getGraphics();
}
doubleG.setColor(getBackground());
doubleG.fillRect(0,0,this.getSize().width, this.getSize().height);
doubleG.setColor(getForeground());
paint(doubleG);
g.drawImage(i,0,0,this);
}
public void paint(Graphics g){
g.setColor(Color.BLUE);
g.fillOval(x, y, radius*2, radius*2);
g.setColor(Color.RED);
g.fillOval(x2, y2, radius + 10, radius + 10);
g.setColor(Color.RED);
g.fillOval(x3,y3, radius + 10, radius + 10);
g.setColor(Color.RED);
g.fillOval(x4, y4, radius + 10, radius + 10);
}
public void moveRight(){
if (dx-1 > -20){
dx += 1;
}
if(x + dx > this.getWidth() - radius - 1){
x = this.getWidth() - radius - 1;
dx = -dx;
}
x += dx;
}
public void moveLeft(){
if(dx - 1 > -20){
dx -= 1;
}
if(x + dx < 0 + radius){
x = 0 + radius;
dx = -dx;
}
x -= dx;
}
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
switch(e.getKeyCode()){
case KeyEvent.VK_LEFT:
moveLeft();
break;
case KeyEvent.VK_RIGHT:
moveRight();
break;
}
}
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
最佳答案
KeyListener
仅在注册的组件可聚焦并且具有焦点时才会引发 KeyEvent
。super.paint
,预计会出现一些严重的绘画伪影Applet
)的paint
JApplet
和 JPanel
的组合作为主绘图表面,覆盖它的 paintComponent
方法。在这种情况下,还可以考虑在 Thread
上使用 javax.swing.Timer
,除非您想尝试在更新之间保持可变的延迟。这也将允许您使用 key bindings API克服与 KeyListener
关于Java 小程序 : Cant figure out how to display rectangle on keypressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23643679/
有谁知道这种情况发生或应该发生的情况,粗略地浏览一下文档是没有帮助的。 最佳答案 只有在矩形不相交的情况下才会发生这种情况。例如 new Rectangle(0, 0, 10, 10).interse
我看到 System.Drawing.Rectangle 类有两组属性: X、Y、宽度、高度 左、上、右、下 Width 和Right 之间的区别很明显。但我不明白 Left 和 Top 属性背后的原
给定一个元组列表(包括 x, y, width, height 这四个值以二维坐标定义一个矩形)。目标是在原始列表中检查一个矩形是否在另一个矩形内部(如果是,则只取较小的,较大的丢弃) 最佳答案 如果
我去的论坛上有人说我不应该使用 Rectangle.intersects 进行碰撞检测,而应该使用这个算法: boolean rectangleIntersects(float rect1x, flo
Rectangle 类扩展了 ClosedShape 类。当我尝试创建 Rectangle 的实例时,出现编译器错误: constructor Rectangle in class Rectangle
以下是intersects(Rectangle r) awt Rectangle 的方法 源代码。 我添加一些以 //* 开头的评论与我的问题相关: 由于代码验证 rw (例如)为正,则 rw rw+
我正在使用 Dr. Java,语言是 java ...我是初学者* 只是一个基本的矩形 问题: 创建一个构造 Rectangle 对象 (java.awt.Rectangle) 的程序。该对象应具有
有没有办法知道 libgdx 中两个 Rectangle 之间的交集 Rectangle 面积,就像 C# 中的 Rectangle http://msdn.microsoft.com/en-us/l
所以我正在做一个Java作业,我必须创建一个矩形类,该类在一个绘制重叠矩形的程序中使用,并且在矩形重叠的地方,用新的颜色绘制一个新的矩形。我添加了硬件描述的链接,因为我认为让您查看它比我试图解释它更容
我有一个网格,用户可以在上面绘制矩形(实际上是房子里的房间)。由于房间不能相互交叉,因此我尝试在绘制第二个房间之前检查是否存在冲突。到目前为止,我设法检查第二个矩形的“目标点”是否在第一个矩形内部(=
我不明白为什么这个程序不起作用。我是 C++ 的新手,在学习了三年 Java 后转行。我认为 Java 中的错误消息毫无意义,但我在 C++ 中得到的错误只是直截了当的胡言乱语。这是我真正能理解的。
在 OnPaint 方法中绘图时,我一直偏离 1 个像素。我不明白为什么。 不过,我不确定是不是我算不上! 我已经回到绘图板,在 1 个面板中使用 1 个标签,因为我确定我正确地计算了这些,我有大量的
找到适合空白空间的面积最大的矩形的最有效算法是什么? 假设屏幕看起来像这样('#' 代表填充区域): .................... ..............###### ##.....
我正在查看一个包含两个矩形的控件:一个在另一个矩形内。我希望用户能够拖动内部矩形,调整它的大小,并在可能的情况下在外部矩形的范围内旋转它。这些值应该是可绑定(bind)的,以便我可以在更新时将这些值存
两者有什么区别?使用其中任何一种时,我都没有发现我的项目有任何差异,但我不知道这两种方法有什么用,这让我很困扰。 请指教! 最佳答案 布局矩形是控件的外观视觉尺寸。它与实际框架不同,因为在控件的视觉不
你可以有一个父类(super class) Shape,Square 和 Rectangle 是两个子类,但是你可以有 Square 子类 Rectangle,因为 Square 是一个四边相等的特殊
我正在阅读以下代码,并开始想知道 Rectangle.prototype = Object.create(Shape.prototype) 和 Rectangle.prototype = Shape.
我看到了两种不同的模式和解释。来自 DailyJS 和许多其他人的一篇:矩形.prototype = new Shape(); 然后是 Crockford 的 here 这意味着只是 矩形.proto
Sorry, the original image cannot be uploaded due to some security reasons. The following is a sch
以下代码是教程的一部分。我已经无数次根据教程检查代码,虽然它在视频上有效,但我的程序有以下错误: 1>------ Build started: Project: simpleclass, Confi
我是一名优秀的程序员,十分优秀!