在我的下面的代码中...我希望在底部添加一个黄色条,如果发射子弹,子弹到达顶部的移动条(这是一个替代的黄色和青色框的痕迹)和触摸它在一个黄色的盒子里。为此,我计划首先检测子弹接触移动条的像素的颜色,然后如果像素颜色为黄色则在下面添加黄色条.......... ..这是我的代码: //
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class abyss extends Applet implements Runnable,KeyListener{
int lim=446,l,src,i=-40,n,c,ct=450,cl=225,y,f,bl,bw,fr,mud=0;
Thread v=null;
public void init() {
setBackground(Color.black);
addKeyListener(this);
}
public void start() {
v=new Thread(this);
v.start();
}
public void run() {
try {
int trainDelay = 0;
while (true) {
if(ct<=200)
{repaint();
}
if (y == 1) {
if (f<=41) {
bl = cl + 25;
bw = 10;
f = lim;
}
if (f > 41) {
repaint(bl, f, bw, bw + 1);
if (--f<=41) {
if(l%80==0)
{mud=1;
ct=ct-20;
System.out.println("decreased");
lim=lim-20;
repaint();}
else if(l%80!=0 && (ct+20<=420))
{ct=ct+20;
lim=lim+20;
}
y = 0;
bw = 0;
}
}
}
if (trainDelay <= 0) {
repaint();
i = i + 40;
c = 1;
n = i / 40;
trainDelay = 200;
}
Thread.sleep(5);
trainDelay--;
}
} catch (Exception e) {
}
}
public void paint(Graphics g) {
if(ct>=200){
if(mud==1)
{g.setColor(Color.orange);
g.fill3DRect(0,ct+20,500,450-ct,true);}
g.setColor(Color.darkGray);
g.fill3DRect(0,200,30,300,true);
g.fill3DRect(470,200,30,300,true);
g.fill3DRect(0,470,500,30,true);
g.setColor(Color.blue);
g.fill3DRect(cl,ct,50,20,true);
setBackground(Color.black);
for(int j=n-1;j>=0;j--)
{ l=j*40;
if((c%2)==0)
{g.setColor(Color.cyan);
g.fill3DRect(l,0,50,40,true);}
else
{g.setColor(Color.orange);
g.fill3DRect(l,0,50,40,true);}
c++;
}
}
{g.setColor(Color.yellow);
g.fillOval(bl,f,bw,bw);
if(ct<=200)
{setBackground(Color.red);
g.setColor(Color.yellow);
g.drawString("You win!!",215,210);
}
} }
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_LEFT && cl>=38){
cl=cl-10;}
if(e.getKeyCode()==KeyEvent.VK_RIGHT && cl<=412){
cl=cl+10;}
if(e.getKeyCode()==KeyEvent.VK_UP){
y=1;}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void stop() {
try{wait();}
catch(Exception e) {}
}
public void destroy() {}
}
请告诉我如何检测颜色.........可以使用getColor()??
答案 0 :(得分:0)
看起来你有一个良好的开端。 我建议您将青色和黄色框放在具有颜色和位置属性的对象上。
为您的box对象创建一个getColor方法,并为您的box对象和项目符号对象创建一个getLocation方法。
当bullet.getLocation = box.getLocation时 然后是box.getColor
看一下这个Java / Processing App,它可以在点击时设置圆圈的颜色。它使用的原理与我刚才描述的相似。
https://sourceforge.net/projects/all-spark-cube/
https://github.com/spudstud/All-Spark-Cube/blob/master/Sandbox/Panel_2d/LedObject.pde