?( ?( ?(
Also eher eine Breitensuchen ...?
Hatte ich schon erwähnt, das sich mindestens 2 Bälle in der selben Farbe berühren müssen, damit man diese entfernen kann 🤔
Mit der TIefensuche hatte ich es auch schon überlegt, aber wie gesagt: "Ich bin nicht unsterblich" 😁
Mein 1. Versuch hatte eine Mindestpunkzahl als Ziel, aber selbt dann dauerte es zu lange.
Mfg Hajoseb
Hallo Hajoseb,
Jeder Zusätliche Ball, der mit entfernt werden kann (Sich berührende Bälle in einer Farbe) bringt exponential mehr Punkte.
Deine Liste hat aber nur ein quadratisches Wachstum, also nur polynomiell und damit gerade nicht exponentiell.
vergleiche doch mal die Ergebnisse von e^(2ln(x)) mit x^2 ... 😁 👍 8)
... ist das nun exponential oder nicht g
Eventuell müssen intelligente Abbruchbedingungen her.
Warum intelligent? Es würde doch schon reichen ganz einfach die Suchtiefe auf x Züge zu begrenzen.herbivore
Nun, wie Tief soll es denn gehen ... Es können ja durch die Verschiebung auch neue Felder entstehen ...
Ähnliche Windows-Spiel:
Oh. Sorry ... 😉
Ziel ist es, möglichst viele Punkte zu machen.
Jeder Zusätliche Ball, der mit entfernt werden kann (Sich berührende Bälle in einer Farbe) bringt exponential mehr Punkte.
z.B.
2 Bälle = 4 Punkte
3 Bälle = 9 Punkte
4 Bälle = 16 Punkte ...
Es müssen also so große Felder wie möglich erzeugt (durch entfernden kleiner, störender Felder) und dann entfernt werden.
Wenn Bälle entfernt werden, rücken die anderen nach unten (und ggf. zur Seite) nach.
Mfg Hajoseb
Das hatten wir vor 20 jahren mal in der Schule "Ja, auch da gab es schon Informatikunterricht 😄" ...
Mfg Hajoseb
Hi.
Hatte vorhin wenig Zeit ...
Das "Problem" ist ja, das es nicht (nur) darum geht, alle Bälle zu entfernen, sondern möglichst große zusammenhängende Felder zu bevorzugen sind.
Mit einer Tiefensuch kann ich da wohl lange suchen.
Bei einer Breitensuche gibt es wohl nicht genug Speicher ...
Ich zerbreche mir schon sei vielen Wochen den Kopf darüber ...
Ich entferne pro Spielzug immer mehrere Steine (min. 2) aber mehr als eine reine Tiefensuche fällt mir im Moment noch nicht ein. Eventuell müssen intelligente Abbruchbedingungen her.
Mfg Hajoseb
Hallo.
Welchen Algorythmus (Grundstrategie) könnte ich nutzen, dieses Spiel in angemessener Zeit "gut" zu lösen?
Man könnte natürlich alle Möglichkeiten durchsuchen, aber ob ich so lange lebe...
Mfg Hajoseb
Somit habe ich dann 2 Bibliotheken, die ich für alle Programme einbinde, um ScreenReader und den zugehörigen Editor-Form zu nutzen.
OK.
Spricht denn etwas dagegen, beides (ScreenReader und Editor-Form) wenigstens im selben Namespace abzulegen?
Mfg Hajoseb
So.
In Anlehnung an meine eigene Antwort im Forum
Design - Frage
habe ich nun hoffentlich eine akzeptable Lösung (Beispiel).
Die (momentan) letzte Frage:
Soll die Editor-Form in
Mfg Hajoseb
Wow. Da kommt meine Routine ja doch noch zu Ehren g 8)
Frage: Auf welches **this **bezieht sich dein **Opacity **...
Es müsste sich ja auf jeden Fall, auf die Form selber beziehen, sonst wird nur ein Teil unsichtbar.
Mfg Hajoseb
(Habe damals keine bessere Lösung als mit Opacity finden können ...)
bei Referenztypen sollte der originale Key gespeichert sein.
von mir durch struct oder automatisch durch dictionary ???
Das Dictionary merkt sich ja nur eine Referenz auf den Key. Sonst wäre es ja auch nicht das Original-Objekt, wenn es kopiert werden würde.
Das passt auf das Value, von dem nur die Referenz gespeichert wird, aber auch zum Key??? Wenn ich aus Bildern einen Integer generieren möchte, muss ich doch nicht alle Bilder speichern, oder? ... Nach dem generieren des key aus der bmp ist das Bild doch überflüssig, oder?
(Ich meine jetzt nicht das mit den strings. Da brauche ich das Original, welches ich als Key nehme noch für andere Zwecke.)
Nein, selbst SortedList kann das nicht
Also muss ich dann vorher zum Bearbeiten alle Values in ein extra Array kopieren ...
mfg Hajoseb
Hi.
Ich habe da noch eine Frage zu Dictionary<keystring, valuestring>:
Speichert die Klasse den original "keystring", auch wenn ich größere Strings verwende (100 Zeichen und mehr), so dass ich diese mit der dictionary.keys im Original zurück bekomme?
Die keys werden ja in einen 32-bit Integer umgewandelt.
Ansonsten müsste ich jeden Wert als "struct" aus {originalkey, value} in die dictionary speichern.
...
Wobei das wieder blöd wäre, wenn die dictionary das speichert, wenn man große Bilder als key nimmt ... dictionary<keybmp, intvalue>
Wer weis es besser ???
Mfg Hajoseb
P.S. Gibt es auch eine Hash-Collection, bei dem ich zusätzlich einen (lese-)Zugriff, wie ein Array habe, um wahlfrei (vor/zurück) auf die einzelnen Element zugreifen zu können?
Hi.
Ich hatte gerade erst eine interessante Diskussion mit herbivore über das Thema.
Im Moment würde ich nach meinem Verständnis folgendes sagen:
So kannst du den selben Code für beide Varianten nehmen.
Mfg Hajoseb
Was ist denn, wenn es gar keine Windows-Forms Anwendung ist. Wenn jemand eine Konsolenanwendung, einen Dienst, eine Web-Anwendung oder einen Weg-Service schreibt. Dann kann der deine Bibliothek nicht benutzen, weil du den Editor als Windows-Forms-Fenster erzwingst. Ist doch blöd.
Dem würde ich sagen, das diese Bibliothek gar nicht dafür gemacht ist 🙂
In einer Konsolen-Anwendung nutzt man ja auch nicht DirectX ... eben weil es **nicht **dafür gemacht ist ...
Meine Bibliothek ist nun mal dafür gedacht unter Windows etwas mit Windows-Bildern zu machen und nicht im Web/Dienst/... 🙂
OK. Danke erst mal mit diesem Themenbereich.
Ich weis wo du hin möchtest, kann dies aber (im Moment) noch nicht mit meinen Vorstellungen in übereinklang bringen, da meine Anwendungen (die dann alle die Bibliothek nutzen) eigentlich nicht für allgemeine Zwecke gedacht sind, sondern nur spezielle Aufgaben lösen sollen ...
Ich habe jedenfalls für die nächte Zeit noch einiges zum Nachdenken bekommen.
Mal sehen, was die zeit und Erfahrung zu diesem Thema noch bringt.
Mfg Hajoseb 👍
Na, Irgendwo muss ich doch die Editor-Form instanzieren ...
Der Haupt-Form geht es schlieslich nichts an, was in der Bibliothek alles passiert und einen Weg eine Form komplett außerhalb einer Form zu instanzieren hast du mir noch nicht genannt ...
Zitat:
Gibt es so eine Art "static"-Konstructor, der automatisch aufgerufen wird, nur weil die Klasse eingebunden wird???
Ja, gibt es. Aber ich sehe nicht, wie dir das hier nützen kann.
Könnte man mit so einem Konstruktor nicht eine Instanz in sich selber instanzieren, ohne dass andere Klassen sie kennen? Der Zugriff könnte dann ja z.B. über ein Event erfolgen, oder so in der Art ...
Wie würdest du denn die Form entkoppel, ohne dem OO-Prinzip der Kapselung der Daten zu wiedersprechen?
Bei mir sind alle Daten und Methoden (bis auf den Konstruktor und eine Methode zum aufrufen) komplett in der Bibliothek gekapselt ...
Mfg Hajoseb
Ich glaub, jetzt habe ich die Lösung ...
Dicker Pfeil = mehrere Instanzen
Schwarzer Pfeil = instanziert (kennt in Pfeilrichtung)
Violetter Pfeil = Instanz indirekt (bekommen per Konstruktor) (kennt in Pfeilrichtung)
Mfg Hajoseb
Hi, Herbivore.
Du hast dich schon deutlich ausgedrückt 🙂
Ich habe lange hin und her überlegt und werde es wohl so umsetzen:
(Siehe Bild)
Ich überlege nur noch, ob die Editor-Form die Daten aus der Parameter-Klasse holen soll und damit die Analyse-Klasse aufrufen, oder der Analyse-Klasse die Parameter-Klasse bekannt gemacht wird, damit diese die Daten selber holen kann ...
(Rote Linie)
Mfg Hajoseb
Da fällt mir noch ein Punkt ein ...
Übersetzer-Klasse
Parameter-Klasse und
Editor-Form
gehören in eine Klassenbibliothek und sollen in mehreren Anwendungen verwendet werden ...
Ist es dann immer noch sinnvoll, dass die Haupt-Form die Editor-Form aus der Bibliothek erzeugt und aufruft ...
...
Schade, dass man nicht, wie damals in Modula, eine Klasse sich selber instanzieren lassen kann (um sie dann von Außen aufzurufen) ...
Gibt es so eine Art "static"-Konstructor, der automatisch aufgerufen wird, nur weil die Klasse eingebunden wird??? (Bei Modula gab es so etwas für jedes eingebundene Modul)
Mfg Hajoseb
Danke.
Werde mal darüber Meditieren 🙂
Mfg Hajoseb
Hallo, herbivore.
Erst mal Danke.
Wir sind da gleicher Meinung, dass die Parameter-Klasse die Editor-Form nicht kennen sollte, sondern die Editor-Form nur die Parameter-Klasse.
aber ...
Die Editor-Form soll ja nur für die Bearbeitung der Parameter-Klasse aufgerufen werden, wenn dor Informationen fehlen.
Davon sollen die höheren Ebenen aber eigentlich gar nichts mit bekommen.
Eigentlich sollen
Haupt-Form
Funktions-Klasse und
Übersetzer-Klasse
(ggf. auch Parameter-Klasse)
die Editor-Form nicht kennen.
Die Editor-Form soll ja nur automatisch erscheinen, wenn die Parameter-Klasse feststellt, das sie für den abgefragten Parameter noch keine Antwort hat ...
Also wo könnte man diese Editor-Form dann instanzieren, um sie per Methode oder Event dann aufzurufen ???
Mfg Hajoseb
Nachtrag:
Im Moment übergebe ich der Editor-Form meine Parameter-Form über den Konstruktor, um damit auf die Parameter zuzugreifen ...
Hallo.
Ich überlege schon seit Tagen (und suche/lese fleißig im Forum) ...
Verständnis- bzw. Design-Problem:
Der eine Teil funktioniert. Ich habe meine Haupt-Form mit einer zugehörigen Funktions-Klasse, so das ich mit der Haupt-Form Methoden in der Funktions-Klasse aufrufe und keine "magic-Buttons" habe.
Nun habe ich eine Übersetzungs-Klasse (Die aus Daten der Funktions-Klasse ein Ergebnis berechnet. Ich übergebe eine Graphik und bekomme einen String zurück)
Auch OK.
Die Übersetzungs-Klasse nutz eine Parameter-Klasse, welche die nötigen Daten für die Übersetzung bereit hält.
Auch OK.
Nun soll die Parameter-Klasse aber bei neuen Parametern den Benutzer über eine Form nach der richtigen Übersetzung fragen. Dazu **erzeugt **die Parameter-Klasse eine Instanz der Editor-Form und ruft diese auf.
Die Parameter-Klasse kennt also die Editor-Form, wenn auch nur zum Aufruf.
Die Editor-Form muss nun aber auch Daten aus der Parameter-Klasse lesen/scheiben.
Hier habe ich nun den so misbilligten Zirkelschluss 😦
Die übergelagerten Klassen (Übersetzungs-Klasse) soll die Form gar nicht erst kennen.
Haupt-Form ---zugriff---> Funktions-Klasse ---zugriff---> Übersetzer-Klasse ---zugriff ---> **Parameter-Klasse **---aufruf--->_Editor-Fo_rm:::
Wie kann ich da vor gehen.
In den ganzen Threads aus der Suche mit Form1/Form2 wird (mir) nicht klar, an welcher Stelle ich am besten die Editor-Form instanziere, denn die Beispiele gehen meist von eine bereits bestehenden Haupt-Form aus.
Ich brauche die Editor-Form aber erst viel "tiefer" in der Hirachie.
Nach meinem verständnis, muss ich die Editor.Klasse an der stelle wo ich sie brauche (Parameter-Klasse) instanzieren und aufrufen, aber eventuell habe ich ja auch etwas noch nicht ganz verstanden.
Mfg Hajoseb
Textfile erstellen und bei jedem Durchgang Log-Informationen Speichern
(z.B. Durchgang, Variablen, ...)
Mfg Hajoseb
Statt "new" bei den Tempnodes suche dir deinen (richtigen) vorhandenen Node raus ...
mfg Hajoseb
Bau doch erst einemal über deine Schnittstelle eine Hyperterm-Verbindung zu einem anderen Rechner auf.
Damit kannst du die Verbindungswege an sich prüfen.
Mfg Hajoseb
Original von Soibat
so mittlerweile können meine Figuren beinahe korrekt ziehen...Mit Ausnahme des Bauern und dass die Figuren einfach über die anderen Figuren fahren 😁Jetzt muss noch das Schachmatt, die Rochade, das En-passen und das Remis hin...
Ich werde bald wieder berichten...
Das dürfte dir aber nach meinem Vorschlag im letzten Post nicht passieren.
Prüfst du den Weg nicht ab ???
Mfg Hajoseb
Ich würde (ohne dein Konzept genauer zu kennen) deinen Spielfigur-Objekten das gewünschte Ziel übermitteln
TurmW1.MoveTo(x,y)
und bekomme ein True zurück, wenn der Zug erfolgreich war oder ein False, wenn der Zug nicht ausgeführt werden konnt.
In der MoveTo-Methode prüfst du halt, ob die Zielkoordinaten vom momentanen Standort aus erreicht werden können.
Beim Turm muss z.B. entweder x oder y mit den momentanen xPosition bzw. yPosition überewinstimmen, dann kann man alle anderen Figuren (oder ein Feld) abfragen, ob eine andere Figur im Weg steht.
Mfg Hajoseb
Du kennst die Start-Koordinate und die gewünschte Zielkoordinate
Einfach für prüfen, ob die Zielkoordinate mit einem erlaubten Zug erreicht werden kann und ob auf dem Weg eine andere Figur "im Weg" steht.
Mfg Hajoseb
Die Signaturen kannst Du aus Pinvoke.net entnehmen.
Ich hoffe das hilft, wenn nicht, kann ich dir auch gerne ein Beispiel schicken.
Schickst du es mir liebguck
Mfg Hajoseb
Für die DTMS-Töne braucht man eigentlich Hardware.
Einzig, wenn die TK-Anlage die erkannten Töne an die Applikation weiter gibt, sollte das möglcih sein ...
Mfg Hajoseb
Und wenn du statt
DateTime
einfach nur die Klasse
Date
verwendest ?
Original von a957m
Hallo,ich programmiere gerade eine ListView. Dort werden die Eigenschaftswerte eines Objektes in einer Zeile dargstellt. Dies funktioniert so, dass ich die textuelle Darstellung für jeden Eigenschaftswert mit ToString ermittle. Das funktioniert auch recht gut. Nur im Falle von DateTime will ich nur das Datum ohne Uhrzeit angezeigt.
Die erste Lösung, die mir zu diesem Problem eingefallen ist. War eine Klasse Datum zuerstellen, die ich von DateTime ableite und ToString überschreibe. Aber das geht nicht weil DateTime sealed ist.
Hat jemand eine andere Idee ?
Bin für jede Anregung dankbar.
Tschüss
Was ist mit
DateTime.Date.ToString()
???
Da kommt doch nur das Datum. Bei mir jedenfalls 👍
Mfg Hajoseb
Also, ein "Call-Back" 😉
Ich hatte überlegt, für unsere Telefonanlagen etwas mit Tapi zu machen. Bin mir aber noch nicht sicher, da wir demnächst die OIP-Schnittstelle in allen Anlagen bekommen.
Für OIP gibt es ja schon einige Software, aber ich hatte noch nicht die Zeit etwas zu ergoogeln.
Das Seminar gibt es erst nächstes Jahr, aber da lernen wir nur den Umgang mit OIP. Ich fände aber interessant für OIP zu programmieren, weis aber noch nicht, ob da auch TAPI nötig ist.
Mfg Hajoseb
Na, läuft dein Stalker-Programm mittlerweile ???
Nutzt du jetzt Tapi? Wenn ja, wie ?
Mfg Hajoseb
Original von yashimo
Hallo zusammen,
ich habe eine kleine Anwendung geschrieben, die ein Diagramm auf ein Panel zeichnet. Weil ich das Diagramm gerne auch als Bild speichern möchte, kopiere ich mir das Panel in ein Bitmap und speichere mir dieses über "bmp.Save" beispielsweise als .gif oder .jpg. Es wäre allerdings wünschenswert, wenn ich als Bild eine Vektorgrafik speichern könnte.
Ich hab schon allerlei gestöbert aber nix adäquates gefunden, oder ich habe es übersehen bzw. dann wohl nicht verstanden.
Gibt es in .NET 2.0 eine Möglichkeit das mit "Bordmitteln" einigermaßen schnell und einfach zu realisieren?
Warum speicherst du nicht einfach die Befehle & Parameter, mit denen du das Diagramm zeichnest? ... Dann hast du immer wieder das Original 👍
Mfg Hajoseb
Ich würde das jetzt so verstehen, das du 4 Versuche, mit der Suchtiefenbegrenzung hast, so gut wie möglich an die 3s heran zu kommen ...
Eventuell bekommst du ja Extra-Punkte, wenn du denen erklärst, dass dies am genauesten mit einer Breitensuche ermitteln kannst 😁
Mfg Hajoseb
Nochmal:
In der Tiefensuche kannst du nur mit der Suchtiefe arbeiten !!!
Nach dem 1. Knoten hast du 2 Zweige
Nach dem 2. Knoten hast du 4 Zweige
Nach dem 3. Knoten hast du 8 Zweige
...
Also hättest du bei deiner "Zeit"-Suche schon die 8-fache Zeit.
Bei 10s = Tiefe von (sagen wir einfach einmal ) 4365654 ...
... würdest du eine Zeit von 10s * 2 ^ 4365654 benötigen
... Wir sehen uns dan so in 3-4 Universumszyklen wieder 👅 😁 8)
Du möchstest aber wissen, wie Tief komme ich in 10s, wenn ich alle Zweige (gleich Tief) absuche. Berechne (oder Teste) einfach, wie Tief du bei einer 10s Breitensuche kommst 👍
Mfg Hajoseb
Original von Seikilos
Ehm naja, ich muss die Zeit begrenzen, also so was wie "Wie tief kommt die Suche in 10 Sekunden", aber wie misst man dies bei Depth First?
Du willst also doch eine Breitensuche. 🤔
Ansonsten:
1.) Erstelle einen Baum, der tief genug ist (seeeeeehr Tief bei 10s)
2.) Starte einen Timer
3.) Gehe immer tiefer in den Baum
4.) Stoppe nach Ablauf des Timer
5.) Gebe die aktuelle Tiefe aus
...
Aber mit deinen 10s pro Zweig kommst du auf einige Millionen (oder mehr) Jahre 😁 ...
Ergo:
Du willst also doch eine Breitensuche. 🤔
Original von VuuRWerK
Hallo roithi,Dann nimm statt eines Tabulators einfach mehrere Leerzeichen, quasi für \t nimmst Du 4 Leerzeichen, dann geht es auch wieder mit einem Label.
Gut Schuß
VuuRWerK 😉
8o ... Schon mal eroiert, was ein Tabulator macht ???
Mit deinen 4 Leerzeichen kommst du da aber nicht weit...
Tippe doch mal etwas in Word und nutze den Tabulator.
Mfg Hajoseb
Wenn du die Suchtiefe begrenzt, was spielt die Zeit dann noch für eine Rolle 🤔
Für jeden Zweig wird doch dann eh die selbe Zeit benötigt, wenn die Tiefe gleich ist. (Solange du nicht noch anders "Zeugs" in Abhängigket von den Werten erledigst).
Mfg Hajoseb
Hi.
Es wurde ja schon der Nutzen von ? gezeigt ...
//Bedingung ? Wert1 : Wert2
y = (x == 0 ? 1: x);
// oder
y = (x == 0) ?
1:
x;
Aber jetzt hab ich gerade entdeckt, dass man ? noch intensiver nutzen kann 😁
Beispiel
// Gibt in abhängigkeit von X entweder "einfügen" oder "sperren" aus ...
LogFile.WriteLine((X==0) ? "einfügen" : "sperren");
Mfg Hajoseb
P.S. Falls ihr es alle schon wusstet ... OK X(
P.S.S. Wie kann man in der Forensuche eigentlich nach "?" suchen ???
Original von Seikilos
Was willst du mir damit sagen? Dass die Variable immer wieder aufgerufen wird?
Original von herbivore
Hallo Seikilos,interessante Frage? Das ist doch Standardvorgehen, also eher langweiliger Kram. 🙂
BaumSuche (N, Level) { if (Level > MaxLevel) { return; } ... BaumSuche (N', Level+1) }
herbivore
Aber hier wird das maximale Level auch nicht zurück gegeben, oder ?
Mfg Hajoseb
Original von Seikilos
Wir haben definitiv ein anderes Niveau 🙂Also für mich ist dies nicht klar, da in meinem Beispiel doch BaumSuche 11 mal aufgerufen wird, dh der Zähler ist dann 11, aber der Baum ist doch nur 4 Ebenen tief?
Deine/eure Tiefe ist die Anzahl der besuchten Knoten, ich meine die Anzahl der Ebenen
Beschäftige dich doch mal ausgiebig mit dem Thema Rekursion und was bei einer rekursiven Prozedur mit den Variablen passiert 😉
Mfg Hajoseb
Original von Rasta
Ich habe jetzt gerade eine Version gefunden, die der Compiler akzeptiert, nämlichvorbereiten = "\x1b4D";
,aber ob der Drucker tut, was ich will, dass er tut, kann ich nicht sagen.
@Bernd: Deine Version hat einige Vorteile, wenn es so ähnlich funktionieren würde, wäre das schon schwer cool, denn dann kann ich einfach die Sequenzen aus dem Pascal Prog klauen xD
P.S. Jetze ist erstmal Wochenende, cu 🙂
mfg, Rasta
Laüft der Drucker auch in dem Modus, in dem er ESC-Sequenzen nimmt?
Kyochera hat auch einen Emulations-Modus, bei dem man Steuersequenzen mit
!R!;---Befehle---;EXIT gibt.
Mfg Hajoseb
Wollte doch nur noch das "versprochene" Bild anhängen 😉