Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

1

20.05.2017, 10:04

[sql,PHP,JavaScript] was wären bessere schreibweisen?

Hallo,
ich habe vor kurzem mit sql,php und JavaScript angefangen und frage mich wie ich mein Code verbessern könnte. Bin mir etwas unsicher.
Als ich mit lite-c programmiert habe haben sich Sid und D.E.M. aus dem Gamestudio Forum sich die Mühe gemacht einige codes durchzuschauen und Schleifen,Variablen,Strukturen u.s.w. zu verbessern.
Ich werde den Code auch neu schreiben, wenn er nicht so toll ist.

Das ist der code von dem dem Spiel, dieser code wird ausgeführt, wenn man aus spiel starten clickt: spiel.php
http://peeeq.de/code.php?id=29065
edit: sorry wegen dem grünen highlighting.
konnte den code nicht im forum posten und peeeq.de war was ich auf anhieb gefunden habe, ich poste es auch gerne wo anders, darf auch gerne jemand anders machen

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

20.05.2017, 10:44

Das ist (sorry) mit das Schlimmste, was ich in letzter Zeit gesehen habe (ähnlich schlimm wie die hoch angepriesene Blog-Software eines gewissen Mitglieds). ;(
  • Was mir auf Anhieb auffällt ist sehr viel doppelter Code, da du einzelne Variablen mit Nummern hinten dran benutzt statt Arrays. Anderes Beispiel: Fällt dir nicht selbst auf, dass sowas wie if($i==1)$ZeileNr ="Zeile1"; if($i==2)$ZeileNr ="Zeile2"; if($i==3)$ZeileNr ="Zeile3"; if($i==4)$ZeileNr ="Zeile4"; if($i==5)$ZeileNr ="Zeile5"; if($i==6)$ZeileNr ="Zeile6" total unschön ist? Tut dir das nicht in den Augen weh? Warum nicht einfach $ZeileNr = "Zeile" . $i oder $ZeileNr = "Zeile$i"?
  • Du benutzt für jeden Benutzer eine eigene Datenbanktabelle, was man eigentlich nicht macht.
  • Du mischst PHP, HTML und JavaScript alles in derselben Datei ohne klare Trennung. Viel schöner wäre es, wenn alles in separaten Dateien (Templates) wäre und es eine klare Schnittstelle für die Übergabe der Daten von PHP nach JavaScript gäbe.
  • Evtl. ist SQL-Injection möglich - dazu müsste man sehen, wie die Session befüllt wird und wie die Benutzereingaben validiert werden. Wenn jemand einen speziellen Benutzernamen eingibt, könnte er evtl. Zugriff auf deine Datenbank bekommen und alles löschen etc.
  • Du hast viele fest eingebaute Magic Numbers. Diese sollten in Konstanten mit sprechenden Namen ausgelagert werden.
  • Dein PHP-Code sollte modularer aufgebaut werden - lagere Dinge und Konzepte, die du immer wieder brauchst, in separate Funktionen oder Klassen aus. Objektorientierte Programmierung anwenden!
  • Du schreibst keine Kommentare.
  • Du mischst Englisch mit Deutsch.
PS: Das Forum kann auch PHP-Code! Einfach den php-Tag benutzen.

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

3

20.05.2017, 14:19

Ich will nicht so weiter programmieren, weil ich bald nicht mehr durchblicke, ich mache erst eine 2. Version von diesen Funktionen aber vorher noch was zu meinen Tabellen:

Die Tabellen, habe ich so gemacht: eine User Tabelle mit allen werten zu dem Player (Gold, Passwort, Kreatur, Waffe usw.)
und für jeden Player existiert eine Level Tabelle, da sind die Felder untergebracht, das mit den User Level Tabellen funktioniert ganz gut, soll ich das auch als Array in der User Tabelle speichern?
»@zimmer« hat folgendes Bild angehängt:
  • online.jpg

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

20.05.2017, 14:41

Deine Tabelle für Felder ist Murks. Siehst du doch, wie unflexibel das ist. Wenn deine Welt eine andere Größe haben soll, musst du direkt das Datenbankschema verändern. Die Begriffe Zeilen und Spalten hast du auch vertauscht.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

20.05.2017, 14:42

So arbeitet man aber nicht mit einer Datenbank. Du erstellst eine Tabelle und darin viele Einträge. Ein Spieler wäre dann zum Beispiel ein einzelner Eintrag in so einer Tabelle. Hier in so einem Forum gibt es zum Beispiel eine Tabelle für einen Beitrag in einem Thread. Alle Beiträge sind Einträge in dieser einen Tabelle. Dann gibt es zum Beispiel eine weitere Tabelle für Threads. Jeder Thread ist ein Eintrag in dieser Tabelle. Um einen Beitrag einem Thread zuzuweisen könnte der Beitrag die ID des Thread-Eintrags der Thread-Tabelle speichern. Man würde aber nicht für jeden Thread eine neue Tabelle anlegen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

6

20.05.2017, 15:40

Ok, ich mache ein tabelle, in der alle Level sind und der Spielername(den wollte ich sowieso angezeigt bekommen) es sind zur zeit ja nur 26 Felder im Level.
und ich habe nicht vor den user seinen namen ändern zu lassen, daher kann ich die id weglassen, ist mein gedanke und mit dem spielernamen spare ich mir das hin und her zwischen den tabellen.

Zu den zeilen und spalten: das level wird auch gedreht und gespiegelt generiert, aber wenigstens nicht in falscher reihenfolge

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

20.05.2017, 15:52

Oft ist es sinnvoll sich eine Technologie erst vernünftig anzugucken bevor man einfach drauf los programmiert. Es gibt bei deinem Projekt so unglaublich viele Baustellen dass es immer schwieriger wird dir sinnvoll zu helfen. Du würdest dich ja auch nicht hinsetzen und einfach mal so ein Auto bauen ohne genug Vorwissen zu haben. Nimm mir das bitte nicht übel aber du solltest da echt dringend Wissen nachholen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

8

20.05.2017, 22:22

Habe ich heute gemacht, ich habe sogar einbishen datenstruktur und klassen nachgeholt.
So sieht es nun aus

Ich finde es hat sich sehr gelohnt, das schiessen der türme ist aber noch auskommentiert, da mache ich noch ein paar klassen rein und morgrn wollte ich einen Namespace mit einigen functionen machen :?: :D ist doch richtig so oder?

Werbeanzeige