# zeichnen-programm



## shixlaw (11. Mai 2010)

hallo ich habe als hausaufgabe folgenede aufgabe bekommen:
Stift kann radieren
Informieren Sie sich in der Dokumentation über die Stift-Funktionen radieren() und normal().
Damit von zeichnen auf radieren umgeschaltet werden kann, benutzen Sie bitte die Tastatur.
Informieren Sie sich in der Dokumentation über die Klasse Tastatur.
Bei einem Tastendruck schaltet der Stift von zeichnen (normal-Modus) auf radieren (aber nicht wieder zurück).
Als Vorlage für diese Aufgabe halten Sich sich bitte an das folgende Struktogramm.

ich hab jetzt mal angefangen das programm zu schreiben aber es kommt die ganze zeit folgende fehlermeldung:
cannot find symbol - variable n
wie kann ich in java variablen erstellen???

hier mein quellcode

// Aktionsteil

```
do{
            if(dieMaus.istGedrueckt()+dieTastatur.wurdeGedrueckt(n))
            {
                meinStift.normal();
                meinStift.runter();
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
            }
            if(dieMaus.istGedrueckt()+dieTastatur.wurdeGedruckt(r))
            {
                meinStift.radieren();
                meinStift.runter();
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
            }
            else
            {
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
                meinStift.hoch();
            }
        }
        while(!dieMaus.spezialKlick());
```


----------



## shixlaw (11. Mai 2010)

ich seh grad ich hab nur den halben code gepostet...
hier ist der ganze falls nötig


```
import sum.kern.*;
/**
 * @author 
 * @version 
 */
public class meinProgramm2
{
    // Objekte
    Bildschirm derBildschirm;
    Stift meinStift;
    Maus dieMaus;
    Tastatur dieTastatur;
    

    // Konstruktor
    public meinProgramm2()
    {
        derBildschirm = new Bildschirm(500,500);
        meinStift = new Stift();
        dieMaus = new Maus();
        dieTastatur = new Tastatur();
       
    }

    // Dienste
    public void fuehreAus()
    {
        // Aktionsteil
      
        do{
            if(dieMaus.istGedrueckt()+dieTastatur.wurdeGedrueckt(n))
            {
                meinStift.normal();
                meinStift.runter();
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
            }
            if(dieMaus.istGedrueckt()+dieTastatur.wurdeGedruckt(r))
            {
                meinStift.radieren();
                meinStift.runter();
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
            }
            else
            {
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
                meinStift.hoch();
            }
        }
        while(!dieMaus.spezialKlick());
        
        
        // Aufraeumen
        meinStift.gibFrei();
        derBildschirm.gibFrei();
        dieMaus.gibFrei();
        dieTastatur.gibFrei();
    }
}
```


----------



## Michael... (11. Mai 2010)

shixlaw hat gesagt.:


> wie kann ich in java variablen erstellen???




```
int n = 1;
```

Aber Eventuell soll das ganze ja so lauten:
[JAVA=32]if(dieMaus.istGedrueckt()+dieTastatur.wurdeGedrueckt("n"))[/code]
Kenne allerdings die verwendeten Klassen nicht.


----------



## Tomate_Salat (11. Mai 2010)

Was für ein Typ soll [c]n[/c] sein? Das gleiche Problem hast du bei [c]r[/c]!


```
if(dieMaus.istGedrueckt() + dieTastatur.wurdeGedrueckt(n))
```

sollte wohl eher so ausschauen:

```
if(dieMaus.istGedrueckt() && dieTastatur.wurdeGedrueckt(n))
```

Wieviel Kenntnisse hast du den in Java, wenn du nicht weist, wie man variablen deklariert / wie man mehrere Bedingungen in IF-Anweisungen verwendet?! Schau dir vllt mal Java ist auch eine Insel an, du hast anscheinend echt nachholbedarf

Variablen erstellt man normalerweise so

```
String stringVar = "ich bin eine Zeichenkette";
int zahl = 5;
char buchstabe = 'a';
float kommazahl = 2.54;
```


----------



## shixlaw (11. Mai 2010)

danke schonmal für die Antworten 
nunja wir haben letzte woche mit java angefangen also nicht wirklich viel 
ich versuch jetzt einfach mal zu beschreiben was ich machen will:
ich will ein programm schreiben mit dem man bei mausklick zeichnen kann(wie bei paint)
das habe ich auch hinbekommen.
mein jetziger versuch beinhaltet noch die radier funktion, das heißt ich wollte bei tastendruck "n" normal zeichnen und bei tastendruck "r" wollte ich radieren


----------



## Michael... (11. Mai 2010)

Siehe meinen Post:


Michael... hat gesagt.:


> Aber Eventuell soll das ganze ja so lauten:
> [JAVA=32]if(dieMaus.istGedrueckt()+dieTastatur.wurdeGedrueckt("n"))[/code]


Ausprobieren musst Du es selbst, da es sich bei den verwendeten Klassen nicht um Standard handelt.


----------



## shixlaw (11. Mai 2010)

das habe ich schon ausprobiert klappt aber dennoch niht und es kommt folgende fehlermeldung:
wurdeGedrueckt() in sum.kern.Tastatur cannot be applied to (java.lang.String)


----------



## Tomate_Salat (11. Mai 2010)

nett mit was Ihr nach einer Wochen programmieren anfängt :-/. Wenn ich bedenke was für einen ****** wir in der Ausbildung in der BBS machen ;(. 

Naja ok, wäre nicht verkehrt wenn du die Dokumentation zu den von dir verwendeten Methoden hier mal postest, dann können wir dir zielgerichteter Helfen.


----------



## Michael... (11. Mai 2010)

War ja nur geraten. Was steht denn in der Dokumentation zur Methode drin?
Auch denkbar wäre:

```
if(dieMaus.istGedrueckt()+dieTastatur.wurdeGedrueckt('n'))
```


----------



## shixlaw (11. Mai 2010)

was für methoden??? 
ich hab letzte woche erst damit angefangen und es ist ein nebenfach von mir... 
als leistungkurz habe ich e-technik deswegen hab ich null plan von info

ich glaub das einzigste was mir bei meinem programm fehlt ist die variable n...
das heißt ich muss dem programm sagen, dass wenn ich die "n" taste drücke soll er normal zeichnen und wenn ich die "r" taste drücke soll es radieren nur leider kennt das programm wahrscheinlich nicht, dass ich mit n tatsächlich die n-taste meine


----------



## Tomate_Salat (11. Mai 2010)

shixlaw hat gesagt.:


> Informieren Sie sich in der Dokumentation über die Klasse Tastatur.


Poste doch mal, was dadrin für [c]wurdeGedrueckt(n)[/c] steht, dann können wir dir auch Helfen. [c]n[/c] kann für x-tausend Klassen stehen!



shixlaw hat gesagt.:


> was für methoden???


wurdeGedrueckt(n) ist z.B. eine Methode und dazu hätten wir gerne mal die Dokumentation eingesehen.

mfg

Tomate_Salat


----------



## shixlaw (11. Mai 2010)

wurdeGedrueckt

public boolean wurdeGedrueckt()

    Es wird geprueft, ob ein Zeichen im Tastaturpuffer ist.

    Returns:
        true, wenn mindestens ein Zeichen im Zastaturpuffer ist.


----------



## Tomate_Salat (11. Mai 2010)

der verlangt dann aber keinen parameter, und was steht in [c]istGedrueckt[/c]?


----------



## shixlaw (11. Mai 2010)

istGedrueckt

public boolean istGedrueckt()

    Prueft, ob eine Maustaste im Moment gedrueckt ist.

    Returns:
        true, wenn eine Maustaste gedrueckt ist.

aber darum  handelt es sich nicht


----------



## Tomate_Salat (11. Mai 2010)

das problem ist: nach der Doku erwarten beide Methoden keine Parameter...Machen wirs einfacher: kannst du die gesamte Doku zur Tastatur mal posten?


----------



## shixlaw (11. Mai 2010)

Class Tastatur

java.lang.Object
  extended by sum.kern.Tastatur

public class Tastatur
extends Object

Eine Tastatur realisiert die Tastatureingabe des verwendeten Computers. Sie speichert die eingegebenen Tastaturzeichen in der Reihenfolge ihrer Eingabe. Für einige Tastatureingaben stehen bereits Konstanten zur Verfuegung: ESCAPE, ENDE, POS1, PFEILLINKS, PFEILRECHTS, PFEILOBEN, PFEILUNTEN, BILDUNTEN, BILDAUF, TAB, EINGABE, BACKSPACE, DELETE, F1, F2, ... , F12

Version:
    7.0 vom 21.9.2008
Author:
    Bernard Schriek

Constructor Summary
Tastatur()
          Die Tastatur wird initialisiert und enthaelt keine Zeichen.

Method Summary
 void 	gibFrei()
          Dummy-Prozedur
 void 	weiter()
          Mit weiter() wird das vorderste Zeichen im Tastaturpuffer entfernt.
 boolean 	wurdeGedrueckt()
          Es wird geprueft, ob ein Zeichen im Tastaturpuffer ist.
 char 	zeichen()
          Das erste Zeichen des Tastaturpuffers.

Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait


Constructor Detail
Tastatur

public Tastatur()

    Die Tastatur wird initialisiert und enthaelt keine Zeichen.

Method Detail
gibFrei

public void gibFrei()

    Dummy-Prozedur

weiter

public void weiter()

    Mit weiter() wird das vorderste Zeichen im Tastaturpuffer entfernt. Falls der Tastaturpuffer vorher nicht mit "wurdeGedrueckt()" gestestet wurde, erfolgt eine Fehlermeldung.

wurdeGedrueckt

public boolean wurdeGedrueckt()

    Es wird geprueft, ob ein Zeichen im Tastaturpuffer ist.

    Returns:
        true, wenn mindestens ein Zeichen im Zastaturpuffer ist.

zeichen

public char zeichen()

    Das erste Zeichen des Tastaturpuffers. Es wird erst mit "weiter()" geloescht. Mehrere Aufrufe von "zeichen()" liefern also das gleiche Zeichen. Falls der Tastaturpuffer vorher nicht mit "wurdeGedrueckt()" gestestet wurde, erfolgt eine Fehlermeldung.

    Returns:
        erstes Zeichen im Tastaturpuffer


----------



## Michael... (12. Mai 2010)

Müsste dann in etwa so aussehen:

```
if (dieTastatur.wurdeGedrueckt()) {
    char c = dieTastatur.zeichen();
    dieTastatur.weiter();
    if (c=='n') {
        ...
    }
    else if (c=='r') {
        ...
    }
    ...
}
```


----------



## shixlaw (12. Mai 2010)

ah sauber danke 
jetzt hab ich nur noch ein letztes problem
dieTastatur.weiter();
ist ja dafür da, um den tastaturpuffer zu leeren...
das problem dabei ist, dass wenn ich diese funktion in die if zeile setze er es die ganze zeit wiederholt und ich damit die taste 'n' die ganze zeit gedrückt halten muss, um etwas zu zeichnen


----------



## ARadauer (12. Mai 2010)

Michael... hat gesagt.:


> War ja nur geraten. Was steht denn in der Dokumentation zur Methode drin?
> Auch denkbar wäre:
> 
> ```
> ...



eher


```
if(dieMaus.istGedrueckt() && dieTastatur.wurdeGedrueckt('n'))
```

die bringen euch nicht mal && und || bei und wollen das ihr paint schreibt...


----------



## newbie2009 (12. Mai 2010)

ich denke ma , es soll denen nur den umgang mit java näher bringen , deshalb wurden die Klassen von ihrem lehrer bestimmt schon so implementiert, dass man diese nur logisch zusammensetzt um zum ergebnis zu kommen  ansonsten bezweifle ich , dass wenn man nicht mal weiß , was eine methode ist sowas auf die beine bekommt


----------



## shixlaw (13. Mai 2010)

```
import sum.kern.*;
/**
 * @author 
 * @version 
 */
public class meinProgramm2
{
    // Objekte
    Bildschirm derBildschirm;
    Stift meinStift;
    Maus dieMaus;
    Tastatur dieTastatur;
    

    // Konstruktor
    public meinProgramm2()
    {
        derBildschirm = new Bildschirm(500,500);
        meinStift = new Stift();
        dieMaus = new Maus();
        dieTastatur = new Tastatur();
       
    }

    // Dienste
    public void fuehreAus()
    {
        // Aktionsteil
     char c = dieTastatur.zeichen();
     
        do{
            if(dieMaus.istGedrueckt && dieTastatur.wurdeGedrueckt('n'))
            {
                meinStift.normal();
                meinStift.runter();
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
            }
            
             
                
            
             else if( dieMaus.istGedrueckt && dieTastatur.wurdeGedrueckt('r'))
                {
                  
                        meinStift.radiere();
                        meinStift.zeichneKreis(10);
                        meinStift.runter();
                        meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
                    
                }
            
            else
            {
                meinStift.bewegeBis(dieMaus.hPosition(),dieMaus.vPosition());
                meinStift.hoch();
            }
        
        }
         while(!dieMaus.spezialKlick());
      
        
        
        // Aufraeumen
        meinStift.gibFrei();
        derBildschirm.gibFrei();
        dieMaus.gibFrei();
        dieTastatur.gibFrei();
    }
}
```

wie kann ich n als variable anlegen???


----------



## Tomate_Salat (13. Mai 2010)

```
char einBuchstabe = 'n';
```
aber du solltest erstmal lernen eine Dokumentatin zu lesen, denn dein Quellcode ist fehlerhaft! [c]wurdeGedrueckt();[/c] erwartet keine Parameter:


			
				Doku hat gesagt.:
			
		

> ```
> public boolean wurdeGedrueckt()
> ```


aber sie liefert einen boolschen (wahrheitswert) zurück und dient nur zur überprüfung, nicht zur auswertung! 
Vergleiche mal den Ansatz von Michael... mit deinem SourceCode

MFG

Tomate_Salat


----------

