Du bist nicht angemeldet.

#1 30.03.2014 16:47

sushiTV
Mitglied
Ort: Leipzig
Registriert: 10.03.2014
Beiträge: 496

Programmierung von TVTower

@Ron

ich habe, wie ich dir schon einmal schrieb in Basic angefangen, dann erfahrung mit TurboPascal unter Dos und später auch mit Delphi unter Windows.

Programmierer war ich aber nie, und werde es wohl auch nie sein und OOP ist noch ein Thema für mich smile

TVTower scheint in einigen bereichen schon sehr OOP zu sein?

Allerdings konnte ich den Quellcode ja hier und da schon etwas lesen, zumindest habe ich ja auch einiges herrausgefunden.

An gewisse dinge muss ich mich halt herrantasten.

Nur uraltes System ist halt spaghetticode .... dann kam sowas wie funtionen und subroutinen und dann noch OOP .....

Wenn ich anfange, ist das meist spaghetticode den ich dann ein oder zwei stufen herrauf hebe also umwandel in etwas struckturierteren code.

(ich habe jetzt erst gelesen, das spaghetticode trotzdem gar nicht so unüblich ist :-P )

gruß
sushi


das Leben ist ein scheiß Spiel, hat aber ne geile Grafik

Offline

#2 30.03.2014 17:02

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.704
Webseite

Re: Programmierung von TVTower

Naja es gibt im TVTower-Code schon einiges an "oop", aber BlitzMax bietet ja sowas wie "Funktionsueberladung" nicht an. In anderen Sprachen waere sowas moeglich:
Function TFigures.Move(x:int,y:int) ...
und
Function TFigures.Move(pos:TPoint) ...

Heisst, der Compiler wuerde beim "Uebersetzen" (in eine "Exe") ueberpruefen, ob der Parameter ein "TPoint" ist, oder ob es zwei Parameter gibt die jeweils "integer" (Ganzzahlen) sind. Dies ist dann praktisch, wenn man mit mehreren Leuten an einem Team arbeitet und dann Dinge zusammengefuehrt werden ohne dass vorher bestimmte Strukturen definiert worden sind ("bitte immer Integer, keine TPoints"). Es erspart aber manchmal auch Hinundhergewurstel (ueberall wird mit TPoint gearbeitet - also muesste ich dann dort den Punkt auf seine Koordinaten aufloesen usw.).

Was aber genutzt wird - ist "Vererbung". Es gibt also Basisobjekte auf die dann andere Objekte aufbauen. Dies macht man zum Beispiel hierfuer:

Der Programmplan eines jeden Spielers besitzt fuer jede Sendestunde einen "Slot". Dieser Slot speichert ja aber nicht nur "Programme", sondern eventuell sitzt dort ja eine Werbung oder eine Sondernachrichtensendung.
Programmiertechnisch kann ich also diesen Slot entweder strict fuer "Programmobjekte" definieren - oder allgemeingueltiger fassen. Am allgemeingueltigsten waere ein "object" - aber das besitzt keine Eigenschaften. Wenn ich also irgendwo im Spiel anzeigen moechte: Was kommt auf dem "Programmsendeplatz" an Spieltag X um Y Uhr, was dann tun?
Ich suche das Objekt heraus, was im entsprechenden Slot platziert ist. Ein "object" haette aber keinen titel, auch keine Kennung, kein garnix. Wenn ich wuesste, dass sich hinter dem Objekt aber ein "Programm" versteckt, dann wuerde ich das Objekt als Typ "Programm" casten (also "explizit zu diesem Typ [zurueck]umwandeln"). Aber es kann ja auch eine Nachricht sein... oder oder oder.
Nun kommen wir zur Vererbung: Bei uns haben alle "ausstrahlbaren" Materialien den Grundtyp "TBroadcastMaterial". Dieser hat die Eigenschaften "Titel" und anderes. Damit ist garantiert: alle Objekttypen, die auf "TBroadcastMaterial" basieren, haben die abrufbare Eigenschaft "Titel" (u.a.). Ein "TAdvertisement" basiert auf diesem "TBroadcastmaterial" - ueberschreibt aber bspweise die Funktion zum erhalten des Titels damit, dass sie den Titel eines zugehoerigen Werbevertrages zurueckgibt. Kinderelemente koennen also vererbte Funktionen ueberschreiben (um eigenen Kram zu machen) und neue hinzuzufuegen.

Klingt immer alles total kompliziert - ist aber mit den oft genutzten Beispielen ("Fahrzeuge -> Autos/Zweiraeder") schnell kapiert. Man muss es nur "durchstehen".

Dass Du den Code "durchschauen kannst" (zumindest teilweise) zeugt ja davon, dass wir a) schick programmieren :-D und b) die Sprache weniger kryptische Syntax enthaelt. So geht es mir mit "C++" aber auch: lesen ja, schreiben aehh eher holprig. Bin da eher der "wie machen es andere - anpassen - ah nun funktioniert es auch dort und dort"-Typ.


bye
Ron


sigimg2.php?id=1

Offline

#3 30.03.2014 17:19

sushiTV
Mitglied
Ort: Leipzig
Registriert: 10.03.2014
Beiträge: 496

Re: Programmierung von TVTower

Ach ja, danke das du mich an die Vererbengeschichte in OOP auch noch erinnnerst, das ist meistens der punkt wo ich dann spätestens ins straucheln gekommen bin smile


das Leben ist ein scheiß Spiel, hat aber ne geile Grafik

Offline

#4 30.03.2014 17:22

sushiTV
Mitglied
Ort: Leipzig
Registriert: 10.03.2014
Beiträge: 496

Re: Programmierung von TVTower

Ronny schrieb:

Dass Du den Code "durchschauen kannst" (zumindest teilweise) zeugt ja davon, dass wir a) schick programmieren :-D und b) die Sprache weniger kryptische Syntax enthaelt.

Ich selbst hatte jetzt auch das gefühl, das BlitzMax da etwas einfacher ist und wohl eher für Spieleprogrammierung ausgelegt ist?

gruß ~s~

ein klein wenig *lol* offtopic smile

Beitrag geändert von sushiTV (30.03.2014 17:28)


das Leben ist ein scheiß Spiel, hat aber ne geile Grafik

Offline

#5 30.03.2014 17:40

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.704
Webseite

Re: Programmierung von TVTower

Habe die Beitraege mal vom anderen Thread abgekoppelt.

BlitzMax ist auch mehr fuer "Spiele" gedacht. Bzw "Multimedia". Deswegen Befehle wie "DrawImage" (wobei wir eigene Befehle nutzen - und nur die Basiobjekte dann "DrawImage" aufrufen). Komplexere Objekte wie positionales Audio oder Spriteatlanten sind dann von unserem Framework umgesetzt (siehe Github).


bye
Ron


sigimg2.php?id=1

Offline

#6 31.03.2014 10:08

STARSCrazy
TVTower-KI-Coder
Registriert: 01.07.2005
Beiträge: 252

Re: Programmierung von TVTower

Versuch dich doch einfach mal in nem eigenen GitHub-branch (also ner Art "persönlichen" Arbeitsmappe) mit nem kleinen Feature oder ner Änderung. Dann kann man im Zweifelsfall nochmal nachbessern, ablehnen oder in den trunk übernehmen. Einfach mal probieren.

Offline

#7 31.03.2014 10:34

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.704
Webseite

Re: Programmierung von TVTower

Ohne BlitzMax kann er es aber lokal nicht zu einer Exe umbauen. Und sich eine der illegalen Downloads verschaffen - die sind eh aeltere Versionen und zum aktualisieren muesste man sich dann von Github die aktuellen Modulverzeichnisse ziehen (die sind public domain -> https://github.com/maxmods <- falls man mal durch die Codes schnuppern will). Gerade die neueste Version entfernt ja einen Bug (dafuer musste ich Mark Sibly eine ganze Weile auf die Eier gehen ... der hat kein XP und nur dort fiel der Bug auf -> der ist, glaube ich, uebrigens auch in Monkey noch drin) der gerade bei unserem Quellcode zu einem Kompilierfehler fuehrt (" ' "-Zeichen in Kommentaren die Sachen mehrzeilig einschliessen).

Sollte man also lieber mal ein wenig auf den "open source compiler" warten (fehlen nicht mehr viele Sachen -> "include" hebt sich brucey auf damit er nicht die Zeit damit verplempert, den Compiler mittels sich selbst kompilieren zu koennen biggrin). Dauert nicht mehr lange... aber erstmal Brucey dazu bewegen, meinen Namen aus dem Quellcode rauszulassen, der macht die Arbeit aber schreibt wegen ein wenig Mithilfe meinen mit rein... herrje.


bye
Ron


sigimg2.php?id=1

Offline

#8 31.03.2014 11:26

sushiTV
Mitglied
Ort: Leipzig
Registriert: 10.03.2014
Beiträge: 496

Re: Programmierung von TVTower

Ronny schrieb:

Und sich eine der illegalen Downloads verschaffen ...

Du meinst sich eine Sicherheitskopie zulegen gw_smiley_zwinkern
Na an sowas habe ich nun gerade nicht gedacht, dachte wenn schon denn schon dann eher an ein free projekt smile

Ronny schrieb:

@Sushi: Du kannst Dir gerne auch "monkey-x" anschauen, html5,linux/mac/windows sind ja nun frei - und ist der Nachfolger von BlitzMax (macht aber einiges anders - nicht alles ist besser - und gerade jetzt mit dem neuen Compiler sollten hoffentlich Dinge wie "Function overloading" Einzug halten koennen).

Soo, Monkey-X Free habe ich gerade geladen, werde ich mir dann mal anschauen.

Verstehe ich das richtig, das Monkey-X zwar der nachfolger ist aber nicht zwingend besser als BlitzMax vorallem wenn dann BlitzMax Free wird?

gruß
sushi

Beitrag geändert von sushiTV (31.03.2014 11:28)


das Leben ist ein scheiß Spiel, hat aber ne geile Grafik

Offline

#9 31.03.2014 11:49

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.704
Webseite

Re: Programmierung von TVTower

Es hat den Vorteil, dass man (bei der Kaufversion) bequemer fuer Iphone, Android usw entwickeln kann.
Es hat den Vorteil, dass es etwas mehr "oop" bietet.

Es hat folgende Nachteile: Kein Pointersupport (direkte Speicheradressierung) und Dinge wie "[,]"-Arrays (mehrdimensionale) sind nicht moeglich. Liegt daran, dass die Zielplattformen nicht alles unterstuetzen. Man hat sozusagen den geringsten gemeinsamen Nenner.

Wenn der BCC (Der BlitzMax-Compiler) in der open-source Variante verfuegbar ist - ist er zumindest fuer "Linux/Mac/Windows" die bessere Empfehlung. Zum reinschnuppern in die "Syntax" ist aber Monkey auch geeignet.


bye
Ron


sigimg2.php?id=1

Offline

#10 31.03.2014 11:55

sushiTV
Mitglied
Ort: Leipzig
Registriert: 10.03.2014
Beiträge: 496

Re: Programmierung von TVTower

Was hat die Demo von BlitzMax für einschränkungen? 30 Tage? ~s~


das Leben ist ein scheiß Spiel, hat aber ne geile Grafik

Offline

#11 31.03.2014 14:19

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.704
Webseite

Re: Programmierung von TVTower

Weiss nicht ... glaube halt du darfst nix kommerzielles machen - und ich dachte es gibt eine "Groesseneinschraenkung" (Anzahl Dateien). Hab meine Lizenz damals von HeinDubty geschenkt bekommen.


bye
Ron


sigimg2.php?id=1

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Bist Du ein Mensch oder ein Roboter ?

Verifizierung, dass diese Aktion durch eine reale Person vorgenommen wird und nicht von einem Programm.