Womit und wie ein statisches 2D Spiel programieren?

D

DrRadon

Aktives Mitglied
Thread Starter
Dabei seit
05.03.2008
Beiträge
768
Reaktionspunkte
74
Hallo ihr.


Ich habe schon seit Jahren die Idee für eine Art "Kartenspiel" im Hinterkopf rumgeistern und möchte, nun da ich in den Semesterferien etwas Zeit habe, mal einen Anlauf versuchen es anzugehen.

Leider habe ich aber auch garkeine Ahnung vom Programmieren wenn es über grundsätzliches HTML und CSS hinausgeht. (nun ja, ein par andere Sachen bekomme ich auch noch hin, aber das ist mehr ein verständnisvolles zusammenkopieren als ein selbst schreiben können) Aber es gibt ja am ende nichts das man nicht früher oder später lernen musste.

Demnach suche ich nach eurer Hilfe... womit könnte man meine Idee umsetzen, wo finde ich Hilfe, online Tutorials und so weiter.
Da meine Uni nen "Informatik" Studiengang hat könnte ich Legal umsonst an allerhand Windows und Windows Programierkram kommen, möchte das aber nicht umbedingt.


Sprachkentnisse
Englisch und Deutsch ausreichend vorhanden... auch wen meine Rechtschreibung anderes vermuten lässt... Legasteniker halt... :-X


Was ich an technischem Gerät habe
Das aktuelle mittlere Mac Book, den iMac von Anfang 2008.


Was ich Programiersoftwaretechnisch gerne hätte
Etwas kostenloses (scheinbar ist etwas beim Mac mitgeliefert?) oder sehr günstiges da ich am ende doch erstmal nur experimentieren will ohne auf 60+XE kosten zu sitzen. (schlagt mit trotzdem bitte alles vor, sags dann nur dazu... :) )
Sollte es etwas dabei herauskommen wäre es schön das Spiel am ende für normale User Spielbar verpacken zu können. (also keine Gamestudios die gekauft sein müssen, oder Binaries die Instaliert werden müssen damit es läuft, oder watt wess ick - halt idealerweise ne Programm Applikation)
Wenn es gar so offen wäre das es auch am PC oder Linux System läuft, um so besser... aber das ist glaube ich ehr was für die ferne Zukunft.


Für eine erste Simple version hatte ich mir das so vorgestellt.
Ich würde gerne Statische Grafiken verwenden... z.b. JPGs.
Ich würde gerne fliesstext verwenden.
Ich würde gerne klickbaren Text/Buttons auftauchen lassen. (für die Menus oder Das treffen von entscheidungen im Spiel z.b.)
Das alles in einem Fenster... z.b. 800pxx600px
Ist des so ähnlich wie CSS elemente anordnen? *g*


Der Inhalt des Spiels
Inhaltlich habe ich mir das in etwa so vorgestellt wie bei Rollenspiel soloabenteuernd in Büchern. Man erstellt sich eine Charakter Karte in der bestimmte Werte vorhanden sind.
Nehmen wir als Beispiel gut (100) und Böse (1) in einem Wert von 1 - 100.
Es gibt Ereignis-Karten aus denen nach und nach in Reinflog ausgewählt wird. Auf ihnen ist jeweils ein Bild, ein Text und eine reihe an Auswahlmöglichkeiten. Je nach dem wie der gut/böse Wert des Spielers ist sind diese Auswahlmöglichkeiten eingeschränkt. (ganz böse jungs retten keine Katzen von Bäumen) - Die getroffene Auswahl hat Einfluss auf die unterschiedlichen werte des Spielers und somit auf die späteren Auswahlmöglichkeiten.

Natürlich habe ich noch viele Ideen zu diesem Konzept, aber diese einfache "Baumstruktur der Ereignisse" sollte erstmal reichen um zu sehen ob ich überhaupt reinkomme.



In ferner Zukunft (aber auch wichtig für die Programiersprachenwahl?)
Für später habe ich mir gedacht das man noch viele andere Dinge einbauen kann... z.b.
eine Auswahl von Besuche Ort A, B, C... usw.
Per Zufall gesteuerte Computer Spieler die sich ebenso in der Welt bewegen und auf einander treffen können. (mit einem Beziehung wert je nach dem was bei dem treffen im Ereignis/in der Ereigniskette passiert). - Auch die Computerspieler treffen im verborgenen aufeinander und können einander z.b. mögen, nicht mögen, verabreden... die KI ist durch die Werte der Spielfigur beschränkter zufall, nicht wirklich Intelent.
Der Spieler, Die Computerspieler haben einfluss auf die Welt (wenn eine Bank 3 mal die Woche überfallen wird gibts da nicht viel zu hohlen... Man Heiratet keine 5 mal im Monat, eingestürtzte Häuser sind morgen früh nicht neu gebaut oder was auch immer) - Eine Zeitung die auf diese Ereignisse auserhalb des Spielerhorizonts hinweisst wenn sie groß genug sind?
Kämpfe. Würfeln. Würfelprobem. (im hintergrund basierend auf den Werten)
Mehr und mehr Werte und Geschichte in den Spielfiguren z.b. auch Alter. Kinder. usw.
Einer teilweise zufälligen Wahl der Ereignisskarten damit es ein offenes Spiel wird.
Sonderereignisse die nur einmal Gespielt werden. (quasi ein extra Karten Deck mit besonderen herausvorderungen... ein Meteroied bedroht die Erde... alle Helden sollen sich Demaskieren...)
Das erstellen eines Editors für diese Ereignisskarten/EreignisSequenzen damit Spieler (und wenn es nur ich selbst bin *g*) es leichter haben die Welt mit Inhalt zu füllen. Am besten mit Export Funktion in "Karten Decks".
Mit einem wachsen des Spiels und meiner Fähigkeiten würde sich das ganze immer mehr verstricken.


Mein Gedanke war, sollte ich all meine Vorstellungen umsetzen können, einen (durch die Werte der Figuren/Orte/Ereignisse regulierten) zufallsbasierten open end Mikrokosmos zu schaffen... ähnlich wie es New York im Marvel Comic Universum ist. ...der nicht langweilig wird weil eine eventuelle Comunety immer neue Kartenpackete hinzufügen könnte. Natürlich liesen sich in diesen Programkontainer auch andere Welten hineinarbeiten... Fantasy, Sci-Fie... aber ich hänge erstmal an der Heldenstadt ;-)



Mir kommt die Idee recht retro vor, gerade daher glaube ich das ich nicht frei von Changsen bin wenn ich es versuche.... nur wünsche ich mir eure Hilfe um nicht beim ersten schritt direkt in die tiefste aller Frustfallen zu stapfen. Die Wahl des Programms und die Suche nach anständigen Foren/Tutorials, der richtige Punkt mit dem Lernen anzusetzen um diese Idee umzusetzen usw. (ich kann mich noch an mein erstes Dw Buch erinnern... ARG...) ... im moment weis ich ja nicht mal nach welchen Befelsketten ich für meine zwecke suchen sollte...


Fänds wirklich super wenn ihr mir etwas unter die Arme greifen könntet... und keine sorge, ich bin mir sicher es ist alles viel schwerer als ich mir das gerade vorstelle... (mehr als nur viele viele Ja/Nein abfragen) aber wer hat schon ohne Optimismuss sein ziel erreicht? :)


gruß
Micha
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: smartcom5
Ganz ehrlich, das ist in etwa so, als würdest Du einen Musiker fragen: "was muss ich machen, um Konzerte zu spielen, ich hab schon ein bisschen Karaoke-Erfahrung".

In erster Linie brauchst Du VIEL Ausdauer, eine große Lernbereitschaft und Frustationstoleranz. Das Forum hier ist voll von Anfängerhilfestellungen, gleich oben angepinnt. Spiele sind was für Fortgeschrittene, wenn du es von Hand ( ohne einen spielebaukasten) machen möchtest.

Gruß, SMJ
 
  • Gefällt mir
Reaktionen: DrRadon
Hey SMJ,

danke für deine Antwort. Ich bin mir im Klaren darüber das ich einiges lernen werden muss, und das es warscheinlich sehr lange dauert das ganze neben Studium, Job und anderen Hobbies umzusetzen. Nur geistert diese Idee mir schon seit ewigkeiten im Kopf herum (ich kann mich erinnern wie ich vor 10 - 15 Jahren oder noch länger schon ähnliche Dinge mit selbstgeschnippelten Papierkarten versucht habe) und ich wollte sie einfach mal angehen.
Natürlich habe ich die Anfänger Tutorials gesehn... doch gibt es viele Sprachen mit vielen möglichkeiten... daher habe ich mich entschlossen diesen Langen beitrag zu verfassen in dem (hoffentlich) klar wird was ich für Vorstellungen habe, in der hoffnung das mir nun schubser in die richtige richtung gegeben werden können....


- mit welcher Sprache könnte ich Theoretisch am einfachsten meine langzeit Ziele erreichen. (ihr kennt sie inhaltlich, ich kenne ihre Titel, teilweise nicht mal das... möchte ja nicht 8 sprachen angehen um herauszufinden was möglich ist wenn ich vorher Tips von Meistern bekommen kann.)

- Mit welchen Themen sollte ich mich, neben/nach dem Basiswissen, befassen... damit ich nicht mit dem Lernen von Dingen beginne die für mein Konzept sinnfrei sind, bzw. damit ich die möglichkeit habe die Dinge die ich brauche zu suchen und zu finden. (ich kenne ja die eventuell nötigen befehle die für das Konzept nötig sein könnten noch nicht)


Oh ja, ich habe vor sehr sehr sehr langer Zeit mal einen Pascal (ich glaube version 0,5) Grundlagenkurs gemacht. Bewust ist mir davon nichts mehr, aber im hinterkopf schwirrt etwas herum.... das lief noch auf Dos Basis... :-D
 
Zuletzt bearbeitet:
Du musst am Anfang ein paar Nerven beweisen und das alles angehen, weil du was lernen willst, nicht - wann dein Spiel da fertig wird, muss zweitrangig sein. Wenn das gegeben ist und du die Geduld mitbringst, erst lange Grundlagen zu lernen, bevor du Ergebnisse siehst, dann kannst du gut vorwärts kommen :)

Die Wahl der Sprache ist allerdings schon die erste Grundlage: Das schwierige beim Beantworten deiner Frage ist, dass deine Idee mit jeder Sprache funktioniert! Ich bin zwar selbst Anfänger, aber mir fallen spontan alle möglichen Wege ein, dein Vorhaben anzugehen:

1. PHP, MySQL, HTML + CSS
du könntest das alles als Browserspiel lösen. Vielleicht lächelst du jetzt milde, weil du lieber ein "richtiges" Programm willst, aber bedenke mal folgendes: Ein Browserspiel ist von Anfang an plattformunabhängig, außerdem hast du in Html und Css schon Kenntnisse. Php ist eine Scriptsprache, das bedeutet, sie ist äußerst leistungsfähig und relativ einfach zu lernen! Du könntest dich dabei also mehr auf die wirklich schwierigen Dinge konzentrieren (Interface, Gamedesign, Computergegner, KI ...) und hättest weniger mit der steilen Lernkurve der Programmiersprachen zu kämpfen, bei denen du dir erstmal um Grundlagen wie Speichermanagment o.ä. den Kopf zerbrechen musst.

Nachteil von Php sind gewisse einschränkungen, die das Internet und der Browser eben so mit sich bringt und die Tatsache, dass du für richtige Programme erst auf andere Sprachen umlernen müsstest (wobei du mit Php auch schon viele Grundlagen kannst, wenn du dich dort mit OOP beschäftigst)

2. Java und AWT o.ä.
Mit Java erzeugst du plattformunabhängige Programme. Java ist wie jede Programmiersprache nicht unbedingt Einsteigerfreundlich, aber lernbar.

3. C mit SDL
Programme in C mit SDL kannst du, wenn du nichts plattformspezifisches nutzt, für jedes Betriebssystem erstellen. C ist als einsteigersprache nicht zu empfehlen, mMn noch weniger als Java.

4. Phyton mit irgendeiner 2d Schnittstelle
Phyton erzeugt zwar keine nativen Anwendungen, ist aber relativ leicht erlernbar undplattformunabhängig. Für Windows lassen sich exe-Dateien erstellen, Linux Nutzer wissen oft, wie man mit Phyton umgeht und MacUser... Naja, da schreibst du notfalls ein einfaches Applescript oder so! Wie Php ist auch Phyton eine Scriptsprache und relativ einfach

5. Objective C mit Quartz
Die Muttersprache des Macs und mMn die schönste Programmiersprache (subjektiv!). Plattformabhängig, evtl. einfacher als C(?) - aber das hat nichts zu sagen

6. Unzählbar viele andere Kombinationen
Zumbeispiel Objective C mit SDL, C mit Quartz... C++ habe ich bisher vollkommen ausgelassen!

7. Andere Sprachen, zB Basic
Blitzbasic ist extra für Spiele, REALBasic ist für plattformunabhängige Anwendungen, die anderen 20.000 basic-Dialekte kenne ich nicht ;) basic muss man im allgemeinen kaufen

Vielleicht hilft dir das schon. Eine Webanwendung mit Php &co wird dir die Schnellsten Ergebnisse liefern.

Wenn du ein bisschen weiter bist und einen Grafiker brauchst oder einen mitentwickler ( für php oder objC&Sdl oder quartz) meld dich, aber ich bin selbst noch Anfänger, erwarte also nicht zu viel ;)

Entschuldigt die Rechtschreibfehler - wer lange Texte auf dem iPhone schreibt wird verstehen, warum ich keinen Nerv hab, auch noch auch groß- und Kleinschreibung zu achten ;)

Gruß Micha
 
  • Gefällt mir
Reaktionen: DrRadon
Hey Kümmelkorn!

Danke für deine ausführliche Antwort. Ich habe sogar schon über die Möglichkeit eines Browser basiertem nachgedacht. Aber ich dachte eigentlich das dies der zweite rießengroße Schritt in ferner ferne Zukunft wäre wenn der erste - dass das Spiel offline läuft - erfolgreich umgesetzt wurde.
Der Gedanke dabei wäre allerdings gewesen das es ein Multiplayer Spiel wäre. Jeder hätte Täglich seine Aktion auswählen können und am nächsten Tag Entscheidungen zu den Konsequenzen treffen. Dabei könnte man dann auf andere Spieler treffen, wie im Offline Game auf die „Zufalls KI Spieler“.

Natürlich wäre es auch eine Überlegung wert es als Einzelspieler Spiel anzugehen wenn es Online in der tat am leichtesten ist. Die Frage die sich mir dabei allerdings stellen würde wären die Limits. Wie viel kann so eine PHP Datenbank vertragen ohne das ich mir meinen WebServer abschiessen lasse oder mein Trafik aufgebraucht wird. Ich würde ja schon gerne wollen das dieses Spiel mit meinen Fähigkeiten wachsen kann... also mehr Attribute für die Spielfiguren, verschiedene Typen Kartendecks usw. - Meine Vermutung ist das ein Spiel auf den einzelnen Computer mehrerer Endbenutzers mehr Möglichkeiten bietet als etwas das von mehreren Nutzern gleichzeitig auf einem WebSever angeklickt wird. Das wäre eine Angst die man mit nehmen müsste... sonst würde ich in den Sauren Apfel beissen und lieber den harten Weg gehen.
Die zwei anderen Nachteile die ich bei einem Onlinespiel sähe wären die das ein „Moden“ neuer Karten durch jedermann nicht ohne weiteres möglich wäre (denn öffnet man das einzige Spiel Onlinespiel mit dem jeder Spielt für alle gibt es Chaos, wenn offline jeder Karten Importieren und Exportieren könnte wäre es was anderes) und das man es nicht überall hin mitnehmen könnte. Ich glaube das verringert den Reiz länger zu Spielen und an einer Comunety teil zu haben.... (ich würde mich tierisch freuen wenn ich am ende ein Spiel habe das ich gerne Spielen möchte, mit Inhalten von anderen Leuten damit ich nicht immer alles zuvor weis ;-) ) nen Browserspiel ist meiner Erfahrung nach doch etwas das man nur kurz anklickt... es sei den es ist eins dieses Multiplayer Spiele.


Ich mach hier mal nen Strich drunter.
-----------------------------------------------------------------


Was mich jetzt noch interessieren würde... du sprichst von einer Scriptsprache die leichter zu erlernen sei. - Was bedeutet das, was ist bei den anderen anders? Sage ich beim Programmieren nicht ebenso wie bei HTML und CSS wie groß das Fenster sein soll, wo die Grafiken liegen und wo sie im Fenster angezeigt werden sollen ect. pp.?
Was ist an diesem Schritt in einer „echten“ Programmiersprache anders?

Ich erinnere mich an meine Pascal Tage... dort musste man noch etwas schreiben damit das Programm ausgeführt wird... damit die Pfeiltasten der Tastatur auch wirklich eine Bewegung in die jeweilige Richtung auslösen wenn man sie drückt. Das sind sicher Dinge um die man sich kümmern muss.
Aber was ist mit dem Rest? Ist es nicht eigentlich nur eine große Datenbank die zugewiesen, gelesen und verändert werden muss? Ein großes „if wert x is > 80 blabla is possible“ "aus possible wähle zufällig aus" und die folgen vom gelostem "possible = wert y -20“?
Im Prinzip plane ich ja nicht mehr als eine Mänge Zufall zugriffe auf in der Datenbank abgelegte „Karten“... Es wäre ja in dem Sinne keine KI, eine Spielerkarte mit bestimmten werten kann einfach gewisse Ereignisskarten nicht ziehen und Gewisse antworten auf diesen Karten nicht wählen, der rest wird "random", das wirkt inteligent, ist aber eigendlich nur nen haufen Regeln der balance haben muss (oder ist das was KI ist? *g*) - dadurch ändern sich die Werte und bei der nächsten Aktion sind vieleicht andere Ereignisse und Antworten auf das Ereigniss möglich.

Versteht mich nicht falsch, ich sage nicht das es alles ganz einfach ist... ich denke nur "so müsste das doch gehen" und suche nach jemandem der mir grob umreist was ich nicht weis... sehe ich das was ich gerade geschrieben habe richtig? Wenn ja, welche bindeglieder zwischen dem beschriebenem sehe ich noch nicht? Oder ist einfach alles was ich mir so denke Falsch?

Bisher habe ich nur xCode von Apple hier (is dann pech für die PCler?) und wollte es mir ende des Monats mal reinziehen (habe eh noch Geld zu verdienen die Tage ;-))... doch bis dahin ist ja noch eine Woche Zeit die Kenner ausgiebig zu Fragen und das grobe zu planen.


Oh ja, auf dein Angebot komme ich vieleicht noch zurück. Gestaltung ist eigendlich mehr so mein Ding (Studiere Visuelle Kommunikation) warscheinlich scheue ich mich deswegen auch etwas davor einfach mal fünf Programiersprachen Sprachen zu lernen. Es ist nicht so das ich keine anderen Aufgaben und Hobbies habe... ;-)
 
Zuletzt bearbeitet:
Wenn Du eine "richtige" Programmiersprache lernen möchtest, würde ich dir Python empfehlen. Am besten ein Buch kaufen, die sind didaktisch viel besser aufbereitet als die meisten Tutorials im Netz. Außerdem lernt es sich "offline" besser.

Gruß, SMJ
 
Huhu,

So, ich probier mal, ob ich mir alles merken konnte - wird Zeit, das mein iMac aus der Reparatur kommt.

Die Erweiterbarkeit des Spiels (Stichwort "neue kartensets") kannst du in jeder genannten Sprache erreichen, egal ob online oder offline. Da die Informationen über dein Kartenset in Dateien gespeichert werden, kannst du auch bei onlinespielen den Mitgliedern über einen Onlineeditor ermöglichen, Karten zu erstellen. Bevor sie ins Spiel gehen, können sie dann alle Kartensets auswählen, die geladen werden sollen. Was dein Programm macht, wenn zwei Spieler unterschiedliche Sets geladen haben, bleibt dir überlassen. Am einfachsten ist es, wenn sie dann einfach nicht zusammen spielen können. Aber gut, das ist ja eh noch Zukunftsmusik. Die Leistungsfähigkeit der Webserver wäre dagegen ein echtes Argument - Ein "richtiger" Server (also nicht nur einfacher Webspace) ist nämlich zu teuer, normaler Webspace ist zwar günstig, aber traffic ist eine eigene geschichte - meistens sind aufwendige Dinge wie onlinespiele nämlich verboten. Warum bin ich trotzdem darauf gekommen? Weil mit Php etwas komliziertes wegfallen würde: netzwerkprogrammmierung inkl. Netzwerkprotokolle etc. - da php speziell für Netzwerke, nämlich Internetseiten gemacht ist, ist deren Handhabung meiner Einschätzung nach sehr viel einfacher als z.b. In C. Allerdings weiß ich nicht, wie es da in Sprachen wie Java, Python und Basic aussieht: Java ist für plattformunabhängigkeit und nicht zuletzt zur vernetzung allerlei unterschiedlichster Geräte gemacht (aber eben eine Programmiersprache und damit im Vorhinein schon schwieriger), basic ist als anfängerfreundliche Sprache konzipiert und hat 20.000 Dialekte, die alle spezialisiert sind (und spezialisiert ist immer einfacher als allgemein) und Python ist eine scriptsprache.

Huch, Mensch ist das alles komlex, was? Ich hoffe ich überfordere dich nicht. Also Thema programmiersprache/scriptsprache.
Ich sage dir mal im vorhinein, das dies ein ganz heißes Thema ist - ungefähr wie "Windows vs. Mac". Smj ist zb. Scheinbar der Meinung, Python ist eine programmiersprache, ich dagegen sage, es ist eine scriptsprache! Also behalte im hinterkopf: ich bin Anfänger, Python z.b. Habe ich nur mal angekratzt, außerdem ist folgendes meine persönliche Meinung. Mit dem Thema kannst du flamewars führen! Gut, da dies nun klargestellt ist: eine totsichere unterscheidung gibt es nicht. Fangen wir mit dem an, was du kennst: HTML ist keine programmiersprache und keine scriptsprache. Warum? Weil Html nur den Inhalt eines Dokument beschreibt. Es ist eine "dokumentbeschreibungssprache". HTML braucht einen Browser, der das Dokument letztendlich anzeigt - dabei unterliegt es dem Browser, wie er HTML tatsächlich interpretiert. Davon kann dir jeder Webdesigner ein Lied singen, deshalb ist nämlich der IE so verhasst. Kennst du vielleicht auch. Ähnliche Sprachen sind XML, Latex und Postscript. Css ist gar keine Sprache, sondern ein Stylesheet - wahrscheinlich am ehesten noch mit Konfigurationsdateien vergleichbar . Ab jetzt wirds kompliziert: jetzt gibt es noch Maschinencode, Assembler, scriptsprachen und programmiersprachen (auch bekannt als Hochsprachen) Maschinencode ist 0110010101, bzw. Entsprechendes in hexadezimal - auszeichnen tut er sich durch seine ungeschlagene geschindigkeit und unleserlichkeit. Außerdem ist er plattformabhängig, d.h. ein x86 Prozessor hat andere Befehle als ein AMD Prozessor. Die nächste Stufe ist Assembler. Hier werden die Zahlen der Maschinensprache 1:1 in Worte übersetzt, um es etwas lesbarer zu machen. Das ganze ist immernoch plattformabhängig und schlecht wartbar, dafür unschlagbar in der geschindigkeit. Hochsprachen/Programmiersprachen sind nun der Clou, da sie den perfekten Kompromiss zwischen Lesbarkeit für die Maschine und für den Menschen darstellen. Dabei sind sie Plattformunabhängig, weil sie bei der Erzeugung des programms in Assemblercode übersetzt werden und dann zu maschinencode zusammengefügt - so oder so ähnlich. Jedenfalls ist es für programmiersprachen möglich, plattformunabhängigen Code zu schreiben, sodass ihn jeder prozessor versteht. Sogar das betriebssystem ist egal: Programme, die in einer Programmiersprache geschrieben sind, können überall übersetzt werden - Vorsicht: übersetzt, nicht ausgeführt! D.h. dem quellcode des Programms ist egal, ob es Windows oder Mac, dem übersetzten Programm nicht. Beispiele für programmiersprachen sind C, Objective C und C++. um Fragen vorzubeugen: warum gibt es Programme nur für ein betriebssystem (z.b.nur auf Windows), wenn man es doch für Mac nur neu übersetzten müsste? Dazu kommen wir gleich!
Scriptsprachen sind nun anders: scriptsorachen werden im allgemeinen nicht übersetzt! Eben hab ich dir erklärt, das programmiersprachen nach der Entwicklung des programms in maschinencode übersetzt werden. Bei Scriptsprachen passiert das nicht: scriptsprachen werden stattdessen interpretiert. D.h. der Computer hat ein Programm, einen Interpreter, der das script, also den blanken Quellcode, Zeile für Zeile durchgeht und dann nacheinander jeden Befehl ausführt. Dabei gibts natürlich Probleme: ein solches Verfahren ist z.b. langsamer als maschinencode. Jetzt wirst du die Nase rümpfen und sagen: ne, das ist ja suboptimal! Mal ganz unter uns: Interpreter sind heutzutage ziemlich schnell, und der gescheindigkeitsunterschied ist oft genug egal, denn er kommt erst zum tragen, wenn du ein erfahrener programmierer bist und zeitkritische Anwendungen schreibst! Die scriptsprachen haben nämlich auch gewaltige Vorteile: sie sind einfacher zu lernen. Warum? Viele von ihnen sind auf bestimmte Aufgaben spezialisiert, die sie dann einfacher lösen können als Alleskönner, andere können (fast) alles und sind darauf ausgelegt, übersichtlich zu sein und gut lesbar - programmiersprachen dagegen sind grundsätzlich alle nur so gut lesbar, wie der programmierer es will und sie haben nie das Ziel gehabt, für Menschen einfach zu sein, sondern für Maschinen optimiert. Ein Beispiel?

Hallo Welt in C:
Code:
#include <stdlib.h>

int main(int argc, char** argv)
{
     printf("Hallo Welt\n");
     return 0;
}

Hallo Welt in Python
Code:
#/usr/bin/python
print "hallo Welt"

das einfachste aller Programme im Vergleich C vs. Python. Und glaub mir, das ist nur die Spitze des Eisbergs - ich nenn zwar kein Python, dafür php. Scriptsprachen sind einfacher :) - übrigens lernst du bei Python auch gleich einen schönen schreibstil mit Einrückungen etc., was bei C & co nicht gefördert wird und oft genug dazu führt, dass "alte Hasen" keine Lust haben, dir zu helfen ;)
Beispiele für scriptsprachen sind Python, php und ruby.

Bleiben noch die großen Ausnahmen: Java und basic.
Ich hatte vorhin erwähnt, dass Programme, die in programmiersprachen geschrieben sind, unter jedem betriebssystem laufen. Nun, soweit die Theorie. In der Praxis bietet eine programmiersprache (anders als scriptsprachen) kaum Funktionalität bzw. Nur das aller allgemeinste. Die eigentlichen Funktionen bieten stattdessen APIs - du kannst sie dir als Zusatzmodule vorstellen. Berühmte Beispiele sind .NET, OpenGL, Cocoa u.v.a. Diese sind aber meist abhängig vom Betriebssystem und funktionieren nur unter Windows, Mac oder .... es gibt auch allgemeine, aber oft sind die betriebssystemabhängigen geeigneter. Genau hier setzt Java an: Java ist eine Programmiersprache, die überall gleich ist. Um das zu erreichen, wird Javacode nicht in maschinencode, sondern Binärcode übersetzt. Ist im Prinzip nichts anderes als maschinencode, nur dass es von Maschinen nicht gelesen werden kann. Stattdessen wird der binärcode von der Java Virtual Machine interpretiert und schließlich ausgeführt - das ist Schneller als scriptsprachen und langsamer als andere programmiersprachen.
Die zweite Ausnahme ist Basic. Diese Programmiersprache wird wie scriptsprachen interpretiert. Frag mich nicht, warum es trotzdem eine programmiersprache ist, ich weiß es nicht.

So, jetzt hab ich dich vermutlich vollkommen verwirrt! :-/
Das wichtigste ist eigentlich: Scriptsprachen sind einfach und anfängerfreundlich, programmiersprachen nicht.

Und nochmal: Mein Versuch, scriptsprachen und programmiersprachen zu unterscheiden, ist schon daran gescheitert, dass ich es selbst nicht genau weiß und das dies unter Entwicklern ein streitthema ist . Bevor hier also ein flameware losgeht: der Beitrag hier enthält genug Fehler die mir bewusst sind, für Radon ist aber keiner relevant (z.b. Warum werden programmiersprachen in maschinencode übersetzt und sind dann nicht prozessorabhängig, während maschinencode an für sich prozessorabhängig ist?)

So, bevor ich selbst nicht mehr durchblicke, hör ich jetzt auf und hoffe, kein Zeitlimit überschritten zu haben - der Beitrag soll ja jetzt wenigstens auch erscheinen! ;)
Gruß Micha
 
Zuletzt bearbeitet:
Ich sage dir mal im vorhinein, das dies ein ganz heißes Thema ist - ungefähr wie "Windows vs. Mac". Smj ist zb. Scheinbar der Meinung, Python ist eine programmiersprache, ich dagegen sage, es ist eine scriptsprache!
Weil beides richtig ist. Scriptsprachen sind einfach eine Teilmenge der Programmiersprachen. Mit der einen kann man mehr außer Scripting machen (Python) mit der anderen weniger (PHP). Und PostScript ist sehr wohl eine Programmiersprache. ;) Und ist ja auch nicht so, dass es keine C++-Interpreter gibt. Hoffe habe jetzt genug weitere Verwirrung gestiftet. ;)
 
  • Gefällt mir
Reaktionen: Kümmelkorn
Wenn du ein Spiel sinnvoll programmieren willst würde ich dir zu C oder Objective-C raten. Ist allerdings schon eine Stufe höher als Java, da du dich auch mit dem Speichermanagement und Pointern beschäftigen musst. Allerdings um ein von der Performance her gutes Spiel zu programmieren kommt man wahrscheinlich um C nicht herum. Und C-Code kann für Mac als auch für Windows kompiliert werden (zumindest die Hintergrundbefehle sind ähnlich, interfaces müssen wahrsch. auf windows angepasst werden)!
 
Ich glaube, es hat wenig Sinn, Fahrrad fahren lernen zu wollen, ehe man laufen kann...
Der OP hat kaum Programmiererfahrung (PHP), da halte ich C für eine eher schlechte Idee.

Eine Skriptsprache wie Python führt da viel schneller zum Erfolg (ja, auch das ist eine Programmiersprache...):

- objektorientiert
- automatisches Speichermanagement
- gute Frameworks vorhanden
- Xcode verwendbar

Das mit dem Spiel kommt eh erst VIEL später, wenn die Lernkurve bewältigt wurde (s.o.)
 
Ich halte Python auch für die geeigneteste Sprache, wenn es kein Browserspiel sein soll. Python ist vergleichsweise einfach und sehr vielseitig, weil es viele Module gibt : 2D Programmierung, 3D Programmierung, Netzwerkprogrammierung, GUI Programmierung und und und...

@DrRadon
Wenn du dich gegen das Browserspiel entscheidest, lass dir aber gesagt sein, dass du dich zuerst einmal mit textbasierten Programmen rumschlägst, also so DOS-Stil. Grafische geschichten kommen erst danach :)
 
Hey Hey,
danke für die vielen mühevollen antworten. Es scheint sich ja doch ein recht klares Bild pro Python zu ergeben... das passt mir ganz gut da es kostenlos ist. Ich werde mich die Tage mal in der Stadtbücherei umsehen ob es dort was auszuleihen gibt. Dann werden wir sehen was dabei herauskommt. :-D


Und alles nur keine Flamewares. =)

grüße
Mischa
 
Ich brech mal die Lanze für andere Programmiersprachen. Grundsätzlich ist das was du da vor hast in so ziemlich jeder Sprache umsetzbar. Die Frage für mich wäre: Wie geht es am komfortabelsten.

Hättest du einen Windows PC, dann würde ich dir zu C# raten. Da das nicht der Fall ist, würde ich Java empfehlen.

Ich geh allerdings mal nicht näher drauf ein. Denn lass dir eins sagen. Programmiersprachen sind ähnlich wie Musikgeschmack, jeder wird dir was anderes sagen. Entweder, weil es die "Muttersprache" des jenigen ist oder weil er aktuell damit arbeitet und es super interessant findet.
Hättest du mich vor 10 Jahren gefragt, dann hätte ich dir auch noch Visual Basic empfohlen. :p

Deswegen mein abschließender Tipp: Probier ein paar Sprachen aus, schau dir die IDEs an, mach ein "Hello World" Tutorial in jeder Sprache und versuch eine grafische Oberfläche zu erstellen. Dann nimmste die Sprache, wo du das am einfachsten machen konntest und wo du dich wohl gefühlt hast.
"Hello World" in C ist auch sehr einfach, hast dann eine schöne Konsole wo "Hello World" drin steht. Bis du aber erstmal ein normales Fenster hast... tjo...
 
Zurück
Oben Unten