Entwickler-Ecke

Open Source Projekte - Kniffel (nach Wikipedia-Regeln, mit Quelltext) v1.3.1.0


Narses - Do 11.01.07 02:30
Titel: Kniffel (nach Wikipedia-Regeln, mit Quelltext) v1.3.1.0
Moin!

Und noch ein Kniffel-Clone: ;)

Viel Spaß damit,

cu
Narses

----------------

Hinweis: Hier gibt es ein ausführliches Tutorial zum Thema Bestenliste mit TListView [http://www.delphi-forum.de/viewtopic.php?t=70217], es ist also nicht nötig, den Code hier zu zerlegen... ;)


Narses - Mi 17.01.07 00:57

Moin!

Ich hab noch ein bischen dran rumgespielt: ;)

cu
Narses


Kroko - Mi 17.01.07 06:11

ich glaube mal, ich habe da ein Fehlerchen gefunden :cry:


freedy - Mi 17.01.07 10:02

Moin Narses!

Ich find das Spiel ganz schön... so während der Arbeit. ;-)

Allerdings verwirrt mich, dass die Würfel selbständig würfeln, nachdem ich sie zugeordnet habe. Eine Abfrage, ob ein neues Spiel gestartet werden soll, wäre auch schön. Hab mich jetzt schon zwei Mal verklickt.

Gruß


Narses - Mi 17.01.07 11:47

Moin!

user profile iconKroko hat folgendes geschrieben:
ich glaube mal, ich habe da ein Fehlerchen gefunden :cry:

Naja, eher eine Regelauslegung von mir (zu recht!) als "ungerecht" angeprangert... ;)

Ich hatte die Regeln so verstanden, dass bei einem Pasch genau 3 bzw. 4 Würfel gleich sein müssen. Aber da ich ja schon mehrfache Kniffel nicht gesondert behandle, habe ich den Pasch für die Wertung auf mindestens 3 bzw. 4 gleiche Würfel reduziert. ;)

Also, eher Balancing statt Fehler. :D


user profile iconfreedy hat folgendes geschrieben:
Ich find das Spiel ganz schön... so während der Arbeit. ;-)

Danke. :D

user profile iconfreedy hat folgendes geschrieben:
Allerdings verwirrt mich, dass die Würfel selbständig würfeln, nachdem ich sie zugeordnet habe.

Sie würfeln nicht, sondern werden sortiert und ausgerichtet. ;) Aber zugegeben, ist etwas gewöhnungsbedürftig. :? ;)

user profile iconfreedy hat folgendes geschrieben:
Eine Abfrage, ob ein neues Spiel gestartet werden soll, wäre auch schön. Hab mich jetzt schon zwei Mal verklickt.

So ist es; wird jetzt gemacht, wenn die Gesamtpunkte > 0 sind (Neustart und Ende). Danke für den Hinweis.

Neue Version - wie immer - im ersten Beitrag.

cu
Narses


wunsiedler - Mi 17.01.07 12:23
Titel: ziehen
das mit dem ziehen der würfel gefällt mir nicht. ein klick darauf und sie sind oben wäre schöner.


Kroko - Mi 17.01.07 13:14

user profile iconNarses hat folgendes geschrieben:
Moin!

user profile iconKroko hat folgendes geschrieben:
ich glaube mal, ich habe da ein Fehlerchen gefunden :cry:

Naja, eher eine Regelauslegung von mir (zu recht!) als "ungerecht" angeprangert... ;)

Ich hatte die Regeln so verstanden, dass bei einem Pasch genau 3 bzw. 4 Würfel gleich sein müssen. Aber da ich ja schon mehrfache Kniffel nicht gesondert behandle, habe ich den Pasch für die Wertung auf mindestens 3 bzw. 4 gleiche Würfel reduziert. ;)

Also, eher Balancing statt Fehler. :D

...
cu
Narses

in 5 gleichen Würfeln steckt aber doch ein Viererpasch, oder :wink:


Saubäär - Mi 17.01.07 13:52

Moin Narses,

user profile iconNarses hat folgendes geschrieben:

  • Ein weiteres Set Würfelbilder zur Auswahl (on-the-fly-Aktivierung)

Tolle Idee. :flehan:

user profile iconNarses hat folgendes geschrieben:

  • Die maximal erreichbare Punktzahl wird in den Bewertungsfeldern als Hint angezeigt

Kommt mir n bisschen bekannt vor. :beer:

Gruß

Saubäär


Narses - Mi 17.01.07 16:07

Moin!

user profile iconwunsiedler hat folgendes geschrieben:
das mit dem ziehen der würfel gefällt mir nicht. ein klick darauf und sie sind oben wäre schöner.

Kann ich verstehen, wenn man kein d&d mag :arrow: Rechtsklick auf den Würfeln verschiebt diesen. ;)

user profile iconKroko hat folgendes geschrieben:
in 5 gleichen Würfeln steckt aber doch ein Viererpasch, oder :wink:

Hab ich ja nicht bestritten - und deshalb auch die Bewertung geändert. ;)

user profile iconSaubäär hat folgendes geschrieben:
Tolle Idee. :flehan:

Danke. ;)

user profile iconSaubäär hat folgendes geschrieben:
Kommt mir n bisschen bekannt vor. :beer:

Ja, du hast das in deinem Ansatz auch drin. ;) Allerdings steht das ja auch auf einem Kniffel-Zettel, also soo neu ist die Idee nun auch wieder nicht. :zwinker:

Neue Version - wie immer - im ersten Beitrag. ;)

cu
Narses


Saubäär - Mi 17.01.07 16:27

Hi Narses,

ich finds ein bisschen schade, dass man bereits beiseitegelegte Würfel nicht nochmal mitwürfeln kann. Sind das die "offiziellen" Regeln?
Mit dem klick auf den Würfel um ihn beiseite zu legen find ich gut.

Gruß

Bäär


Narses - Mi 17.01.07 16:51

Moin!

Änderungen:

user profile iconSaubäär hat folgendes geschrieben:
ich finds ein bisschen schade, dass man bereits beiseitegelegte Würfel nicht nochmal mitwürfeln kann. Sind das die "offiziellen" Regeln?

Wikipedia sagt nix explizit dazu; ich kenne Kniffel selbst auch nicht anders. :| Man muss sich halt einfach mal festlegen (Effekt: so haben die Mitspieler eine größere Chance)! ;)

Neue Version... blah... siehe oben :roll: ;)

cu
Narses


Narses - Do 18.01.07 01:42

Moin!

user profile iconSaubäär hat folgendes geschrieben:
ich finds ein bisschen schade, dass man bereits beiseitegelegte Würfel nicht nochmal mitwürfeln kann.

Hmm... :gruebel: ich gebe zu, ich habe diesen Punkt jetzt von zwei unabhängigen Seiten gehört, deshalb:

Da das Projekt ja open-source ist, kann man natürlich schon dafür sorgen, dass diese Beschränkung aufgehoben wird. Einfach die markierte Zeile aus der Methode .NextRoll entfernen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
// Folgewurf -> gesicherte Würfel und leere Positionen ignorieren
procedure TMainForm.NextRoll;
  var
    i: Integer;
begin
  Saved.DisableMoving; // d&d ausschalten
  Current.DisableMoving;
  Saved.Sort(FALSE); // gesicherte der Augenzahl nach anordnen, aber rechtsbündig
  for i := 0 to 4 do begin
//--- rausnehmen, wenn gesicherte Würfel trotzdem wieder beweglich sein sollen ---
    Saved.Dice[i].Locked := Saved.PosInUse[i]; // weggelegte Würfel sichern
//---
    if (Current.PosInUse[i]) then // liegt auf der Position ein Würfel zum Aktualisieren?
      Current.Dice[i].Value := Random(6)+1// dann neu werfen
  end;
  Current.Sort; // neue Würfel der Augenzahl nach anordnen
  Evaluate; // Wurf (neu) bewerten
  Saved.EnableMoving; // d&d freigeben
  Current.EnableMoving;
end;

Allerdings finde ich es trotzdem "besser", wenn man sich festlegen muss :arrow: so wirkt sich eine "Strategie" beim Kniffeln deutlich stärker aus und "Fehlentscheidungen" können nicht wieder durch pures Würfelglück wett gemacht werden. :mrgreen:

cu
Narses


Narses - So 21.01.07 01:02

Moin!

Neue Version (s. 1. Beitrag): ;)

cu
Narses


Martok - So 21.01.07 03:10

Nicht schlecht das Spiel! Da hat mal mal nen schönen Zeitvertreib.

user profile iconNarses hat folgendes geschrieben:

  • Die persönlichen Einstellungen (Name und Würfelset) werden jetzt unter "Eigene Dateien\Kniffel.set" abgespeichert.

:shock:
Ähm, wie wäre es mit 'Anwendungsdaten\Kniffel\Kniffel.set'? Unter 'Eigene Dateien' ist eigentlich eine Unsitte, die ich nur EA zugetraut hatte :roll:

Eigene Dateien ist doch eher für...nun ja, Dateien halt gedacht, nicht für Einstellungen.


Narses - So 21.01.07 17:28

Moin!

user profile iconMartok hat folgendes geschrieben:
Nicht schlecht das Spiel! Da hat mal mal nen schönen Zeitvertreib.

Danke. :)

user profile iconMartok hat folgendes geschrieben:
:shock:
Ähm, wie wäre es mit 'Anwendungsdaten\Kniffel\Kniffel.set'? Unter 'Eigene Dateien' ist eigentlich eine Unsitte, die ich nur EA zugetraut hatte :roll:

Eigene Dateien ist doch eher für...nun ja, Dateien halt gedacht, nicht für Einstellungen.

Tja ;) das empfindest du nur auf Rechnern so, die standalone oder private-networking sind; in einer "größeren" Umgebung nimmst du aber nur deine "Eigenen Dateien" mit (-> Server-Profil), die AppDatas bleiben lokal auf der Maschine. Meldest du dich woanders an, haste auch wieder andere (lokale) Einstellungen... :? ;)

Ist aber doch open-source; wem das also "missfällt", möge einfach die markierte Konstante austauschen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
begin
  Randomize; // Zufallszahlengenerator initialisieren
  CreateDynamicControls; // Controls zum Punktezählen erzeugen
  // dynamische Würfel-Panels anlegen
  Saved := TDiceArea.Create(MainForm,224,248,WhiteDice,SavedDiceClick);
  Current := TDiceArea.Create(MainForm,224,368,WhiteDice,CurrentDiceClick);
  // persönliche Einstellungen aus den "Eigenen Dateien" laden
  SetFileName := GetSpecialFolder(CSIDL_PERSONAL)+'\Kniffel.set';
  Settings := TIniFile.Create(SetFileName);
  rgDiceType.ItemIndex := Settings.ReadInteger('Global','DiceType',rgDiceType.ItemIndex);
  edUserName.Text := Settings.ReadString('Global','PlayerName',GetPlayerName);
  Settings.Free;
  LoadHighscores; // Highscores wiederherstellen
  BtnStartGameClick(Self); // Start ist auch Neustart
end;

gegen: CSIDL_APPDATA, dann wird das Anwendungsdatenverzeichnis verwendet. ;)

cu
Narses


Martok - So 21.01.07 17:45

user profile iconNarses hat folgendes geschrieben:

Tja ;) das empfindest du nur auf Rechnern so, die standalone oder private-networking sind; in einer "größeren" Umgebung nimmst du aber nur deine "Eigenen Dateien" mit (-> Server-Profil), die AppDatas bleiben lokal auf der Maschine. Meldest du dich woanders an, haste auch wieder andere (lokale) Einstellungen... :? ;)

Achso. Naja, mit sowas habe ich nicht zu tun, daher...ist ja auch egal ;)


jakobwenzel - So 21.01.07 17:47

Ich hasse Position = poDesktopCenter :?
Das liegt bei mir halb außerhalb vom Schirm.
(Delphi is nich drauf ausgelegt, dass der primäre Monitor rechts is).


Narses - Do 22.02.07 17:20

Moin!

Eine Änderung und ein Bugfix:

Neue Version... blah... siehe oben :roll: ;)

cu
Narses