Probleme beim Lösen einer Übungsaufgabe

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich bin gerade dabei eine Klausur zu bearbeiten, die sich mit dem Thema GBO beschäftigt. Nun besteht diese Klausur aus 8 Aufgaben. 7 dieser Aufgaben konnte ich lösen, während ich mit einer Aufgabe überhaupt nicht klar komme. Eine konkrete Frage in diesem Zusammenhang zu stellen wäre sinnloss. Aus diesem Grund stell ich einfach mal den Quellcode der Klasse mit der ich Probleme habe ins Netz. Ich hab die Klasse soweit wie ich konnte bearbeitet. Es wäre super wenn ihr mir bei der Lösung der Aufgabe 6 behilflich sein könntet.

Hier der Link zur Klausur (login: i, password: studis)


Code:
import javax.swing.*;
import java.awt.*;

public class GraphicView extends JPanel implements Listener
{
	private Area area;
	
	public GraphicView(Area area)
	{
		this.area = area;
		area.addListener(this);
	}
	
	public void update()
	{
		repaint();
	}
	
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		int[][] position = area.getPositions();
		int w = getWidth();
		int h = getHeight();
		int deltaX = w / position.length;
		int deltaY = h / position[0].length;
		FontMetrics fm = g.getFontMetrics();
		int labelHeight = fm.getAscent();
		
		for(int i=0; i<position.length; i++)
		{
			for(int j=0; j<position[i].length; j++)
			{
				String label = "";
				
				if(position[i][j] != 0)
				{
					g.setColor(Color.BLACK);
					g.fillRect(i * deltaX, j * deltaY, deltaX, deltaY);
					label = "player " + position[i][j] + " @ ";
				}
				
				label += "[" + i + "," + j + "]";
				int labelWidth = fm.stringWidth(label);
				g.setColor(Color.BLACK);
				//g.drawString(label);
			}
		}
		
		for(int i=0; i<position.length; i++)
		{
			//g.drawLine();
		}
		for(int j=0; j<position[0].length; j++)
		{
			//g.drawLine();
		}
	}
}
 
dei Programm benutzt unbekannte Klassen (Area & Listener) und es fehlt an einem einfachen JFrame drumherum + eine main-Operation um das ganze testen zu können,
das könntest du doch noch freundlicherweise einfügen,

für dein Problem sind sicherlich die Klassen Area & Listener unerheblich,
nimm doch einfach ein fertiges Test-int-Array und versuch erstmal dieses zu zeichen!, statt so umständliche Zusätze einzubauen


die Datei ist zumindest für mein Acrobat nicht lesbar,
aus dem Code wird kein Fehler ersichtlich, es wird wohl irgendein Quadrat von Positionen gemalt,
was geht denn daran nicht/ falsch?
 
Die Datei kannst Du nur mir der neuesten Acrobat Version öffnen. Hatte das gleiche Problem
 
also gut, dann installiere ich eben extra nen neuen Reader 😉

dir fehlt doch nur noch das Zeichnen des schwarzen Kastens,
das ist g.drawRectangle() an der richtigen Position + Länge und Breite,

für das Label sollst du die Farbe auf weiß setzen,
nicht nochmal g.setColor(Color.BLACK); 😉

der String muss dann auch an die richtige Position schreiben

schließlich mehrere Linien, da brauchst du Start- und Zielpunkte

--------------

für die Zeichenoperationen sie dir die Klassenbeschreibunng von Graphics oder irgendwelche Tutorials an,
(oder sollte wohl in deiner Vorlesung vorkommen 😉 ), müßig darüber zu reden

ausprobieren hilft auch ungemein

-----------

die sonstigen Berechnungen sind doch nur kühles Rechnen,
auch wieder mit viel Probieren verbunden wenn du am PC sitzt und nicht gerade in der Klausur

immerhin hast du ein schönes Bild als Vorlage, dazu kennst die die aktuelle Position im Gitter und die
Abstände zwischen einzelnen Feldern, mehr braucht man nicht

für den schwarzen Kasten ist die Breite z.B. deltaX-2 Pixel, die Hoehe deltaY-2, einfach ausprobieren!
die Position ist offensichtlich ungefähr i*deltaX+1 (je weiter rechts desto weiter rechts..) und j*deltaY+1
oder andersrum je nachdem wie das Array sortiert ist,

beim Label noch darauf achten nicht direkt am Rande des Feldes zu schreiben sondern lieber 5 Pixel weiter rechts
und auch die Hohe ist da eine andere, ausprobieren und verschieben!

bei den Linien musst du abhängig von i und j die x oder die y-Koordinate des Start- und Zielpunktes berechnen
(je nachdem ob horizontale oder vertikale Linien),
die anderen Koordinaten sind dann 0 und w oder 0 und h, da die Linien das komplette Panel überqueren
 
hallo Leute!

ich mache gerde ein Programmmierpraktikum .dabei geht s eigentlich um verschiedene Konzepte in Java unter anderem 😛rimitive Datenstrukturn,Kryptographie...und da ich mich mit Swing-JApplet nicht auskenne ,bitte ich euch um Hilfe bei der folgenden Aufgabe:

ich möchte ein Swing-JApplet mit Java erstellen.das applet soll "Hello word (Applet)" anzeigen.ich möchte dann eine html-Datei schreiben , die das Jar-Archiv von dem ertellten Swing-JApplet lädt und das enthaltene Applet ausführt.

für euere Hilfe wäre ich euch sehr dankbar .
 
ich zumindest weiß über Applets und insbesondere JApplets sehr wenig,
vielleicht ein eigenes Topic aufmachen?
gibt auch eine Extra-Unterarea 'Java Applets & Java Webstart'

edit: ach hast du ja schon 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben