Entwickler-Ecke

Open Source Projekte - Alfabet drehen


Fiete - Di 31.01.23 22:18
Titel: Alfabet drehen
Moin,
das Buchstabenspiel wird auf einem 4x4-Feld gespielt.

Das Spielfeld sieht wie folgt aus :
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16

Die Feldpositionen werden zufällig mit den Buchstaben A bis P besetzt.

Das Ziel dieses Spiels ist es, durch Rotation von jeweils vier Buchstaben
im Uhrzeigersinn die alphabetische Reihenfolge zu erhalten.
ABCSpiel
Es wird in die obere linke Eckposition der vier zu rotierenden Buchstaben geklickt.

Es gibt drei Level, die Anzahl der Versuche beträgt das 16-fache des Level.

Wer nicht weiterkommt kann sich Hinweise anzeigen lassen <CTRL L>

Viel Spaß beim Tüfteln!

Gruß Fiete

Revision1: die Lösungsausgabe wurde geändert(verbessert :?: )


gerd33 - Mi 01.02.23 18:47

Hallo,

ich habe das Spiel ausprobiert. Gut wäre noch, wenn man die einzelnen Spielzüge bzw. Drehungen nachspielen könnte
Statt 1-2 3-mal drehen
1-2
1-2 -> beim anklicken sieht man die Rotation
1-2

Das nurmal als kleine Anregung, wie man das Spiel noch attraktiver machen könnte. Ansonsten ganz nettes kleines Spiel

Gerd


Fiete - Fr 03.02.23 14:58

Moin Gerd,

die Anzeige der Rotation hab ich geändert, Wartezeit eine halbe Sekunde.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TRotation.MemoDMouseDown(Sender: TObject; Button: TMouseButton;
                                    Shift: TShiftState; X, Y: Integer);
  var Zeile:String;
      Nr,ACol,ARow,K:Integer;
  begin
   Nr:=SendMessage(MemoD.Handle,EM_LINEFROMCHAR,MemoD.SelStart,0); // Zeilennummer im Memo
   Zeile:=MemoD.Lines[Nr];
   if Nr<MemoD.Lines.Count then
    for K:=1 to 3 do
     begin
      ACol:=StrToInt(Zeile[2]);
      ARow:=StrToInt(Zeile[6]);
      Drehen(ACol,ARow);
      Ausgeben;
      Delay(500); // halbe Sekunde warten
      inc(ZugAN);
      LabelZN.Caption:='Zugnummer '+IntToStr(ZugAN)+' / '+IntToStr(SperreAN);
      if Fertig then
       begin
        Ausgabe.Enabled:=False;
        SpielAbbruch:=True;
        Gestartet:=False;
        MemoD.Enabled:=False;
        Width:=252;
       end
     end
  end;

Ein Klick in eine Memozeile genügt.

Gruß Fiete


gerd33 - Fr 03.02.23 19:08

Hallo Fiete,

habe den source mit eingebunden. Das einzige was er meckerte war delay(500) stattdessen habe ich sleep(500) hergenommen.
Ja, jetzt kann man damit wirklich arbeiten bzw. spielen.
So ganz nebenbei. Habe mir ein bisschen den Quelltext angesehen.

Gruss
Gerd