StartKostenlos

Scrabble in Delphi

Programmiert als Facharbeit für die Schule. Anbei das Spiel als Download.

Download

Quelltext und Anleitung:

Quelltext Scrabble

  1. unit mScrabble1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5. StdCtrls, jpeg, ExtCtrls;
  6. type
  7. TScrabble1 = class(TForm)
  8. BStart: TButton;
  9. BBuchstaben: TButton;
  10. BSpeichern: TButton;
  11. BLaden: TButton;
  12. Bclose: TButton;
  13. IMGscrabble: TImage;
  14. IMGSpielfeld: TImage;
  15. IMGhg: TImage;
  16. procedure BStartClick(Sender: TObject);
  17. procedure BcloseClick(Sender: TObject);
  18. procedure SpielsteinMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  19. procedure SpielsteinMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  20. procedure SpielsteinMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  21. procedure BSpeichernClick(Sender: TObject);
  22. procedure BLadenClick(Sender: TObject);
  23. procedure BBuchstabenClick(Sender: TObject);
  24. private
  25. { Private-Deklarationen }
  26. mausgedrueckt: boolean;
  27. xstart, ystart: integer;
  28. public
  29. { Public-Deklarationen }
  30. end;
  31. type
  32. TSpielstein = class (TButton)
  33. constructor create (AOwner: TComponent); override;
  34. end;
  35. var
  36. Scrabble1: TScrabble1;
  37. Spielstein: array[1..20] of TSpielstein;
  38. implementation
  39. constructor TSpielstein.create(AOwner: TComponent);
  40. begin
  41. inherited create(AOwner);
  42. end;
  43. {$R *.DFM}
  44. procedure TScrabble1.SpielsteinMouseDown(Sender: TObject; Button: TMouseButton;
  45. Shift: TShiftState; X, Y: Integer);
  46. begin
  47. Mausgedrueckt := true;
  48. xstart := x;
  49. ystart := y
  50. end;
  51. procedure TScrabble1.SpielsteinMouseMove(Sender: TObject; Shift: TShiftState; X,
  52. Y: Integer);
  53. begin
  54. if mausgedrueckt and (sender is TSpielstein) then begin
  55. TSpielstein(Sender).Left:=TSpielstein(Sender).Left+(X-XStart);
  56. TSpielstein(Sender).Top:=TSpielstein(Sender).Top+(Y-XStart);
  57. end;
  58. end;
  59. procedure TScrabble1.SpielsteinMouseUp(Sender: TObject; Button: TMouseButton;
  60. Shift: TShiftState; X, Y: Integer);
  61. begin
  62. Mausgedrueckt:= false;
  63. end;
  64. procedure TScrabble1.BStartClick(Sender: TObject);
  65. var i, a, Buchstabe: integer;
  66. begin
  67. for a:=ComponentCount-1 downto 0 do
  68. begin
  69. if Components[a] is TSpielstein then
  70. Components[a].destroy;
  71. end;
  72. randomize;
  73. for i:=1 to 20 do
  74. begin
  75. Spielstein[i]:= TSpielstein.create(Scrabble1);
  76. with Spielstein[i] do begin
  77. Buchstabe:= random(25)+1;
  78. case Buchstabe of
  79. 1: Caption:=’A‘;
  80. 2: Caption:=’B‘;
  81. 3: Caption:=’C‘;
  82. 4: Caption:=’D‘;
  83. 5: Caption:=’E‘;
  84. 6: Caption:=’F‘;
  85. 7: Caption:=’G‘;
  86. 8: Caption:=’H‘;
  87. 9: Caption:=’I‘;
  88. 10: Caption:=’J‘;
  89. 11: Caption:=’K‘;
  90. 12: Caption:=’L‘;
  91. 13: Caption:=’M‘;
  92. 14: Caption:=’N‘;
  93. 15: Caption:=’O‘;
  94. 16: Caption:=’P‘;
  95. 17: Caption:=’Q‘;
  96. 18: Caption:=’R‘;
  97. 19: Caption:=’S‘;
  98. 20: Caption:=’T‘;
  99. 21: Caption:=’U‘;
  100. 22: Caption:=’V‘;
  101. 23: Caption:=’W‘;
  102. 24: Caption:=’X‘;
  103. 25: Caption:=’Y‘;
  104. 26: Caption:=’Z‘;
  105. end;
  106. height:=30;
  107. width:=30;
  108. Parent := Scrabble1;
  109. Left := i*30;
  110. Top := 30;
  111. OnMouseDown:=SpielsteinMouseDown;
  112. OnMouseUp:=SpielsteinMouseUp;
  113. OnMouseMove:=SpielsteinMouseMove;
  114. end;
  115. end;
  116. end;
  117. procedure TScrabble1.BcloseClick(Sender: TObject);
  118. begin
  119. close;
  120. end;
  121. procedure TScrabble1.BSpeichernClick(Sender: TObject);
  122. var FileStream: TFilestream;
  123. I: Integer;
  124. begin
  125. FileStream:= TFilestream.Create (‚Scrabble.dat‘,fmCreate);
  126. for I := 0 to ComponentCount-1 do
  127. if Components[I] is TSpielstein then
  128. Filestream.WriteCOmponent(Components[I]);
  129. FileStream.Destroy;
  130. end;
  131. procedure TScrabble1.BLadenClick(Sender: TObject);
  132. var FileStream: TFilestream;
  133. I,a: Integer;
  134. begin
  135. for I := ComponentCount-1 downto 0 do
  136. if Components[I] is TSpielstein
  137. then Components[I].Destroy;
  138. FileStream := TFileStream.Create (‚Scrabble.dat‘,fmOpenRead);
  139. for a:= 1 to 20 do
  140. begin
  141. while FileStream.Position < FileStream.Size
  142. do begin
  143. Spielstein[a]:= TSpielstein.create(Scrabble1);
  144. FileStream.ReadComponent(Components[ComponentCount-1]);
  145. Spielstein[a].OnMouseDown := SpielsteinMouseDown;
  146. Spielstein[a].OnMouseUp := SpielsteinMouseUp;
  147. Spielstein[a].OnMouseMove := SpielsteinMouseMove;
  148. Spielstein[a].Parent := Scrabble1;
  149. end;
  150. end;
  151. FileStream.Destroy;
  152. end;
  153. procedure TScrabble1.BBuchstabenClick(Sender: TObject);
  154. var i, a, Buchstabe: integer;
  155. begin
  156. for a:=ComponentCount-1 downto 0 do
  157. randomize;
  158. for i:=1 to 20 do
  159. begin
  160. Spielstein[i]:= TSpielstein.create(Scrabble1);
  161. with Spielstein[i] do begin
  162. Buchstabe:= random(25)+1;
  163. case Buchstabe of
  164. 1: Caption:=’A‘;
  165. 2: Caption:=’B‘;
  166. 3: Caption:=’C‘;
  167. 4: Caption:=’D‘;
  168. 5: Caption:=’E‘;
  169. 6: Caption:=’F‘;
  170. 7: Caption:=’G‘;
  171. 8: Caption:=’H‘;
  172. 9: Caption:=’I‘;
  173. 10: Caption:=’J‘;
  174. 11: Caption:=’K‘;
  175. 12: Caption:=’L‘;
  176. 13: Caption:=’M‘;
  177. 14: Caption:=’N‘;
  178. 15: Caption:=’O‘;
  179. 16: Caption:=’P‘;
  180. 17: Caption:=’Q‘;
  181. 18: Caption:=’R‘;
  182. 19: Caption:=’S‘;
  183. 20: Caption:=’T‘;
  184. 21: Caption:=’U‘;
  185. 22: Caption:=’V‘;
  186. 23: Caption:=’W‘;
  187. 24: Caption:=’X‘;
  188. 25: Caption:=’Y‘;
  189. 26: Caption:=’Z‘;
  190. end;
  191. height:=30;
  192. width:=30;
  193. Parent := Scrabble1;
  194. Left := i*30;
  195. Top := 30;
  196. OnMouseDown:=SpielsteinMouseDown;
  197. OnMouseUp:=SpielsteinMouseUp;
  198. OnMouseMove:=SpielsteinMouseMove;
  199. end;
  200. end;
  201. end;
  202. end.

Anleitung:

Installation…
Einfach die Datei „pScrabble1.exe“ starten.

Einleitung…
Wie im original Scrabble wird hier versucht aus verschiedenen Buchstaben Wörter zusammenzusetzen. Nachdem das Spiel gestartet wurde, werden durch einen Klick auf den Button „Neues Spiel“ 20 ‚Scrabblebuchstaben’ erzeugt. Ziel des Spiels ist es nun aus diesen Buchstaben möglichst viele sinnvolle Wörter zu bilden. Diese können vertikal, horizontal oder auch diagonal auf das Spielfeld gelegt werden.

Spielbeschreibung…
Die Spielsteine können in die vorgegeben Kästchen gelegt werden, indem man mit der linken Maustaste auf einen Buchstaben klickt und auf ein freies Feld zieht. Sobald die Maustaste losgelassen wird, wird der Spielstein auf die aktuelle Position hingelegt. Es wird nun versucht möglichst alle Buchstaben aus den vorhandenen zu benutzen. Sollten keine Wörter mehr gebildet werden können, können durch einen Klick auf „Neue Buchstaben“ die Spielsteine aktualisiert werden. In der oberen Leiste befinden sich nun neue Buchstaben, aus denen man weitere Wörter bilden kann. Die vorhanden gebildeten Wörter auf dem Spielfeld verschwinden dadurch nicht. Auch eventuell noch vorhandene Buchstaben in der oberen Leiste werden mit einem neuen „überdeckt“. Sobald man diesen benutzt, kann der darunter liegende Buchstabe weiter verwendet werden. Erst durch einen Mausklick auf „Neues Spiel“ wird ein leeres Spielfeld erzeugt mit neuen Scrabblebuchstaben und alle bisher gebildeten Wörter werden gelöscht.

Speichern und Laden…
Durch den Button „Speichern“, kann man seine aktuell gebildeten Wörter sichern und zu einem späteren Zeitpunkt wieder laden. Dies ist besonders sinnvoll, wenn man das Spiel zu einem späteren Zeitpunkt fortsetzen möchte. Möchte man mehrere Spielstände speichern, so muss man die aktuell gespeicherte Datei „Scrabble.dat“ durch Umbenennen sichern. Dazu reicht eine einfache Umbenennung im Scrabble Ordner von Windows. Mit der rechten Maustaste wählt man die Datei „Scrabble.dat“ aus und nennt sie beispielsweise in „Scrabble1.dat“ durch einen Mausklick auf „Umbenennen“ um. Bei jedem Speichern wird die Datei „Scrabble.dat“ überschrieben und bei einem Klick auf „Laden“ diese Datei geladen. Sollte man nun wieder seine umbenannte Speicherdatei fortsetzen wollen, muss man die Datei „Scrabble1.dat“ in „Scrabble.dat“ umbenennen. Es kann immer nur ein Spielstand geladen werden.

Durch einen Mausklick auf den Button „Ende“ kann das Scrabble Spiel beendet werden.

Kommentare (3)

  • Hey, herzlichen Dank für den Quelltext werde das gleich selber mal ausprobieren, jedoch wäre meine Frage ist Delphi nicht ein wenig zu alt um damit noch Spiele zu programmieren?

    Antworten
    • Irgendwie wird im Eintrag der Code etwas unschön dargestellt 😀

      Ja, das Ganze ist ja auch schon alt 😉 Ich habe danach auch eigentlich nie wieder was in Delphi programmiert 😉

      Antworten
  • boah diese Programmiersprache sieht recht kompleziert aus 🙂 denk nicht dass man lust drauf hätte solche sprache noch zu lernen 🙂
    Lisa

    Antworten

Schreibe einen Kommentar

* =