Ich sollt ja eigentlich an meiner Facharbeit schreiben, habe stattdessen mal sponntan mit nem Spiel angefangen
naja jedenfalls sieht das so aus: man muss versuchen alle Felder blau zu bekommen.. ist auch noch nicht fertig...
Lerne Delphi inner Schule. Bin aber nicht wirklich gut darin.. also kleinere Fehler nicht beachten
ich lasse bei dem Spiel jeden Schritt in ein Array reinschreiben, der dann nachher in einer Textdatei gespeichert wird. Das funktioniert alles. Laden auch. man kann mein Spiel in verschiedenen Feldgrößen spielen. Wenn nun das geladene Feld ne andere größe hat als das aktuelle, soll das Feld komplett neu erzeugt werden. Manchmal macht der das, und manchmal nicht. Und beim schließen gibt der mir immer eine Zugriffsverletzung aus... obwohl ich eiglich alles mit .free freigebe.
weiß einer woran das liegen kann?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| if Fileexists(filename) then begin assignfile(g,filename); reset(g); count := filesize(g); setlength(steps,count+1); read(g,steps[0]); n := steps[0]; starte(n); end; for i := 1 to (count-1) do begin read(g,steps[i]); wait(loadspeed); Feld[steps[i]].loadklick(Feld[steps[i]]); end; closefile(g);
end else
showmessage('Datei '+ filename + ' exsistiert nich.'); |
meine starte(n) prozedur:
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: 28: 29: 30: 31: 32: 33:
| procedure Tform1.starte(n:integer); var i : integer; begin GBox1.Visible := false; Setlength(Feld,n+1);
for i := 1 to n do begin if (Feld[i] = nil) then begin Feld[i] := TFeld.Create(self); Feld[i].Parent := Form1; Feld[i].Width := 20; Feld[i].Height := 20; Feld[i].Canvas.Brush.Style := bssolid; Feld[i].OnClick := Feld[i].klick; Feld[i].index := i; end; Feld[i].status := false; Feld[i].top := ((i-1) div round(sqrt(n)))*Feld[1].Height+10 ; Feld[i].Left := ((i-1) mod round(sqrt(n)))*Feld[1].Width+10; Feld[i].Visible := true; Feld[i].Canvas.Brush.Color := clred; Feld[i].Canvas.Rectangle(0,0,Feld[1].width,Feld[1].height); end;
height := round(sqrt(n)*Feld[1].Height)+65; width := round(sqrt(n)*Feld[1].Width)+30; stepcount := 0; bluestones := 0; setlength(steps,stepcount+1); Caption := 'Blueshift v.8 '+ inttostr(bluestones)+' steps '+inttostr(stepcount);
end; |
Feld ist ein von Timage abgeleites TFeld mit .index und .status
[url]
home.arcor.de/ncorte...hi/blueshiftv0.8.zip [/url] <-- für alle, die es sich antuen wollen

"...by all means, do not use a hammer." (aus einer IBM Technikerdokumentation ca. 1920)