 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 21.08.2024, 21:58 Titel: |
|
|
Mit sieben Reihen (21 verdeckte Karten) wird das wohl ziemlich heftig. Aber du kannst da auch mit anderen Dingen experimentieren - die Legefolge der Spinne (Legen unabhängig von der Farbe, aber Verschieben nur von gleichfarbigen Reihen) könnte ebenfalls interessant sein. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hhr
Anmeldungsdatum: 15.07.2020 Beiträge: 112
|
Verfasst am: 04.10.2024, 19:49 Titel: |
|
|
Ich habe überlegt, ob ich einen Bug per Email oder im Forum melden sollte.
Weil man im Forum besser diskutieren kann, habe ich mich für diesen Weg entschieden.
Im Fenster 'Einstellungen' kann man Soundeffekte und Animation nicht umschalten.
Vorschläge fürs Bugfixing:
patfinder.bi, Zeilen 581, 583:
hauptsetting.SpielerSound = cast(boolean, tempstring)
hauptsetting.SpielerAnimation = cast(boolean, tempstring)
patwork.bi, Zeilen 91, 94:
Setting.sound = clng(cast(boolean, temp))
Setting.animation = clng(cast(boolean, temp))
Hiernach funktioniert das Umschalten des Sounds immer noch nicht, deshalb habe ich (als Notlösung?) das hier probiert:
patwork.bi, Zeile 91:
sound = cuint(cast(boolean, temp)) |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 05.10.2024, 11:28 Titel: |
|
|
Vielen Dank für die Rückmeldung!
Ich habe das Problem jetzt auf eine andere Weise gefixt:
patfinder.bi Zeilen 864-865:
Code: | print #1, iif(hauptsetting.SpielerSound, -1, 0)
print #1, iif(hauptsetting.SpielerAnimation, -1, 0) |
Ich denke, langfristig ist es besser, die Werte als Zahlen zu speichern statt als Bool-Strings. Die Umwandlung von Integer nach Boolean funktioniert ja automatisch.
Das zweite Problem liegt, glaube ich, an einer anderen Sache:
patwork.bi, Zeile 3448
Code: | if (Setting.sound and SOUND_EFFEKT_OK) = 0 then exit sub |
(Setting.sound statt sound - die globale Variable sound müsste ich eigentlich rauswerfen können, die ist noch ein Relikt von früher. Allerdings muss ich noch den Konsolenaufruf mit Optionsschaltern testen.)
Scheint soweit zu funktionieren. Ansonsten gib gern Bescheid!
Leider habe ich im Moment die Zugangsdaten zum FTP-Server nicht zur Hand, kann daher etwas dauern, bis ich das Update hochladen kann. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 13.10.2024, 17:58 Titel: |
|
|
Ich habe die aktualisierte Version hochgeladen - neben dem gefixten Bug gibt es auch etwas erweiterte Legemöglichkeiten bei automatisierten Spielzügen sowie zwei neue Patiencen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hhr
Anmeldungsdatum: 15.07.2020 Beiträge: 112
|
Verfasst am: 14.10.2024, 19:13 Titel: |
|
|
Hallo nemored,
vielen Dank für die neue Version.
Patfinder muss noch kompiliert werden, die zip-Datei enthält die alte patfinder.exe.
Für mich selbst habe ich das mit
fbc32.exe patfinder.bas -s gui include\patfinder.rc
gemacht. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 14.10.2024, 19:37 Titel: |
|
|
hhr hat Folgendes geschrieben: | Patfinder muss noch kompiliert werden, die zip-Datei enthält die alte patfinder.exe. |
Oh, Mist - werde ich bei Gelegenheit aktualisieren. Die beigelegten "Anleitungen" enthalten auch noch ein paar Tippfehler, die ich bei der Gelegenheit ausbessern kann.
edit: Ich habe die Datei nochmal neu hochgeladen. Jetzt stimmt hoffentlich alles.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hhr
Anmeldungsdatum: 15.07.2020 Beiträge: 112
|
Verfasst am: 21.04.2025, 20:12 Titel: |
|
|
@nemored
Die Taste 'Wiederholen' hat anscheinend dieselbe Funktion wie die Taste 'Neues Spiel',
sodass man ein Spiel nach einem Spielabbruch nicht wiederholen kann.
Um ein Spiel wiederholen zu können, habe ich in patfinder.bi, sub spielStarten zwei Zeilen geändert und zwei Zeilen eingefügt:
Zeile 1397, randominit hinzufügen: spielergebnis = patwork(.url, .regelaktiv, .level(.regelaktiv), hauptsetting.benutzer, randominit)
Zeile 1382, randominit = rnd * (2^32) hinzufügen: if spielantwort = 1 then t = timer : randominit = rnd * (2^32)
Zeile 1378, nach dim as integer x_, y_ hinzufügen: dim as double randominit und randomize
dim as integer x_, y_
dim as double randominit
randomize
do
Das sieht dann so aus und ist für meine Zwecke brauchbar:
Code: | sub spielStarten(pat as TypPatience)
dim as long spielantwort = 1, t, zeit, f = freefile, tempint, spielergebnis, punkte
dim as integer x_, y_
dim as double randominit
randomize
do
with pat
' wenn Speicherstand vorhanden, dann bisher gespielte Zeit auslesen
if spielantwort = 1 then
t = timer
randominit = rnd * (2^32)
end if
if dir(hauptsetting.datapfad & "benutzer" & slash & hauptsetting.benutzer & slash & .url & ".sav") <> "" then
open hauptsetting.datapfad & "benutzer" & slash & hauptsetting.benutzer & slash & .url & ".sav" for binary as #f
seek f, 1
get #f,, zeit
get #f,, tempint
get #f,, .regelaktiv
close #f
if zeit and &h80000000 then spielantwort = 2
t = timer - (zeit and &h7fffffff)
end if
' starte gefundenes Programm
dim as FB.Image ptr bildsicherung = imagecreate(PF_SCREEN_X, PF_SCREEN_Y)
get (0, 0)-(PF_SCREEN_X-1, PF_SCREEN_Y-1), bildsicherung
screencontrol FB.GET_WINDOW_POS, x_, y_
spielergebnis = patwork(.url, .regelaktiv, .level(.regelaktiv), hauptsetting.benutzer, randominit)
|
Nach speichern/Ende kann das Spiel nicht wiederholt werden, das ist für mich nicht so wichtig. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 22.04.2025, 18:19 Titel: |
|
|
Vielen Dank für die Rückmeldung - noch so eine Sache, die beim Umbau von v2 zu v3 kaputt gegangen ist.
Um das Spiel nach dem Speichern korrekt wiederholen zu können, sind etwas größere Anpassungen nötig. Ich habe das jetzt für die kommende Version korrigiert. Allerdings will ich noch ein wenig QoL einbauen - insbesondere im Manager das Filtern der Patiencen nach Spieltyp und im Spiel die Möglichkeit, Infos zu einem ausgewählten Stapel anzeigen zu lassen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 31.05.2025, 13:31 Titel: |
|
|
Update vom 31.05.2025 auf Version 4.0
Es hat sich eine genze Menge getan, sodass ich bestimmt ein paar Dinge vergesse ...
Vorneweg: Alte Spielspeicherstände sind nicht mehr kompatibel zur neuen Version. Alte Patiencen (XML-Dateien) sollten aber weiterhin unverändert laufen.
Ich zitiere die Neuerungen einfach mal von der Projektseite:
Quality of Life:
- Die Patiencen lassen sich mit Tags und einem Schwierigkeitsgrad versehen. Das Verwaltungsprogramm ermöglicht das Filtern nach diesen Tags bzw. nach dem Schwierigkeitsgrad.
- Die Felder in der Patience können mit einem <hilfe>-Tag versehen werden, dessen Inhalt beim Überfahren des Feldes mit der Maus in der Statusleiste angezeigt wird. Das Verhalten der Hilfsanzeige (immer anzeigen, nie anzeigen, nur bei gedrückter STRG-Taste anzeigen) kann in den Optionen eingestellt werden.
- Der Klick mit der mittleren Maustaste auf eine teils verdeckt liegende Karte zeigt diese komplett an.
- Optionen können jetzt auch direkt während des laufenden Spiels angepasst werden. Diese Änderungen gelten lokal bis zum Ende des Spiels. Um Einstellungen dauerhaft zu verändern, muss weiterhin das Verwaltungsprogramm verwendet werden.
- Die Möglichkeit, ein (vom Patiencenmanager aus gestartetes) laufendes Spiel neu zu starten, wird nun auch vom Spiel aus unterstützt.
Neue Inhalte:
- wieder eine Reihe an neuen Patiencen
- ein paar neue Kartenbilder, darunter ein vierfarbiges Set
- Kartenbilder werden jetzt pro Set und Größe in einer einzigen Bilddatei gespeichert.
- XML-Erweiterung, um beliebige Stapel mit einem Rand in beliebiger Farbe zu versehen; dieser Rand lässt sich auch über automatisierte Spielzüge verändern
- XML-Erweiterung, um den Wert von Feldattributen in Textausgaben (Hilfe, Anzeige, Meldung) einzubinden
Bugfixes:
- Spielwiederholung sollten jetzt korrekt funktionieren.
- Die Spielstatistik wird nun direkt nach jedem Spiel aktualisiert.
- Darstellungsfehler beim Verschieben querliegender Stapel wurden behoben.
- Die graphische Darstellung beim Ausgrauen wurde komplett überarbeitet.
Insbesondere habe ich einen Monat damit verbracht, die bestehenden Patiencen an die neuen Voraussetzungen anzupassen und die Spielanleitung zu ergänzen.
Download:
patfinder_4_0.zip (11,0 MB)
patfinder_4_0.7z (7.7 MB) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hhr
Anmeldungsdatum: 15.07.2020 Beiträge: 112
|
Verfasst am: 01.06.2025, 20:28 Titel: |
|
|
@nemored, danke für die neue Version...
Bei der alten Version des Programms hatte ich eine harfe.xml umgebaut, die mit der alten wie mit der neuen Version des Programms problemlos funktioniert.
Nun habe ich die harfe.xml aus der neuen Version entsprechend geändert und musste feststellen, dass das Legen einer 7 auf das Ass mit dem neuen Programm nicht funktioniert.
Erst als ich in Zeile 3 die alte Programmversionsnummer eingetragen hatte, funktionierte es mit der alten und der neuen Version des Programms.
Zur Verdeutlichung die Datei harfe32-6.xml, bei der das besondere Legen (7 auf Ass) nur funktioniert, wenn ich in Zeile 3 die alte Programmversionsnummer eintrage: 140417
Code: | <?xml version="1.0" encoding="utf-8" ?>
<spiel name="Harfe32-6" fenster="56x38" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="patfinder.xsd">
<programm>250501</programm>
<version>250505</version>
<tag>Klondike</tag>
<schwer>1</schwer>
<bemerkung>Eine Harfe mit 32 Karten. Hier wird die 7 auf das Ass gelegt. Viel Spaß!</bemerkung>
<anleitung>Ziel: Alle Karten auf G ablegen\nAuf G gleichfarbig aufwärts von Ass bis König aufbauen. H abwärts von König bis Ass in wechselnder Farbe legen. Eine Karte von H kann auf G oder auf andere H gelegt werden. Von H nach H können auch Stapel verschoben werden. Leere H können nur durch Könige aufgefüllt werden.\nS legt eine Karte auf A. Diese kann auf H oder G gelegt werden. Ist S leer, kommen die Karten von A zurück nach S. Wird mit Jokern gespielt, dann wird S nur zweimal gegeben.</anleitung>
<regelwerk>
<regel id="einzeln">Karten einzeln geben</regel>
<regel id="drei">Immer 3 Karten geben</regel>
<regel id="Joker">Spiel mit Jokern</regel>
</regelwerk>
<karten>32</karten>
<punktemax>32</punktemax>
<regel id="Joker">
<add typ="einzel">Joker</add>
<add typ="einzel">Joker</add>
<add typ="einzel">Joker</add>
</regel>
<vorlage id="grundtemplate" typ="grund">
<max>13</max>
<folgestart>A</folgestart>
<folgefarbe>gleich</folgefarbe>
<folgewert>auf</folgewert>
<folgeende>K</folgeende>
<punkte>1</punkte>
<hilfe>Grundkarten: gleichfarbig aufwärts ab Ass</hilfe>
</vorlage>
<vorlage id="normal" typ="hilf">
<max>19</max>
<richtung>unten</richtung>
<folgestart>K</folgestart>
<folgefarbe>wechsel</folgefarbe>
<folgewert>ab</folgewert>
<folgeende>A</folgeende>
<auto>K</auto>
<hilfe>Hilfsstapel: abwärts in wechselnde Farbe ab König</hilfe>
</vorlage>
<feld id="stock" x="38" y="34" typ="stock">
<ziel>abwurf</ziel>
<hilfe>Stock: legt eine Karten auf den Abwurf; beliebig oft geben</hilfe>
<regel id="drei">
<ziel>abwurf</ziel>
<ziel>abwurf</ziel>
<hilfe>Stock: legt drei Karten auf den Abwurf; beliebig oft geben</hilfe>
</regel>
<quelle>abwurf</quelle>
<wiederholung>frei</wiederholung>
<regel id="Joker">
<wiederholung>1</wiederholung>
<hilfe>Stock: legt eine Karte auf den Abwurf; insg. 2x geben</hilfe>
</regel>
<sicht>verdeckt</sicht>
</feld>
<feld id="abwurf" x="44" y="34" typ="abwurf">
<regel id="drei">
<richtung>rechts</richtung>
<sichtbar>3</sichtbar>
</regel>
</feld>
<feld id="g" x="54" y="2" typ="grundtemplate"></feld>
<feld id="g" x="54" y="10" typ="grundtemplate"></feld>
<feld id="g" x="54" y="18" typ="grundtemplate"></feld>
<feld id="g" x="54" y="26" typ="grundtemplate"></feld>
<feld id="r" x="8" y="2" typ="normal">
<lege typ="verdeckt" quelle="stock" anz="5">frei</lege>
<lege typ="offen" quelle="stock">frei</lege>
</feld>
<feld id="r" x="14" y="2" typ="normal">
<lege typ="verdeckt" quelle="stock" anz="4">frei</lege>
<lege typ="offen" quelle="stock">frei</lege>
</feld>
<feld id="r" x="20" y="2" typ="normal">
<lege typ="verdeckt" quelle="stock" anz="3">frei</lege>
<lege typ="offen" quelle="stock">frei</lege>
</feld>
<feld id="r" x="26" y="2" typ="normal">
<lege typ="verdeckt" quelle="stock" anz="2">frei</lege>
<lege typ="offen" quelle="stock">frei</lege>
</feld>
<feld id="r" x="32" y="2" typ="normal">
<lege typ="verdeckt" quelle="stock">frei</lege>
<lege typ="offen" quelle="stock">frei</lege>
</feld>
<feld id="r" x="38" y="2" typ="normal">
<lege typ="offen" quelle="stock">frei</lege>
</feld>
<aktion typ="legen">
<bedingung feld="ziel" tag="id">g</bedingung>
<bedingung feld="ziel" tag="karte">A</bedingung>
<bedingung feld="quelle" tag="karte">7</bedingung>
<vergleich feld1="quelle" feld2="ziel" typ="farbe">gleich</vergleich>
<lege feld="quelle">ziel</lege>
</aktion>
</spiel>
|
edit: Bemerkung in Zeile 7 geändert.
edit 2: Typo in Zeile 8
Zuletzt bearbeitet von hhr am 17.06.2025, 19:14, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 02.06.2025, 01:06 Titel: |
|
|
Ja, hier liegt einer der sehr wenigen Fälle vor, die sich in der Syntax geändert haben. Ab Version 4 lauten die Verweise auf den Quell- und Zielstapel @quelle bzw. @ziel (statt wie vorher quelle und ziel). Wenn du als Programmversion einen Wert kleiner als 250501 einträgst (das entspricht der patfinder-Version < 4), wird nach den alten Bezeichnungen gearbeitet, bei einer Programmversion >= 250501 erwartet das Programm die neuen Bezeichungen.
Mit Programmversion 250501 ist die Patience mit folgender Änderung lauffähig:
Code: | <aktion typ="legen">
<bedingung feld="@ziel" tag="id">g</bedingung>
<bedingung feld="@ziel" tag="karte">A</bedingung>
<bedingung feld="@quelle" tag="karte">7</bedingung>
<vergleich feld1="@quelle" feld2="@ziel" typ="farbe">gleich</vergleich>
<lege feld="@quelle">@ziel</lege>
</aktion> |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 03.06.2025, 23:54 Titel: |
|
|
Leider ist mir beim Zusammenstellen der Kartenbilder ein Fehler unterlaufen - bei Oxygen und Oxygen-White sind die Farben Kreuz und Pik vertauscht, bei Guyenne sind sie komplett durcheinander. Ich habe die Dateien neu hochgeladen (wer nicht mit diesen drei Kartenbilder spielen will, ist sowieso nicht betroffen).
Ich habe auch zwei weitere Kartendecks:
Beide Sets habe ich auf openclipart.org gefunden; die 7z-Dateien sind jeweils ca. 1MB groß.
Die in den Dateien befindlichen Kartenet-Bilder müssen lediglich im patfinder-Verzeichnis in den Ordner "karten" kopiert werden. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 04.06.2025, 08:57 Titel: |
|
|
Bugfix (Version 4.0.250604)
Im Hauptprogramm gab es leider bei den Einstellungen einen Bug, durch den die neuen Einstellung des Spieldecks zwar gespeichert aber nicht für die aktuelle Sitzung übernommen wurde. Der Fehler ist jetzt behoben, kann aber auch schnell selbst gefixt werden - dazu müssen in der der Datei patfinder.bi (im Ordner include) ab Zeile 910 zwei Zeilen eingefügt werden:
Code: | ' Einstellungen speichern
if setZaehler >= 0 then
dim as integer f = freefile
open "benutzer" & slash & hauptsetting.benutzer & slash & "einstellung" for output as #f
[...]
close #f
' ### HIER DIE FOLGENDEN ZWEI ZEILEN EINFÜGEN ###
hauptsetting.SpielerSet = kartensets(setZaehler)
hauptsetting.SpielerRuecken = ruecken(rueckenZaehler)
end if |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4698 Wohnort: ~/
|
Verfasst am: 09.06.2025, 23:13 Titel: |
|
|
Version 4.01.250609 (beta)
Feature Request: Zum Geben einer Karte vom Kartenstapel (Stock) kann auch die Leertaste verwendet werden.
Etwas ausführlicher: Über die automatisierten Spielzüge lassen sich jetzt auch Tastenzuweisungen definieren, um zum Beispiel beim Drücken der Taste "c" einem Feld eine farbige Umrandung zu verpassen (oder was einem auch immer für ein Blödsinn einfallen mag aber etwas ernsthafter: man könnte z. B. eine Taste definieren, um eine bestimmte Legeaktion durchzuführen). Die Leertaste ist so vorbelegt, dass sie einen Klick auf den Standard-Stock simuliert - das ist das erste Feld in der Spieledatei, das mit dem Typ "stock" definiert wird und auf dem zu Beginn alle Karten landen. Die Leertaste lässt sich in der Spieledatei aber auch umdefinieren oder deaktivieren.
Das vordefinierte Verhalten der Leertaste ergibt nicht bei jeder Patience Sinn und ist noch nicht ausführlich getestet, daher ist diese Programmversion als Beta gekennzeichnet und im Portal auch noch nicht veröffentlicht. Es gibt auch noch keine Dokumentation dazu. Ich will es aber schon mal zum Testen reinstellen.
Der Download enthält nur das (Windows-)Programm und den Quelltext, keine Spieldateien, Kartenbilder oder DLLs.
https://programmierung.eulengesang.de/patfinder/patfinder_4_1_beta.7z
(Da Windows offenbar 7zip inzwischen nativ unterstützt, werde ich wahrscheinlich komplett auf dieses Format umsteigen.) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|