# Dart Scheibe programmieren



## horn27 (9. Okt 2008)

Aufgabe:

Entwerfen Sie einen Pseudocode für ein Applet, das ein Dartboard zeichnet! Ich weiß, dass es viel Arbeit ist ...Ich weiß auch, dass es etwas mit Sinus und Cosinus zu tun hat, ich brauche jemand, der mir bei den Deklarationen hilft und der mir auch ein Beispiel schreiben kann für eine "Ecke" des Boards, ich denke ja, dass man dann Copy - Paste machen kann, da die Winkel doch immer gleich sind bei so einem Dartboard .....lg


----------



## Quaxli (9. Okt 2008)

> Entwerfen Sie einen Pseudocode für ein Applet, das ein Dartboard zeichnet! Ich weiß, dass es viel Arbeit ist ...



So viel Arbeit ist es auch wieder nicht. Kleine Schleife, darin ein drawArc-Befehl (vgl. API: Graphics.drawArc(...))




> Ich weiß auch, dass es etwas mit Sinus und Cosinus zu tun hat,



Nö, hat es nicht. Siehe oben.



> ich brauche jemand, der mir bei den Deklarationen hilft und der mir auch ein Beispiel schreiben kann für eine "Ecke" des Boards, ich denke ja, dass man dann Copy - Paste machen kann, da die Winkel doch immer gleich sind bei so einem Dartboard .....lg



Wir machen keine Hausaufgaben. Wenn Du uns zeigst, was Du bis jetzt selbst gemacht hast, geben wir Dir gerne Tipps. 
Etwas mehr als ein Applet mit überschriebener paint-Methode sollte es aber schon sein.


----------



## 0x7F800000 (9. Okt 2008)

horn27 hat gesagt.:
			
		

> mir auch ein Beispiel schreiben kann für eine "Ecke" des Boards, ich denke ja, dass man dann Copy - Paste machen kann, da die Winkel doch immer gleich sind bei so einem Dartboard


Massacker? :shock:
Schon mal was von schleifen gehört?? :roll:


----------



## Guest (9. Okt 2008)

> Entwerfen Sie einen Pseudocode für ein Applet, das ein Dartboard zeichnet



Also unter Pseudocode versteh ich das ganze zum Großteil nur zu beschreiben und an wichtigen Stellen mit Codeteilen zu versehen..

Du musst da nicht alles Schritt für Schritt programmieren..

oder hab ich da jetzt was falsch verstanden  ???:L


----------



## 0x7F800000 (9. Okt 2008)

Was soll "pseudocode" bei einer solch platten aufgabe überhaupt?
Um irgendwelche abgefhrene Algorithmen zu verdeutlichen, kann man pseudocode benutzen.

Aber was will man beim zeichnen einer datscheibe verdeutlichen...? Die zeichnet man halt.


```
class A{
  main(){
    //scheibe zeichnen halt^^
  }
}
```
suuuper sinnvoller einsatz von pseudocode, macht alles sooo viel deutlicher^^ :autsch:


----------



## Guest (9. Okt 2008)

genau deswegen hab ich jetzt extra nochmal nachgefragt, ob ich da auch wirklich nix relevantes überflogen hab  :lol:


----------



## horn27 (9. Okt 2008)

ich soll einen Pseudocode und die Dartscheibe dann in ein Applet schreiben, ich bin kompletter Anfänger, also kenne ich keine Schleifen o.ä., ich dachte das hat was mit Winkeln zu tun, also Sinus, Cosinus....und keiner verlangt dass jemand Hausaufgaben für mich macht, ich brauche nur Hilfe, einen Ansatz wie ich so ne Dartscheibe programmiere, also Deklarationen und vllt ein Beispiel wie ich das machen muss....lg


----------



## horn27 (9. Okt 2008)

int xSt = 10, ySt = 10; 
      Dimension dim = getSize(); 
     int r0 = Math.min(dim.width, dim.height);/2-10;
     int r1 = 10*r0/12;
     int r2 = 9*r0/12;
     int r3 = 6*r0/12;
     int r4 = 5*r0/12;
     int r5 = 1*r0/12;
     int r6 = 1*r0/24;


sagt das jemand was? Kann mir das jemand erklären?





g.drawString("13",x,y);
      	stWinkel = stWinkel + weite;
      	x = xZen + (int)(rZeichen*Math.cos(stWinkel/360.*2.*Math.PI));
      	y = yZen - (int)(rZeichen*Math.sin(stWinkel/360.*2.*Math.PI));


das ist ein Bsp. für so einen Bogen....

  HILFE


----------



## Schandro (9. Okt 2008)

Du kannst keine Schleifen.



Komm, machs dir selber leicht un lern Java vom anfang an, bitte! Wenn dir das jetzt jemand erklärt bringt dir das eh nichts.


----------



## 0x7F800000 (9. Okt 2008)

@Schandro: volle zustimmung  :toll: 

@OP: wenn du nicht mal von den allerprimitivsten grundlagen ahnung hast, dann kannst du alles was mit grafik und applets zu tun hat erstmal vergessen. Zumindest für die stunde, die du brauchst, um dir die nötigen grundlagen beizubringen.


----------



## horn27 (9. Okt 2008)

oh danke für eure Hilfe ....wie soll ich es lernen wenn es mir keiner erklärt...sorry wenn ich Anfänger bin, ich dachte dass ist ein Hilfeforum....


----------



## SlaterB (9. Okt 2008)

Hilfe = 5 Min. Tipp damits wieder 1 Stunde alleine weitergeht = effektiv,
Hilfe != Programmierkurs = uneffektiv (Zeit/Nutzen)


----------



## horn27 (9. Okt 2008)

wo ist das Problem mir ein Bsp zu geben und ich es mir dann selbst erkläre


----------



## SlaterB (9. Okt 2008)

von Beispielen ist das Internet voll, z.B.
http://www.addison-wesley.de/Service/Krueger/kap14003.htm

genau ein Beispiel, welches deine aktuelle Aufgabe löst, widerspricht natürlich einem gewissen Grundsatz,
den kannst du dir sicher denken


----------



## 0x7F800000 (10. Okt 2008)

Hab mich jetzt mal dran versucht: gar nicht übel die aufgabe, hab da immerhin 86 Zeilen gebraucht bis sich das alles ordentlich skalieren lies...

Bis du dir sicher, dass es die allererste java aufgabe ist, die du bekommst, und dass du nicht längst wenigstens schleifen können müsstest?


----------



## Quaxli (10. Okt 2008)

Hast Du eine Schleife benutzt oder bewußt auf die vordeste Front der Programmiertechnologie verzichtet? ;-)


----------



## Guest (10. Okt 2008)

Also ich muss doch zugeben dass wenn es wirklich die allererste Aufgabe ist schon etwas schwierig ist.. 

Ich weiß ja auch nicht aber bei mir waren erste Aufgaben einfache Ausgaben auf der Console, Grundrechenarten oder Schleifen..aber ein Applet am Anfang find ich doch etwas komisch und eher unangebracht...


----------



## Quaxli (10. Okt 2008)

Lt. der ersten Aufgabenbeschreibung, soll es ja nur Pseudo-Code sein, keine wirkliche Umsetzung. Und auf die Kreissegmente wurde er im 2. Posting von mir hingewiesen (drawArc...).

Es sollte doch für einen Anfänger eine lösbare Aufgabe sein,
a) in der API den drawArc-Befehl nachzuschlagen oder vielleicht sogar nur als zeichneKreissegment(..) darzustellen und
b) das Ganze in eine Schleife zu verpacken, die n Kreissegmente zeichnet

Und eine Schleife ist definitiv ein Anfängerthema. Gerade damit lernt man doch die entpsrechende Denkweise, die man zum programmieren braucht.


----------



## 0x7F800000 (10. Okt 2008)

Quaxli hat gesagt.:
			
		

> Hast Du eine Schleife benutzt oder bewußt auf die vordeste Front der Programmiertechnologie verzichtet? ;-)


wegen der fortgeschrittenen kariertheit der Fläche habe ich sogar zwei benutzt, und musste die sogar schachteln *uuu kompliziert*


----------



## horn27 (10. Okt 2008)

ich kenne keine Schleifen, ich habe bisher nur einen variablen Kleinbuchstaben ( p ) und ein Schweizerkreuz programmiert!


----------



## SlaterB (10. Okt 2008)

siehe meinen zuvor gepostenen Link, darin werden zur Genüge Schleifen benutzt,

bevor du das dort alles nicht verstehst, musst du gar nicht erst anfangen


----------



## 0x7F800000 (10. Okt 2008)

horn27 hat gesagt.:
			
		

> ich kenne keine Schleifen, ich habe bisher nur einen variablen Kleinbuchstaben ( p ) und ein Schweizerkreuz programmiert!


ach so, jetzt geht die geschichte wieder los...
Seit diesem bescheuerten Buchstaben ist schon eine woche vergangen. Inzwischen müsstest du nicht nur wissen was eine schleife ist, sondern an jeder ecke mit generics und multithread-programmen herumballern... (etwas übertrieben, aber die richtung sollte klar sein)
Wofür hast du denn die ganze woche genutzt? Warst du wirklich dauernd so beschäftigt, dass dir keine 20 Minuten blieben, um dir was über schleifen durchzulesen? :roll:


----------



## horn27 (10. Okt 2008)

also Kollege, 
1. bin ich davon ausgegangen, dass dies hier ein Hilfeforum ist für ANFÄNGER ! siehe oben "Anfängerfragen", 
2. wenn du den ganzen Tag am PC sitzen kannst und sonst nichts zu tun hast tust du mir leid ! Ich habe noch ein anderes Leben, und vor allem noch ca. 10 andere Fächer für die ich auch lernen muss! 
3. kann ich nur das machen was ich bisher, laut Lehrplan, gelernt habe, wenn ich keine Schleifen kenne und du nicht damit einverstanden bist wende dich doch bitte an meinen Dozenten! 

mit freundlichsten Grüßen

Horn27


----------



## Schandro (10. Okt 2008)

he du,

is ganz normal hier angemacht zu werden, wenn man Hilfe für ein en bissel schwereres Programm haben will, selber aber keine Ahnung hat (bissel übertrieben). Da denkt natürlich jeder, das du nur zu faul bist um die Hausaufgaben selber zu machen. Keine Ahnung ob das auf dich zutrifft....
Schreib doch bitte mal soviel von dem Pseudocode, wie du selber weißt. Dann wird es genug antworten geben, die dir helfen...

Tut mir leid das ich dir grad bei der Dartscheibe nich weiterhelfen kann.


----------



## horn27 (10. Okt 2008)

das was ich bisher weiß habe ich vorher schon geschrieben, siehe Seite 1 ! Ich komme einfach nicht weiter, es soll hier keiner Hausaufgaben machen, ich brauche doch nur eine plausible Erklärung und vllt ein kleines Beispiel!


----------



## 0x7F800000 (11. Okt 2008)

horn27 hat gesagt.:
			
		

> 1. bin ich davon ausgegangen, dass dies hier ein Hilfeforum ist für ANFÄNGER ! siehe oben "Anfängerfragen"


Du wurdest hier auch schon mehrmals darauf hingewiesen, dass du den fillArc() befehl nehmen solltest, und diesen in einer schleife ein paar mal wiederholen solltest, bis eine geschlossene Fläche entsteht. Das hatte der Quaxli schon hingeschrieben, das kann man auch ziemlich direkt in pseudocode umschreiben.


> 2. wenn du den ganzen Tag am PC sitzen kannst und sonst nichts zu tun hast tust du mir leid ! Ich habe noch ein anderes Leben, und vor allem noch ca. 10 andere Fächer für die ich auch lernen muss!


Hast ja recht, das mit mir ist schon eine traurige geschichte^^

Sry, wenn du dich hier ein wenig angegriffen fühlst.
Die Sache ist folgende: (ich spreche jetzt mal nur für mich, davon würden sich die meisten im Forum sicherlich distanzieren. und bitte nichts zu früh übel nehmen, sondern zuerst durchlesen, das ist nicht als angriff, sondern lediglich als eine hypothetische möglichkeit aufgeschrieben. Ich kenn dich nicht, eben deswegen schreib ich, warum es schwer ist, einzuschätzen, mit welchem ziel du hier bist)

Wenn du jetzt einfach sagst, dass du genug mit anderen Fächern zu tun hast, dass du eigentlich nix mit java zu tun haben willst, und dich für informatik o.ä überhaupt nicht interessierst, und eh lieber irgendetwas anderes machst (Geschichte lernen, E-Gitarre spielen, Theaterstücke aufführen, malen, Umweltschutzorganisationen unterstützen) also absolut keinen bock hast, diese hausaufgabe zu machen, dann poste ich hier sofort den fertigen code (den habe ich eh schon zum spaß eingetippt). Wenn du meinst, dass Informatik nur ein nerviger, von verblödeten bürokraten aufgezwungener ballast ist, sehe ich das ein. Ich habe in der Schulzeit ja selbst so ähnlich gedacht (allerdings über andere fächer), und denke immer noch, dass das system viel zu unflexibel ist .(Typ 1)

In meinem fall war Geschichte der völlig unnötige Ballast.
Wenn ich etwa für eine imho völlig sinnfreie geschichtshausaufgabe in einem Geschichtsforum gefragt hätte, was denn jetzt der grund für den ausbruch des Siebten Weltkrieges im Jahre 1314 vor Buddha gewesen ist, und man mir nur den äußerst nützlichen aber nicht konkreten Tipp a la "Betrachte doch mal die Aussenpolitik der Maya gegenüber den Eskimos" o.ä. geben würde, wäre ich auch nicht allzu froh drüber. 
deswegen zähle ich mich prinzipiell zum Typ 1, auch wenn ich nicht mit java, sondern mit geschichte stress hatte.

Aber leider gibt es viel zu oft auch leute, die sich nicht nur für java nicht interessieren, sondern viel mehr sich für _gar nichts_ interessieren, und sich dann mithilfe von solchen foren durchschmarotzen, um dann ein informatik-, oder gar mathematikstudium anzufangen, jedoch nur weil sie für Jura zu schlecht waren. Und dort machen sie weiter nach dem selben Motto: irgendwo abschreiben und vergessen... (Typ 2)

[Wie gesagt: muss auf dich alles nicht zutreffen, aber sowas kommt nun mal vor]

Gehörst du zum ersten Typ, dann habe ich eigentlich kein Problem damit, dir beim Umgehen der sinnfreien Vorschriften zu helfen, solang du fairerweise lediglich dafür sorgst, dass du in etwa auf 4.0 kommst, wie das bei mir in Geschichte der Fall war. 

Gehörst du zum zweiten Typ, dann will ich doch hoffen, dass sich deine einstellung ändert.

Gehörst du zu den leuten, die echt java lernen wollen (Typ 3), dann verstehe ich die ganze diskussion gar nicht: les dir einfach was über schleifen durch, hier oder hier und schreib das blöde programm, das dauert eine halbe stunde.
Über die For-schleife sind da jeweils, 20-30 zeilen text, da brauchst du mir nicht zu erzählen, dass ich zu viel Zeit hätte oder ähnliches...



> 3. kann ich nur das machen was ich bisher, laut Lehrplan, gelernt habe, wenn ich keine Schleifen kenne und du nicht damit einverstanden bist wende dich doch bitte an meinen Dozenten!


Schleifen kommen sicherlich vor Grafik. Da bin ich mir zu 99.999% sicher. Falls eurer Dozent* wirklich so ein Ausnahmefall ist, dann weise ihn erstmal höflich darauf hin, dass er gefälligst mal ein bisschen struktur in seinen Lehrplan reinbringen soll. Wenn der sich weigert, dann kann man hier meinetwegen eine Unterschriften-Aktion starten und dem anschließend eine email schreiben.

Ich glaube jedoch eher daran, dass er das alles erzählt hat, während du evtl. 5 minuten später zum unterricht gekommen bist, oder kurz abgelenkt warst oder ähnliches. Oder das war eh schon alles in anderen lehrveranstaltungen und zählt eh zu den Grundlagen, die du schleunigst nachholen solltest.

*Warum nennst du ihn eigentlich "Dozent"? Falls es eine Uni oder Fachhochschule ist, steht absolut ausser frage, dass du diese Grundlagen dringend nachholen solltest. Das hättest du doch nicht übersehen können. zB. an unserer Uni mussten die Informatiker zur begrüßung in der Einführungsveranstaltung erstma irgendeinen sortieralgorithmus implementieren, da wurde sofort klar gemacht, dass man wenigstens solch einfachste elemente wie schleifen beherrschen muss.


Also, wenn du hier tatsächlich echte lernhilfe bekommen willst, dann würde ich folgende kleine übungen (jeweils 3 minuten) vorschlagen:
1) Erstelle ein programm, das die zahlen von 0 bis 10 ausgibt
2) Erstelle ein programm, das zehn farbige streifen nebeneinander malt
3) Erstelle ein programm, das ein 10x10 feld mit abwechselnden farbigen quadraten füllt
4) Ersetze in dem programm die Quadrate durch Kreissegmente, und statt 10x10 zeichne nur noch 20x4, und zwar von aussen nach innen, damit die sich korrekt überdecken.
5) male noch das Bulls-Eye als einen einfachen Kreis in die Mitte rein.
6) wenn du ganz fleißig bist: male noch die zahlen drumrum. Da kommst du mit den bereits erwähnten trigonometrischen funktionen weiter.
7)Wenn du gaaaanz ganz fleißig bist, kannst du hier nochmal nachfragen, wie du die zahlen ordentlich zentrierst und die schriftgröße skalierst. Das ist zwar ebenfalls einfach, braucht aber bisschen zeit, bis man das richtige in der Doku gefunden hat.

[kannst auch paar schritte überspringen, wenn's dir zu simpel ist]

Dann wärst du mit der Aufgabe nach etwa einer halben stunde fertig, und hättest jeden schritt verstanden.
Wenn ich hier dagegen einfach nur den code poste, verstehst du gar nichts, und der "Dozent" wird dann sicherlich auch nachfragen, wo du sowas her hast, dann nützt dir das nichts, sondern verursacht nur ärger.

Also, viel spaß, hoffe mal, dass du zu den leuten gehörst, die einfach java lernen wollen... :toll:


----------



## horn27 (11. Okt 2008)

Andrey hat gesagt.:
			
		

> horn27 hat gesagt.:
> 
> 
> 
> ...



will ich ja auch


----------



## 0x7F800000 (11. Okt 2008)

> Ich bin ohne jede Vorkenntnisse von Java ins Studium gegangen, wie die meisten in unsere Klasse, ich dachte immer man geht studieren um etwas zu lernen!?


Hmm. 
Okay. 
Ich glaub ich muss, was die toleranz zu anfänglichen schwierigkeiten angeht, doch noch ein bisschen üben.
Schließlich will ich vielleicht irgendwann eines Tages auch Vorlesungen über Musik anhören. Ich kann mir vorstellen, dass wenn ich da reinmarschiere, und sage, dass ich noch nie irgendein Musikinstrument gesehen hab, dann werden mich die leute wohl auch ziemlich schief anguggen, aber das ist nun mal so, obwohl ich mich für's thema eigentlich auch "interessiere"...
Daher kann ich mich in deine lage sogar eigentlich ganz gut hereinversetzen.

Aber wie dem auch sei: Schleifen sind nun mal das allergrundlegendste in Programmiersprachen (imperativen programmiersprachen wohlbemerkt, bei den logischen und funktionalen gibt's die nich mal).

Wenn du noch dieses Semester schaffen willst, würde ich dir empfehlen, einfach jeden schritt aus der vorher geposteten Liste durchzugehen. Mach dir erstmal gar keinen Kopf über die dartscheibe, bei 0 grundkenntnissen ist das echt ein Tick zu heftig, ohne schleifen und arrays ist das schlicht und einfach unmachbar. Blättere deshalb das kapitel in der Insel durch, und versuche einfach die erste Teilaufgabe mit zahlen von 0 bis 10 zu erledigen, und poste das ergebnis hier. 

Also, gegeben:
Schlüsselwörter "class" "public" "static", 
Primitiver datentyp "int", 
Schleifensyntax "for(initialisierung;bedingung;aktionnachJedemSchleifendurchlauf){}"
Typ: Applikation, also erstmal ganz einfach mit der main-methode, lass die applets erstmal draussen.
falls der Prof nicht mal das erzählt hat: schreib dir erstmal eine hello-world applikation.

So, damit sollte die erste teilaufgabe zu schaffen sein. Wirst dich womöglich wundern, wie schnell sich ein solches Programm zu einer dartscheibe ausbauen lässt.


----------



## horn27 (11. Okt 2008)

so ganz ohne Kenntnisse bin ich im moment dann doch nicht, ich habe dieses Hello World mal gemacht, einfach mit drawString oder? Ich habe diesen "bescheuerten" Buchstaben  gemacht, ein kleines p, also mit Rechtecken, Kreisen, Kreisbogen kann ich auch...dann ein Schweizerkreuz, auch nicht schwer, roter Hintergrund, zwei weißre Rechtecke übereinander gelegt...ich schreib dir mal was ich bisher gemacht habe wegen der Dartscheibe:
			int s; 
      Dimension d = getSize(); 
      s = Math.min(d.width, d.height); 

      	g.setColor(Color.black);
      g.fillOval(0,0,s,s); 
      	g.setColor(Color.white);
      	g.fillArc(0,0,s,s,351,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,315,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,279,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,243,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,207,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,171,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,135,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,99,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,63,18);
      		g.setColor(Color.white);
      	g.fillArc(0,0,s,s,27,18);


kannst du mir sagen ob das soweit in Ordnung ist? Und wie ich jetzt weiter vorgehen muss? lg


----------



## Spin (11. Okt 2008)

huhu, genau solche Leute suche ich eigentlich. Ich hatte in der Plauderecke ein Newbie Thread eingerichtet, der aber von den Pros niedergestreckt wurde.

Ich bin auch Anfänger, lerne aber jeden Tag dazu und Anweisungen, Methoden, Klassen sind wie Vokabeln. Mir wurde auch von Grafiken abgeraten und alle haben auch damit recht, denn es bringt ein nichts, wenn man nicht mal die Basics kennt. Deklarieren ist das einfachste^^.



Doch würde ich Gäste oder Pro-Member darum bitten, einfach besser auf Newbies einzugehen. Denn jeder hat mal angefangen. Gebt euch doch die Mühe und erklärt. quasi einen Anschubser.


Ein ganzen Programmcode fordert doch keiner


----------



## 0x7F800000 (12. Okt 2008)

horn27 hat gesagt.:
			
		

> so ganz ohne Kenntnisse bin ich im moment dann doch nicht, ich habe dieses Hello World mal gemacht, einfach mit drawString oder?


Ouch :shock: eurer prof scheint wohl wirklich irgendwie nicht ganz dicht zu sein, wenn das wirklich ein java-anfängerkurs ist, so wie du das erzählst. Sag mal, hast du schonmal irgendein Programm gesehen, das kein Applet war, und "normal" auf die konsole ausgegeben hat? Also es ist so: ich bin eigentlich selbst ein großer fan von Grafischen sachen, finde die manchmal anschaulich, manchmal einfach schön. Aber jetzt mal klartext: für das ganze zeichnen von Rechtecken interessiert sich echt keiner. Falls das Programm überhaupt irgendeine GUI hat (was bei irgendwelchen Serverseitigen Programmen nicht der Fall ist: am ende kommt eh nur xml raus) dann ist die gui höchstwahrscheinlich aus fertigen schönen Swing-Komponenten aufgebaut. Das zeichnen von linien braucht man in der wirklichkeit eigentlich selten. Pädagogisch scheint dieses ganze Grafik-herumgemurkse anscheinend auch nix zu bringen. Deswegen verstehe ich echt nicht, wieso eurer Prof das überhaupt alles macht, das ist doch äußerst unproduktive und demotivierende Vorgehensweise. (Ausser es ist wirklich ein Vertiefungsmodul, in den du versehentlich reingeraten bist: mit Stundenplänen hatte ich anfangs wesentlich mehr schwierigkeiten, als mit dem stoff, soll auch vorkommen...)



> kannst du mir sagen ob das soweit in Ordnung ist? Und wie ich jetzt weiter vorgehen muss?


Nein, der code ist absolut nicht in ordnung. Wenn im code so massiv viele nicht selbsterklärende zahlen so weit verstreut vorkommen, muss damit irgendetwas faul sein.

Wie hast du diese ganzen zahlen ausgerechnet? Hast du das vielleicht sogar mit einem Taschenrechner ausgerechnet? Bist du dir dabei nicht irgendwie bescheuert vorgekommen? Schließlich hast du ja eine extrem schnelle rechenmaschine direkt vor dir. Das ist doch völliger Irrsinn, diese für solch einfache aufgaben nicht einzusetzen. stell dir doch mal vor, du musst siebzig tausend datensätze aus irgendeiner datei auslesen und verarbeiten, willst du dafür jedes mal den code neuschreiben, und alle siebzig tausend anweisungen manuell eintippen?
Ausserdem ist es unnötig, die weiße farbe siebzig mal neuzusetzen, einmal reicht auch schon.

Also: ich bitte dich zum letzten mal darum, hier irgendein programm abzuliefern, das die Zahlen von 0 bis zB 100 ausgibt, gerne auch graphisch in einem applet, sag ich auch nichts dagegen. Wenn du dich, aus welchem Grund auch immer, weiterhin weigerst, diesen simplen ersten Schritt zur lösung deines Problems zu machen, halte ich weitere hilfeversuche für überflüssig.


----------



## Quaxli (13. Okt 2008)

Spin hat gesagt.:
			
		

> ... Doch würde ich Gäste oder Pro-Member darum bitten, einfach besser auf Newbies einzugehen. Denn jeder hat mal angefangen. Gebt euch doch die Mühe und erklärt. quasi einen Anschubser.
> 
> 
> Ein ganzen Programmcode fordert doch keiner



Es geht nicht darum, daß hier keiner helfen will. Wenn Horn27 nach meiner ersten Antwort mit dem Hinweis auf fillArc(..) das gepostet hätte, was er jetzt ein Stück weiter oben geschrieben hat, hätter er sicherlich sofort Hilfe/Hinweise bekommen. Es geht den Meisten hier doch nur darum, nicht ausgenutzt zu werden! Daher wollen die Meisten, die hier Hilfe anbieten, sehen, daß der Hilfesuchende schon selber was gemacht hat. 
Wie Andrey so schön ausführlich dargelegt hat: Wir kennen Euch nicht und können Euch daher schwer einschätzen. Und ein bißchen Eigenleistung anstelle von ständigen klagen, kann man ja wohl verlangen (auch das hat Andrey schön formuliert). 
Es wurde hier schließlich schon Leuten geholfen, die übleren Code gepostet haben, als das was horn27 gebastelt hat


----------



## 0x7F800000 (13. Okt 2008)

Achso, ja, da sich hier ja anscheinend eh keiner mehr meldet (der horn27 ist wohl wieder mit den ganzen "anderen" Fächern beschäftigt  ) schreib ich hier mal die lösung rein, nur für den Fall, dass da wieder einer danach sucht [es gab ja auch schon eine identische Frage in dem Spiele-Programmierungsforum]


```
import javax.swing.*;
import java.awt.*;

public class Darts extends JComponent{
	
	//proportionen: aus wikipedia abgeschrieben
	private static final double[] proportions=new double[]{6.35,15.9,99,107,162,170,200,230};
	//punkteverteilung
	private static final int[] score=new int[]{6,13,4,18,1,20,5,12,9,14,11,8,16,7,19,3,17,2,15,10};
	
	private static final int BACKGROUND_INDEX=proportions.length-1;
	private static final int NUMBER_INDEX=proportions.length-2;
	private static final int OUTER_STRIPE_INDEX=proportions.length-3;
	private static final int BULL_INDEX=1;
	private static final int BULLS_EYE_INDEX=0;
	
	//alle proportionen normieren
	static{
		for(int i=0; i<proportions.length; i++)
			proportions[i]/=proportions[proportions.length-1];
	}
	
	private void fillCenteredArc(Graphics g, int proportionIndex, double startAngle, double endAngle){
		g.fillArc(
				(int)(getWidth()*(1-proportions[proportionIndex])/2d),
				(int)(getHeight()*(1-proportions[proportionIndex])/2d),
				(int)(getWidth()*proportions[proportionIndex]),
				(int)(getHeight()*proportions[proportionIndex]),
				(int)Math.toDegrees(startAngle),(int)Math.toDegrees(endAngle));
	}
	
	private void fillCenteredOval(Graphics g, int proportionIndex){
		g.fillOval(	(int)(getWidth()*(1-proportions[proportionIndex])/2d),	(int)(getHeight()*(1-proportions[proportionIndex])/2d),
					(int)(getWidth()*proportions[proportionIndex]),			(int)(getHeight()*proportions[proportionIndex]));
	}
	
	public void paintComponent(Graphics g){
		super.paintComponent(g);	
		
		//aeusserer hintergrundstreifen
		g.setColor(Color.BLACK);	fillCenteredOval(g,BACKGROUND_INDEX);
		
		//karierte flaeche zeichnen
		//hier wird korrekterweise bogenmass verwendet, und erst zuallerletzt in die behinderten gradangaben uebersetzt
		double da=2*Math.PI/(double)score.length; 
		Color oddColor, evenColor;
		
		for(int stripeIndex=OUTER_STRIPE_INDEX; stripeIndex>BULL_INDEX; stripeIndex--){ //mehrere schichten von aussen nach innen zeichnen
			if(stripeIndex%2==0){
				//beim geraden streifen-index zwischen schwarz/weiss wechseln
				evenColor=Color.WHITE;
				oddColor=Color.BLACK;
			}else{
				//beim ungeraden streifen-index zwischen rot/gruen wechseln
				evenColor=Color.GREEN;
				oddColor=Color.RED;
			}
			
			//grossen kreis der odd-Farbe zeichnen, und dann nur jeden zweiten sektor in even-farbe ausmalen
			g.setColor(oddColor); 	fillCenteredOval(g,stripeIndex);
			
			//jetzt jeden zweiten sektor in der anderen farbe ausmalen
			g.setColor(evenColor);
			for(int sectorIndex=0; sectorIndex<score.length; sectorIndex+=2){
				fillCenteredArc(g,stripeIndex,(sectorIndex-1/2d)*da,da);
			}
		}
		
		//passende schriftgroesse setzen
		g.setFont(g.getFont().deriveFont(
				(float)(Math.min(getWidth(),getHeight())*(proportions[BACKGROUND_INDEX]-proportions[NUMBER_INDEX]))/2)
		);
		
		//nochmal alle sektoren einmal durchgehen, und ueberall die zahlen dranschreiben
		g.setColor(Color.WHITE);
		for(int sectorIndex=0; sectorIndex<score.length; sectorIndex++){
			String s=String.valueOf(score[sectorIndex]);
			g.drawString(s,
					(int)(getWidth()*(1+Math.cos(sectorIndex*da)*proportions[NUMBER_INDEX])/2d)
					-g.getFontMetrics().stringWidth(s)/2,
					(int)(getHeight()*(1-Math.sin(sectorIndex*da)*proportions[NUMBER_INDEX])/2d)
					+g.getFontMetrics().getHeight()/2);
		}
		
		// bull und bull's eye zeichnen
		g.setColor(Color.GREEN);	fillCenteredOval(g, BULL_INDEX);
		g.setColor(Color.RED);		fillCenteredOval(g,BULLS_EYE_INDEX);

	}
	
	public static void main(String[] args) {
		JFrame f=new JFrame("Dartscheibe");
		f.setSize(768,768);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.getContentPane().add(new Darts());
		f.setVisible(true);
	}
}
```
@horn27:
sowas sollte rauskommen, wenn du einfach die sieben Punkte aus der Liste nacheinander erledigt hättest... :roll: 
Wie du siehst: ausser den Abmessungen und Punkten in den ersten zwei Zeilen kommen im code keinerlei zahlen ausser 1, 2 und PI vor.
Die 1 und 2 braucht man um die kreise zu zentrieren
PI braucht man, weil es eben um Kreise geht.
Ansonsten keinerlei "magic numbers", dafür aber for-schleifen soweit das Auge reicht...

edit: SlaterB hat recht: das zeichnen von zenrierten Kreisen ist schon fast "komplex" genug, um es in extra-methoden auszulagern. Sieht so auch wesentlich schöner aus.


----------



## SlaterB (13. Okt 2008)

>       g.setColor(Color.RED); 
>      g.fillOval(   (int)(getWidth()*(1-proportions[BULLS_EYE_INDEX])/2d),   (int)(getHeight()*(1-proportions[BULLS_EYE_INDEX])/2d), 
>                (int)(getWidth()*proportions[BULLS_EYE_INDEX]),         (int)(getHeight()*proportions[BULLS_EYE_INDEX])); 

einen derartigen Code hast du 4x, mit leichten Änderungen (fillArc) sogar 5x,

das darf nicht sein, da muss sofort eine Hilfsmethode
fillOval(g, Color.RED, BULLS_EYE_INDEX);
her


----------



## 0x7F800000 (13. Okt 2008)

alles klar meister^^ 

edit: die Farbe habe ich jetzt doch draussen gelassen, ansonsten sind die Aufgabenbereiche der beiden methoden irgendwie nicht mehr klar abgegrenzt.

Ja, eigentlich müsste man die ganzen farben noch einsammeln und vorne einmal definieren. Momentan ist es zB ein wenig umständlich, das ganze grün durch blau zu ersetzen etc.

Hab's auch ohne lang zu denken sequentiell hingeschrieben, wollte den OP da erstmal nicht zusätzlich mit selbstdefinierten methoden stressen... :roll:


----------



## Quaxli (13. Okt 2008)

Dann pack ich meine ganz einfache Version auch mal hier rein. 
Gegen das Teil von Andrey kann die halt nicht anstinken 


```
import java.applet.Applet;
import java.awt.*;

public class Dart extends Applet {

	public void init() {
		setSize(300,300);
		setBackground(Color.BLACK);
	}

	public void paint(Graphics g) {
		
		boolean color = true;
		
		for(int i=0;i<20;i++){

			if(color){
				g.setColor(Color.red);
				color = false;
			}else{
				g.setColor(Color.blue);
				color = true;
			}

			int w = i*18;
			g.fillArc(0,0,getWidth(),getHeight(),w,18);
			
		}
		
	}

}
```


----------



## 1Andi (13. Okt 2008)

Tjo Horn27,
zu deinem Thema mit "ich brauche Hilfe - ich bin Anfänger" kann ich eigendlich nur lachen!
Ich habe jetzt schon über 2 Jahren Java in der Schule und bezeichne mich noch als Blutiger Anfänger. Das was du hier wolltest ist das man dir dein Essen vorkaut und am besten noch in den Magen pumpt. Also für so was musst du wirklich kein Java Kurs machen - wenn du schon nicht mal weist was eine Schleife ist.
Ich rate dir dringent mal an den Grundkenntnisen zu arbeiten.
Und zu deinem Komentar, wie soll ichs den lernen, mir zeigt es ja keiner kann ich auch nur lachen.
1. Hier gibts zu aller erst nen FAQ.
2. Schon mal an Google gedacht? Da sind unzählige Tutorials gerade für Leute wie dich.

Das nächste mal vieleicht einfach mal Googlen bevor man Hier nur die Lösungen will.

gruß
Andi


----------



## horn27 (13. Okt 2008)

Ach nee auf so Klugsch... wie dich kann ich auch verzichten, das Forum hier is doch das Letzte, bzw. die Mitglieder, hier wird einem nicht geholfen, nein es wird sich lustig gemacht, man sollte ja eh schon alles können als Anfänger, das ich nicht lache, und zum 100. mal, ich habe noch keine Schleifen gelernt, kapiert das hier keiner, ich studiere seit 4 Wochen, aber laut eurer Meinung müsste ich ja eh schon alles können, und am besten den ganzen Tag am PC sitzen und nur Java lernen, ich will euch nur mal darin erinnern wie ihr angefangen habt, aber wahrscheinlich ist euch die Begabung Java zu programmieren in die Wiege gelegt worden, echt lachhaft alles.....


----------



## 0x7F800000 (13. Okt 2008)

horn27 hat gesagt.:
			
		

> Ach nee auf so Klugsch... wie dich kann ich auch verzichten, das Forum hier is doch das Letzte, bzw. die Mitglieder, hier wird einem nicht geholfen, nein es wird sich lustig gemacht, man sollte ja eh schon alles können als Anfänger, das ich nicht lache


Nee Kumpel. Ich weiß nicht was du willst, aber offenbar willst du kein Java lernen, obwohl du das hier dauernd behauptet hast.


			
				horn27 hat gesagt.:
			
		

> und zum 100. mal, ich habe noch keine Schleifen gelernt, kapiert das hier keiner, ich studiere seit 4 Wochen, aber laut eurer Meinung müsste ich ja eh schon *alles* können


Das ist doch wohl ein echt mega übler scherz, und den kapiert echt keiner^^ Wenn du nicht mal mit Schleifen klarkommst, was stellst du dir dann unter "alles" vor? Mit der Einstellung macht es absolut keinen Sinn weiterzustudieren. Wenn du schon für die 5-Minuten-basics einen ganzen Monat brauchst, obwohl dich hier Zehn leute mehrfach darauf hinweisen, dann wirst du in dem Tempo vor Jahr 5800 leider nicht mit Java fertig werden.


> und am besten den ganzen Tag am PC sitzen und nur Java lernen, ich will euch nur mal darin erinnern wie ihr angefangen habt


Jo, danke für die Erinnerung. Waren echt schöne Zeiten, hab mir damals in der 11. klasse in der ersten Woche ein programm geschrieben, das mir die Hälfte der dummen rechnerei in Mathe abgenommen hat, und dazu noch coole 3D-Skizzen lieferte. Und zwar freiwillig, ohne Hausaufgaben und Dozenten, sondern aus reinem Interesse. Hab mich damals gewundert, wie schnell sowas mit java geht.

Deswegen wundert es mich umso mehr, wieso es leute gibt, die absichtlich ein Informatikstudium anfangen, dort ohne jegliche vorkenntnisse reingehen, und dann noch meinen, vier wochen lang herumchillen zu können (zumindest was das lernen angeht: wie gesagt, ich kenn dich nicht, kann sein dass du ein doppelt(dreifach??)-studium machst [10 Fächer?], kann ja sein dass du vier Kinder hast und familie ernähren musst, kann sein dass du ständig geld für drogen brauchst, kann sein dass du unfreiwillig in irgendeine unangenehme geschichte reingeraten bist, und dauernd von der mafia erpresst wirst oder sonstwas) Wenn du wirklich unter derartig extremen zeitdruck stehen solltest, dann ist es wohl auch das beste, Informatikstudium sein zu lassen, oder zumindest auf später zu verschieben.



> aber wahrscheinlich ist euch die Begabung Java zu programmieren in die Wiege gelegt worden, echt lachhaft alles.....


Hier war die ganze zeit von den verdammten lächerlichen _schleifen_ die rede. Also erzähl hier bitte nichts von "Begabung" und "Wiege" und dem ganzen scheiß. :bloed:


----------



## 0x7F800000 (13. Okt 2008)

Ansonsten: Stufe 5 auf Marco-Skala wür ich mal schätzen, so wie es aussieht kann man den thread wohl dicht machen, außer 5b kann daraus eh nix mehr werden :roll:


----------



## Leroy42 (13. Okt 2008)

Andrey hat gesagt.:
			
		

> ...



Haste dich jetzt wieder beruhigt?


----------



## 0x7F800000 (13. Okt 2008)

@Leroy42:
habe ich irgendwo beunruhigt "ausgesehen"? Womöglich ist vor deinem geistigen auge ein Bild vom beunruhigten Andrey entstanden, aber das ist deine eigene Erfindung...  Du musst dir das eher so vorstellen, dass ich im moment gemütlich tee trinke und recht gelangweilt paar mal die Stunde die neuesten Beiträge im Forum durchblättere. Irgendwas beunruhigenderes habe ich hier heute noch nicht entdeckt... :gaen: Und die hausaufgabenerschleicher kommen doch eh alle paar tage hier angekrabbelt, die finde ich eigentlich vergleichsweise unterhaltsam^^ Die kann man so lustig mit der Marco-Skala klassifizieren, ist doch herrlich


----------



## 1Andi (13. Okt 2008)

Kuck ma, sind andere Schuld wenn du keine Schleife kannst?
Sind andere Schuld wenn DU Sie net lernen willst.
Mal Ganz errlich, was sollen wir hier den Aufbei einer Schleife erzählen wenns dazuz Zicktausend easy Tutorials gibt.
Außerdem nach was hört sich Schleife an?? Irgenwas wo die dauernt wiederholst, also kanns schon mal net so schwer sein.
Machs eben mal easy, mach eine Schleife erst mal auf Deutsch, später übersetzt du Sie dan in Java.
Beispiel.
Ich zähle Äpfle bis ich 10 Stück habe.

```
do
{
i=i+1;
}while(i!=10)
```

Und so was müssen wir einem Studenten zeigen?? Bist du nicht in der Lage zu lesen?? Zum Beispiel in einem Buch, welche sehr Hilfreich sind, und dich neben bei NICHT dumm anmachen .

Naja Viel Glück dir noch.

Gruß Andi


----------



## Quaxli (14. Okt 2008)

Andrey hat gesagt.:
			
		

> @Leroy42:
> habe ich irgendwo beunruhigt "ausgesehen"? Womöglich ist vor deinem geistigen auge ein Bild vom beunruhigten Andrey entstanden, aber das ist deine eigene Erfindung...  Du musst dir das eher so vorstellen, dass ich im moment gemütlich tee trinke und recht gelangweilt paar mal die Stunde die neuesten Beiträge im Forum durchblättere. Irgendwas beunruhigenderes habe ich hier heute noch nicht entdeckt... :gaen: Und die hausaufgabenerschleicher kommen doch eh alle paar tage hier angekrabbelt, die finde ich eigentlich vergleichsweise unterhaltsam^^ Die kann man so lustig mit der Marco-Skala klassifizieren, ist doch herrlich



Der Form halber hier noch der Link: http://www.java-forum.org/de/topic66262_die-phasen-beim-erschleichen-sungen-aufgaben.html


----------



## Oli (14. Okt 2008)

Hi,

int xSt = 10, ySt = 10; 
Dimension dim = getSize(); 
int r0 = Math.min(dim.width, dim.height);/2-10; 
int r1 = 10*r0/12; 
int r2 = 9*r0/12; 
int r3 = 6*r0/12; 
int r4 = 5*r0/12; 
int r5 = 1*r0/12; 
int r6 = 1*r0/24; 

Das sind Radien, die dir helfen die Scheibe zu zeichnen. Diese Radien richten sich nach der Größe des Fensters, welches angezeigt wird.


g.drawString("13",x,y); 
stWinkel = stWinkel + weite; 
x = xZen + (int)(rZeichen*Math.cos(stWinkel/360.*2.*Math.PI)); 
y = yZen - (int)(rZeichen*Math.sin(stWinkel/360.*2.*Math.PI)); 

Hier werden wohl die Zahlen auf die Scheibe gemalt. Da eine Dartscheibe bekanntlich rund ist, müeen die Zahlen ja auf dem Kreis angeordnet werden. Nun das macht diese Funktionalität.

So und nun solltest du wieder ein bisschen weiter kommen...


----------



## Gast (16. Okt 2008)

Ich habe in England einmal eine mechanische Dart-Rechenmaschine gesehen.
Über 3 Telefonwählscheiben wählte man seinen Score und die Zahnräder bewegten die Summe abwärts.
Hat jemand eine Idee wo ich so etwas finde, oder hat jemand was vergleichbar (schönes) gesehen ?

Für eine Antwort wäre ich dankbar. 
0175-9918165 harpist@gmx.de
Peter Seitz


----------



## 0x7F800000 (16. Okt 2008)

Hm, einfach mal nach "mechanische rechenmaschinen" googlen, da werden gleich zig museen und ausstellungen angeboten.

Hier noch eine vollkommen bekloppte sache: Mechanischer Computer aus Lego
Da war irgendeinem Theo-informatiker wohl so richtig richtig langweilig 
Aber irgendwie ist es doch witzig^^


----------

