danke für die Antworten.
Ich hab jetzt alles wieder übeareitet.
Nun funktioniert auch alles, außer 2 Dinge.
1. gelegentlich taucht plätzlich folgende Fehlermeldung auf:
http://img5.imagebanana.com/view/wyq...rror.snake.JPG
2. der Highscore funktioniert nicht immer ^^
hier eine kurze erklärung, wie der Highscore in meinem Programm funktionieren soll.
---
wenn das Programm gestartet wird, wird ein .ini Datei estellt, falls diese noch nicht vorhanden ist.
in die .ini Datei wird die Punktzahl '0' reingeschreiben, die dann in ein label-feld in der Form abgespeichert wird.
wenn man das Spiel beendet, bzw verloren hat, wird die aktuell erreichte Punktzahl mit der aus diesem label-feld verglichen.
wenn die gerade erreichte Punktzahl größer, als die im label (in der ini datei) ist, dann wird die 2. Form geladen, inder
man dann seinen Namen einträgt und dieser dann, mit der erreichten Punnktzahl in die ini datei geschreiben wird.
hier mal der Code:
Delphi-Quellcode:
procedure InIniSchreiben (Filename, Section, Key, Value:
string);
var ini: Tinifile;
begin
ini:= tinifile.Create(Filename);
try
ini.WriteString(section, key, value);
finally
ini.Free;
end;
end;
function InIniLesen (Filename, Section, Key:
string):
string;
var ini: Tinifile;
begin
ini:= tinifile.Create(Filename);
try
result:= ini.ReadString(section, key, '
');
finally
ini.Free;
end;
end;
procedure Delay (
const Milliseconds: DWord);
var FirstTickCount: DWord;
begin
FirstTickCount:= GetTickCount;
while ((GetTickCount - FirstTickCount) < Milliseconds)
do
begin
Application.ProcessMessages;
Sleep(0);
end;
end;
procedure TForm1.spiel_ende;
begin
ende:= True;
Timer1.Enabled:= False;
buttons_freigeben(False);
Button1.Enabled:= True;
button6.Enabled:= false;
end;
procedure TForm1.schlange;
var i, j: Integer;
filename:
string;
begin
for i:= 0
to breite
do
for j:= 0
to hoehe
do
if map[i, j] > 0
then
Dec(map[i, j]);
Inc(kopf.X, richtung.X);
Inc(kopf.Y, richtung.Y);
if checkbox1.Checked= true
then
begin
if (kopf.X < 0)
then
Kopf.X:= kopf.X + Breite + 1;
if Kopf.Y < 0
then
Kopf.Y:= kopf.Y + Hoehe + 1;
if Kopf.X > Breite
then
Kopf.X:= Kopf.x - Breite - 1;
if Kopf.Y > Hoehe
then
Kopf.Y:= Kopf.Y - Hoehe - 1;
end
else
if (kopf.X < 0)
or (kopf.X > breite)
or (kopf.Y < 0)
or (kopf.Y > hoehe)
then
begin
spiel_ende;
showmessage('
Spiel beendet' + #10#13 + '
Sie haben den Rand berührt');
checkbox1.Enabled:= true;
if label10.Caption > label17.Caption
then
begin
form2.Label3.Caption:= inttostr(punkte-1);
form2.Show;
end;
end;
if (map[kopf.X, kopf.Y]>0)
and (
not ende)
then
begin
spiel_ende;
showmessage('
Spiel beendet' + #10#13 + '
Sie haben sich selbst gebissen');
checkbox1.Enabled:= true;
if label10.Caption > label17.Caption
then
begin
form2.Label3.Caption:= inttostr(punkte-1);
form2.Show;
end;
end;
2. Form:
Delphi-Quellcode:
procedure InIniSchreiben (Filename, Section, Key, Value: string);
var ini: Tinifile;
begin
ini:= tinifile.Create(Filename);
try
ini.WriteString(section, key, value);
finally
ini.Free;
end;
end;
function InIniLesen (Filename, Section, Key: string):string;
var ini: Tinifile;
begin
ini:= tinifile.Create(Filename);
try
result:= ini.ReadString(section, key, '');
finally
ini.Free;
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
var filename: string;
begin
filename:= extractfilepath(application.ExeName)+'Highscore.ini';
InIniSchreiben(Filename, 'Highscore','var1',edit1.Text);
InIniSchreiben(Filename, 'Highscore','var2',label3.Caption);
if fileexists(filename) then
begin
form1.label15.Caption:= InIniLesen(Filename,'Highscore','var1');
form1.label17.Caption:= InIniLesen(Filename,'Highscore','var2');
end;
end;
Danke schonmal.