Autor Beitrag
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 30.06.13 09:24 
Hallo mal wieder :wave: :wave:

Sweeper ist ein Klon des Windows-Spiels Minesweeper. Viel zu erklären gibt es nicht, bis auf einige 'Comfort'-Optionen:
  • Autoflag isolated mines, mit der Minen markiert werden wenn sie die einzigen verdeckten Felder um ein aufgedecktes Feld sind
  • und Autosubstract flagged Mines: Eine der Hauptaufgaben des Spielers ist es, die bereits gefundenen Minen im Kopf von den Zahlen in Feldern abzuziehen. Diese Option veranschaulicht die Wirkung dieses Prozesses.

Für große Spielfelder kann mit dem Mausrad und DragNDrop gezoomt bzw. gescrollt werden. Zum exakteren Zoom kann mit gehaltener rechter Maustaste ein Bereich ausgewählt werden.
Seit Rev 12 gibt es auch einen Solver, der aber noch ein besseres Interface braucht.

Programm (exe, 1000.5 KB)
Quelltext (rar, 31.88 KB)

Screenshot
Bugs:
  • Zu dem Modal-Dialog bei Programmstart gibt es leider keinen Taskleisten-Eintrag. (klick) :(
  • Der Preview beim Rauszoomen srimmr nicht.


ich wünsche viel Spaß beim ausprobieren :)
Einloggen, um Attachments anzusehen!
_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)


Zuletzt bearbeitet von Hidden am Do 01.08.13 10:03, insgesamt 16-mal bearbeitet
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 30.06.13 11:54 
Hallo Hidden,
ich habe Dein Programm ausprobieren wollen, aber es geht leider nicht. :cry:
Zuerst meldet Win8, dass eine "Gefahr" von Deinem Programm ausgeht (habe ich ignoriert :P ) und dann kommt eine Fehlermeldung (5), was das auch sein mag.
Den Quelltext kann ich nicht übersetzen. Das liegt aber an meinem Steinzeit-Delphi.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 30.06.13 13:06 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
und dann kommt eine Fehlermeldung (5), was das auch sein mag.
Dein Windows 8 ist komisch. Bei mir funktioniert die Rev1 einwandfrei. :D

Allerdings sollte das Spiel doch enden, wenn ich eine Mine aufdecke, oder nicht? Das ist nämlich nicht mehr Fall. :idea:
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 30.06.13 13:22 
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
und dann kommt eine Fehlermeldung (5), was das auch sein mag.
Dein Windows 8 ist komisch. Bei mir funktioniert die Rev1 einwandfrei. :D

Hmm, ok. Habe schon meinen Mitbewohner überredet, dass ich das gleich mal bei ihm testen kann.

user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Allerdings sollte das Spiel doch enden, wenn ich eine Mine aufdecke, oder nicht? Das ist nämlich nicht mehr Fall. :idea:
Japp, ist so gewollt :) Die rote Mine wirst du nicht mehr los, ansonsten wirkt sie auf das Spiel wie eine geflaggte.

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 30.06.13 13:24 
Hallo,
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Hmm, ok. Habe schon meinen Mitbewohner überredet, dass ich das gleich mal bei ihm testen kann.

Sorry, musst Du nicht.
Starte ich das Programm aus dem Windows Explorer heraus, ist alles in Ordnung. Das Programm läuft tadellos.
Ich habe es zuerst aus dem TotalCommander heraus versucht, und der spinnt scheinbar.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 30.06.13 16:51 
Unter Wine gibt es zahlreiche grafische Artefakte. Zusätzlich ist dein Hit-Test falsch, so dass es insbesondere beim Zoomen des Feldes dazu kommen kann, dass er das Feld rechts daneben anklickt.

Ferner ist deine Aufdeck-Methode derart langsam, dass man entweder auf dem Spielfeld den Fortschritt animieren sollte ODER aber aber das Aufdecken durch BeginUpdate/EndUpdate instantan gestalten sollte.

Auch sollte die farbliche Hervorhebung von Mienen, explodierten Feldern, ... besser gestaltet werden.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 30.06.13 17:06 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Unter Wine gibt es zahlreiche grafische Artefakte.

Die beobachte ich unter Windows auch, wenn ich das Programm nicht in den Vollbildmodus schalte. Was relativ seltsam ist, alles was passiert ist ein artefaktfreies Bild per StretchDraw auf eine Paintbox zu packen :gruebel: Und StretchDraw scheint runterskalieren nicht zu mögen :?

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Zusätzlich ist dein Hit-Test falsch, so dass es insbesondere beim Zoomen des Feldes dazu kommen kann, dass er das Feld rechts daneben anklickt.
War lokal schon gefixt, beim hit-Test empfiehlt es sich wohl ausnahmsweise mal mit / zu arbeiten statt div wie im Rest des Programms :P

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Ferner ist deine Aufdeck-Methode derart langsam, dass man entweder auf dem Spielfeld den Fortschritt animieren sollte ODER aber aber das Aufdecken durch BeginUpdate/EndUpdate instantan gestalten sollte.
Ist eigentlich bereits instantan, d.h. alles was geändert wurde wird auf einmal eingezeichnet. Ich vermute das Application.ProcessMessages zwecks Log-Update zeichnet die Paintbox zwischenzeitlich mehrfach neu. Da könnte BeginUpdate helfen, du hast Recht :idea: [Edit] ggf hilft es auch schon, die extra angelegte Buffer-Bitmap nicht bei JEDEM Paintbox-Repaint komplett neu zu zeichnen :autsch::autsch: [/Edit]. (Problem bei der Aufdeck-Methode ist, dass mit beiden 'Comfort'-Hilfen eigentlich nur noch eine Heuristik zum komplett-Lösen fehlt. Und das ist dann Turing-Vollständig, also weiß ich nicht wie viel sich da noch optimieren lässt. :()


user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Auch sollte die farbliche Hervorhebung von Mienen, explodierten Feldern, ... besser gestaltet werden.
Du meinst ohne Autosubstract? Da gefällt es mir eigentlich schon ganz gut, mit Autosubstract treten gefundene Minen absichtlich ein bisschen in den Hintergrund.

lg,
Daniel

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)


Zuletzt bearbeitet von Hidden am So 30.06.13 20:50, insgesamt 1-mal bearbeitet
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 30.06.13 19:09 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Unter Wine gibt es zahlreiche grafische Artefakte.

Die beobachte ich unter Windows auch, wenn ich das Programm nicht in den Vollbildmodus schalte. Was relativ seltsam ist, alles was passiert ist ein artefaktfreies Bild per StretchDraw auf eine Paintbox zu packen :gruebel: Und StretchDraw scheint runterskalieren nicht zu mögen :?
Ja, in den Standardeinstellungen macht das nur Nearest Neighbor, das sieht bescheiden aus ;-)
HALFTONE fixt das ein wenig (ist nicht wirklich AntiAliased, aber geht schon). StretchDraw verleiert da einiges wieder, also direkt StretchBlt aufrufen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  SetStretchBltMode(PaintBox1.Canvas.Handle, HALFTONE);
  StretchBlt(PaintBox1.Canvas.Handle,
             00, PaintBox1.ClientWidth, PaintBox1.ClientHeight,
             FBuffer.Canvas.Handle,
             00, FBuffer.Width, FBuffer.Height, SRCCOPY);
//  PaintBox1.Canvas.StretchDraw(PaintBox1.ClientRect, FBuffer);

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."

Für diesen Beitrag haben gedankt: Hidden
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 30.06.13 22:34 
Hi,

Revision 2 und nun auch schon 3 ist online. In [2] ist die Grafik sehr viel runder geworden und eine weitere 'Comfort'-Option ist hinzugekommen (Autosubstract-Heuristik bei unveränderter Spielfeldoptik). [3] ist ein Hotfix: wurden zu viele Minen markiert, so ist der Minenzähler nicht ins negative gegangen sondern bei Null nach unten übergelaufen.

Das Programm startet nun im (fast)-Vollbildmodus, das heißt mit voller Breite; die Fensterhöhe wird nach wie vor so festgelegt, dass das Minenfeld ein Format von 30:16 hat. Wenn das Fenster übermäßig klein gezogen wird, gehen die Minensymbole und Zahlen über die Kästchengröße hinaus, gegebenenfalls könnte ich das Fenster vielleicht auf eine Mindestgröße beschränken.

Zu dem Modal-Dialog bei Programmstart gibt es leider keinen Taskleisten-Eintrag. :(

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1328
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Sa 06.07.13 15:10 
Als bekennender Minesweeper Fan musste ich mir Dein Spiel mal reinziehen. Nach einer Runde habe ich es aber wegen unüberwindlicher Differenzen wieder gelöscht.
Wenn ich am Fensterrand ziehe dann wird mir der Rand aus der "Hand" gerissen umd flackert wild rum. Warum legst Du die Feldgröße nicht via Option fest und packst alles in eine Scrollbox? So wäre es dann auch möglich endlich mal Spiele mit utopischen Abmessungen also, hunderten Feldern, zu erzeugen.

Was ich sehr gut finde, das man nach einer Miene die man kassiert weiter machen kann. Den Timer hätte ich gerne optional, also zu abschalten. Sowas finde ich bei Knobelspielen mehr als überflüssig. Es ist doch interessanter ob man es schafft zu lösen ohne eine Miene zu kassieren.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 06.07.13 15:55 
Hallo user profile iconSinspin,

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Bugs:
  • Die Methode zum Anpassen der Spielfeldgröße auf 30:16 (für quadratische Minenfelder) verhindert das Vergrößern des Formulars am Rand (an der Ecke funktioniert es, also wenn Höhe und Breite gleichzeitg verändert werden).

user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich am Fensterrand ziehe dann wird mir der Rand aus der "Hand" gerissen umd flackert wild rum. Warum legst Du die Feldgröße nicht via Option fest und packst alles in eine Scrollbox? So wäre es dann auch möglich endlich mal Spiele mit utopischen Abmessungen also, hunderten Feldern, zu erzeugen.

Hmm, das ist eine Idee. Ich implementiere das mal schnell in der Art.
Größere Spielfelder sind aber mit Vorsicht zu genießen: Das Aufdecken ist Turing-vollständig, also recht Zeitintensiv. Wenn Comfort-Optionen zum Aufdecken und Markieren aktiviert sind, kann das ggf auch mal 2-3 Minuten dauern.

user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
Was ich sehr gut finde, das man nach einer Miene die man kassiert weiter machen kann. Den Timer hätte ich gerne optional, also zu abschalten. Sowas finde ich bei Knobelspielen mehr als überflüssig. Es ist doch interessanter ob man es schafft zu lösen ohne eine Miene zu kassieren.

Hmm, das ist ja nicht viel Aufwand. Wenn mich ein Timer nicht interessiert, ignoriere ich ihn meißt aber einfach :)

lg,
Daniel

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 06.07.13 16:44 
Das AutoFlag tritt gewaltig auf Minen ...

Steps to Reproduce:
- Flag a non-mine

Actual Behaviour:
- Get hit by explosion nearby

Expected behaviour:
- Mine is left unopened

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 06.07.13 17:08 
Hi,

Ich hoffe, du meinst Autosubstract? Autoflag sollte gar keine Felder aufdecken o_O

Aktuell (bis ihr mich vom Gegenteil überzeugt) ist das as-intended: Ansonsten wäre Autosubstract geeignet, um zusätzliche Informationen zu erhalten, à la 'ich markiere mal ein Feld und schaue ob ich richtig liege'.

Autosubstract ist ein sehr mächtiges Werkzeug, mit dem ich ein 30x16-Feld auch mal in 6 Sekunden löse. Da sollte man sich schon sicher sein müssen, wenn man eine Mine markiert. ;)

lg,
Daniel

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1653
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: So 07.07.13 07:41 
Hallo,

der Effekt tritt bei autosubtract auf.
Wenn ich ein Feld als Miene markiere, das defintiv keine ist, dann entstehen Summen <0 und die richtigen Mienen werden aufgedeckt.
BenBe hat eben erwartet , dass das Programm dann stille schweigt.
Aber dann funktioniert das mit den Summen auch nicht mehr, weil, wie Du schon schriebst, man einfach mal probehalber markiert werden kann und autosubtract liefert einem die Mienen.

Diese Flackerei, schon bei Mausbewegungen, ist ja sehr nervig, wenn ich es mit TurboDelphi kompiliere.
In Lazarus 1.0.6 gibt es form.doublebuffered = true in der dfm nicht und es flackert trotzdem nichts ( GTK2, uuuh wie alt ).
Diese merkwürdigen Farben clWebDarkred habe ich mit Tcolor($000080) oder ähnlichem ersetzt.Ebenso Roundrect durch rectangle.
Zum Glück hat das Feld eine angenehme Größe für meine geschwächten Augen....

Gruß Horst
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 07.07.13 08:12 
user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

Hi :)

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Zum Glück hat das Feld eine angenehme Größe für meine geschwächten Augen....
Ich spiele auch ausschließlich mit maximiertem Fenster, sonst klickt man viel zu schnell mal daneben ;)

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Diese Flackerei, schon bei Mausbewegungen, ist ja sehr nervig, wenn ich es mit TurboDelphi kompiliere.
Die gibt es lokal schon nicht mehr, dafür kann man jetzt mit dem Mausrad zoomen. Sowenn ich es denn noch schaffe, dass das Spielfeld auf die Mausposition zoomt statt auf (0;0) :lol:

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 07.07.13 19:52 
So, jetzt gibt es was kaputtzutesten :)

Bekanntlich dauert Programmieren ja immer länger als geplant, vor allem dann wenn dem Entwickler ständig neue Dinge einfallen, die man einbauen könnte :P

Änderungen:
  • Die Fenstergröße wird nicht länger angepasst, statt dessen kann mit dem Mausrad gezoomt und per DragNDrop in diesem Zoom navigiert werden.
  • Die Schriftgröße in den Kästchen kann die Kästchengröße nicht länger überschreiten, auch wenn extrem weit herausgezoomt wird.
  • Das Formular blinkt jetzt nach jedem Feld-Aufdecken in der Taskleiste, da dies mit Comfort-Optionen / Aufdeck-Heuristik schonmal länger dauern kann ( -> [Alt][Tab]bing ).

    ausblenden Weiß jemand eine Alternative zu den auskommentierten, nicht funktionierenden, Methoden um festzustellen wann dies nötig ist?
    1:
    2:
    if not false {self.Showing}{self.focused}{self.Active} then
      FlashWindow(Handle, true);

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Diese Flackerei, schon bei Mausbewegungen, ist ja sehr nervig, wenn ich es mit TurboDelphi kompiliere.
Du meintest aber schon beim Vergrößern / Verkleinern des Formulars, oder? Anstonsten hatte bei mir nichts geflackert, ich habe aber auch kein Turbo Delphi zur Hand.

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1328
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: So 07.07.13 23:23 
Dann mal,...
der Tragödie zweiter Teil. :roll: Feldgröße, Mienenanzahl, Timer, Größe ändern. Fein, Absolut!
Nur, zu was nochmal, ist dieses permanente blinken des Fensterrahmens und Taskbuttons da? Um den Nutzer zu verwirren? Das schafft es. Selbst wenn das halbe Spielfeld mit einem Schlag aufgedeckt wird dauert das nichtmal eine Sekunde und ich habe wahrlich keinen schnellen Rechner. Wenn Du den Output rechts schreibst, da frage ich mich ob da nen ProcessMessages dranhängt denn ich kann sehen wie die Zeilen kommen. Das wäre dann kein Wunder wenn das was Lahm wird.
Wenn man da was drehen wollen würde könnte man ja den Aufdeckvorgang an sich animieren. Aber darum geht es ja nicht. Sondern nur darum, so Klever zu sein die Felder zu umschiffen hinter denen sich eine Überraschung versteckt. Aber nichts Süßes und auch kein Bunny.

€dith:
Als Vorschlag, miss doch die Zeit die vergeht von Start bis Ende der Aktion und lass es nur blinken wenn es länger als 1 1/2 Sekunden gedauert hat.
€dith2:
Warum Zoom? Ich habe es mal mit 50x50 probiert. Ich treffe die Felder kaum noch mit der Maus. Was spricht gegen die Eingabe einer Rastergröße und die Verwendung einer Scrollbox? So das ich den für mich aktuell interessanten Ausschnitt betrachten kann egal wie groß das Spielfeld ist.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 08.07.13 06:59 
Hi,

user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
Nur, zu was nochmal, ist dieses permanente blinken des Fensterrahmens und Taskbuttons da?
€dith: Als Vorschlag, miss doch die Zeit die vergeht von Start bis Ende der Aktion und lass es nur blinken wenn es länger als 1 1/2 Sekunden gedauert hat.
Daran hatte ich auch schon gedacht, als Notlösung oder zusätzliche Bedingung wann das Fenster blinkt.
War so nicht vorgesehen, ich hoffte relativ schnell auf eine Antwort hierauf:
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Weiß jemand eine Alternative zu diesen auskommentierten, nicht funktionierenden, Methoden um festzustellen wann dies nötig ist?
1:
2:
if not false {self.Showing}{self.focused}{self.Active} then
  FlashWindow(Handle, true);


user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
€dith2: Warum Zoom? Ich habe es mal mit 50x50 probiert. Ich treffe die Felder kaum noch mit der Maus.
Verstehe ich nicht :gruebel: Wenn du das Mausrad scrollst, zoomt es rein und die Felder werden größer. Das behandelt doch genau dein Problem?
Als du von großen Feldern sprachst, hatte ich beim Coden mit 300x160, 9900 Minen getestet (siehe Anhang). Bei noch größeren Feldern treten dann aber Fehler auf, ich weiß noch nicht was ich als vernünftige Grenze festsetzen soll.

user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
Was spricht gegen die Eingabe einer Rastergröße und die Verwendung einer Scrollbox? So das ich den für mich aktuell interessanten Ausschnitt betrachten kann egal wie groß das Spielfeld ist.

Als nächsten Schritt könnte man noch überlegen, ob man die h/v-Position des Ausschnitts auf dem Feld irgendwie anzeigt (abgesehen von den Koordinaten unten rechts).
Einfach die bestehende Paintbox auf eine Scrollbox zu packen, funtioniert leider nicht: Man muss schon auswählen, was gezeichnet wird, sonst wird es langsam. Wenn du die Rastergröße eingeben willst statt mit dem Mausrad zu scrollen, wirst du wahrscheinlich mehrmals probieren müssen bis es stimmt. Was ist da der Vorteil? :gruebel:

user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Du den Output rechts schreibst, da frage ich mich ob da nen ProcessMessages dranhängt denn ich kann sehen wie die Zeilen kommen. Das wäre dann kein Wunder wenn das was Lahm wird.
Nein, kein ProcessMessages. Memo1.Lines.BeginUpdate verhindert den Effekt, aber dann fühlt sich die Oberfläche "eingefroren" an (das ist sie auch so, aber man bekommt nicht mehr mit dass etwas passiert).
Hauptgründe für lange Aufdeckzeiten sind:
  • Stark minengesättigte Felder: Aktuell wird so lange ein neues Spiel gestartet, bis am Anfang etwas aufgedeckt wird -- ohne Rücksicht darauf, wie unwahrscheinlich dieses Ereignis bei einem 100x100 Feld mit 9998 Minen ist.
  • große Felder mit wenig Minen, besonders wenn Autosubstract + Autoflag aktiviert sind.
Einloggen, um Attachments anzusehen!
_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1653
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mo 08.07.13 07:26 
Hallo,

Zitat:
Stark minengesättigte Felder: Aktuell wird so lange ein neues Spiel gestartet, bis am Anfang etwas aufgedeckt wird -- ohne Rücksicht darauf, wie unwahrscheinlich dieses Ereignis bei einem 100x100 Feld mit 9998 Minen ist.

Man kann ja zu Beginn das Startfeld und eventuell seine Umgebung ausklammern.
Oder ganz simpel eine Umkehrung machen.
Alle Felder sind zu Beginn Minen-> Startfeld befreien und dann per Zufall die restliche Anzahl.
Wer zu viele Prüfungen dabei hasst, kann ja einfach eine Liste aller möglichen Feldkoordinaten machen, das Startfeld aber nicht einfügen, diese Liste mischen und die ersten ((N-1) - Anzahl Minen ) von Minen befreien.

Gruß Horst
Hidden Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 08.07.13 07:43 
user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Man kann ja zu Beginn das Startfeld und eventuell seine Umgebung ausklammern.
Aktuell wird das Spielfeld genau einmal durchgegangen und in jedes Feld mit einer Wahrschienlichkeit von p = MinenÜbrig / FelderÜbrig eine Mine gesetzt. Ich werde das anpassen, sodass die 9 Felder um die Startposition dabei ausgelassen werden und FelderÜbig entsprechend vermindert wird.

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)