我正在创建一个2D世界,其中有一个矩形的玩家,我想要做的是当玩家按下空格按钮时根据他的方向绘制一个块,问题是它只设置一个块加上它现在在修复后删除了我知道我的错误是在paint方法中。什么我想知道如何使它绘制块我每次按空间而不删除重新绘制后可以设置多次我知道我应该使用循环但我不知道我应该写它
>>> ''.join(['A', 'B', 'C', 'D'])
'ABCD'
}
答案 0 :(得分:2)
您需要将块存储在列表中。按空格键时添加一个新的。然后你可以在for循环中轻松地绘制所有这些。同样删除setBlock布尔值,因为它没有任何意义。
...
// introduce this class to hold a block
class Block{
public int x;
public int y;
public Block(int _x, int _y){
x = _x;
y = _y;
}
}
...
// boolean setBlock; // remove this boolean
ArrayList<Block> blocks = new ArrayList<Block>(); // list of all blocks
public platform(){...}
public void paint(Graphics g){
...
// if(setBlock){ // remove this boolean
if(playerDirection == 0){
g2.fillRect(playerx, playery, 50, 50);
}else if(playerDirection == 1){
g2.fillRect(playerx, playery, 50, 50);
}else if(playerDirection == 2){
g2.fillRect(playerx, playery, 50, 50);
}else if(playerDirection == 3){
g2.fillRect(playerx, playery, 50, 50);
}
// draw the blocks
for(Block b : blocks)
g2.fillRect(b.x, b.y, 50, 50);
// setBlock = false; // remove this boolean
//} // remove this boolean
}
public void keyPressed(KeyEvent e) {
...
if(e.getKeyCode() == KeyEvent.VK_SPACE){
// setBlock = true; // remove this boolean
// add a new block
blocks.add(new Block(playerx, playery));
repaint();
}
}
...