mmofacts.com

So machst du dir ein eigenes Browsergame

gepostet vor 18 Jahre, 6 Monate von woodworker

Da hier immer sehr viele fragen wie sie sich ihr eigens Browsergame erstellen. Werde ich hier mal versuchen ein paar grundlegende Sachen zu erklären.

  1. Der Name - Muss ein Supername sein. Wenn euch keiner einfällt, gibt es hier Hilfe.
  2. Erstmal ein Konzept schreiben. Also alles zu Papier bringen was ihr in eurem Spiel haben wollt aber das möglichst gut ausformuliert. Also nicht nur "Raumschiffe fliegen" sondern eher "Raumschiffe können in einer 2D Umgebung nur geraden fliegen und Wegpunkte sind nicht möglich", das ist um einiges besser wenn ihr euch später noch weitere Programmierer hinzu hollt.
  3. Eine Programmiersprache auswählen, denn nicht jede Programmiersprache ist gleich gut geeignet für Sachen die in eurem Konzept stehen. Das könnte im Webbereich PHP, ASP.Net, Java sein, aber per CGI könnte auch jede andere Programmiersprache genutzt werden.
  4. Die Programmiersprache lernen, falls ihr sie nicht (gut genug) könnt. Aber das bei einem oder mit einem Browsergame zu machen ist eine Denkbar schlechte Idee, den wenn man anfängt eine Programmiersprache zu lernen macht man Fehler sogar sehr viele Fehler und einige können sehr Schnell zu gefährlichen Sicherheitsrisiken führen. Dein ein Hauptpunkt den man sich bei der Entwicklung merken sollte ist: Daten die vom Benutzer kommen sind IMMER böse und so sollte man auch mit ihnen umgehen, lieber einmal zu oft prüfen Also wenn du eine Sprache erst noch lernen musst lass es erst einmal mit dem Browsergame (siehe Anhang für Tutorials zum lernen)
  5. Los-programmieren - Am Anfang bis ihr eine erste Alpha oder Beta Version zum Testen Herausgebt solltet ihr euch wirklich Strikt an das Konzept aus 2. halten den es kommt sehr schnell dazu das man weitere Ideen hat, diese lieber auf einem extra Zettel oder einem Wiki aufschreiben und dann Später einarbeiten und immer eins nach dem anderen, es bringt nix wenn ihr da was anfangt und wenn es zu schwierig wird dann dort weitermacht. Soetwas wird mit der Zeit viel zu unübersichtlich
  6. Quelltextverwaltung: Wenn ihr mehr als einen Programmierer in eurem Projekt habt solltet ihr euch auch mal über die Verwaltung des Quelltextes kümmern. Denn es kann zu schnell mal passieren das 2 leute in einer Datei änderungen gemacht haben und dann beim hochladen hat der gewonnen der später hochläd. Für solche Zwecke gibts sogenannte SCM Software wie Subversion, CVS oder auch den MS SourceSafe (siehe Anhang)
  7. Nun fehlen noch die bunten Bildchen. Aber nicht jetzt einfach auf die Google Bildersuche gehen, das kann zu argen Streits und auch mal zu Geld oder Haftstrafen führen. Also lieber einen Grafiker anheuern der euch eure Bilder macht. Der muss aber auch gesagt bekommen das er wenn dann nur wirklich freie Quellen für Bilder nutzt.
  8. Wenn ihr nun eine laufende Version habt, solltet ihr zu erst einmal nochmal nach schauen ob wirklich keine Sicherheitsrelevanten Fehler zu finden sind.
  9. So nun habt ihr eine laufende Version, nun müsst ihr euch entscheiden eigener Root Server im Internet oder erst einmal auf dem PC zu Hause über DSL hosten. Bei kleineren Spielen könnt ihr erst einmal zu hause Hosten mit einer DynDNS Adresse [1], solltet ihr aber einen Server im Internet nehmen bedenkt dieser kostet Geld und wenn ihr nicht genügend wisst über das Betriebssystem auf dem Server kann das auch wieder zu Sicherheitsrisiken führen. (Linuxhandbuch[2])
  10. Rechtliches: Man sollte als Beitreiber 18 sein. Die üblichen Dinge wie Impressum, vernünftige AGb usw. soltlen rein und richtig gemacht werden. Man sollte damit rechnen, dass man aus diversen Gründen auch mal ne ABmahnung sitzen hat, oder wenn jemand Ärger macht auch nen Rechtsstreit am Hals hat (nen Bekannter hatte einen User, die üer die Avatarfunktion KiPo draufgeladen hat - im Zweifelsfall bist DU dran (vgl. den Unimut Schobifying Proxy)).
  11. usw.
  12. Frusttoleranz:Ist wichtig. Wer Ärger, Gegenwind und Stress nicht abkann, packts nicht. Es gibt immer Stress. Und sei es bei der Bugsuche...
  13. Community:Sollte man managen können oder jemanden haben, der das kann. Wer nicht mit gößeren Gruppen von Leuten umgehen kann wird schnell von so einer Massendynamik überrannt.
  14. Grundlegende Entscheidung: Runde vs. Endlosgame: kann man hinterher schwer umbiegen, wenn die Balance auf das eine ausgerichtet ist und dann das andere rauskommen soll.
  15. Grundlegende Entscheidung: Bepunktung: Nichts ist blöder, als wenn sich Bewertungsmasstäbe auf halben Wege oder nach X Monaten ändern und wochenlange "fehlerlose" Taktiken nichts mehr wert sind bzw. die Arbeit im Arsch ist...
  16. Wenn ihr bis hierher gekommen seit und alles könnt und euch zutraut was in den Vorherigen Punkten stand könnt ihr Anfangen euer Spiel zu Programmieren wenn nicht lieber erst noch weiter Lernen und Informieren.
So nun werde ich hier noch eine kleine Liste posten an Software die ihr bestimmt gut gebrauchen könnt.
Wikis:
MediaWiki (das Wiki der Wikipedia)
DokuWiki (ein nettes kleines Wiki)
Foren:
phpBB wer kennt es nicht
PunBB ein kleines einfaches Forum
FudForum ein Forum das es mit phpBB locker aufnehmen kann aber dafür um einiges sicherer ist.
WBB das Woltlab halt
MyBoard
Editoren:
JEdit ein Editor der halt mit so gut wie jeder Programmiersprache umgehen kann.
Eclipse Eine Entwicklungsumgebung für die es für viele Sprachen ein AddOn gibt.
SharpDevelop Eine C# Entwicklungsumgebung für Windows
Visual Studio Express die Gratis Version des Visual Studios
WebCraft - PHP-Editor
Anhang:
PHP Tutorials:
#php@QuakeNet Tutorial
PHP Usenet FAQ
Offizielles Handbuch
ASP.Net Tutorials:
ASP OpenBook
C# OpenBook
Java Script:
JavaScript OpenBook
SelfHTML JavaScript
HTML:
SelfHTML
CSS:
SelfHTML CSS
CSS4You
Linux:
Debian HowTo eine Gute seite für Debianserver
[2] Linux Praxis Handbuch
SCM Software:
Subversion
Subversion Buch (englisch)
TortoiseSVN Subversion Client für Windows
CVS Buch (englisch)
TortoiseCVS CVS Client für Windows
Sonstige URLs
[1] DynDNS

gepostet vor 18 Jahre, 6 Monate von Blabbo

unabhängig von Woodworkers Tipps hier mal ...
Blabbos Tipps für den Start in die BG-Entwicklung für absolute Torfnasen
Der Server (damit PHP und MySQL auf deinem Rechner laufen):
www.apachefriends.org/de/xampp-windows.html
downloaden, installieren
Der PHP-Editor (damit schreibst du den PHP-Code):
www.weaverslave.ws/
downloaden, installieren.
Ist nicht der mächtigste PHP-Editor, aber einfach und ausreichend für den Anfang
Die Tutorials: (damit du lernst, wie HTML, PHP und MySQL überhaupt funktionieren)
de.selfhtml.org/ (HTML)
tut.php-q.net/ (PHP)
www.galileocomputing.de/openbook/php4/ (PHP)
Ein Spielkonzept brauchst du natürlich auch noch,
aber wenn du da keine Ideen hättest,
wolltest du wohl auch kein BG bauen.
Die Grafik ist nochmal ein ganz eigenes Kapitel,
aber zur Not gehts auch erstmal ohne.
Damit wir uns nicht falsch verstehen,
das ist keine Anleitung "Wie baue ich mein Traum-BG",
sondern nur ein paar Tipps, was man machen kann,
um erstmal einen Einblick zu bekommen,
wie sowas realisiert werden kann.

gepostet vor 18 Jahre, 6 Monate von abuzeus

Was meiner Meinung nach auch noch rein sollte und oft unterschätzt wird:
Rechtliches:
Man sollte als Beitreiber 18 sein.
Die üblichen Dinge wie Impressum, vernünftige AGb usw. soltlen rein und richtig gemacht werden.
Man sollte damit rechnen, dass man aus diversen Gründen auch mal ne ABmahnung sitzen hat, oder wenn jemand Ärger macht auch nen Rechtsstreit am Hals hat (nen Bekannter hatte einen User, die üer die Avatarfunktion KiPo draufgeladen hat - im Zweifelsfall bist DU dran (vgl. den Unimut Schobifying Proxy)).
usw.
Frusttoleranz:
Ist wichtig. Wer Ärger, Gegenwind und Stress nicht abkann, packts nicht. Es gibt immer Stress. Und sei es bei der Bugsuche...
Community:
Sollte man managen können oder jemanden haben, der das kann. Wer nicht mit gößeren Gruppen von Leuten umgehen kann wird schnell von so einer Massendynamik überrannt.
Server: Wer einen hat und ihn nicht dichtmachen kann: Pfui. Gibt genügend Sicherheitslücken und einen Server aufsetzen zu können bedeutet noch lange nicht, ihn auch warten zu können. Und es gibt genügend Spamrelays ;-)
Grundlegende Entscheidungen:
Runde vs. Endlosgame
kann man hinterher schwer umbiegen, wenn die Balance auf das eine ausgerichtet ist und dann das andere rauskommen soll.
Bepunktung:
Nichts ist blöder, als wenn sich Bewertungsmasstäbe auf halben Wege oder nach X Monaten ändern und wochenlange "fehlerlose" Taktiken nichts mehr wert sind bzw. die Arbeit im Arsch ist...
tbc...
Geht sicher auch ohne den ganzen Kram, aber früher oder später kommt der Punkt, an dem man sich über sowas Gedanken machen muss. Und dann ist man froh, wenn dann ein konzept da ist und nicht "verschlimmbessert" wird...

gepostet vor 18 Jahre, 6 Monate von Progralixx

Und noch ein kleiner Tipp hintendran:
Auch wenn man tausendmillionhunderthundert gute Ideen für ein Browsergame hat und sich Features ausdenkt, die es in noch keinem anderen Browsergame gibt:
IMMER schön eins nach dem anderen. Es gibt nichts schlimmeres, als an 10 Punkten gleichzeitig an einem Projekt zu arbeiten, denn irgendwann verliert sich der Überblick.
Lieber eine ToD-List ertsellen, deren Punkte man nach und nach abhaken kann.

gepostet vor 18 Jahre, 6 Monate von Teonas
Original von woodworker
4. Die Programmiersprache lernen,...
5. Los-programmieren ...
6. Quelltextverwaltung:[/list]

Ich würde zwischen Punkt 4 und 5 definitiv einen Punkt "Design" einfügen - mal gründlich überlegen, wie das alles so funktionieren soll, das man sich in Punkt 4 angeeignet hat - wird dann zwar nicht die Bibel, aber man kann sich selbst damit helfen, das Wesentliche im Auge zu behalten.
Die Quellcode-Verwaltung würde ich übrigens früher aufsetzten - am besten zum Speichern etwaiger Design-Dokumente gleich verwenden

gepostet vor 18 Jahre, 6 Monate von blum

Was auch sehr wichtig ist, meiner Meinung nach:
1. Man sollte ein Spiel danach erstellen, ob man das Spiel selbst auch gern spielen würde. Wenn man nur noch überlegt, was anderen Spielern gefallen könnte, wirkt das Spiel am Ende aufgesetzt.
Also immer erst in sich horchen: Was würde mir persönlich Spass machen, was vermisse ich vielleicht an anderen Spielen.
2. Guten Rat von Freunden, Bekannten einholen. Wenn man Wochenlang vor dem selben Screen sitzt, sieht man Schreibfehler, sich stechende Farben oder unlogische Abläufe vielleicht nicht mehr.
3. Ein Browserspiel ist und bleibt ein Browserspiel, auch wenn inzwischen die meisten DSL oder schnellere Anbindungen haben. Ergo: nicht mit Grafiken überladen! Wenn man nach jedem Klick eine halbe Ewigkeit warten muss, bis die total überdimensionierte Headergrafik fertig geladen ist, ist das nicht gerade Spassfördernd.
4. Nicht jeder hat einen 34-Zoll-Monitor. Viele spielen zum Beispiel mit Laptop, also sollte das Spiel auf jeden Fall mit 1024 Bildpunkten spielbar sein.
5. Wenn das Spiel läuft und die ersten Spieler sich angemeldet werden, wird es viele geben, die Fragen, ob man nicht dieses und jene einbauen kann. Guter Support heisst nicht unbedingt, den Spielern alle Wünsche zu erfüllen. Viele denken nicht über die Tischkante hinaus oder schlagen das vor, was ihnen gerade nützen würde.

gepostet vor 17 Jahre, 9 Monate von COrthbandt

Zur Versionskontrolle würde ich noch auf Perforce verweisen.
Die freie (frei wie in "free beer", nicht GPL) Version ist für
kleine Teams perfekt. Und in Performance, Stabilität und
Userfreundlichkeit ist es CVS, SVN und MSS weit überlegen.
Klickst Du hier: www.perforce.com/perforce/loadprog.html

gepostet vor 17 Jahre, 9 Monate von leitstelle

Na toll, wieder nur in Kauderwelsch (Englisch)
Schade daß es sowas nicht in der Landessprache gibt

gepostet vor 17 Jahre, 9 Monate von TheUndeadable

Zu Perforce:
> You can download and use any Perforce software product free. All Perforce software you download is fully functional, with the exception of the Perforce Server, which allows only two users and five client workspaces when used without a license.
Na danke.... klassisches Shareware-Prinzip
Aber ich denke, dass Dinge wie konkrete Produkte/Programmiersprachen nicht in diesem Thread besprochen werden sollten...
Ich würde sogar schon jetzt nen Split befürworten.

gepostet vor 17 Jahre, 3 Monate von Digioso

Als Editoren mit Multisprachunterstützung kann ich auch noch Adobe Dreamweaver (kostenpflichtig - www.adobe.com/de/products/dreamweaver) empfehlen.
Allerdings ist das am besten geeignet für PHP, hat dafür aber auch einige nette Features, aber kostet halt einiges.
Wer einen kostenlosen Editor sucht, kann sich auch mal an SciTE (www.scintilla.org/SciTE.html) versuchen.
Damit programmiere ich auf der Arbeit und auch zu Hause. Der Editor hat Tabs, wenn man mehrere Dateien gleichzeitig öffnet.
Kann so ziemlich jede bekanntere Sprache (Perl, PHP, HTML, C/C++, Java, Unix Shell u.v.m) und hat Syntaxhighlighting. Ein großes Pro, aber auch gleichzeitig Contra ist, dass man so ziemlich alles an ihm konfigurieren kann. Das geschieht allerdings über Konfigurationsdateien, die nicht unbedingt einfach zu verstehen sind...

gepostet vor 17 Jahre, 3 Monate von Fatal_Error

Als IDE für PHP kann ich nur jedem nahelegen sich mal den phpDesigner Professional anzugucken! Gibt zwar auch eine kostenlose Version von, aber ich will meine Professional nicht mehr missen...
Das Vieh ist echt genial: schnell, komfortabel und stabil und das bei massig Features!
Für mich die beste IDE die es je gegeben hat in Hinblick auf PHP, (X)HTML und CSS, bzw. in Kombination der Sprachen.
Wer einen eigenen Root-Server hat, sollte sich außerdem mal das XWiki angucken!
Zur allgemeinen Projektverwaltung kann ich außerdem noch das Streber-PM und Trac empfehlen.
Beim Bugtracking hab ich sehr gute Erfahrungen mit Mantis gemacht und aufgrund seiner geringen Anforderungen auch quasi überall lauffähig!

gepostet vor 17 Jahre von SonicHedgehog

Zu Bugtracking kann ich auch Bugzillaempfehlen
Wer kein Perl zur Verfügung hat, kann auch ruhig mal BUGS ausprobieren...
Ich weiß, dass beide Tools englischsprachig sind, aber Programmieren sollte das nichts ausmachen, jede Programmiersprache ist englischsprachig

gepostet vor 17 Jahre von ThaDafinser
Original von Fatal_Error
Als IDE für PHP kann ich nur jedem nahelegen sich mal den phpDesigner Professional anzugucken! Gibt zwar auch eine kostenlose Version von, aber ich will meine Professional nicht mehr missen...
Das Vieh ist echt genial: schnell, komfortabel und stabil und das bei massig Features!
Für mich die beste IDE die es je gegeben hat in Hinblick auf PHP, (X)HTML und CSS, bzw. in Kombination der Sprachen.

Zend Studio ist vergleichbar.

gepostet vor 16 Jahre, 11 Monate von StormtrooperThompson

Bei HTML-Tutorials kannst du noch html-seminar.de ergänzen.

gepostet vor 16 Jahre, 11 Monate von TheUndeadable

> html-seminar.de
IMHO nicht empfehlenswert, da die Website aus AD-Links besteht und vor allem nichtkonformes und veraltetes Html beibringt. Wer daraus lernt, der wird ein typischer Frontpage-Kandidat....

gepostet vor 16 Jahre, 10 Monate von Browserzocker

Hi, wollte mal fragen, welche Programmiersprache die "Einsteigerversion" ist, also die "einfachste". Da ich null Ahnung von programmieren habe, wollte ich zu euren Vorschlägen noch nach Tutorials (im Net) und Editoren fragen, die natürlich kostenfrei sind. Wäre dankbar für jeden Tipp!!!

gepostet vor 16 Jahre, 10 Monate von hotzplotz

Als Anfängersprache kann man definitiv PHP bezeichnen.
Oben im Starterpost hast du einige Links zu PHP Tutorials. Im Bezug auf ein BG brauchst du sicher auch eine Datenbank um Daten dauerhaft speichern zu können. Da empfielt sich MySQL.
Um beides zu lernen empfielt sich das #php Tutorial.

gepostet vor 16 Jahre, 10 Monate von Browserzocker

Das stand auf der Seite:
Ihr müsst euch komplett mit HTML auskennen, denn PHP-Skripte erstellen HTML-Dokumente bzw. eine Ausgabe, die HTML-Elemente enthällt.
Ich kenne mich nicht wirklich mit HTML aus,... naja, dann wird das wohl nix.
Trotzdem Danke...

gepostet vor 16 Jahre, 10 Monate von RaydenDD

Hmm also html is wohl das einfachste überhaupt Das lernst in 2 Tagen

gepostet vor 16 Jahre, 10 Monate von Klaus

Dann bleibt dir nur die Möglichkeit ein Flash- oder Java-Spiel zu kreiieren, was immer noch schwieriger ist als HTML+PHP zu lernen.

gepostet vor 16 Jahre, 10 Monate von Browserzocker

dann werd ichs mal mit HTML versuchen... Danke...

gepostet vor 16 Jahre, 6 Monate von Quix0r

Ein paar Dinge zur Klaerung:
- HTML ist keine (!) Programmiersprache, sondern eine Darstellungssprache. Du gibst dem Client Anweisungen, wie er etwas darzustellen hat, nicht auszfuehren. Da herschen im Internet die meisten Misstaende.
- PHP kann nicht nur HTML ausgeben, sondern auch als Prozess laufen und Daten auf Konsole ausgeben, oder in's Syslog schreiben.
- Flash ist derzeit nicht suchmaschinenfaehig und das solltest du in Sachen SEO spaeter mit beachten.
- Flash kann nicht auf Datenbanken zugreifen, sondern hoechstensfalls auf lokale (!) Textdateien - also beim Client. Du musst (!) wo ein Backend-CGI haben, was die Anfragen annimmt.
- Python,Perl sind so genannte CGI-Sprachen (Common Gateway Interface) und koennen auch HTML ausgeben.
- Lasse dich nicht durch das PHP vs. C# vs. Perl vs. Foo-Sprache verwirren, lege in deinem Konzept fest, welche Sprachen du benutzt, auch HTML/CSS gehoeren dazu!
HTML anzufangen ist gut, sehr gut sogar. Das wuerde ich als erstes machen, wenn ich ein Browser-Game programmieren wollte - und es auch tue .

gepostet vor 16 Jahre, 6 Monate von Kallisti
Original von Quix0r
Ein paar Dinge zur Klaerung:
- HTML ist keine (!) Programmiersprache, sondern eine Darstellungssprache. Du gibst dem Client Anweisungen, wie er etwas darzustellen hat, nicht auszfuehren. Da herschen im Internet die meisten Misstaende.

NEIN!! Html ist eine Markup Language und dient dazu Inhalte logisch zu strukturieren. Mit Darstellung oder Design hat das nichts zu tun.

- PHP kann nicht nur HTML ausgeben, sondern auch als Prozess laufen und Daten auf Konsole ausgeben, oder in's Syslog schreiben.

Naja es laeuft immer als Prozess -_-^^ Ist auch schwer fuer einen Prozess nicht als Prozess zu laufen, aber wenn du meinst, dass man es auch im Command Line Interface nutzen kann, ja. ^^

- Python,Perl sind so genannte CGI-Sprachen (Common Gateway Interface) und koennen auch HTML ausgeben.

xD du Kannst Python und Perl genauso mit mod_python und mod_perl benutzen wie php mit mod_php. Und genauso kannst du CGI fuer PHP benutzen. Das eine hat erstmal mit dem anderen nichts zu tun.

- Lasse dich nicht durch das PHP vs. C# vs. Perl vs. Foo-Sprache verwirren, lege in deinem Konzept fest, welche Sprachen du benutzt, auch HTML/CSS gehoeren dazu!
Naja HTML/CSS gehoert im Web zwangslaeufig dazu... hilft einem nur nix beim Backend.

HTML anzufangen ist gut, sehr gut sogar. Das wuerde ich als erstes machen, wenn ich ein Browser-Game programmieren wollte - und es auch tue .

Bestreitet niemand, aber wer jetzt mit HTML anfaengt und keine anderen Programmiersprachen kennt, wird in den naechsten 5 Jahren kein konkurrenzfaehiges Browsergame entwickeln.

gepostet vor 16 Jahre, 6 Monate von Quix0r

"Du hattest einen ungueltigen Verweis angegeben."
... kam hier. Sorry fuer den Wutausbruch. Werde ich vielleicht morgen nochmal tippern.

gepostet vor 16 Jahre, 6 Monate von Quix0r
NEIN!! Html ist eine Markup Language und dient dazu Inhalte logisch zu strukturieren. Mit Darstellung oder Design hat das nichts zu tun.
So wurde es uns beigebracht. Aber okay, an Denglisch habe ich wohl beim Posten nicht gedacht...

Naja es laeuft immer als Prozess -_-^^ Ist auch schwer fuer einen Prozess nicht als Prozess zu laufen, aber wenn du meinst, dass man es auch im Command Line Interface nutzen kann, ja. ^^
Sogar Serverprozesse sind moeglich - also auf einem Port lauschen und Verbindungen annehmen, nur halt nicht so performant, da PHP keine Threads kann, ausser du nimmst ein experimentelles Modul hinzu.

xD du Kannst Python und Perl genauso mit mod_python und mod_perl benutzen wie php mit mod_php. Und genauso kannst du CGI fuer PHP benutzen. Das eine hat erstmal mit dem anderen nichts zu tun.
Ist mir wohl entfallen. :/ Im Volksmunde gesprochen gilt Perl als CGI-Sprache, da meistens hinter der Endung .cgi sich ein Perl-Script befindet.

Naja HTML/CSS gehoert im Web zwangslaeufig dazu... hilft einem nur nix beim Backend.
Nein, dort bringt es so gut wie nichts.

Bestreitet niemand, aber wer jetzt mit HTML anfaengt und keine anderen Programmiersprachen kennt, wird in den naechsten 5 Jahren kein konkurrenzfaehiges Browsergame entwickeln.
Da stimme ich dir voll und ganz zu. Mit "mal fix ein Scriptchen (Browserspiel) basteln" ist damit nicht getan, was andere ja bereits gepostet haben.
Oh, Denglisch schon wieder... :/

gepostet vor 16 Jahre, 2 Monate von BES_1973

Ich hab angefangen mit dem Namo-Webeditor (kostenpflichtig), der ist meiner Meinung nach sehr gut um das Design der Seite zu erstellen und auch Scripts einzufügen/bearbeiten die in einer anderen Programmiersprache geschrieben sind.
Als Serversoftware (um die Seiten lokal zu testen) bin ich bisher ganz gut mit Xampp gefahren (du solltest beachten dass es immer Unterschiede bei Windows und Linux - Servern gibt).

Dann hatte ich mir "das grosse PHP5 & MySQL Buch" von Data-Becker (ca. 15,- ) gekauft und damit angefangen PHP zu lernen. (Das Buch enthält aber viele Fehler).

Ich könnte dir noch empfehlen dass du dich bei www.bücher.de anmeldest.
www.bücher.de verschenkt in unregelmässigen Abständen Bücher rund ums Programmieren, eins hatte ich mir dort auch schenken lassen.

Glaub mir ich hatte damals auch keine Ahnung von HTML und auch nicht von PHP oder Javascript. Aber das kommt ganz von alleine.
Mich stören meisstens nur die Klammersetzungen bei PHP, ansonst ist das die einfachste Programmiersprache mit der du ein BG realisieren kannst.

Du solltest dich aber auch im Vorfeld informieren, was dein Webhost zulässt, da hab ich mich schon ohne Ende geärgert, das der Anbieter gewisse Funktionen nicht unterstützt/zulässt, und nun sehen muss wie ich das anders realisiere ohne den Spielablauf zu stöhren.

gepostet vor 16 Jahre, 2 Monate von BES_1973

Was im Eröffnungspost noch Fehlt:

Versuche niemals deiner Com deine Entscheidungen zu Erklähren, es wird IMMER falsch ausgelegt.

gepostet vor 16 Jahre, 2 Monate von force4

Wenn Entscheidungen logisch und nachvollziehbar gefällt werden, sehe ich keinen Grund, warum diese falsch interpretiert werden könnten.

gepostet vor 16 Jahre, 2 Monate von warboy

Ich hab eine wichtige Frage. Ich progge grad mein eigenes Browsergame. Das Design sieht ganz gut aus und die wesendlichen Sachen sind schon da. Ich hab das auf die basis des Spiels Spacebattle geschrieben.

Aber das Problem ist...ich versteh einfach nicht, wie man einen countdown machen sollte, oder wie die einzelnen Stoffe im minutentakt, neu geladen werden können und somit, das in der Datenbank gespeichert werden.
im moment habe ich einen tick.php und der gibt nur stoffe aus, wenn ich den auktuallisiere....aber ich will nicht mein Leben damit verbringen, jede 2min zu aktuallisieren xD schliesslich müsste ich dann auch nachts rumsitzen.

So möchte ich nicht enden! Um Gottes willen, NEIN!

Deswegen, bitte ich euch um hilfe. Ich habe diese scripte:

PHP:


require("../ing/config.php");?>
//lager test verdier
$day = mktime (date("G"),date("i"),date("s")-1,date("m"),date("d"), date("Y"));
$moned = mktime (date("G"),date("i"),date("s"),date("m")-1,date("d"), date("Y"));
$sql = "SELECT * FROM `medlemmer` ";
$query = mysql_query($sql,$db) or die("Tut mir leid, aber es fu: ".mysql_error());
while($data = mysql_fetch_array($query, MYSQL_ASSOC) ){
$penger = $data['Mony'];
$penger = $penger + (129*$data['Mines']);
$penger1 = $data['carbost'];
$penger1 = $penger + (53*$data['carbo']);
$penger2 = $data['mensch']);
$penger2 = $penger + (111*$data['botschaft']);
$sql = "UPDATE `medlemmer` SET `Mony` = '".$penger."' WHERE `id` = '".$data['id']."' LIMIT 1 ;";
$query2 = mysql_query($sql,$db) or die("Fell ca lingje 16: ".mysql_error());
$sql = "UPDATE `medlemmer` SET `carbost` = '".$penger."' WHERE `id` = '".$data['id']."' LIMIT 1 ;";
$query2 = mysql_query($sql,$db) or die("Fell ca lingje 16: ".mysql_error());
$sql = "UPDATE `medlemmer` SET `mensch` = '".$penger."' WHERE `id` = '".$data['id']."' LIMIT 1 ;";
$query2 = mysql_query($sql,$db) or die("Fell ca lingje 16: ".mysql_error());
if($data['Defenders'] = 0 and $data['Mines'] = 0 and $data['Mony'] = 0){
if($data['sist_inne'] < $day) {
$sql = "DELETE FROM medlemmer WHERE `id` = '".$data['id']."'";
$query2 = mysql_query($sql,$db) or die("Fell ca lingje 12: ".mysql_error());
}
}else{
if($data['sist_inne'] < $moned) {
$sql = "DELETE FROM medlemmer WHERE `id` = '".$data['id']."'";
$query2 = mysql_query($sql,$db) or die("Fell ca lingje 25: ".mysql_error());
}
}
unset($data,$penger);
}
?>

 Das ist der Tick.php und ich möchte, dass die Rohstoffe im Minutentakt hinzugefügt werden. Geht das??

Und dann noch die Sache, mit den Gebäuden:

PHP:


$close = true;
require("../ing/start.php");
$har_mins = $user['Mines'];
$pris_mins = 129+(12*$user['Mines'] );
$raa_mins = floor( $user['Mony']/$pris_mins );
$car_mins = floor ($user['carbost']/$pris_mins );
$har_carbo = $user['carbo'];
$pris_carbo = 3000+(200*$user['carbo'] );
$raa_carbo = floor( $user['Mony']/$pris_carbo );
$har_forsch = $user['forsch'];
$pris_forsch = 500+(200*$user['forsch'] );
$raa_forsch = floor( $user['Mony']/$pris_forsch );
$har_titan = $user['botschaft'];
$pris_titan = 500+(200*$user['botschaft'] );
$raa_titan = floor( $user['Mony']/$pris_mins);
$car_mins = floor ($user['carbost']/$pris_mins );
$har_sili = $user['silizium'];
$pris_sili = 500+(200*$user['silizium'] );
$raa_sili = floor( $user['Mony']/$pris_sili );
$har_kupfer = $user['kupfer'];
$pris_kupfer = 500+(200*$user['kupfer'] );
$raa_kupfer = floor( $user['Mony']/$pris_forsch );
?>
if ($user['Mines'] >= 12){ ?>

HTML:
 

Deine nächsten Minen kosten dich Gold und Carbonat.




das ist das Gebäudebau Script...ich möcht, nach jedem klick auf Bauen" einen bestimmten countdown....geht das auch??

Könnt ihr mir bitte helfen?

Würd mich riesig freuen ;)

gepostet vor 16 Jahre, 2 Monate von Drezil

Original von warboy

Könnt ihr mir bitte helfen?

Schmeiss es weg, schreib es neu. Da ist ja so gut wie alles falsch.

Am lustigsten ist, dass du $penger 3x überschreibst und dann immer denselben wert auf alle felder einträgst.. ;)

gepostet vor 16 Jahre, 2 Monate von warboy

ja...ich bin kein guter programmierer...

ahja...das war penger 1 und 2 usw.

hab von der falschen Datei kopiert ;)

sry

habt ihr vorschläge, wie ich das bessern kann?

gepostet vor 16 Jahre, 2 Monate von Miphois

Original von Drezil

Am lustigsten ist, dass du $penger 3x überschreibst und dann immer denselben wert auf alle felder einträgst.. ;)

 *grins* :)

Aber zum grundliegenden Problem. Man kann deine Scipts auch mit Cronjobs aufrufen, das kannste dann im Minutentakt laufen lassen. Davon würde ich dir aber abraten, das wird irgendwann deinen Server lahmlegen. ;)

Am besten ist es immer die Veränderung die angezeigt werden soll für den Augenblick neu zu errechnen.

Also der User war zuletzt für 10 min aktiv. Das haste irgendwo gespeichert. Wenn er nun die Seite aufruft sollen die letzten 10 minuten gleich berechnet werden. Also deine Zahlen mal die Ticks die Fehlen.

Um ungerade Zahlen zu vermeiden solltest du aber nur ganze Ticks rechnen und die Restzeit aufbewaren.

gepostet vor 16 Jahre, 2 Monate von warboy

und wie soll ich das anstellen? xD

ich bin kein profi

danke für deine info...hätt mir auch schon fast sowas gedacht ;)

gepostet vor 16 Jahre, 2 Monate von Miphois

Also ich handhabe es so. In der Spielertabelle gibt es eine Spalte die nenn ich einfachheitshalber zeitindex.
Da drin steht wann die letzte aktualisierung dieses Useres erfolgt ist.
Ich arbeite mit time(void) das gibt die Anzahl Sekunden aus die seit 1970? vergangen sind.
Beim erstellen eines Users setze ich diesen aktuellen Wert auch gleich in diese Spalte hinein.
Wenn ich nun also den Zeitindex-Wert des aktuellen Users auslesen und mit dem aktuellen time(void) vergleiche, weiss ich die Anzahl der Sekunden die seit der letzen Aktualisierung vergangen sind. Will ich nun also ein Tick alle 60 Sekunden laufen lassen. Dann rechne ich die Differenz dieser beiden Werte durch 60. Mit floor() runde ich den Wert auf die nächste Ganzahl ab und ich weiss die Anzahl Ticks die errechnet werden müssen. Ich ersetze den Zeitindexwert aus der Datenbank mit folgender Formel (AlterIndex + 60 * Ticks) (nicht der neue(aktuelle) Index da sonst die abgerundeten Sekunden verloren gehen).
Ist die Tickzahl grösser als 0 wird die Funktion zum errechnen der Ticks aufgerufen. Keine Ticks zu berechnen währe ja blödsinn. Den Paramter der Anzahl Ticks kannste gleich mitgeben. Deine Tickveränderungen musst du dann nur noch mit der Anzahl der Ticks multiplizieren.

gepostet vor 16 Jahre, 2 Monate von warboy

und wie bringe ich den tick zum laufen?

kannst du mir das anhand des scriptes, das ich angegeben habe zeigen?

gepostet vor 16 Jahre, 2 Monate von Amun Ra

Wenn du ein Browsergame programmieren und betreiben willst,
empfehle ich dir dringend tiefer in die Materie einzusteigen...

gepostet vor 16 Jahre, 2 Monate von Bringer

Original von warboy

und wie bringe ich den tick zum laufen?

kannst du mir das anhand des scriptes, das ich angegeben habe zeigen?

Ich denke es wäre angebracht ein wenig mehr Grundlagenarbeit zu leisten vor du versuchst dieses Spiel umzubauen. Etwas mehr als Codeschnippsel kopieren muss man schon können um "den tick zum laufen" zu bringen. Führ dir doch ein paar Tutorials über php zu Gemüte - auch wenn das dort behandelte meist stupider ist als Erbsen zählen, so wirst du dich dennoch später beim ummodeln deines Spiels viel leichter tun.

gepostet vor 16 Jahre, 2 Monate von BES_1973

hab hier einen Countdown für dich.
in die Variable $f_count muss die Zeit eingetragen werden wann er Fertig sein soll.
du kannst den Script auch nach deinen Bedürfnissen noch anpassen.
(nur der copyright-Hinweis muss drin bleiben)
PHP:


 
 ;
// // Erstellt mit dem Countdown-Generator - Homepage-Total.de
var end = new Date("");
function toSt2(n) {
  s = '';
  if (n < 10) s += '0';
  return (s + n).toString();
}
function toSt3(n) {
  s = '';
  if (n < 10) s += '00';
  else if (n < 100) s += '0';
  return (s + n).toString();
}
function countdown() {
  d = new Date();
  count = Math.floor(end.getTime() - d.getTime());
  if(count > 0) {
    miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
    seconds = toSt2(count%60); count = Math.floor(count/60);
    minutes = toSt2(count%60); count = Math.floor(count/60);
    hours = toSt2(count%24); count = Math.floor(count/24);
    days = count;
    document.getElementById('c1').innerHTML = days + ' TAGE';
    document.getElementById('c2').innerHTML = ' - ' + hours + ':' + minutes + ':' + seconds
    setTimeout('countdown()', 100);
  }
}
countdown();
// ]]>

Edit> ein beispiel für $f_count:
$f_count=date("Y M d,H:i:s",mktime(date(H),date(i)+30,date(s),date(m),date(d),date(Y)));

gepostet vor 16 Jahre, 2 Monate von Miphois

Ich kann mich eigentlicn Amun Ra und Bringer nur anschliessen.

Alles was da für erforderlich ist müsstest du selber können. Du kannst ja nicht bei jeder Änderung wieder fragen bis du jemanden findest der dir den Code unschreibt :) So kommst du nicht weiter.

Versuch es doch ersteinmal selber und wenn du an ein Problem stosst frag wieder.

Haste du in der Datenbank eine Tabelle in dem die Spieler Aufgeführt sind?  Die Datenbank müsste ja auch erweitert werden. Also Codeanpassung alleine wird da nicht reichen. ;)

gepostet vor 16 Jahre, 2 Monate von Valerion

@BES_197: Ich glaube eher, dass er ein PHP-Script braucht, mit dem er den Ticker ausführen kann. JS wird ihm da auch nicht viel weiterhelfen....vorallem wenn der User kein JS aktiviert hat.

@warboy: Kleiner Denkansatz, so wie ich das Problem verstanden habe: Du speicherst wann du das letzte Mal den Ticker (Vll. auch nur für den User?) ausgeführt hast. Beim Seitenaufbau überprüfst du dann, ob seit dem letztem Mal 1 Minute/60 Sekunden vergangen sind. Wenn das ist dann rechnest du aktuelle Zeit-letzte Tickzeit(Wieviel Sekunden sind inzwischen vergangen?). Danach dividierst du die Zahl durch 60 damit du die Minuten hast, bzw. die Anzahl der Ticks, die ausgeführt werden. Dann machst du nurmehr eine Schleife die die Ticks entsprechend der Anzahl der Minuten ausführt.

Kleiner Tipp: Ich bin mir sicher, dass ich oben irgendetwas vergessen habe... Also ich würde mir an deiner Stelle alles durchlesen, vll. auf eventuelle Probleme(Rundungsfehler, Rechenfehler, etc.)überprüfen und DANN erst alles in PHP-Code umwandeln. Vielleicht hast du ja sogar eine bessere Idee, wie man das lösen kann.

gepostet vor 16 Jahre, 2 Monate von warboy

danke für eure ratschläge, ich kann mit allem, was ihr geschrieben habt was anfangen ;)
vielen dank

wir hörn uns noch später ;)

mfg

bogdan

gepostet vor 16 Jahre, 1 Monat von cake

Hi Forum

Bin neu hier, hab das Forum gefunden weil mir in den letzen Tagen eine Idee eines eigenen Browsergames durch den Kopf geistert. Und da ich eh Python lernen will passt das ganz gut zusammen :)

Nun stecke ich hier bei einem kleinen Problem fest:
Angenommen man hat eine Einheit E die sich über die Zeit automatisch anhäuft.

Folgendes drei Szenarios:

1:

Ertrag: 2E/sec   #wird dauernd angehäuft
Konto: 1000E   #soviel hatte er bei der letzen Aktualisierung
Zeit: vor 180sec   #solange ist es seit der letzen Aktualisierung her
#Zeit ist ein schon berechnetes Feld aus time_now - last_update

Wenn der User jetzt aktualisierung würde ich folgendes machen und dann das Konto ausgeben:

Konto=Konto+Ertrag*Zeit
1360E=1000E+2E*180

soweit so einfach :)

----

2:

Ertrag: 2E/sec
Konto: 1000E
Zeit: vor 180,5sec

1361E=1000E+2E*180,5

geht auch noch ohne Probleme.

----

3:

Ertrag: 2E/sec
Konto: 1000E
Zeit: vor 180,4sec

1360,8E=1000E+2E*180,4

was jetzt? 1360,8 kann ich nicht ausgeben/nicht anzeigen. Runden ist auch gefährlich, da der Rundungsbetrag verlohren geht.

Meine erste Idee wäre folgende:

Zwischen_Konto=Konto+Ertrag*Zeit
Konto=Zwischen_Konto.Abrunden()
Und dann "Zwischen_Konto-Konto" der Zeit wieder gutschreiben.
Im Szenario 3 wäre das also Zeit+0,8 (somit fliessen die 0,8sec für die nächste Berechnung mitein und nichts geht verlohren)

Versteht ihr wie ich es meine? Wie würdet ihr das machen?

Greez

gepostet vor 16 Jahre, 1 Monat von Kallisti

Runde die Zeit ab und setzte last_update eben auf den abgerundeten Zeitwert. Zudem solltest du dein Gamedesign dann so auslegen, dass du sicher nur mit Ganzzahlen arbeitest.

Alternativ alles auf Floating Point Basis, aber dann eben auch die Ressourcen. Du musst ja nicht alle Stellen anzeigen, nur intern so speichern. Allerdings wirst du dann immer gewisse Präzisionsfehler (aufgrund der internen Repräsentation der Daten und der begrenzten Genauigkeit) drin haben, die aber in den meisten Fällen (sprich Anwedungsszenarien) nicht relevant sein sollten.

gepostet vor 16 Jahre, 1 Monat von Dunedan

Endlich mal jemand der ein BG mit Python macht.

P.S.: Ganz vergessen auch was produktives zu schreiben. Am gängigsten dürfte doch sein intern die Werte mit allen Kommastellen zu verwenden und lediglich dem Nutzer (ab)gerundete Zahlen zu präsentieren.

gepostet vor 16 Jahre, 1 Monat von cake

> Endlich mal jemand der ein BG mit Python macht.

Ja.. hoffen wir es mal ^^ (Python werd ich lernen, ob daraus ein Browsergame entsteht wird man noch sehen).

hab diese Nacht lange an nem Konzept gearbeitet. Schlussendlich sind etwa 20Seiten rausgekommen. Aber bin nicht glücklich. Ist echt schwer das richtige Balancing zwischen Aufwand und Spielspass zu finden. Ein gutes PvP System auszudenken. etc etc.

Mich würden mal Berichte und Erfahrungswerte über Werbung/Bezahlsystem interessieren. Schlussendlich sollte so ein Projekt min. selbstfinanzierend sein (Server, vielleicht Wartung und was sonst noch an Kosten anfallen). Schön wäre natürlich wenn auch ein bisschen was rausspringen würde, muss aber nicht sein.

Also wie wurde die Werbung implementiert. Welche Bezahlsysteme setzen sich durch? (z.B. solche die die Bedienung erleichtern vs. solche die ins Spielgeschehen eingreifen). Gern auch mit Infos zu Userverhalten etc.

Kennst du/ihr solche Berichte? Gern auch etwas ausführlicher als nur ein Zeitungsbericht :)

gepostet vor 16 Jahre, 1 Monat von BES_1973

Vielleicht ist das für andere noch Hilfreich, ich hatte mich vor ca. 3 Jahren bei http://www.magicforrest.de/ angemeldet, die Seite war nun wohl auch lange Zeit off, die machen grade einen Neustart.

Wenn die Seite wieder geht, haben die auch BG-Maker (RPG-Maker) im Angebot.

gepostet vor 16 Jahre, 1 Monat von abuzeus

Das hat aber mit dem Ziel dieses Forums glaube ich nicht so viel zu tun. Abgesehen davon, dass MF das schon ewig ankündigt...

Vielleicht kann dieser Thread ja mal wieder übersichtlich gemacht werden und die Diskussion (diesen Beitrag eingeschlossen) abgekoppelt werden? *Vorschlag*

gepostet vor 16 Jahre, 1 Monat von TheUndeadable

> dass MF das schon ewig ankündigt...

*G*. Tut er das?

gepostet vor 16 Jahre, 1 Monat von Phoscur

Nun stecke ich hier bei einem kleinen Problem fest:

Du hast nur den wirklich kleinen Teil des Problems am Haken...

Angenommen man hat eine Einheit E die sich über die Zeit automatisch anhäuft.

Folgendes drei Szenarios:

1:

Ertrag: 2E/sec   #wird dauernd angehäuft
Konto: 1000E   #soviel hatte er bei der letzen Aktualisierung
Zeit: vor 180sec   #solange ist es seit der letzen Aktualisierung her
#Zeit ist ein schon berechnetes Feld aus time_now - last_update

Wenn der User jetzt aktualisierung würde ich folgendes machen und dann das Konto ausgeben:

Konto=Konto+Ertrag*Zeit
1360E=1000E+2E*180

soweit so einfach :)

----

2:

Ertrag: 2E/sec
Konto: 1000E
Zeit: vor 180,5sec

1361E=1000E+2E*180,5

geht auch noch ohne Probleme.

----

3:

Ertrag: 2E/sec
Konto: 1000E
Zeit: vor 180,4sec

1360,8E=1000E+2E*180,4

was jetzt? 1360,8 kann ich nicht ausgeben/nicht anzeigen. Runden ist auch gefährlich, da der Rundungsbetrag verlohren geht.

Meine erste Idee wäre folgende:

Zwischen_Konto=Konto+Ertrag*Zeit
Konto=Zwischen_Konto.Abrunden()
Und dann "Zwischen_Konto-Konto" der Zeit wieder gutschreiben.
Im Szenario 3 wäre das also Zeit+0,8 (somit fliessen die 0,8sec für die nächste Berechnung mitein und nichts geht verlohren)

Versteht ihr wie ich es meine? Wie würdet ihr das machen?

Runde die Werte bevor du sie ausgibst, das ist alles. Also nicht das Konto runden, sondern den Ausgabewert. In der Datenbank kannst du sie ja auch mit ellenlangen Kommastellen lassen... Das brauchst du vor allem wenn du Erträge wie 10E/h willst, sprich in der Produktion schon Kommastellen (0.6/s).

Viel komplizierter ist das Problem wenn du negative Produktion hast oder wenn du nur bis zu einem Maximalwert produzieren willst. Das Konto darf ja nicht unter 0 fallen. Dann muss der ganze Vorgang innerhalb einer Schleife laufen, teils muss die negative Produktion zu einem bestimmten Zeitpunkt auf 0 gesetzt werden.

Das lässt sich übrigens alles in MySQL erledigen, noch bevor du die Daten in dein Python holst.

gepostet vor 16 Jahre von tkdmatze

Original von woodworker

[*] Los-programmieren - Am Anfang bis ihr eine erste Alpha oder Beta Version zum Testen Herausgebt solltet ihr euch wirklich Strikt an das Konzept aus 2. halten den es kommt sehr schnell dazu das man weitere Ideen hat, diese lieber auf einem extra Zettel oder einem Wiki aufschreiben und dann Später einarbeiten und immer eins nach dem anderen, es bringt nix wenn ihr da was anfangt und wenn es zu schwierig wird dann dort weitermacht. Soetwas wird mit der Zeit viel zu unübersichtlich

Sei mir nicht böse, wenn ich auf diesen Punkte mal näher eingehen will.

Hier sollte man unterscheiden, ob man alleine ist oder im Team, egal wie, es wäre immer besser, aus dem Konzept (Punkt 2) die Module und ihre Abhängigkeiten (kein Login ohne Datenbank, kein RechteSystem ohne Login, keine Adminsitration ohne Rechte, kein Krieg ohne Einheiten etc.) herauszufinden.

Idealerweise benutzt man ein GTD(Getting Things Done)-System, einen Bugtacker(Bugzilla, Mantis) oder eine Projektverwaltung(bzw Groupware). Die meisten bieten einen Abhängigkeitsbaum an, so dass man sieht, welche Module zuerst, und welche später erstellt werden müssen.

Hat man jenes vollständig, So kann man einen Projektplan erstellen, mit Zeiteinschätzung etc. ... (gebt euch lieber mehr Zeit als zuwenig, muss ja auch alles gestestet werden). Spätestens jetzt ist klar, so ein Spiel ist nicht in 4 Wochen erstellt. Danach erstellt man für jedes Modul eine genauere Beschreibung als bei Punkt 2.

Nun kann man "Task für Task" oder "Bug für Bug" abarbeiten, wie schon vorher beschieben.

gepostet vor 16 Jahre von DrakeL

Original von tkdmatze

Hat man jenes vollständig, So kann man einen Projektplan erstellen, mit Zeiteinschätzung etc. ... (gebt euch lieber mehr Zeit als zuwenig, muss ja auch alles gestestet werden). Spätestens jetzt ist klar, so ein Spiel ist nicht in 4 Wochen erstellt. Danach erstellt man für jedes Modul eine genauere Beschreibung als bei Punkt 2.

Dürfte für die meisten Neulinge ein Ding der unmöglichkeit sein ohne Erfahrungswerte eine Zeitschätzung zu machen. Ansonsten stimme ich dir zu. Man unterschätzt den Aufwand beim ersten Projekt gewaltig, was wohl der Grund ist, warum die meisten angekündigten Spiele von Neulingen so viele Features bieten sollen und am Ende nie in eine spielbare Phase gelangen.

gepostet vor 16 Jahre von tkdmatze

Original von DrakeL

Original von tkdmatze

Hat man jenes vollständig, So kann man einen Projektplan erstellen, mit Zeiteinschätzung etc. ... (gebt euch lieber mehr Zeit als zuwenig, muss ja auch alles gestestet werden). Spätestens jetzt ist klar, so ein Spiel ist nicht in 4 Wochen erstellt. Danach erstellt man für jedes Modul eine genauere Beschreibung als bei Punkt 2.

Dürfte für die meisten Neulinge ein Ding der unmöglichkeit sein ohne Erfahrungswerte eine Zeitschätzung zu machen. Ansonsten stimme ich dir zu. Man unterschätzt den Aufwand beim ersten Projekt gewaltig, was wohl der Grund ist, warum die meisten angekündigten Spiele von Neulingen so viele Features bieten sollen und am Ende nie in eine spielbare Phase gelangen.

IMO liegt das daran, das die "coolen Features" zuerst programmiert wurden, statt die Struktur zu erfassen.

gepostet vor 15 Jahre, 11 Monate von BES_1973

Ich habe einen ganz guten Tipp,

wenn du nicht Programmieren kannst : lass es und lern erstmal die logik" die dahinter steckt.

Wenn du Programmieren kannst aber nix mit der Programmiersprache anzufangen weisst (so wie ich), mach weiter, das kommt von alleine.

Was immer gleich ist und das in jeder Spache

0 und 1
oder and  und or

gepostet vor 15 Jahre, 11 Monate von DrakeL

Original von BES_1973

Ich habe einen ganz guten Tipp,

wenn du nicht Programmieren kannst : lass es und lern erstmal die logik" die dahinter steckt.

Das wäre das wichtigste, man nimmt sich eine beliebige Sprache (am besten eine an Hand man die Konzepte wie Objektorientierung ordentlich lernen kann wie Java oder C# -> Achtung, Persönliche Meinung) und lernt die Logik was Programmieren eigentlich ist, wie man welche Art von Problemen löst usw. am Beispiel der Sprache die man sich ausgesucht hat. Spielt etwas mit rum, probiert aus und erweitert es usw. Man sollte dabei aber nicht vergessen auch mal zu schauen wie die Dinge in anderen Sprachen gelöst werden.

Bei PHP speziell: Lieber ein Buch kaufen als ein Open Source Projekt als Referenz zu nehmen. :)


Was immer gleich ist und das in jeder Spache

0 und 1


oder and  und or

Die Logik dahinter ist wohl noch nicht soo geläufig? ;)

0 und 1, also Zahlen gibt es in jeder Sprache das stimmt. Buchstaben aber auch. "and" und "or" meinst als Verknüpfungsoperatoren? in C/C++ heißen die aber zum Beispiel && und ||.

Was in jeder Programmiersprache gleich ist ist das was eine Programmiersprache ausmacht:

  • Variablen
  • Kontrollstrukturen
  • Schleifen

Wenn man diese versteht und dann noch "erweiterte" Grundlagen wie Funktionen und Objektorientierung verstanden hat sollte man sich in jeder Sprache mehr oder weniger zurecht finden.

gepostet vor 15 Jahre, 11 Monate von altertoby

Original von DrakeL

Was in jeder Programmiersprache gleich ist ist das was eine Programmiersprache ausmacht:

  • Variablen
  • Kontrollstrukturen
  • Schleifen

Wenn man diese versteht und dann noch "erweiterte" Grundlagen wie Funktionen und Objektorientierung verstanden hat sollte man sich in jeder Sprache mehr oder weniger zurecht finden.

Naja in funktionellen Sprachen gibts das eigentlich nur bedingt...aber schreibt man darin BG? (ernste Frage, mir ist bewusst, dass wenn wohl nur teilweise). 

gepostet vor 15 Jahre, 11 Monate von rami95

Original von DrakeL

Was in jeder Programmiersprache gleich ist ist das was eine Programmiersprache ausmacht:

  • Variablen
  • Kontrollstrukturen
  • Schleifen

Wenn man diese versteht und dann noch "erweiterte" Grundlagen wie Funktionen und Objektorientierung verstanden hat sollte man sich in jeder Sprache mehr oder weniger zurecht finden.

Zählen Schleifen nicht auch zu Kontrollstrukturen?

gepostet vor 15 Jahre, 11 Monate von DrakeL

Original von altertoby

Naja in funktionellen Sprachen gibts das eigentlich nur bedingt...aber schreibt man darin BG? (ernste Frage, mir ist bewusst, dass wenn wohl nur teilweise). 

Meinst funktionale Sprachen wie Lisp? Es gibt ein Thread hier im Forum wo ein Team ein Browsergame in Lisp geschrieben hat und davon recht begeistert war.

Ich hatte auch erst überlegen müssen ob die Grundsätze immer zutreffen. Bei SQL habe ich bisher noch keine Variablen oder Schleifen genutzt. :)

@ rami95: Ahh, ich glaub ich hab gerade etwas verwechselt... Schleifen sind Kontrollstrukturen, ich glaub Sequenzen sind die dritte Gruppe von Eigenschaften Turing-Vollständiger Sprachen. (Kaum ist man aus der Schule draussen... ^^)

gepostet vor 15 Jahre, 11 Monate von rami95

http://de.wikipedia.org/wiki/Programmiersprache#Befehle:

Eingabe- oder Ausgabebefehle
lesen Daten von der Tastatur, von einer Datei oder aus anderen Quellen ein oder sie geben sie auf den Monitor, auf einen Drucker oder in eine Datei aus.
Berechnungen
verändern Daten oder sie kombinieren Daten neu. Dies können auch mathematische Berechnungen, wie Addition oder Multiplikation sein.
Kontrollstrukturen
entscheiden aufgrund der vorliegenden Daten, welche Befehle als nächstes ausgeführt werden. Insbesondere kann eine Befehlsfolge wiederholt werden.
Deklarationen
reservieren Speicherplatz für Variablen, andere Datenstrukturen, Unterprogramme, Methoden oder Klassen unter frei wählbaren Namen, so dass auf sie im Laufe des Programms unter diesen Namen zugegriffen werden kann.

k.A. ob das die Lösung auf unsere Frage ist^^

gepostet vor 15 Jahre, 11 Monate von Todi42

Original von DrakeL

"and" und "or" meinst als Verknüpfungsoperatoren? in C/C++ heißen die aber zum Beispiel && und ||.

and und or sind in C++ auch möglich, die meisten verwenden aber die alten operatoren || und &&.

gepostet vor 15 Jahre, 11 Monate von Drezil

Original von Todi42

Original von DrakeL

"and" und "or" meinst als Verknüpfungsoperatoren? in C/C++ heißen die aber zum Beispiel && und ||.

and und or sind in C++ auch möglich, die meisten verwenden aber die alten operatoren || und &&.

? sicher?

ich habs nie ausprobiert (ich mag || und && lieber).. aber mit einem #define and && kann man das ja ganz schnell einbauen.

kann ja sein, dass du unwissentlich ne header-datei drin hattest, die das definiert.

oder es kommt auf den compiler an :D

gepostet vor 15 Jahre, 11 Monate von Todi42

Original von Drezil

? sicher?

ich habs nie ausprobiert (ich mag || und && lieber).. aber mit einem #define and && kann man das ja ganz schnell einbauen.

kann ja sein, dass du unwissentlich ne header-datei drin hattest, die das definiert.

oder es kommt auf den compiler an :D

 Jep, da bin ich mir sicher. Es gibt auch noch so lustige Sachen wie trigraphs, Du kannst auch ??!??! statt || schreiben.

gepostet vor 15 Jahre, 11 Monate von abuzeus

Krass wie viele Leute hier glauben, wer die Syntax beherrscht kann programmieren. Oder keine Ahnung haben, wie so eine funktionale Programmiersprache eigentlich aussieht. Da hätte ich von einigen schon etwas mehr erwartet...

Selbst wenn man sich auf iterative, objektorientierte Programmierung festlegt: Die paar Kontrollstrukturen und das bisschen Kinderlogik sollten ja nicht so schwer sein. Wer Programmieren lernen will sollte sich erstmal beibringen, eine Problembeschreibung einigermassen vernünftig auszuformulieren, in kleinere Teilprobleme zu zerlegen und dann Stück für Stück abzuarbeiten. Syntax kann man dann nebenher machen.

Übrigens ist logisches und nicht immer gleich logischem und: Einige Programmiersprachen nutzen Shortcut-Regeln, andere nicht. Das macht schon Unterschiede.

gepostet vor 15 Jahre, 11 Monate von shadows

Original von Todi42

and und or sind in C++ auch möglich, die meisten verwenden aber die alten operatoren || und &&.

Huch und ich verwende in C++ auch noch | und & ... sachen gibts.

Ja, ich kenne den unterschied zwischen logischen und bitweisen vergleichen.

gepostet vor 15 Jahre, 11 Monate von Kallisti

http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B

C++ operator synonyms

C++ defines keywords to act as aliases for a number of symbols that function as operators: and (&&), bitand (&), and_eq (&=), or (||), bitor (|), or_eq (|=), xor (^), xor_eq (^=), not (!), not_eq (!=), compl (~). These are parsed exactly like their symbolic equivalents, and can be used in place of the symbol they replace. It is the punctuation that is aliased, not the operators. For example, bitand can replace both the bitwise AND operator and the address-of operator.

The ANSI C specification makes allowance for these keywords as preprocessor macros in the header file iso646.h. For compatibility with C, C++ provides the header ciso646; inclusion of which has no effect.

gepostet vor 15 Jahre, 11 Monate von Nagila Hawa

Ich finde nicht, daß rein objektorientierte Sprachen wie Java oder C# unbedingt sinnvoll sind um das Programmieren zu lernen. Um das System dahinter zu verstehen ist es vielleicht ganz gut auf einer niedrigeren Abstraktionsebene zu arbeiten. Also z.B. C oder, wenn man sich das antun will, auch eine Assemblersprache (wenn man Mikrocontroller zur Verfügung hat, kann man auch da mit kleinen Programmen viel Spaß haben).

Wenn man von Sprachen spricht, die einem beim "Programmieren lernen" helfen, muß ich für mich auf jeden Fall noch Ada erwähnen. Beschränkt man sich dort auf die einfacheren Anweisungen, ist es, vorsichtig gesagt, fast wie Pascal. Die Sprache ist jedoch extrem umfangreich. Generische Programmierung, objektorientierte Programmierung und sogar nebenläufige Programmierung werden nicht nur intensiv unterstützt, sondern sind auch sehr elegant eingepflegt, so daß man das, was dort eigentlich passiert sehr schnell versteht und einen sanfteren Übergang hat. Das Sprachdesign und die Implementierungen (Compilerwarnungen sind meistens sehr ausführlich und genau) schützen vor sehr vielen Anfängerfehlern, so daß man sauberes Programmieren praktisch von Haus aus "aufgezwungen" bekommt. Der Sprachstandard ist sehr streng, so daß es selten zu undefinierten Verhalten kommt und somit zu Fehlern, wenn der Compiler/das System gewechselt wird (unglaubliche Portabilität, besonders für eine Sprache, die in Maschinensprache übersetzt wird). Ada gilt auch neben Eiffel als "die" Sprache der Softwaretechnik, mit dem Unterschied, daß Ada in der Praxis häufiger eingesetzt wird und viele Tutorials, Bibliotheken und ein freier Zugang zur Sprachreferenz zur Verfügung stehen. Zudem sind Ada-Programme meistens sehr Laufzeiteffizient und da in praktisch jedem Entwicklungsschritt sehr viele Fehler verhindert oder zumindest erkannt werden können, auch qualitativ hochwertig (kommt beides natürlich in erster Linie auch auf die Entwickler an, aber die typischen Einsatzgebiete von Ada sind kein Zufall). Es gibt zwar auch Nachteile, so daß Anfänger mit Sicherheit erstmal vom riesigen Sprachumfang erschlagen werden, Ada-Syntax sehr tippaufwändig ist (Write-once-Read-often-Prinzip; ich kann ja mal zu der Programmiersprachensammlung "hello-world-Programme" hinzufügen) und einem für einige kritische Konstrukte der ein oder andere Stein in den Weg gelegt wird (Sicherheit geht vor...), aber alles in allem eine sehr sehr schöne Sprache.

Im Endeffekt ist esauch Geschmackssache. Ob nun jemand Python oder PHP lernt, um schnelle Ergebnisse zu erzielen, gerade in PHP auch mit "unsauberen" Mitteln zum Erfolg kommt, sich von Grund auf mit Hardwarenaher Programmierung beschäftigt, um die Technik zu verstehen, sich mit logischen oder funktionalen Sprachen auseinandersetzt, oder eine klassische Lehrsprache wie Pascal wählt, hat alles Vor- und Nachteile.

Ich finde es schon vernünftig, daß unter den Browsergame-Entwicklern oftmals angefangen wird mit HTML statische Seiten zu erstellen, dann mit PHP kleinere Skripte eingepflegt werden und anschließend auch weiter mit PHP gearbeitet wird. Das ist eben der produktivste und geradlinigste Weg von "Null Ahnung" bis zum ersten eigenen Browsergame.

gepostet vor 15 Jahre, 11 Monate von TheUndeadable

> "Null Ahnung" bis zum ersten eigenen Browsergame.

Und bis zum ersten gehackten Server...

gepostet vor 15 Jahre, 11 Monate von BES_1973

Mein Post oben, scheint ja doch mehr für Unverständnis zu sorgen als gedacht. Logik ist das Grundlegende für digitale Technik.

0=kein Signal
1=ein Signal

mehr gibt es nicht.

und als Operatoren gibt es nur and und or.

Und wer das begriffen hat und anwenden kann der kommt auch mit dem Programmieren klar.

Wer Logik lernen will sollte erstmal eine Spache wie SPS lernen, damit man die Zusammenhänge versteht.

gepostet vor 15 Jahre, 11 Monate von Bringer

Original von BES_1973

Und wer das begriffen hat und anwenden kann der kommt auch mit dem Programmieren klar.

Wer Logik lernen will sollte erstmal eine Spache wie SPS lernen, damit man die Zusammenhänge versteht.

narv!

gepostet vor 15 Jahre, 11 Monate von buhrmi

Oder auch nicht.

Edit: Bringer und seine flinken Finger!

gepostet vor 15 Jahre, 11 Monate von Nagila Hawa

Original von BES_1973

Mein Post oben, scheint ja doch mehr für Unverständnis zu sorgen als gedacht. Logik ist das Grundlegende für digitale Technik.

0=kein Signal
1=ein Signal

mehr gibt es nicht.

und als Operatoren gibt es nur and und or.

Und wer das begriffen hat und anwenden kann der kommt auch mit dem Programmieren klar.

Wer Logik lernen will sollte erstmal eine Spache wie SPS lernen, damit man die Zusammenhänge versteht.

http://de.wikipedia.org/wiki/Digitaltechnik

gepostet vor 15 Jahre, 11 Monate von abuzeus

Original von BES_1973

Mein Post oben, scheint ja doch mehr für Unverständnis zu sorgen als gedacht. Logik ist das Grundlegende für digitale Technik.

0=kein Signal
1=ein Signal

mehr gibt es nicht.

und als Operatoren gibt es nur and und or.

Das ist, mit Verlaub gesagt, Bullshit. Nur mit and und or kannst du ja nicht mal ne Negation aufbauen. Übrigens sind Logik und Signaltechnik zwei Paar Schuhe und ich behaupte mal, dass du von Logik keine Ahnung hast.

gepostet vor 15 Jahre, 11 Monate von Kampfhoernchen

IF var == 0 THEN 1 ELSE 0

Und schon haste deine Negation.

gepostet vor 15 Jahre, 11 Monate von abuzeus

Scherzkeks - ich rede von logische Schaltungen oder Aussagen. Nur mit AND und OR kannst du halt keine Negation bauen, dir noch einen if-Operator dazu zu lügen ist geschummelt :-)

gepostet vor 15 Jahre, 11 Monate von BES_1973

Original von abuzeus

... ich behaupte mal, dass du von Logik keine Ahnung hast.

 Dem muss ich dir mal wiedersprechen, da ich eine Ausbildunin E-Tech habe (3,5 Jahre bei der BEWAG (heute Vattenfall))

gepostet vor 15 Jahre, 11 Monate von BES_1973

Und was Kampfhörnchen geschrieben hat ist nicht mal dumm, was anderes machen nand und nor nicht.

gepostet vor 15 Jahre, 11 Monate von Dunedan

Original von BES_1973

 Dem muss ich dir mal wiedersprechen, da ich eine Ausbildunin E-Tech habe (3,5 Jahre bei der BEWAG (heute Vattenfall))

Was genau null aussagt. Und widerlegen tut's abuzeus' Aussage auch nicht.

gepostet vor 15 Jahre, 11 Monate von BES_1973

Original von Dunedan

Was genau null aussagt. Und widerlegen tut's abuzeus' Aussage auch nicht.

 Das sagt mehr aus als du dir Vorstellen kannst.

gepostet vor 15 Jahre, 11 Monate von StormtrooperThompson

Ich liebe solche Diskussionen *popcorn auspack*

gepostet vor 15 Jahre, 11 Monate von TheUndeadable

du wirst aber ein NAND nicht mit ANDs und ORs erzeugen können...

Kampfhörnchen hat ein einfaches b=NOT(a) gebaut.

BTW:

> Wer Logik lernen will sollte erstmal eine Spache wie SPS lernen

SPS ist keine Sprache. Die Programmiersprachen zur Programmierung einer SPS sind in der IEC 61131 aufgeführt. Dort werden mehrere Programmiersprachen zur Programmierung einer SPS gesammelt. Ich persönlich bevorzuge übrigens KOP bzw. neudeutsch LD.

gepostet vor 15 Jahre, 11 Monate von Klaus

Ich behaupte man braucht nur NAND um alle anderen Verknüpfungen abzubilden.

Abgesehen davon spielt Logik in der Programmierung nur eine Nebenrolle. Boolesche Ausdrücke findet man meistens nur in Kontrollstrukturen wieder.
Aber soweit muss man erstmal kommen, wenn man - wie abzueus schon gesagt - ein Problem auseinanderfriemelt, bis man es implementieren kann.

gepostet vor 15 Jahre, 11 Monate von rami95

Warum machen wirs uns nicht einfach und nehmen die bewährten AND, OR, XOR und NOT?

gepostet vor 15 Jahre, 11 Monate von Nerosmeel

*hand heb* bin dabei

gepostet vor 15 Jahre, 11 Monate von Nagila Hawa

Original von BES_1973

Original von abuzeus

... ich behaupte mal, dass du von Logik keine Ahnung hast.

 Dem muss ich dir mal wiedersprechen, da ich eine Ausbildunin E-Tech habe (3,5 Jahre bei der BEWAG (heute Vattenfall))

Dann solltest du auch wissen, daß das, was du gesagt hast falsch ist. Alleine schon die Aussage, daß "0" "kein Signal" bedeutet ist schlecht ausgedrückt. "0" und "1" werden über die Spannungspegel interpretiert, insofern ist auch "0" ein Signal. "Kein Signal" könnte man höchstens den hochohmigen Ausgängen zuordnen, wo wir schon bei 3 Zuständen für die Digitaltechnik sind (Tri-State). Hinzu kommen für die Erstellung von logischen Funktionen noch die "dont care"-Zustände, die Aussagen, daß das Ergebnis bei entsprechenden Eingängen egal ist und bei Verwendung der Schaltung, daß die Eingangszustände nicht verwendet werden sollten, da sie zu unerwünschten Verhalten führen. Ein Beispiel dafür sind Digitalanzeigen bei z.B. Uhren. Für jede Ziffer gibt es 10 Möglichkeiten, es werden also mindestens 4bit gebraucht, die jedoch 16 Möglichkeiten bieten. Um die logische Funktion zu optimieren, werden nur 10 Binärcodes definiert, die anderen können frei gewählt werden, um die Schaltung zu verkleinern. Versucht man jetzt z.B.  eine "12" auszugeben, erscheint dort irgendetwas wirres auf der Anzeige.

"and" und "or" sind auch nicht die einzigen Funktionen der Digitaltechnik. Alleine logische Verknüpfungen gibt es ein paar mehr und dann geben auch Kippstufen, Oszillatoren und ein paar weitere wichtige Grundschaltungen digitale Signale, die man mit logischen Verknüpfungen nicht beschreiben kann.

Zum Spielen mit der Digitaltechnik würde ich auch nicht als erstes SPS erwähnen. Dafür sind spezielle Sprachen wie Abel, Verilog und VHDL gedacht, die wunderbar funktionieren und mit denen man sogar vollständige Prozessoren beschreiben und erstellen kann (sogar zu Hause mit diversen PLDs).

gepostet vor 15 Jahre, 11 Monate von BES_1973

Ich habe nicht versucht die Digitaltechnik zu erklären! Ich hab nur die GRUNDBEGRIFFE erwähnt, und Grundlegend ist 0 und 1. (Nachdem was ich gelernt habe gibt es nix dazwischen)

gepostet vor 15 Jahre, 11 Monate von Klaus

Was du meinst ist die Binärdarstellung. Digital heißt nicht Zwangsläufig "0 und 1".

gepostet vor 15 Jahre, 11 Monate von Nagila Hawa

Dann solltest du es auch grundlegend und eben nicht absolut ("mehr gibt es nicht") beschreiben.

gepostet vor 15 Jahre, 11 Monate von Kallisti

Ganz nach Startup / Antitrust:

Du bist eine 1 oder eine 0.

Dieser Thread definitiv letzteres und seit Wochen Offtopic bzw. Diskussion ueber Dinge, die einem Anfaenger sicher nicht weiterhelfen... Ich glaub es sollte mal eine Sammelstelle fuer gute Hinweise sein und keine Diskussion ueber Unsinn?

gepostet vor 15 Jahre, 11 Monate von abuzeus

So, um das jetzt mal klarzustellen: Ich bin Mathematiker mit Schwerpunkt Logik, und elementare Aussagenlogik ist da wirklich nur ein klitzekleiner Teil. Und bevor das Argument kommt, ja es gibt auch für die Informatik relevante Teilgebiete der Logik, zB Komplexitätstheorie, Berechenbarkeitstheorie, den lambda-Kalkül usw. Das meiste davon muss man als Softwareentwickler oder Programmierer nicht wissen. Aber wer es nichtmal hinkriegt, eine vollständige Menge logischer Junktoren hinzurotzen, dem kann ich glaube ich mit Fug und Recht unterstellen, dass er keinen Plan hat, egal wo er mal ausgebildet wurde und egal was andere Leute unter Logik verstehen.

Das alles würde ich aber eigentlich nicht schreiben, denn ich bemühe mich, Leuten nicht auf die Füße zu treten. Was mich aber gestört hat, ist das jemand mit so wenig Ahnung hier meint, anderen Ratschläge geben zu müssen. Lieber BES_1973, ich gestehe dir zu, dass du von manchen Sachen Kenntnisse hast, du hast ja früher schon programmiert. Aber die Welt der Software hat sich seitdem weiterentwickelt und ist deutlich größer, als du dir vorstellen kannst. Und zu wissen, was man nicht weiß, ist eine Kernkompetenz. Ich melde mich auch in der Regel nicht bei Diskussionen zu Ajax zu Wort, weil ich davon keine Ahnung habe. Du versuchst aber immer krampfhaft, mitreden zu wollen, obwohl sehr offensichtlich ist, dass du mal irgendwo was gelesen hast, aber eigentlich nicht weisst, worum es geht. Und du lässt dir ewig Dinge vorkauen, statt dich mal selbstständig und folgerichtig selbst um eine Lösung des Problems zu bemühen. Google ist dein Freund und wenn das nicht reicht, dann nimm Papier und Bleistift her und denk einfach mal drüber nach: Wo bin ich, wo will ich hin, und was habe ich zur Verfügung.

Diese Defizite sind auch der Grund, warum du ein ums andere Mal abgelehnt wirst. So jemand wird als nicht reif für den Entwicklerbereich betrachtet (obwohl es einige davon im EB gibt). Wenn du meine Kritikpunkte oben beseitigt hast, bekommst du auch mein Pro bei einer deiner unweigerlich kommenden Neubewerbungen, denn mit Begeisterung bei Sache bist du.

Just my 2 cents.

edit: Rechtschreibung

gepostet vor 15 Jahre, 9 Monate von tkdmatze

Original von Nagila Hawa

Ich finde nicht, daß rein objektorientierte Sprachen wie Java oder C# unbedingt sinnvoll sind um das Programmieren zu lernen. Um das System dahinter zu verstehen ist es vielleicht ganz gut auf einer niedrigeren Abstraktionsebene zu arbeiten. Also z.B. C oder, wenn man sich das antun will, auch eine Assemblersprache (wenn man Mikrocontroller zur Verfügung hat, kann man auch da mit kleinen Programmen viel Spaß haben).

ich muss dir da beipflichten und widersprechen zugleich

auf kurze sicht ist es einfacher sich nicht um OOP zu kümmern

gerade bei längerfristigen oder grossen projekten verzeiht OOP mehr als funktionale programmierung

1. Tag

ILogin login = new SimplerLoginDerImmerTrueZurückgibt();

IDB myDb = new SimplerDBConnector();

2. Monat

ILogin login = new AusProgrammierterLogin();

IDB myDb = new DBConnectorMitConnectionPooling();

6.Monat

ILogin login = new AusProgrammierterLoginMitVerschlüsselung();

IDB myDb = new DBConnectorMitConnectionPoolingUndSqlInjectionChecker();

gepostet vor 15 Jahre, 9 Monate von Nagila Hawa

Auf lange Sicht wird man aber auch nicht bei einer einzigen Sprache bleiben und wenn man das vor hat, sollte man sich gerade eine wählen, die einem möglichst viel bietet. Modernes Pascal oder C++ unterstützen die Objektorientierte Programmierung ohne einen zu zwingen auch die simpelsten Dinge in Klassen zu stopfen. Ich denke nicht, dass man durch diesen Zwang in irgendeiner Weise die Objektorientierte Programmierung besser verstehen lernt. Klassen /= OOP.

gepostet vor 15 Jahre, 9 Monate von DrakeL

Was für Methoden würdest du nicht in eine Klasse packen?

Mir fallen keine ein, folglich kann von Zwang nicht die Rede sein. Man wird höchstens gezwungen es ordentlich zu machen und zu überlegen wohin gehört diese Methode überhaupt. :)

Mit dem Verständnis hat das aber wirklich wenig zu tun, zum objektorientiert Programmieren gehört schon etwas mehr hinzu als alles in Klassen verpacken.

gepostet vor 15 Jahre, 9 Monate von Nagila Hawa

Es ist ganz einfach: Wenn ich keine Klasse brauche, verwende ich sie nicht.

Ich will ja nicht über Java herziehen. Es funktioniert so wie es ist.

Ich behaupte aber mal, dass es für jemanden, der im Selbstudium Programmieren im Allgemeinen lernen will, ganz gut ist, wenn er auch über den Tellerrand hinaus schauen kann. Niemand verbietet dir in ObjectPascal, C++, Ada, Python oder PHP alles in eine Klasse zu verpacken, aber es wird eben nicht unbedingt gemacht. Zu behaupten, das liege an der Dummheit der Entwickler, ist mir da zu einfach.

gepostet vor 15 Jahre, 9 Monate von Amun Ra

> Was für Methoden würdest du nicht in eine Klasse packen?
> Mir fallen keine ein, ...
Dann solltest du aber nochmal genau nachdenken.
Ich stimme meinem Vorposter voll zu.

gepostet vor 15 Jahre, 9 Monate von DrakeL

Original von Amun Ra

Dann solltest du aber nochmal genau nachdenken.
Ich stimme meinem Vorposter voll zu.

Dann nenne mir doch einfach ein paar Beispiele (falls es hier zu OT wird auch gerne per PM). Mich würde es schon interessieren in welchen Fällen ihr Methoden/Funktionen nicht in eine Klasse packen würdet und was dagegen sprechen würde.

in vielen Sprachen wie Java und C# scheint es diesbezüglich zumindest keine Probleme zu geben, da ist alles mehr oder weniger schön strukturiert.

gepostet vor 15 Jahre, 9 Monate von Kallisti


Dann nenne mir doch einfach ein paar Beispiele (falls es hier zu OT wird auch gerne per PM). Mich würde es schon interessieren in welchen Fällen ihr Methoden/Funktionen nicht in eine Klasse packen würdet und was dagegen sprechen würde.

in vielen Sprachen wie Java und C# scheint es diesbezüglich zumindest keine Probleme zu geben, da ist alles mehr oder weniger schön strukturiert.

Was ganz schoen laestig sein kann, wenn man z.B. nur eine Pseudo-Zufallszahl generieren moechte und dafuer das Objekt eines Zufallszahlengenerators initialisieren muss.

Und dann braucht man einen "File Reader", um eine Zeile aus einer Datei zu lesen... und du kannst mir nicht erzaehlen, dass string.equals("anotherstring") intuitiv sei (da gibt es in C# ja immerhin eine Ausnahme fuer, so dass bei == nicht die Pointeradressen der Stringobjekte verglichen werden).

Beispiele gibt es also zu hauf.. Eigentlich jeder Fall wo man nur "mal eben" eine eigentlich statische Methode braucht, aber eine gesamte Klasse initialisieren muss, um darauf Zugriff zu haben.

Problematisch wird das vor allem immer dann, wenn innerhalb der Objekte Dinge passieren, die der Aussenstehende durch Kapselung nicht mitbekommt / kennt und dann IO-/CPU-/RAM-intensive Operationen in Schleifen landen.

gepostet vor 15 Jahre, 9 Monate von DrakeL

Original von Kallisti

Was ganz schoen laestig sein kann, wenn man z.B. nur eine Pseudo-Zufallszahl generieren moechte und dafuer das Objekt eines Zufallszahlengenerators initialisieren muss.

Das hat eigentlich seinen guten Grund, weil du ja in der Regel erstmal den Startwert mitgeben musst, also wo der Generator anfangen soll. Auch muss sich der Generator seinen aktuellen Stand merken wo er sich gerade befindet um beim nächsten Aufruf die eine neue "Zufallszahl" aus der Liste geben.

Das liegt aber halt am Generator, dass diese einfach eine Liste von Zahlen haben die Sie durchlaufen statt wirkliche Zufallszahlen erzeugen zu können.

Und dann braucht man einen "File Reader", um eine Zeile aus einer Datei zu lesen... und du kannst mir

Willst du eine Funktion haben, die eine Datei öffnet, eine Zeile ausliest und die Datei wieder schließt? Das finde ich völlig überflüssig das in einer Funktion zu verbinden. So oft braucht man es nicht. Einzig sinnvoll wäre dies beim Einlesen einer ganzen Datei. Hierfür einfach eine statische Methode einer File/FileReader Klasse.

nicht erzaehlen, dass string.equals("anotherstring") intuitiv sei (da gibt es in C# ja immerhin eine Ausnahme fuer, so dass bei == nicht die Pointeradressen der Stringobjekte verglichen werden).

Stimmt, das empfinde ich als schlecht, liegt aber daran, dass man in Java keine Operatoren überladen kann und auch bei Strings nur die Adressen verglichen werden. Aber was hat das damit zu tun? Willst du eine globale Funktion haben "equalsStrings(String a, String b)"? So wie es ist finde ich es schon richtig, einzig das Überladen des Operators wäre hier angebracht.

Beispiele gibt es also zu hauf.. Eigentlich jeder Fall wo man nur "mal eben" eine eigentlich statische Methode braucht, aber eine gesamte Klasse initialisieren muss, um darauf Zugriff zu haben.

Ich habe nichts gegen statische Methoden gesagt, sondern gegen globale Funktionen die zu keiner Klasse gehören. Natürlich machen statische Methode öfters mal Sinn. Aber ich finde auch jede statische Methode lässt sich ohne Beinbrüche einer Klasse thematisch zuordnen. Ich habe noch keinen Bedarf gefunden für globale Funktionen ohne jeglichen Bezug zu einer Klasse.

Problematisch wird das vor allem immer dann, wenn innerhalb der Objekte Dinge passieren, die der Aussenstehende durch Kapselung nicht mitbekommt / kennt und dann IO-/CPU-/RAM-intensive Operationen in Schleifen landen.

Das kannst genauso gut in Funktionen haben. Hat nichts mit Klassen zu tun. Man sollte trotz Kapselung halt noch verstehen können was darin passiert. Das Wie ist dann das was egal sein sollte.

gepostet vor 15 Jahre, 9 Monate von altertoby

also ich bin ganz froh, dass ich mit einer objektorientierten Sprache im Selbstudium angefangen habe...

Am Anfang wars natürlich alles andere als objektorientiert, und ich muss zugeben, dass ich immernoch nen paar Probleme mit den Konzepten habe (grundsätzliches Verständis ja, aber wann benutzt man was...hmmm).

Im Prinzip muss ich DrakeL recht geben, aber ab und zu gibts auch Methoden, die keinen wirklichen Bezug zu irgendeiner bestehenden Klasse haben. Z.B. klassische Helper-Methoden (oder erstellt ihr/du dann für jede Methode eine eigene Klasse?).

@Kallisti: jup in c# vergleicht == die Strings wirklich, aber nicht nur die Strings du kannst wie schon gesagt alle Operatoren überschreiben (von deinen Klassen) und so auch DeinObjekt >= DeinObjekt2 verwenden (und dabei intern dann ID's oder was auch immer vergleichen). Also für mich ein klarer Fall von einer Methode die in eine Klasse gehört.  

gepostet vor 15 Jahre, 9 Monate von DrakeL

Original von altertoby

Im Prinzip muss ich DrakeL recht geben, aber ab und zu gibts auch Methoden, die keinen wirklichen Bezug zu irgendeiner bestehenden Klasse haben. Z.B. klassische Helper-Methoden (oder erstellt ihr/du dann für jede Methode eine eigene Klasse?).

Ja, weil die Helper ja irgendwo eingebunden werden müssen in der Regel und dann irgendeine Schnittstelle implementieren sollen/müssen.

Ansonsten bekommt der Helper trotzdem seine eigene Klasse, könnte ja gut sein, dass ich diesen späterhin mit möglichen Optionen erweitern will, statt die Parameterliste immer länger zu machen (oder mit assoziativen Arrays als Optionen anzufangen) finde ich doch paar Methodenaufrufe zum Setzen der Optionen (am besten im Zusammenhang mit dem Fluent Interface) schöner.

gepostet vor 15 Jahre, 9 Monate von Amun Ra

> Dann nenne mir doch einfach ein paar Beispiele
Nun ja lieber DrakeL, es scheint mir so,
als hättest du eine ziemlich einseitige Sicht der Dinge.
Von daher dürfte es schwer sein, dir überzeugende Beispiele zu liefern.
> Mich würde es schon interessieren in welchen Fällen ihr Methoden/Funktionen
> nicht in eine Klasse packen würdet und was dagegen sprechen würde.
Ich habe da eine vollkommen entgegengesetzte Herangehensweise.
Ich überlege mir nicht was ich NICHT in eine Klasse kapsele,
sondern was ich in eine Klasse kapsele.
Und ich überlege nicht was dagegen sprechen würde,
sondern was dafür sprechen würde.

gepostet vor 15 Jahre, 9 Monate von knalli

Reden wir über Programmierung oder Softwarearchitektur? Und falls jemand -- und so sieht's wohl aus -- die Frage nicht verstanden hat: Nein, ist nicht das gleiche..

gepostet vor 15 Jahre, 9 Monate von TheUndeadable

>  Objekt eines Zufallszahlengenerators

Dies ist klar, da ein Zufallsgenerator einen inneren Zustand besitzt. Es spricht aber nichts dagegen, dass du einfach die Methode: Random.GetNextRandom statisch deklarierst und über einen statischen Konstruktor deinen Startwert festlegst.

Und dann braucht man einen "File Reader", um eine Zeile aus einer Datei zu lesen..

var content = File.ReadAllText();

Eigentlich jeder Fall wo man nur "mal eben" eine eigentlich statische Methode braucht, aber eine gesamte Klasse initialisieren muss, um darauf Zugriff zu haben.

In diesem Fall wäre das Klassendesign mangelhaft.

Gerade in C# sieht man sehr schön, wie statische Klassen Ordnung in einen Funktionsdschungel bringen. Dort werden Klassen einfach nur als Namensraum für Methoden genutzt.

Am obigen Beispiel die rein statische Klasse 'File'. http://msdn.microsoft.com/de-de/library/system.io.file(VS.80).aspx bzw http://msdn.microsoft.com/de-de/library/system.io.file_members(VS.80).aspx

Ob man file_move schreibt oder File.Move... Letzteres finde ich wesentlich schöner.

gepostet vor 15 Jahre, 9 Monate von buhrmi

Original von TheUndeadable

Ob man file_move schreibt oder File.Move... Letzteres finde ich wesentlich schöner.

Geschmackssache.

File.Move ist ein einfaches beispiel, aber jede Wette dass du auch Zeilen kennst wie

Double.ConvertIrgendwas(Math.sqrt((new mystringparser()).convert((String)object)  ... upsmist wo ist der klammerfehler :D

Da mag ich doch lieber den ruby Ansatz, das Verhalten der Klassen sogar zur laufzeit noch bearbeitne zu können und smexy Zeilen wie

object.my_parse_function.sqrt.convert

schreiben zu können.

gepostet vor 15 Jahre, 9 Monate von TheUndeadable

Da mag ich doch lieber den ruby Ansatz, das Verhalten der Klassen sogar zur laufzeit noch bearbeitne zu können und smexy Zeilen wie

Oder Erweiterungsmethoden aus C# 3

http://msdn.microsoft.com/de-de/library/bb383977.aspx

http://community.bartdesmet.net/blogs/bart/archive/2006/12/06/C_2300_-3.0-Feature-Focus-_2D00_-Part-4-_2D00_-Extension-Methods.aspx

Dort kannst du während der KOMPILIERZEIT weitere Methoden zu einer Klasse hinzufügen, die allerdings nur auf die öffentlichen Methoden und Eigenschaften zugreifen dürfen...

Damit wird dein Beispiel wieder schnell eingedünnt.

Sehr schön zu sehen übrigens in der Kombination mit LINQ. Jetzt sind wir aber dort, wo ich mich zu Hause fühle, in einem Flamewar der Programmiersprachen :-)

gepostet vor 15 Jahre, 9 Monate von Redrick

so, nun kann nicht mehr aushalten:

ich behaupte mal, dass gerade die extrem übetriebenen und nervtötenden programmier(sprachen)-(moral)predigten zu nichts anderem als NULL,NIX produktivität führen.

keiner kann erzählen, dass nur ein in höchster vollendung geschriebenes BG ein würdiges oder überhaupt akzeptables spiel ist. Ganz nebenbei werden etliche schwerkommerzielle Spiele geschrieben, wo der Code definiv nicht aus einer Sprachenakademie stammt, sondern in einer verrauchten Stube zusammengehackt wurde und was tun die "Entwickler" hier bei GN? -> über die Unabdingbarkeit eines Hochleistungsprotokolls für ein noch nicht mal im Ansatz angedachtes Echtzeit-BG herumphilosophieren.

wenn soviel fach und pseudofachwissen nur halbsoviel praktische verwendung finden würde, wäre die browserspielwelt gleich doppelt schöner

 

gepostet vor 15 Jahre, 9 Monate von TheUndeadable

dass nur ein in höchster vollendung geschriebenes BG ein würdiges oder überhaupt akzeptables spiel ist.

Genau wie Rechtschreibung und Groß- und Kleinschreibung(!) sexy macht, macht auch ein sauberer Code sexy.

Ich persönlich würde nie eine Frau anrühren, die nicht in der Lage ist nach den allgemeinen Code-Konventionen der jeweiligen Sprache zu programmieren.

Erst die Form, dann der Inhalt!

gepostet vor 15 Jahre, 9 Monate von Redrick

Original von TheUndeadable

Genau wie Rechtschreibung und Groß- und Kleinschreibung(!) sexy macht, macht auch ein sauberer Code sexy.

Ich persönlich würde nie eine Frau anrühren, die nicht in der Lage ist nach den allgemeinen Code-Konventionen der jeweiligen Sprache zu programmieren.

Erst die Form, dann der Inhalt!

das nehme ich zum glück nicht mehr ernst, so bleibt der witz auch als solcher verdaulich

gepostet vor 15 Jahre, 9 Monate von Nerosmeel

das ist das Problem alle reden davon keiner macht es wirklich.

Letztens von nem Dozenten ne Standpaucke bekommen wie hässlich mein Code doch sei dabei war seiner genau so schlimm^^

Man sollte zumindest versuchen einen saubern Code zu schreiben, aber von mir weiß ich das ich erstmal schreibe und dann wenn ich irgendwo hänge, räume ich dem bestehen Code erstmal auf um den Kopf frei zu bekommen xD

gepostet vor 15 Jahre, 9 Monate von buhrmi

Original von Redrick

so, nun kann ich nicht mehr aushalten

[...]

über die Unabdingbarkeit eines Hochleistungsprotokolls für ein noch nicht mal im Ansatz angedachtes Echtzeit-BG herumphilosophieren.

Ja und? Wenns Spaß macht! Ganz ruhig. Dicke Menschen meckern ja auch über schlechte Leistung der Fußballer un sitzen mit Bier im Sessel ^^

gepostet vor 15 Jahre, 9 Monate von Fornax

Ich bin für sauberen, objektorientierten Code, und will mich hier nicht weiter aufhalten. Schönen Vormittag :)

gepostet vor 15 Jahre, 9 Monate von Kampfhoernchen

OO da wo es sinn macht, also in 95% aller Fälle.

Auch in den 5% kann man OO-Funktionalität missbrauchen, z.B. um Funktionen zu Gruppieren. Für eine Methode check_gueltige_mail() oder Math.sqrt() ist nicht unbedingt eine echte Klasse erforderlich, hier wird die Klasse einfach nur als Namensraum verwendet. Nicht ganz OO, aber aus meiner sicht ok.

Sauber lesbar sollte der Code sein, ob man aber nun ein

if(bla=blub)

  anweisung;

oder

if(bla=blub){

  anweisung;

halte ich für total irrelevant. Nur mit den // (Kommentaren) sollte man nicht sparsam sein. ich habe auf 1000 Zeilen Code 700 Zeilen Kommentar, davon 300 Funktkionskommentare (@param ...) und 400 inline zur Erklärung was welcher codeblock tut. Außerdem dokumentiere ich inline nochmal nachträgliche Änderungen mit Grund und Datum für die Änderung

PHP:
 // @change 11.02.09 die Dummheit des Menschen ist unergründlich, deswegen prüfen ob 0 = 1 ist.

Vielleicht noch ein Thema: Deutsch / Englisch:

Ich halte es so: Variablennamen / Methodennamen / alles was code ist auf Englisch, Kommentare aber auf Deutsch.

gepostet vor 15 Jahre, 9 Monate von Nagila Hawa

Funktionen/Prozeduren in Pakete zu organisieren und eigene Namensräume zu schaffen ist für mich Aufgabe des Paketsystems einer Sprache, nicht die Aufgabe von Klassen. Das ist es ja, was an Java und C# etwas seltsam und befremdend wirkt. Alles ist eine Klasse, aber eben nur im Sinne von dem Schlüsselwort "Class". Das Hauptprogramm ist in einer Klasse organisiert, Methodenpakete sind in Klassen organisiert, Konstanten sind in einer Klasse organisiert... also wirklich alles, obwohl das mit der gewöhnlichen Bedeutung von Klassen nichts zu tun hat.

Wenn ich jetzt nochmal drüberlese, denke ich mal DrakeL meinte auch nicht Klassen in dem Sinne von Klassen, sondern in dem Sinne von Funktionspaketen (die man in Java in eine "Klasse" verpacken muss), weshalb wir wohl ein wenig aneinander vorbei geredet haben. In Ada würde ich die Methoden in "Packages" verpacken und kann sie dann mit "Child-Packages" erweitern. Dafür Klassen (die es so, als eigenen Datentyp dort nicht gibt) zu verwenden käme nie in den Sinn. Insofern: Ja, in Java und C# gibt es keinen Grund die Methoden nicht in Klassen zu packen, etwas Anderes bleibt einem ja auch nicht übrig. In anderen Sprachen, in denen der Begriff "Klasse" anders verwendet wird, ist das natürlich Blödsinn.

gepostet vor 15 Jahre, 9 Monate von buhrmi

Wie wäre es eigentlich, wenn wir den Namensgenerator auf den neusten Stand bringen?

Es fehlt noch ein Template für [a-z]+a[a-z]oria, z.b. Fragoria, Damoria, Andaloria ... wer kennt noch mehr?

Hab noch ein paar gefunden: Arthoria, Tagoria, Vaporia

gepostet vor 15 Jahre, 9 Monate von Tron

Code ist schön, wenn er funktioniert und im gegebenen Rahmen wartbar ist.

Ich hab in der letzten zeit immer mal wieder mit Java-Lehrbuchcode zu tun, der so schön ist, dass er einfach nicht macht was er soll. ;)

Saludos,

Stefan

gepostet vor 14 Jahre, 1 Monat von Logander4

Ein kleiner Trick für die, bei den der Apache auf Windows nicht läuft. Auf meiner Website http://log4-tutorials.de gibt es eine ausführliche Erklärung

Ganz fix:

  1. Download von aprelium.com
  2. das PHP Package von aprelium.com runterladen ->Suport->PHP Support->Preconfigured PHP Package
  3. PHP unter C:\php installieren
  4. Abyss starten, nachdem ihr die de.lng unter lang installiert habt.
  5. Unter Konfi->Console wählt ihr Sprachen dann deutsch
  6. Falls nicht geht auf abyss.conf und dort nach language suchen
  7. Dann neben dem Host->Bearbeiten und unter scriptingeisntellungen PHP hinzufügen, 
  8. FastCGI Ip/TCP Sockets -> php-cgi.exe ->.php als Dateinamenserweiterung
  9. Und unter Index-Dateien noch index.php hinzufügen, fertig ist die kleine Entwicklungsumgebung

MySQL müsst ihr allerdings standalone installieren!

gepostet vor 14 Jahre, 1 Monat von DrakeL

Original von Tron

Code ist schön, wenn er funktioniert und im gegebenen Rahmen wartbar ist.

Ich hab in der letzten zeit immer mal wieder mit Java-Lehrbuchcode zu tun, der so schön ist, dass er einfach nicht macht was er soll. ;)

Nein, Code ist schön wenn er verständlich ist und durch automatische Tests abgedeckt wird. Ob er funktioniert ist zweitrangig, weil wenn er nicht funktioniert wirds durch den Test aufgezeigt und verständlich geschriebener Code lässt sich ohne Probleme korrigieren.

Alles besser als Code den man nicht versteht weil schlecht formatiert und unkommentiert auch wenn er funktioniert. Denn irgendwann funktioniert er mal nicht oder muss angepasst werden.

Un Codeformatierungen lassen sich in Styleguides festlegen, durch Formatter einfach umsetzen und durch Styletests kriegt derjenige automatisch eine E-Mail vom Testserver der es wagt ein Leerzeichen falsch zu setzen, zumindest war es in einem meiner Projekte in der Firma genau so der Fall. :)

gepostet vor 14 Jahre, 1 Monat von BlackScorp

wie macht man sich das auch so kompliziert? einfach meine mafia downloaden , auf den ftp hochladen, ein paar einstellungen vornehmen, bisschen grafiken austauschen und schon hat man ein eigenes BG... fehlt noch ein wenig werbung(kann man ja hier bei GN oder anderen Foren machen) und schon verdient man millionen...

gepostet vor 14 Jahre, 1 Monat von None

Original von BlackScorp

wie macht man sich das auch so kompliziert? einfach meine mafia downloaden , auf den ftp hochladen, ein paar einstellungen vornehmen, bisschen grafiken austauschen und schon hat man ein eigenes BG... fehlt noch ein wenig werbung(kann man ja hier bei GN oder anderen Foren machen) und schon verdient man millionen...

gepostet vor 13 Jahre, 11 Monate von Rushhour

gibt es eig irgendwo Kurse z.B. an einer VHS wo man so etwas lernen kann?

weil wenn ich ganz ehrlich bin kapier ich das nicht wirklich

wie kann man eig am besten da ran gehen dies zu lernen?

also was soll ich zuerst machen und was dann?

gepostet vor 13 Jahre, 11 Monate von Kampfhoernchen

Die hießige VHS bietet zwar nur Kurse über Excel VBA an, aber auch dieses sollte dir einen ersten Eindruck darüber verschaffen, wie man grundsätzlich Programmiert.

Ansonsten kann ich für alle Anfänger einfach nur die "Für Dummies"-Reihe empfehlen. Witzig geschrieben, aber doch sehr gehaltvoll und leicht verständlich.

gepostet vor 13 Jahre, 11 Monate von MikeDee

Hier gibt es auch noch ein gratis PHP-Kurs als ebook http://www.php-kurs.com/downloads.php die Lektionen sind kurz gehalten und verständlich, auch wenn manchmal eins-zwei Sätze "fehlen" (wahrscheinlich kommt es mir nur so vor ...) und es wird auch gezeigt wie man ein Login, Gästebuch usw. erstellt. Die Fair-Play-Version (kostenpflichtig - Preis selbst wählbar) beinhaltet noch ein Kapitel über PHP und Sicherheit

gepostet vor 13 Jahre, 11 Monate von BigEll

Original von Rushhour

gibt es eig irgendwo Kurse z.B. an einer VHS wo man so etwas lernen kann?

weil wenn ich ganz ehrlich bin kapier ich das nicht wirklich

wie kann man eig am besten da ran gehen dies zu lernen?

also was soll ich zuerst machen und was dann?

http://www.emagister.de/volkshochschule/web/search/?idCateg=142&idMetodologia=1&q=PHP%20MySQL&action=search

Stehen einige PHP+MySQL Kurse drin.

Vielleicht hilft dir das ja weiter *g*

Wobei ich immer noch der Meinung bin, Programmiersprachen lernt man am besten, wenn man sie ausprobiert.

Sprich: Tuts im Inet Lesen -> Nachbauen. Und so step by step die Sprache lernen, spart man sich das schöne Geld für überteuerte VHS :p

gepostet vor 13 Jahre, 11 Monate von BlackScorp

google mal nach youtube php kurs

Auf diese Diskussion antworten