Lazarus Programm: Mastermind

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
Betaplus
Beiträge: 1
Registriert: Mi 23. Mär 2016, 15:25

Lazarus Programm: Mastermind

Beitrag von Betaplus »

Guten Tag liebe Gemeinde, ich habe für die Informatik Klasse 12 ein Programm entwickelt. Es soll dem Brettspiel Mastermind gleichen. Das Programm funktionier auch, bis auf das überprüfen der Steckkombinationen. Es wäre großartig wenn ihr da mal rüberschauen und mir tipps geben könntet, was ich zuverbessern habe und wo mein Fehler/ meine Fehler liegen.
LG Betaplus

Code: Alles auswählen

    procedure start();
    procedure aufloesen();
    function exis(a:array of integer; c:integer):boolean;
    procedure pruefe();
    function zf(c:tImage):integer;
    procedure eingabe();
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
kom:array[1..4] of TImage; //richtige kombination
pkom:array[1..4] of TImage; //letzte (vom "Rater") eingegebene Kombination
zkom:array[1..4] of integer;
z:integer;  //Zahl des aktuellen Zuges
f:array[1..32] of Timage; //Bilder für den rater
g:array[1..32] of Timage; //Bilder für die "Rückmeldestecker"
win:boolean;  //ist das spiel gewonnen oder nicht?
col:array[1..6] of TImage; //Mögliche Farben;
zcol:array[1..6] of integer;
X:integer;
e:array[1..6] of TImage;
L:integer;
a:array[1..4] of integer; //Hilfsarray, "editierbare" Kopie von kom
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
 
 
 
 
procedure TForm1.erzeugen(); //zufällige zusammensetzung, mehrfachnennungen möglich
var    i,k:integer;
begin
randomize;
 
for i:=1 to 6 do
begin
zcol[i]:=i;
end;
for i:=1 to 4 do //lege die richtige kombination fest
 begin
   k:=random(5)+1; //ich gehe hier davon aus, dass du 6 farben verwendest, es geht jede zahl
 
zkom[i]:=zcol[k];
 end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  Memo1.Visible:=true;
  Memo1.Lines.Clear;                              //alle Zeilen von Memo1 löschen
  Memo1.Lines.Add('1.Spiel starten');    //Zeile hinzufügen
  Memo1.Lines.Add('2.Farbkombination wählen');
  Memo1.Lines.Add('3.Zug beenden');
end;
 
 
procedure TForm1.start(); //Die Bilder werden zur erleichterten arbeit in ein feld eingelesen
var  h:integer;   
begin
Memo1.Visible:=false;
E[1]:=Image69;
E[2]:=Image70;
E[3]:=Image71;
E[4]:=Image72;
E[5]:=Image73;
E[6]:=Image74;
for h:=1 to 6 do
 begin
   E[h].visible:=true;
 end;
f[1]:=Image1;
f[2]:=Image2;
.
.
f[31]:=Image31;
f[32]:=Image32;
for h:=1 to 32 do; //alle Bilder werden am anfang als leer angezeigt
begin
f[h].visible:=true;
f[h].picture.loadfromfile('weiss.jpg');
end;
g[1]:=Image37;
g[2]:=Image38;
.
.
g[30]:=Image66;
g[31]:=Image67;
g[32]:=Image68;
for h:=1 to 32 do; //alle Bilder werden am anfang als leer angezeigt
begin
g[h].visible:=true;
g[h].picture.loadfromfile('weiss.jpg');
end;
z:=1;    //Zugzahl wird auf eins gesetzt
erzeugen(); //erzeugen einer zufälligen kombination
win:=false; // das spiel ist noch nicht beendet!
end;
 
procedure TForm1.aufloesen(); //erzeugte kombination kom in die Bilder laden
 
begin
 
case(zkom[1]) of
 1: begin image33.picture.loadfromfile('black.jpg'); end/
 2: begin image33.picture.loadfromfile('green.jpg'); end;
 3: begin Image33.picture.loadfromfile('purple.jpg'); end;
 4: begin Image33.picture.loadfromfile('red.jpg'); end;
 5: begin Image33.picture.loadfromfile('blue.jpg'); end;
 6: begin Image33.picture.loadfromfile('yellow.jpg'); end;
 
 end;
 case(zkom[2]) of
 1: begin image34.picture.loadfromfile('black.jpg'); end
 2: begin image34.picture.loadfromfile('green.jpg'); end;
 3: begin Image34.picture.loadfromfile('purple.jpg'); end;
 4: begin Image34.picture.loadfromfile('red.jpg'); end;
 5: begin Image34.picture.loadfromfile('blue.jpg'); end;
 6: begin Image34.picture.loadfromfile('yellow.jpg'); end;
 
 end;
 case(zkom[3]) of
 1: begin image35.picture.loadfromfile('black.jpg'); end
 2: begin image35.picture.loadfromfile('green.jpg'); end;
 3: begin Image35.picture.loadfromfile('purple.jpg'); end;
 4: begin Image35.picture.loadfromfile('red.jpg'); end;
 5: begin Image35.picture.loadfromfile('blue.jpg'); end;
 6: begin Image35.picture.loadfromfile('yellow.jpg'); end;
 
 end;
 case(zkom[4]) of
 1: begin image36.picture.loadfromfile('black.jpg'); end
 2: begin image36.picture.loadfromfile('green.jpg'); end;
 3: begin Image36.picture.loadfromfile('purple.jpg'); end;
 4: begin Image36.picture.loadfromfile('red.jpg'); end;
 5: begin Image36.picture.loadfromfile('blue.jpg'); end;
 6: begin Image36.picture.loadfromfile('yellow.jpg'); end;
 
 end;
end;
 
 
 
function TForm1.exis(a:array of integer; c:integer):boolean;
var  h:integer;
     e:boolean;
begin
e:=false;
for h:=0 to high(a) do
 begin
  if(a[h]=c)then begin e:=true; a[h]:=7; end;
 end;
result:=e;
end;
 
procedure TForm1.pruefe();
var     h:integer;
begin
for h:=1 to 4 do
 begin
 a[h]:=zkom[h];
 end;
for h:=(1+4*(z-1)) to (1+4*(z-1)+3) do
 begin
  if(exis(a,zf(f[h]))=true)then
   begin
    g[h].picture.loadfromfile('red.jpg');
   end;
  if(zf(f[h])=zkom[h MOD 4])then
   begin
    g[h].picture.loadfromfile('black.jpg');
   end;
 end;
end;
 
procedure TForm1.eingabe();
begin
  case(x) of
  1:F[l].picture.loadfromfile('black.jpg');
  2:F[l].picture.loadfromfile('green.jpg');
  3:F[l].picture.loadfromfile('purple.jpg');
  4:F[l].picture.loadfromfile('red.jpg');
  5:F[l].picture.loadfromfile('blue.jpg');
  6:F[l].picture.loadfromfile('yellow.jpg');
  end;
end;
function Tform1.zf(c:Timage):integer;
var h:integer;
begin
 if(c.picture=Image69.picture)then
    begin h:=1; end;
 if(c.picture=Image70.picture)then
    begin h:=2 end;
 if(c.picture=Image71.picture)then
     begin h:=3 end;
 if(c.picture=Image72.picture)then
     begin h:=4 end;
 if(c.picture=Image73.picture)then
     begin h:=5 end;
 if(c.picture=Image74.picture)then
    begin h:=6 end;
 
result:=h;
end;
end.
Zuletzt geändert von theo am Mi 23. Mär 2016, 16:35, insgesamt 1-mal geändert.
Grund: Highlighter

Antworten