Draw in Agent

Moderator: Praktikum: Künstliche Intelligenz

ChrisW
Neuling
Neuling
Beiträge: 2
Registriert: 17. Mai 2016 12:32

Draw in Agent

Beitrag von ChrisW » 18. Mai 2016 18:31

Anbei, der Code den wir verwenden um diverse Felder zu zeichnen:

Zu beachten ist, dass wenn man zu oft über Schleifen iteriert, er irgendwann mit dem zeichen nicht mehr akzeptabel hinterher kommt.

Code: Alles auswählen

 @Override
    @SuppressWarnings("unchecked")
    public void draw(Graphics2D g){
        if(!DEBUG)
            return;
        HeatMapBase h = null;
        try {
            h = (HeatMapBase) heuristic.getHeuristicByClass(toDrawFrom);
        }catch (Exception e) {
            return;
        }
        int[][] heatField = h.getField(toDrawFrom);
        int minHeat = h.BASIC_HEAT;
        int maxHeat = h.maxKnownHeat;

        int[][] kbField = knowledgeBase.getField();


        for(int y = 0; y < height; y++)
            for(int x = 0; x < width; x++) {
                drawKBField(g,kbField,x,y);
                drawHeatMap(g,heatField,x,y,minHeat,maxHeat);
            }
    }
    private void drawHeatMap(Graphics2D g, int[][] heatField,int x, int y,int minHeat, int maxHeat){
        int fValue = heatField[x][y];
        if(fValue == 0)
            return;
        int val = (int)(Util.normalise(fValue,minHeat,maxHeat)*255);
        val = 255 - val;
        g.setColor(new Color(255,val,0,fValue == minHeat ? 0 : 100));
        int xPos = x * blockSize;
        int yPos = y * blockSize;
        g.fillRect(xPos,yPos,blockSize,blockSize);
    }
    private void drawKBField(Graphics2D g, int[][] kbField, int x, int y){
        int fValue = kbField[x][y];
        if(fValue== 0)
            return;
        int val = (int)(Util.normalise(fValue,0,5) * 180);
        g.setColor(new Color(255,0,255,val));
        int xPos = x * blockSize;
        int yPos = y * blockSize;
        g.fillRect(xPos,yPos,blockSize,blockSize);
    }

Zurück zu „Praktikum: Künstliche Intelligenz“