Entwickler-Ecke

Open Source Projekte - snak0r 1.41 Bereit um ausgebessert zu werden


pupu - Mo 09.10.06 21:34
Titel: snak0r 1.41 Bereit um ausgebessert zu werden
Hi
Ich habe wie hier [http://www.delphi-forum.de/viewtopic.php?t=65109&highlight=] beschrieben in Informatik ein Snakespiel programmiert...

Es gab keine festen Vorgaben und uns wurde mehr oder weniger freie Hand gelassen.

Unser Lehrer hat uns 3 Vorlagen nach und nach gegeben von denen man klauen kopieren oder das ganz einfach abändern konnte (wovon 5/6 des Kurses Gebrauch machten) Aber mir war das zu flach und deshalb hab ich mein snake nach eigenem Stil programmiert...

Dementsprechen "unprofessionell" ist auch mein Prinzip was ihr bestimmt sehen werdet ;)

Mein Lehrer arbeitet vielmehr über Parameter...ich mag lieber die globalen Variablen ;)

Nu ham wa n neues Projekt angefangen und ich lass snak0r erstmal in seiner version 1.41 ruhen...

Wenn ihr wollt könnt ihr daran weiterarbeten... lasst mich eure Ergebnisse sehen ;)

Hach ja is das schwer wenn man seine Kinder aus den Armen geben muss :lol:

Hier is der downloadlink:

http://home.arcor.de/patricksteffens/snak0r.zip

Wenn ihr wollt bessert den Code aus aber bitte lasst mich an jeder Veränderung wissen ;) damit ich auch noch was dazu lern


Narses - Mo 09.10.06 21:42

Moin!

Sorry, aber das muss ich doch jetzt loswerden, da du schon den zweiten Thread dazu startest, haste das auch verdient... :?
user profile iconpupu hat folgendes geschrieben:
Dementsprechen "unprofessionell" ist auch mein Prinzip was ihr bestimmt sehen werdet ;)
Mein Lehrer arbeitet vielmehr über Parameter...ich mag lieber die globalen Variablen ;)

Und du meinst nicht, dass dir das eventuell etwas zu denken geben sollte?! :gruebel:

user profile iconpupu hat folgendes geschrieben:
damit ich auch noch was dazu lern

Ich denke, dein Lehrer hat dir bereits Vorlagen gegeben. Weiterhin denke ich, "dazulernen" fängt mit "dazu-denken" an... :rofl: Du solltest die Gelegenheit nutzen, statt dir von uns Code zu "erbetteln" (oder warum sonst erwähnst du mehrfach, dass wir doch bitte Lust haben sollen, deinen Code zu verbessern?) :mrgreen:

Ich bin der letzte, der sich weigert zu helfen, aber mit dem Denken must du schon selbst anfangen.

Und um wieder OnT zu werden und dir einen Vorschlag zu machen, was du an deinem Programm verbessern könntest: schmeiß die globalen Variablen raus! :D

cu
Narses


pupu - Mo 09.10.06 21:58

ähm wenn du meinen ersten Thread verfolgt hättest dann wüsstest du dass ich snak0r leigen lasse und diesen thread hab ich auf empfehlung von einigen leuten geöffnet weuil das hier am besten reinpasst...

pupu hat folgendes geschrieben:
Wir haben in Informatik jetzt ein neues Projekt begonnen (Text Codieren -.- ) werde aber nich die Bugs soweit fixen un dann wohl mich erstmal mit dem neueh Projekt befassen...ich poste dann hier bald die 1.4 und gut is ;) vielen dank für eure Hilfe und Anregungen


Quake User hat folgendes geschrieben:
4. Wenn wir uns das Spiel ansehen, wird Dir das Nichts helfen. Besser währe es wir würden uns deinen Code ansehen. So könntest Du etwas lernen. Und - keine Angst, meine ersten Programme waren auch völlig Stilfrei.


zion hat folgendes geschrieben:
wenn dus nicht weitermachen willst, könntest du es auch als OpenSource freigeben und wir können dann hier dran rumbasteln ;)


Ne also wirklich ich habe weder vor irgendwelche Code zu erbetteln noch "nicht nachzudenken" wenn du wüsstest wieviel ich über das kackprogramm nachgedacht hab...und wie oft ich mir über den Code von unserem Lehrer den Kopf zerbrochen hab

Aber ich wollte das alleine machen ich wollte ein Spiel mal GANZ alleine programmieren ohne groß Tipps und ich hab 70% meiner probleme selbst gelöst ohne hier oder in der schule nachzufragen also erzähl mir nich dass ich "nicht nachdenke"

Nun Im nachhinein hör ich einfach auf "Quake Users" Tipp dass ich den Code freigebe und was dazulerne... was kann daran falsch sein???

Jetzt hab ich keine zeit mehr und ich lass euch freie hand darüber dass ichs mehrfach erwähnt hab is mir nich aufgefallen und war keine absicht

man!


Narses - Mo 09.10.06 22:55

Moin!

OK, komm wieder runter. ;) Die Code-Bettel-Unterstellung nehm´ ich zurück. :roll: ;)

Viel Erfolg noch. :D

cu
Narses


pupu - Di 10.10.06 14:02

danke ;) sorry aber ich hab mich in dem moment nur mega aufgeregt weil da mehr arbeit drinsteckt als man denkt ;)


nullplan001 - Di 07.11.06 18:29

Hi all,
ich habe da noch einen Fehler entdeckt: Du klaubst dir den Pfad für die data.dat aus GetCurrentDirectory(), stimmts? Das ist nicht nur unprofessionell, es ist auch noch inkorrekt. Mir wurde beim On-The-Fly-Testen deines Progs erstmal eröffnet, die Datei "%appdata%\Mozilla\Firefox\data.dat" könne nicht gefunden werden. Um konstruktiv zu werden: Hol dir den Pfad aus

Delphi-Quelltext
1:
2:
3:
4:
var data_datLiesIn : string;
begin
  data_datLiesIn := ExtractFilePath(Paramstr(0));
end;

So machst du dir auch unter den exzessiv-Konsolen-nutzern (wie mir) Freunde, weil bei denen meistens GetCurrentDirectory() und ExtractFilePath(ParamStr(0)) nicht übereinstimmen.
Und in dem Fall war bei mir nicht mal eine Konsole im Weg. Das geht schneller, als man denkt.
Den nächsten Fehler kann ich dir leider nicht sagen, da das Spiel direkt nach dem "Spiel->Starten" terminiert wurde. Es gab noch eine Fehlermeldung, aber die wurde gleich mit terminiert :-( . Das Bild mit der Nachricht mit irgendwas über Pfeiltasten wurde noch geladen. OS siehe Randspalte.
Tschö,
nullplan


pupu - Di 07.11.06 23:15

Zum ersten problem: ich mach mich ma auf die suche (puh ganz schön schwer sich da wieder reinzufuchsen wenn man da so lange nich mehr drangesessen hat...ich gewöhn mir an mehr kommentare zu schreiben ;))

zum letzteren. KEINE AHNUNG...

edit: so weit ich das überblicke lade ich die data.dat eigentlich weder über "getcurrentdir()" noch was anderes... ich habe einfach

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Procedure TForm2.laden();
var i:integer;
    liste2:TStringlist;
begin
  liste2:=TStringlist.Create;
  try
    liste2.LoadFromFile('data.dat');
    for i:=0 to Stringgrid1.RowCount do
      Stringgrid1.Rows[i].CommaText:=liste2[i+2];
  finally
    liste2.Free
  end;
end;

(was noch unprofessioneller is ;) :( )


nullplan001 - Mi 08.11.06 16:20

Kein Problem, in dem Fall holt sich Delphi die nicht vorhandene Info (wo liegt die data.dat) aus GetCurrentDirectory. Ändere einfach Zeile 7 deines Quelltextes in:

Delphi-Quelltext
1:
    liste2.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\data.dat');                    

HTH,
nullplan


pupu - Mi 08.11.06 16:38

ok und was genau is jetzt der unterschied? was genau bedeutet z.b. das paramstr? das hab ich noch nie verstanden und nirgendwo herausfinden können (bzw nirgendwo verstanden ;) )

hab den link aktualisiert ;)


azubi_20 - Mi 08.11.06 16:48

paramstr ist ein Array in dem die beim Programmaufruf mitgegebenen Parameter als String drin sind.
paramstr[0] ist dabei das Programm inklusive vollen Pfad.

Beispiel :
Du rufst aus der Konsole so ein Programm auf :

Quelltext
1:
C:\bla\blub\Programm.exe C:\bla\blub\daten.txt rw                    


Dann ist ParamStr folgendermaßen belegt :
ParamStr[0] = "C:\bla\blub\Programm.exe"
ParamStr[1] = "C:\bla\blub\daten.txt"
ParamStr[2] = "rw"


nullplan001 - Mi 08.11.06 19:40

user profile iconazubi_20 hat folgendes geschrieben:
paramstr ist ein Array in dem die beim Programmaufruf mitgegebenen Parameter als String drin sind.

Nee, ParamStr ist eine Funktion, die die Nummer des Arguments als Parameter nimmt und das entsprechenden Argument zurückgibt.
user profile iconazubi_20 hat folgendes geschrieben:

paramstr[0] ist dabei das Programm inklusive vollen Pfad.

Beispiel :
Du rufst aus der Konsole so ein Programm auf :

Quelltext
1:
C:\bla\blub\Programm.exe C:\bla\blub\daten.txt rw                    


Dann ist ParamStr folgendermaßen belegt :
ParamStr[0] = "C:\bla\blub\Programm.exe"
ParamStr[1] = "C:\bla\blub\daten.txt"
ParamStr[2] = "rw"


Exakt, bis auf den oben erwähnten Denkfehler. Aber wenn du wirklich so gerne ein Array hättest, dann nimm argv. Das gibt es zumindest unter FreePascal.
Hinweis: ParamCount ist auch eine Funktion, argc eine Variable. Aber das ist für ParamCount eigentlich in den meisten Situationen wurscht, da sich in Pascal ein Bezug zu einer Variablen und ein Funktionsaufruf nicht wesentlich voneinander unterscheiden. (writeln(argc, ParamCount);)
HTH,
nullplan