功能重绘无法正常工作

时间:2015-04-11 03:33:56

标签: java graphics repaint

我有重绘功能的问题,我有数字的数组描述了要绘制的图像。当我的角色移动数组中的数字是更改并且我想用更改的元素重新绘制整个地图时,但没有任何事情发生。

    player = new Player(2,7);

            this.addKeyListener(new KeyListener() {

                @Override
                public void keyTyped(KeyEvent e) {          
                }
                @Override
                public void keyReleased(KeyEvent e) {
                }
                @Override
                public void keyPressed(KeyEvent e) {
                    Point playerposition = player.returnPosition();
                    switch(e.getKeyCode()){

                    case KeyEvent.VK_LEFT:
                        player.moveHorizontal(-1);  
                        if(playerposition.x<=0)
                            player.moveHorizontal(1);

                        break;
                    case KeyEvent.VK_RIGHT:
                        player.moveHorizontal(1);
                        arr[15][15]=-1;
                        System.out.println(arr[15][15]);
                        if(playerposition.x>=960)
                            player.moveHorizontal(-1);
                        break;
                    case KeyEvent.VK_UP:
                        player.moveVertical(-1);
                        if(playerposition.y<=30)
                        player.moveVertical(1);
                        break;
                    case KeyEvent.VK_DOWN:
                        player.moveVertical(1);
                        if(playerposition.y>=690)
                            player.moveVertical(-1);
                        break;

                    }   
                    repaint();
                }
});
            Thread t = new Thread()
            {
            @Override
            public void run()
            {
            while(true)
            {

            try {
            Thread.sleep(1000 / 25);
            } catch (InterruptedException e) {
            e.printStackTrace();
            }}}
            };
            t.start();
}
void paintBackgorund(Graphics gr)
{ImageIcon background = new ImageIcon ("lib/jar/tlo.PNG");
Image backgroundpic;
backgroundpic = background.getImage();
gr.drawImage(backgroundpic, 0, 0, 990, 720, null);
}
@Override
public void paint(Graphics g)
{       
    Point playerposition = player.returnPosition();// testy
    System.out.println("x:"+playerposition.x);
    System.out.println("y:"+playerposition.y);
    for (int i=0 ; i <33 ; i++)
    {
        for(int j=1 ; j<24 ; j++)
        {
            if(arr[i][j] == 1)
                g.drawImage(((Grass)(objects.get(0))).objpic, (i*30), (j*30), 30, 30, null);

            else if(arr[i][j] == 2)
                g.drawImage(((Stone)(objects.get(1))).objpic, (i*30), (j*30), 30, 30, null);

            else if(arr[i][j] == 3)
                g.drawImage(((Diamond)(objects.get(2))).objpic, (i*30), (j*30),30,30, null);                
        }}
    g.drawImage(((Playerobj)(objects.get(3))).objpic,playerposition.x,playerposition.y,30,30,null);
}

void checkObject(int hor, int ver)
{
    int objPositionX,objPositionY;
    Point playerposition = player.returnPosition();
    objPositionX= (playerposition.x+hor)/30;
    objPositionY= (playerposition.y+ver)/30;
    if(arr[objPositionX][objPositionY]==1)
    {
        arr[objPositionX][objPositionY]=-1;
    }
    else if(arr[objPositionX][objPositionY]==2)
    {
        //function for stone
    }
    else if( arr[objPositionX][objPositionY]==3)
    {
        arr[objPositionX][objPositionY]=-1;
        //function for diamond
    }
}

0 个答案:

没有答案