Du bist nicht angemeldet.

Werbeanzeige

1

22.06.2018, 22:32

via Maus auf Minimap navigieren

Hallo,

kurz gesagt, ich möchte erreichen, dass bei einem Klick auf die Minimap das "ominöse" Rechteck, welches den kartenauschnitt bestimmt, mitwandert und wenn möglich mittig bleibt.

Hier mein Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public Minimap(int x,int y,int width,int height,int mapwidth,int mapheight,int scale,JFrame window){
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        this.mapwidth = mapwidth;
        this.mapheight = mapheight;
        this.scale = scale;
        this.window = window;
        
        mapData = ImageInput.getMapData(mapwidth,mapheight,"chapter1","Kachelebene 1");
        
        minimap = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        pixels = new int[width*height];
        
        for(int i = 0;i<mapwidth;i++){
            for(int j = 0;j<mapheight;j++){
                int tileNr = mapData[i][j];
                tileNr--;
                for(int m = 0;m<32;m++){
                    for(int n = 0;n<32;n++){
                        pixels[i+j*mapwidth]=ImageInput.getTileImage(tileNr).getRGB(m,n);
                    }
                }
            }
        }
        minimap.setRGB(0,0,mapwidth,mapheight,pixels,0,mapwidth);
    }
    
    public void render(Graphics g,int x,int y,int xoffset,int yoffset){
        //Rechteck um die Minimap 
        Rectangle surround = new Rectangle(x,y,mapwidth*scale,mapheight*scale);
        
        if(surround.contains(MouseInput.mousex,MouseInput.mousey)) {
            //Berechnung der neuen Koordinaten
                        newx = (mapwidth-((window.getWidth()-MouseInput.mousex)/scale))*32;
            newy = (mapheight-((window.getHeight()-MouseInput.mousey)/scale))*32;
            
            xoffset = newx;
            yoffset = newy;
        }
        
                //Das miwandernde rechteck
        recx = x +(xoffset/32)*scale;
        recy = y + (yoffset/32)*scale;
        recwidth = ((window.getWidth()*mapwidth)/(mapwidth*32))*scale;
        recheight = (((window.getHeight())*mapheight)/(mapheight*32))*scale;
        Rectangle miniBox = new Rectangle(recx,recy,recwidth,recheight);
        
        g.drawImage(minimap,x,y,width*scale,height*scale,null);
        g.drawRect(miniBox.x,miniBox.y,miniBox.width,miniBox.height);
    }


Ich habe das Problem das ich bei klick über die grenzen der map hinaus komme.

Vielen Dank im Voraus...

2

12.07.2018, 08:47

hat sich erledigt!!!!!!!