Programmiersprachen für Anfänger um Spiele zu programmieren

...komplette Frage anzeigen

6 Antworten

Python hat einige Vorteile: es ist ziemlich einfach zu lernen, sieht (meistens) recht übersichtlich aus; man kann sehr viel damit machen, und es gibt auch einige Möglichkeiten und Hilfsmittel um Spiele damit zu entwickeln (z.B. Pygame, Blender Game Engine, PyOpenGL...).

Ich würde auch sagen, dass es eine der Sprachen ist, in denen man am wenigsten Code hinschreiben muss um was Sinnvolles zu erreichen.

Es gibt auch einige Spiele in Python, die man sich als Beispiel anschauen kann.

3D Spiele sind aber immer eine recht schwierige Sache, ich würde auf jeden Fall erstmal mit Programmieren anfangen und erst später es mit einem kleinen 2D-Spielchen versuchen.

Braucht man denn deiner Meinung nach Vorkenntnisse für Python?

0
@celvinketzer

Python ist eine der einfachsten Programmiersprachen und daher kann man damit sehr gut lernen, aber ein bisschen Ahnung von Mathe braucht man beim Programmieren fast immer.

Wenn man von den Grundrechenarten, von "größer / kleiner als" und von Variablen schon mal was gehört hat reicht das aber für den Anfang ;)

0
@celvinketzer

Denke ich auch...

Python kann man auch einfach als Taschenrechner benutzen, wenn man eine Python Shell startet; ich mache das immer, wenn ich etwas ausrechnen muss. ;)

0
@celvinketzer

Man kann einfach direkt Python-Code in so eine Shell eingeben und man bekommt ein Ergebnis (wenn es eins gibt).

Es sind schon einige mathematische Funktionen bei Python dabei (Grundrechenarten, sin, cos, exp, log und sowas) und jeder kann sich selber neue Funktionen basteln. Deswegen ist es ja eine Programmiersprache ;) Gibt auch fertige Funktions-Bibliotheken, die Gleichungen lösen können und viel mehr.

0

Für welche Plattform will du die Spiele denn Programmieren? Für Web-anwendungen brauchst du natürlich was anderes als für ein Spiel, dass z.b. unter Windows direkt laufen solll. Als Einsteiger würde ich aber auch von Multiplattform-geschichten abraten und mich auf ein Zielsystem konzentrieren und ne Sprache lernen die dir später auch noch was bringt.

Generell gilt, dass es egal ist welche Sprache man am anfang lernt, weil man zu Beginn lernen muss wie man Strukturiert vorgeht, was der workflow ist usw... der rest ist dann wie Vokabeln lernen.

Ich würde jedem der für Windows programmieren möchte mit C++ oder Visual Basic einzusteigen. Jenachdem was einem mehr zusagt oder was evtl schon Beaknnte benutzen.

Also eher so ein Spiel was unter Windows läuft.

0

Multiplattform hat aber keine wirklichen Nachteile, wenn ich irgendwas auf der Java VM oder z.B. mit Python mache funktioniert das quasi überall und ist deswegen auch nicht schwerer.

0
@tobistenzel

So etwas wäre mir um ehrlich zu sein auch am liebsten weil ich vorhabe in nächster Zeit komplett auf Linux umzusteigen

0

Ich würde dir ebenfalls Java für den Einstieg empfehlen. Diese Sprache ist alles andere als "zu kompliziert" - genau das Gegenteil ist der Fall. Syntaktisch ähnelt sie sehr stark C/C++ und ist extrem Leistungsstark. Du kannst mit einfachem I/O anfangen und dich dann schon sehr bald in die Fensterprogrammierung (Windows, Linux, Mac) wagen - ohne dir große Gedanken über die zugrunde liegende Plattform machen zu müssen.

Weiterhin wird gleich von Anfang an OOP vermittelt und dies nicht, wie in C++ "aufgepropft" auf C, sondern konsequent und ohne Schnörkel. Java ist, im Vergleich zu anderen Sprachen die OOP unterstützen - selbst 100% konsequent Objektorientiert. Dies ist weniger kompliziert, als in PHP oder anderen Sprachen.

Weiterhin kann Java von allen Standard-Browsern verwendet werden, das SDK ist kostenlos, ausgezeichnet dokumentiert, die Klassenbibliotheken sind gewaltig! Java ist plattformunabhängig, was du da lernst funktioniert erst mal überall. Es gibt hundertausende Beispiele zu Java-Spielen im Internet.

Und eine Programmiersprache, die fähig ist komplexe Aufgaben zu lösen, muss zwangsläufig auch selbst einen gewissen Grad an komplexität mitbringen.

Java ist eine sehr gute Wahl! Und von wegen keine Einsteigersprache... Wer ersthaft einsteigt, muss sich eh auf die Komplexität der Sache einlassen...

Aber wenn man anfängt zu programmieren und noch nicht mal den aufbau von einem programm kennt !

0
@marv88

Na und? Dieses Problam hast du mit JEDER Sprache. Mit irgendeiner muss man ja dann mal anfangen... Und Turbo Pascal, also bitte ... vor 15 Jahren vielleicht noch ein Tipp, aber heutzutage...

Im Informatik-Studium war Pascal unserem Prof 2 Minuten wert... immerhin.

0

I/O ist echt ein gutes Beispiel, warum Java teilweise so fürchterlich ist. Der ganze Mist mit BufferedStreamReader und Konsorten + die unzähligen try-catch-Blöcke sind echt anfängerfreundlich ;)

Bei uns am Anfang in der Java-Ausbildung wurde extra eine eigene IO-Klasse angeboten, damit es nicht so schlimm aussieht.

Java und 100% objektorientiert?

static int haha = 1;

Primitive Datentypen so sichtbar zu machen bei angeblicher Objektorientierung finde ich ziemlich peinlich und auch gern mal verwirrend für Anfänger.
Und erklär den Leuten mal, warum sie z.B. keine ints in simplen Listen ablegen können, sondern Integer schreiben müssen obwohl das im Prinzip das Gleiche ist, dann aber doch wieder nicht...

static ist dann gleich die nächste Panne...

0
@tobistenzel

Zum Thema I/O gebe ich dir nur insofern Recht, das die Klassen recht "unglücklich" gewählt sind, jedoch das Exception-Handling ist mit seinem try und catch genau DAS tolle Merkmal, warum diese Sprache so gut ist. Exception-Handling gehört in jede OOP Klasse...

static. Was bitte soll an static nicht mehr streng Objektorientiert sein? Damit wird eine Variable zur Klassenvariable und somit zur gemeinsamen Eigenschaft aller Objekter dieser Klasse und Abkömlinge - desswegen ist es doch noch lange keine globale Variable... Dies steht in keinem Widerspruch!

Sichtbarkeit primitiver Datentypen. Ich schätze, hier hast du das Konzept der impliziten und expliziten Typenkonvertierung schlicht nicht verstanden. Alle primitiven Datentypen sind wohl dokumentiert, werden normalerweise in Methoden per "Call by Value" übergeben und haben - wie sollten sie auch - keine weitere Eigenschaften. Desswegen sind sie ja die "primitiven" Datentypen.

Die komplexeren Datentypen, wie Integer (Float, Double usw.) sind Erweiterungen für den Programmierer, um spezielle Eigenschaften dieses Datentyps bereitzustellen. Was ist daran bitte falsch? Was ist daran unverständlich? Was ist sinnlos daran, primitive Datentypen in komplexe konvertieren zu können - und anders herum? Konzeptionell ist das durchdacht!

Genau DAS macht Java so einfach - klare Konzepte, klare Struktur. Man muss es eben verstehen...

0
@CodeFlatter

Exception-Handling ist eine tolle Sache, aber Java ist so ziemlich die einzige Sprache, die das bei vielen Exception-Typen explizit verlangt, auch wenn es an vielen Stellen einfach zu mehr Code ohne jeden Mehrnutzen führt. Die meisten Leute haben dann keine Lust auf eine vernünftige Fehlerbehandlung und machen einfach den catch-Block leer oder machen ein Stack Trace, damit alles brav weiterläuft. Hört sich immer alles toll an, aber ich habe da einfach schon zu viel Mist live gesehen...

Dass es irgendwelche Klassenvariablen gibt ist ja in Ordnung, geht ja kaum anders, aber ein wenig deutlicher kann man das schon machen, dass das etwas komplett anderes ist als ein Objekt-Attribut. Nur ein mini-Schlüsselwort ist mir da zuwenig.

Wie man das verständlicher und "objektorientierter" macht sieht man z.B. bei Scala.

Finde ich super, wenn gleich mal unterstellt wird, dass man etwas nicht versteht, aber egal...

Wenn das Ding 100% objektorientiert sein soll dann sind primitive Daten einfach etwas daneben. Warum muss ich beides sichtbar machen und die Leute verwirren, wenn sowieso implizit konvertiert wird?

(Schreibe ich Double oder double?? Dann wundern sich manche, warum sie bei "einfachen" Zahlen komischerweise eine NullPointerException bekommen...)

Andere Sprachen können das ja auch, z.B. wieder mal Scala.

Wenn man zu Arrays vs. Collections geht (mal ohne Typangabe und mal raw) wird der Murks noch schöner, finde ich ;) Ein Integer[]-Array kann ich ohne Meckern einer Object[] Var zuweisen, bei ArrayList<Integer nach ArrayList<Object gehts nicht. Ist doch logisch...

Das Problem ist eben genau, dass es am Anfang kein umfassendes Konzept gab und ständig etwas hinzugebastelt wurde, ohne die alten Konstrukte konsequent rauszuschmeißen.

0
@tobistenzel

Es ist ja nicht der Fehler von Java, das die Leute zu bequem sind, korrektes Exception-Handling umzusetzen. Ich kann mich noch an zig(!) Tagungen erinnern, wo solche Konzepte als Standard gefordert wurden - als sie dann in diversen Sprachen auf den Tisch kamen, wollten niemand mehr davon was wissen. Klar, manchmal will man "eben nur mal" was schnell machen und dann kann das sehr nervig sein, aber das als Manko der Sprache ... ich weis nicht...

Übrigens solchen Mist wie du angesprochen hast, haben sicher alle Entwickler schon live gesehen und es nimmt kein Ende... ;)

Ja Scala ist besser, kam ja auch was später und man hat die nächsten Fehler erkannt, die andere Sprachen haben.

Ich persönlich empfinde das Schlüsselwort static mehr als ausreichend, es erklärt alles und man muss nicht mehr dazu sagen. Auch die Art, wie dann auf solche Klassenvariablen zugegriffen werden kann, erklärt alles. Natürlich - wie du schon sagst - es ist ein riesen Unterschied ob ich ein Objekt-Attribut verwende oder ob es ein Klassen-Attribut ist. Darum ja die explizite Klassenschreibweise, die man verwenden kann - aber (leider, das sehe ich als Designfehler) nicht muss. Hier hätte man static den Rücken stärken können (müssen).

Meine Unterstellung des Verständnisses mag durchaus falsch sein, das räume ich ein - jedoch entnahm ich dies aufgrund der Behauptung, static würde die OOP Regeln verletzen.

Warum soll eine 100%ige Programmiersprache keine primitiven Datentypen mehr verwenden? Es besteht doch auch heute noch Bedarf an genauen Aussagen über Datentypen und ihren Speicherbedarf. Ohne diese Typen, wären bitweise Operatoren und Bitmanipulationen ein Krampf. Jedoch hätte ich auch nicht unbedingt die implizite Typenumwandlung in Java haben wollen, das verschleiert intern viel zu viel und man verwendet Datentypen teilweise Monate lang falsch, bis es "endlich" mal kracht. Genau das Gleiche bei den Collections, das stimmt schon.

Ja, auch Java merkt man an, das es "gewachsen" ist, aber das Grundkonzept ist im Vergleich zu C++ oder Sprachen wie PHP deutlich eleganter - das ist jedenfalls meine Meinung.

Abschließend möchte ich dennoch behaupten - egal mit welcher Sprache, ein mal das Handwerk richtig gelernt - sind die anderen Sprachen nur andere Wege das Gleiche auszudrücken. Und bevor man sich an Engines setzt, die kein fertiges Spiel liefern können - sollte man doch besser das Handwerk lernen.

0
@CodeFlatter

Wenn Java einen ständig dazu zwingt überflüssigen Code zu schreiben reagieren die meisten Menschen genervt und ich kann das absolut verstehen.

Dass das wirklich Vorteile bringt, die Leute bei manchen ausgewählten Problemen zur Behandlung zu zwingen, obwohl es zig andere Exceptions gibt, die jederzeit auftreten können und viel gefährlicher sein können kann ich mir einfach nicht vorstellen und Belege dafür habe ich auch noch keine gesehen...

Eigentlich ging es ja mehr um Anfänger und das ist definitiv ein "Feature", das eher vom Code ablenkt und die Lesbarkeit senkt. Das gilt genauso für static und die Probleme mit Datentypen und Collections. Wenn man sich auskennt ist das lästig, aber es lässt sich damit leben. Zu Anfängern aber sagen zu müssen "ist halt so, vielleicht verstehst du das später mal..." finde ich nur etwas ungünstig.

Naja gut, C++ und PHP sind die anderen beiden Top-Beispiele für verbreitete, aber stellenweise etwas misslungene Sprachen ;)

0

Mit Java kannst du anfange. Dafür würde ich dir empfehlen in die Bibliothek zu gehen und dir dort paar Bücher anschauen und das was für dich am zugänglichsten ist mitzunehmen. Dauert seine Zeit bis du Irgendwas programmieren kannst.

Java ist meiner Erachtens zu schwierig für Anfänger.Lieber mit NIKI oder Turbo pascal anfangen .

0
@marv88

Joa Niki kann man sich anschauen. Damit man nen kleinen Einblick bekommt. Und für nen 14 Jährigen ists wahrscheinlich die bessere Wahl.

0
@Hatebringer

richtig,dann kann man mit turbo pascal anfangen und dann modular-2 .modular-2 hat ähnlichkeit mit java.

0

Zu Hatebringer: Ich glaube, dass Java für einen Anfänger ein wenig zu schwierig ist.

Als erste Sprache empfehle ich dir Python. Python ist einfach, sauber, doch auch hoch effektiv. Viele Spiele wurden schon mit Python programmiert, doch denke nicht, dass du das einfach so lernen kannst. Für echte 3D Spiele brauchst du Wissen über eine 3D Engine, und das braucht auch seine Zeit zu lernen.

Download Python >> python.org/download/ (hol dir Python 3.2.1 !)

Tutorial >> youtube.com/watch?v=4Mf0h3HphEA

Das Tutorial oben ist in Englisch, und über das alte Python, 2.7.2. Ist jedoch sehr einfach. Falls du das neueste Python lernen willst, gucke hier:

inventwithpython.com/chapters/

Ist jedoch auch Englisch.

Eine (vergleichsweise) einfache 3D Engine zum lernen ist die Unreal Engine. Damit kannst du 3D Objekte erstellen, und dann auf ihnen zocken. Du brauchst jedoch einen starken PC.

Download UDK >> udk DOT com/

Tutorial >> youtube DOT com/watch?v=K7AAgQHJWGc

0
@celvinketzer

Offiziell von der Website:

Minimum:

Windows XP SP2 or Windows Vista
2.0+ GHz processor
2 GB system RAM
SM3-compatible video card
3 GB Free hard drive space

Recommended for Content Development:

Windows 7 64-bit
2.0+ GHz multi-core processor
8 GB System RAM
NVIDIA 8000 series or higher graphics card
Plenty of HDD space
0
@Gamer333

also das Minimum hab ich locker in der Tasche und einiges von dem "Recommended for Vontet Development

0
@celvinketzer

Ok, aber erstmal wolltest du ja eine Programmiersprache lernen. Guck dir mal eines der beiden Tutorials an, die ich dir bei meiner Antwort mitgeteilt hab. Dann kannst du sehen, ob Python dir gefällt. Mich hat es jedenfalls begeistert, als ich es als 12-jähriger gelernt habe. Probier's mal :D

0
@Gamer333

Kann ich verstehen,dass es dich begeistert hat ich finde PCs auch sehr faszinierend.

0
@celvinketzer

Kann ich verstehen,dass es dich begeistert hat ich finde programmieren auch sehr faszinierend. Ich hab mir den Anfang von dem Tutorial für 3.2.1 durchgelesen scheint ganz gut zu sein

0
@celvinketzer

ich würde die Programmiersprache NIKI empfehlen,siehe oben.Sie ist eine vereinfachte programmiersprache von Turbo pascal. Turbo pascal ist der Vorgänger von Modular-2 und besitzt auch änlichkeit mit java. Ich muss aber auch sagen unreal engine auch nicht schlecht ist

0
@Gamer333

Mit Kanonen auf Spatzen geschossen... Der hat keine Vorbildung in dem Bereich und ihr labert schon von Engines, dies zeigt wie wenig Ahnung ihr selber von der Materie habt.

Programmieren lernen ist in erster Linie Handwerk! Keine Engine nimmt dir das ab. Und nur ein gut gelerntes Handwerk, wird später mal einen Meister hervor bringen...

Die Engine ist Mittel zum Zweck, mehr nicht. Ohne Handwerk ist die Engine gar nichts, nichts wirst du erfolgreich auf die Beine stellen.

0
@marv88

NIKI mag so einfach sein wie du willst, aber Python ist nur ein wenig komplizierter, dafür aber viel, viel fähiger.

0
@CodeFlatter

Ich denke das zeigt das die anderen mir helfen wollen und vllt ein bisschen voreilig vorgehen jedoch nicht wie du meinst das sie keine Ahnung haben

0
@CodeFlatter

Ähm, eine hochwertige 3D Umgebung kannst du auch locker ohne "Handwerk", also Programmieren, erstellen. Natürlich sollte er erst eine Programmiersprache lernen, doch ich wollte ihm auch Referenzmaterial für später zur Verfügung stellen.

0
@Gamer333

Die Umgebeung erstellen - das ist doch nur der erste Tropfen auf den glühenden Stein - Leben in die Sache hauchen, DAS ist die Essenz eines Spiels. Dann fallen Begriffe wie Trigger, Ereignisse, Iterationen, Rekusionen, FF Transformationen, Matrizenumrechnungen und so weiter - Klasse, er versteht nur Bahnhof weil er KEINE Grundlagen hat.

0
@celvinketzer

Du ich sag nicht, die haben gar keine Ahnung, aber doch wenig und das merkt man... Wenn du dir mal die Mühe machst - und mal googelst, wirst du überall in den sogenannten Gaming Academys einen Hauptsatz finden: Handwerk. Handwerk entweder im Mapping, Artworks (GFX), Level Design und so weiter. Da kannst du entweder was richtig, oder du kannst nichts - zumendest wenn das in die Richtung deiner beruflichen Ziele geht.

Obs die Leute jetzt wahr haben wollen, oder nicht - ändert nichts an den Tatsachen. Und die, die davon wissen - kommunizieren das auch. Alle anderen "legen los" und stümpern rum...

0
@CodeFlatter

deswegen empfehle h ja NIKI. Ist zwar etwas kindhaft,aber im Nachhinein hilfreich

0

Ok,schau hier nach :www.informatik-fuer-amateure.de.tl ,das ist die hp eines bekannten von mir!!! Dort kannst du das erlernen und du erfährst das auch .Wenn duu Fragen hast ,schreib ins gästebuch und er wird es dir beantworten !!!!!!

wenn du fragen dazu hast,wie gesagt schreib ins gästebuch

0
@marv88

oder schreib mir: Bin eine ehmaliger informatiker und kann dir sicher helfen !

0
@marv88

Ok danke ich werde es ausprobieren. Aber muss ich dich als Freund annehmen um dir ne Nachricht zu schicken?

0
@celvinketzer

Das weiß ich leider nicht .Send mir einfach eine Freundschaftsanfrage!

0
@celvinketzer

Das weiß ich leider nicht .Send mir einfach eine Freundschaftsanfrage!

0
@celvinketzer

Mein Betriebssystem unterstützt wie mir scheint das Programm nicht Zitat: "Die Version dieser Datei ist nicht mit der ausgeführten Windows-Version kompatibel. Öffnen sie die Systeminformationen, um zu überprüfen, ob eine x86-(32 Bit)- oder eine x64-(64 Bit)- Version erforderlich ist, und wenden sie sich anschließend an der Herausgeber der Software." Zitat Ende. Ich habe schon bei Google geguckt ob es eine andere Version gibt und habe auch schon die Häfte der Kompatibilitäts Modie durch. Hat alles nicht funktioniert.

0
@celvinketzer

Das Programm ist leider nur mit Windows xp kompatibel.was hast du denn für ein Betriebssystem ?Bitte alles schreiben was auf der anzeige steht.

p.s: irgendwie habe ich keine freundschaftsanfrage bekommen .

0
@marv88

Ich hab Windows 7 Home Premium 64-Bit und will eventuell bald in mehreren Monaten auf Linux Ubuntu umsteigen aber behalte noch Windows wahrscheinlich

0
@celvinketzer

Leider gibt es NIKI nicht für 64-bit. NIKI ist auch nicht für Linux. Hast du die Möglichkeit auf Microsoft xp umzusteigen (also zb. pc von deinen eltern). NIKI ist wirklich bestens für dich geeignet.lese es dir auf der hp von meinem bekannten durch !!!!!

0

Was möchtest Du wissen?