Autor Thema: [Scripting for Dummies RELOADED] - Vorbereitungen  (Gelesen 12353 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
[Scripting for Dummies RELOADED] - Vorbereitungen
« am: 26.März.2012, 20:35 »
Nachdem wir uns beim letzten mal die Möglichkeiten angesehen haben, die die Trigger in Cliffs of Dover ohne Scripting besitzen (Link).
Werden wir in dieser Lektion erst mal ein paar vorbereitungen treffen um uns das Leben beim scripten zu erleichtern.

Beim scripten von Cliffs of Dover kommt C# (C Sharp) (http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29) zum Einsatz. Das hat Vor- und Nachteile. Die Vorteile sind das man nicht extra nur eine für CloDo geschaffene Programmiersprache lernen muss, es genügend Bücher und Internetresourcen gibt die einem das erlernen der Sprache vereinfachen. Man auf alle Möglichkeiten von .Net zurückgreifen kann. Die Nachteile sind wohl das gerade ein Anfänger (ich wollte doch nur eine Siegmeldung) von den Scriptmöglichkeiten regelrecht erschlagen wird. Einerseitz sind die Befehle teils recht kryptisch "if(irgend == was) mache;" und das die Sprache objektorientiert ist, tut ein übriges dazu. Wobei die meisten Anfänger wohl am ehesten Probleme mit einem vergessenen Semikolon oder einer falsch gesetzten Klammer hat.

Daher werfen wir zuerst einen Blick auf den in Cliffs of Dover integrierten Editor. Dieser bietet leider weder Syntax-Highlighting noch automatisches Einrücken, im Grunde bietet er weniger als Windows Notepad.


Allergings kann man durch einen Rechtsklick ein Menü aufrufen, mit dem man den eingegebenen Code compilieren kann, dies kann bei der Fehlersuche nützlich sein. Als Beispiel wurde im Code ein Semikolon "vergessen", und das ganze "compiliert":


Das Output-Fenster zeigt uns auch erwartungsgemäss eine Fehlermeldung:


Korrigieren wir also das fehlende Semikolon und versuchen es erneut:


Nun scheint alles korrekt zu sein:


Nach dem speichern des Codes legt der CloDo-Editor eigenständig ein File mit der erweiterung cs an. Scriptfiles in Cliffs of Dover müssen den selben Filenamen wie die Missionsdatei besitzen, allerdings mit der endung 'cs' an statt 'mis'


Wie gesehen bietet Cliffs of Dover also recht wenig um das scripten zu unterstützen. Man sollte sich deswegen um Alternativen für den eingebauten Editor bemühen. Dazu hat man zwei Möglichkeiten, man kann einen erweiterten Editor benutzen, wie etwa die Freeware Notepad++ http://notepad-plus-plus.org/ dieser bietet immerhin Syntaxhighlithing und automatisches Einrücken.


Oder man besorgt sich gleich eine professionelle Entwicklungsumgebung. In diesem Fall haben wir Glück, da Microsoft eine kostenlose (Registrierung allerdings erforderlich) Entwicklungsumgebung anbietet, nämlich Microsoft Visual C# Express http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express

Ich rate gerade Anfängern dazu sich dieses Packet herunterzuladen und zu installieren, da gerade der Editor viele Funktionen enthält die einem das Programmieren stark erleichtern. So werden etwa Syntaxfehler durch rotes unterkringeln direkt im Editor angezeigt etc.


Nachdem man Microsoft Visual C# Express heruntergeladen und installiert hat, starten wir als erstes ein neues Projekt.


Im daraufhin erscheinenden Fenster wählen wir als erstes "Class Library", danach geben wir einen Sinnvollen Namen für unser "Projekt" ein, da wir sonst spätestens bei "ClassLibrary10" den Überblick verlieren werden ;). Dann klicken wir auf OK.


Express legt dann alle benötigten Dateien an und öffnet den Editor, die darin enthaltenen Codezeilen benötigen wir momentan nicht und löschen diese einfach.


und ersetzen ihn einfach durch das Standardgerüst (Mehr dazu in der nächsten Lektion) das man zum scripten einer Mission benötigt.


Nach dem Einfügen, werden uns vom Express-Editor die ersten Fehler angezeigt. "The type or Namespace ...", das bedeutet das der Entwicklungsumgebung die verwendeten Assemblies (http://en.wikipedia.org/wiki/.NET_assembly) nicht bekannt sind. Um dies zu ändern, gehen wir im Solution Explorer (oranger Pfeil) auf References und klicken mit der rechten Maustaste darauf.


Anschließend "Add References" anklicken.


In der Dialogbox gehen wir auf Browse, und navigieren zum Verzeichnis
..\Steam\SteamApps\common\il-2 sturmovik cliffs of dover\parts\core
dort markieren wir die Dateien "antlr.runtime.dll", "core.dll", "gamePages.dll", "gamePlay.dll", "gameWorld.dll", "HostView.dll", "maddox.dll", "part.dll", "sound.dll" und "Strategy.dll"


und im Verzeichnis
D:\Spiele\Steam\SteamApps\common\il-2 sturmovik cliffs of dover\parts\bob
die Dateien "partBob.dll" und "Campaign.dll"
Man benötigt natürlich nicht alle davon, aber es schadet nicht sie gleich ins Projekt einzubinden, dann muss man später nicht suchen wenn man sie trotzdem braucht.


Um ein weiters nützliches Tool des Express Editors, nämlich den Object-Explorer, aufzurufen, schalten wir den Editor erst einmal in den Experten-Modus


Und aktivieren dann den Objekt-Browser (und ja ein einfaches "STRG+w,j" hätte es auch getan).


Im Object-Explorer können wir dann die in den Dlls vorhanden Klassen und deren Member genauer in Augenschein nehmen.


Der Express Editor verfügt auch über das nützliche Autovervollständigen.



Beim nächsten mal geht es dann endlich mit dem Scripten los - versprochen ;).

Anregungen und Kritik willkommen.
« Letzte Änderung: 26.März.2012, 20:49 von Deichwart »

Offline III./JG27_Culli

  • Hallenfeger
  • **
  • Beiträge: 39
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #1 am: 01.April.2012, 17:35 »
Echt Klasse  :)

Offline Der Depp

  • Flugschüler
  • ***
  • Beiträge: 119
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #2 am: 01.April.2012, 21:08 »
Ich kann mich Cullis Meinung nur anschließen!

Da ich mich nun auch mal mit C# beschäftigen wollte eine Frage zu Visual C# 2010 Express: Mit welchen Einschränkungen muß man bei der Express-Variante leben?

Es gibt ja auch die Open-Source IDE SharpDevelop (http://www.icsharpcode.net/opensource/sd/). Hat jemand damit Erfahrung?

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #3 am: 01.April.2012, 23:56 »
Die Einschränkungen wirst du so schnell nicht merken, wenn du gerade damit anfängst. Im wesentlichen betreffen diese mehr die professionelle Softwareentwicklung, wie Datenbankentwicklung und Anbindung, Softwaredesign, Qualitätssicherung etc.
Die IDE SharpDevelop hab ich kurz ausprobiert, kommt aber noch nicht an die IDE von Microsoft heran und wird wohl noch eine Zeit lang dazu brauchen. Meine momentane Empfehlung ist hier eindeutig die Express Version von MS.

Näheres lässt sich z.B. in der Wikipedia nachlesen:
http://de.wikipedia.org/wiki/Microsoft_Visual_Studio
« Letzte Änderung: 02.April.2012, 00:00 von FG28_Kodiak »

Offline Der Depp

  • Flugschüler
  • ***
  • Beiträge: 119
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #4 am: 02.April.2012, 01:56 »
Alles klar, vielen Dank für die Antwort!

Dann werde ich es wohl mit der Express Version probieren.

Offline SkyDog

  • Administrator
  • Blasenteetrinker
  • *****
  • Beiträge: 882
    • http://www.sturmovik.de
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #5 am: 02.April.2012, 21:24 »
Na da bin ich aber mal gespannt. Bin dabei ;) Wer sich wirklich mit C# beschäftigen will, dem würde ich fast http://www.amazon.de/C-von-Kopf-bis-Fu%C3%9F/dp/3897216523/ref=sr_1_2?ie=UTF8 empfehlen. Fast deshalb, weil ich dies Buch selber (noch) nicht besitze. Das Java-Buch aus der Reihe ist aber Top für Einsteiger. Selten soviel Lern-Erfolg mit einem Buch gehabt.
"Ich hätte gerne zwei Martini." "Dry?" "Nein, zwei."
________________________________________
System: i2700K @ 3,5Ghz, 16 Gig RAM, NVidia GTX460, Asus Xonar D1, Windows 10 Pro 64 Bit, 22Zoll 1920x1200

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #6 am: 03.April.2012, 06:40 »
Whä kenn ich auf englisch. Taugt in meinen Augen nichts, es sei denn man steht auf diese Art der Präsentation, ich tue es nicht, ist mir in der Aufmachung zu nervös und der Lesefluss wird zu oft unterbrochen. Ich schließe mich dieser Amazon 1 Stern Rezension an:
Tut mir leid, das Buch ist:
- total unübersichtlich
- die Workshops darin unvollständig und zu schwierig
- als Nachschlagewerk nicht geeignet
- hat wenig Inhalt für die vielen Seiten
- dient eher zur Verwirrung
Gerade Nachschlagewerk ist ein gutes Stichwort, am Anfang sucht man oft bestimmte Befehle bzw. Anwendungsbeispiele und da sucht man in diesem Buch vergeblich.
Eventuell ist es sinnvoll sich dieses Buch erst mal zur Ansicht zukommen zu lassen, ob man damit zurecht kommt.


Meine Devise ist eh: Programmieren lernt man nicht mit Büchern, sondern dadurch das man programmiert.

Trotzdem hier ein in meinen Augen brauchbares Einsteiger - Buch auf deutsch:
http://openbook.galileocomputing.de/visual_csharp_2010/
und schon etwas Älter (enthält daher nicht letzten Neuerungen der Sprache, braucht man aber eh nicht so schnell)
http://openbook.galileocomputing.de/csharp/
« Letzte Änderung: 03.April.2012, 07:05 von FG28_Kodiak »

Offline SkyDog

  • Administrator
  • Blasenteetrinker
  • *****
  • Beiträge: 882
    • http://www.sturmovik.de
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #7 am: 03.April.2012, 08:58 »
Whä kenn ich auf englisch. Taugt in meinen Augen nichts, es sei denn man steht auf diese Art der Präsentation, ich tue es nicht, ist mir in der Aufmachung zu nervös und der Lesefluss wird zu oft unterbrochen. Ich schließe mich dieser Amazon 1 Stern Rezension an:
Tut mir leid, das Buch ist:
- total unübersichtlich
- die Workshops darin unvollständig und zu schwierig
- als Nachschlagewerk nicht geeignet
- hat wenig Inhalt für die vielen Seiten
- dient eher zur Verwirrung
Gerade Nachschlagewerk ist ein gutes Stichwort, am Anfang sucht man oft bestimmte Befehle bzw. Anwendungsbeispiele und da sucht man in diesem Buch vergeblich.
Eventuell ist es sinnvoll sich dieses Buch erst mal zur Ansicht zukommen zu lassen, ob man damit zurecht kommt.

Dem kann ich leider nur bedingt folgen. Ich finde die Reihe zum einsteigen sehr gut. Vieles ist bildlich dargestellt und lässt einen Dinge somit besser verstehen. Sicher wird es dadurch etwas nervöser und hat mehr etwas von einem Bilderbuch, aber das erleichtert mir persönlich viele Dinge. Das es kein Nachschlagewerk ist, da stimme ich dir zu. Aber sowas brauche ich als erstes Buch auch noch nicht. Und wenn ich das Bilderbuch durchgearbeitet habe, kann ich mir immernoch ein zweites zum Nachschlagen kaufen.
"Ich hätte gerne zwei Martini." "Dry?" "Nein, zwei."
________________________________________
System: i2700K @ 3,5Ghz, 16 Gig RAM, NVidia GTX460, Asus Xonar D1, Windows 10 Pro 64 Bit, 22Zoll 1920x1200

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #8 am: 03.April.2012, 09:13 »
Du hast das Buch noch nicht aber kannst es nicht nachvollziehen  ;D.
Wie schon gesagt, ich persönlich kann nichts damit anfangen, andere vielleicht schon, deswegen sollte man es sich auch vor dem Kauf ansehen. Ich persönlich brauch keine Bildchen, sondern kurze prägnante Beispiele die das wesentliche verdeutlichen. Und ich hasse es ewig in irgendwelchen Textwüsten danach zu suchen.

Offline SkyDog

  • Administrator
  • Blasenteetrinker
  • *****
  • Beiträge: 882
    • http://www.sturmovik.de
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #9 am: 03.April.2012, 09:27 »
Ich habe aber die Java-Version. Und habe die C# Variante zumindest in der Bücherei mal angelesen.  ;D Geschmäcker sind ja zum Glück verschieden .....
"Ich hätte gerne zwei Martini." "Dry?" "Nein, zwei."
________________________________________
System: i2700K @ 3,5Ghz, 16 Gig RAM, NVidia GTX460, Asus Xonar D1, Windows 10 Pro 64 Bit, 22Zoll 1920x1200

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #10 am: 03.April.2012, 09:39 »
In dem Punkt sind wir uns einig  ;D

Offline JG2001_Eule1

  • Hallenfeger
  • **
  • Beiträge: 16
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #11 am: 23.April.2012, 13:20 »
Hallo Kodiak, wann geht es weiter. Habe mir das Buch bestellt und Visual Express installiert. Ansonsten von dem Thema Null Ahnung, will aber vernüftige Missionen basteln.
Hoffe die Investion wird kein Schuss in den Ofen. Mein einziges geschriebenes Programm war das übliche von Grad Celsius in Fahrenheit um zu  rechnen. Das war allerdings 1988, seit dem nix mehr. Bin gespannt was kommt. Ein großes Danke schön bis hier hin und hoffe auf eine Fortsetzung der Serie.

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #12 am: 23.April.2012, 13:54 »
Momentan warte ich wie die meisten auf den Patch, danach geht es weiter, kann ja sein das sich etwas ändert  ::)

Offline JG2001_Eule1

  • Hallenfeger
  • **
  • Beiträge: 16
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #13 am: 23.April.2012, 20:02 »
Da hast du Recht. Hinterher war alle Mühe vergebens.

Offline Der Depp

  • Flugschüler
  • ***
  • Beiträge: 119
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #14 am: 21.Mai.2012, 23:09 »
Hier mal eine Rückmeldung von mir: Die Möglichkeiten, die C# und .NET bieten, begeistern mich, mit der objektorientierten Programmierung tue ich mich allerdings noch etwas schwer. SharpDevelop scheint hingegen für meine Zwecke vollkommen ausreichend zu sein, ich konnte bislang kaum Unterschiede zu Visual C# Express 2010 feststellen.

Im Moment sitze ich allerdings an einem Problem, für das ich bislang im Netz noch keine Lösung gefunden habe (ich hoffe Fragen zu C# sind hier nicht allzu offtopic): Ich möchte eine komplexere numerische Berechnung durchführen und die Zwischenergebnisse graphisch darstellen. Dazu zeichne ich die Ergebnisse erst in eine Bitmap und lasse diese dann im Paint-Ereignis zeichnen. Das ganze sieht dann (gekürzt) so aus:


//---------------------------

public MainForm()
{
   InitializeComponent();
}

void MainFormLoad(object sender, EventArgs e)
{
  /*
  *       
  *  Schnipp
  *
  */
 
   Graphics graphicsBitmap;
   myBitmap = new Bitmap(this.ClientRectangle.Width,
            this.ClientRectangle.Height,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);
   
   graphicsBitmap = Graphics.FromImage(myBitmap);
   graphicsBitmap.Clear(Color.White);
   
   for (cimag=ystart; cimag<yend; cimag+=step)
   {
      for (creal=xstart; creal<xend; creal+=step)
      {
        /*
        *  Berechnung...
        */                       
         graphicsBitmap.FillRectangle(** Parameter... **);
         this.Invalidate();
      }
   }
}

void MainFormPaint(object sender, PaintEventArgs e)
{
   Graphics graphicsObj = e.Graphics;
   graphicsObj.DrawImage(myBitmap, 0, 0, myBitmap.Width, myBitmap.Height);
   graphicsObj.Dispose();
}

//---------------------------


Das Problem hierbei ist, daß das Programm erst die ganzen Berechnungen durchführt und erst am Ende zeichnet. Angeblich soll die Methode "Invalidate()" einen Aufruf der Paint-Methode erzwingen, das funktioniert hier aber nicht.

Was mache ich falsch?

Offline Daedalus

  • Flugschüler
  • ***
  • Beiträge: 199
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #15 am: 22.Mai.2012, 08:59 »
Ich bin nun alles andere als ein C#-Experte, aber wenn ichs richtig überblicke markiert Invalidate() das Control und alle Children erstmal nur als "updatebedürftig", schickt aber noch kein WM_PAINT ans System. Um WM_PAINT zu schicken (und damit zu zeichnen) müsste, glaube ich, anschliessend noch Control.Update() aufgerufen werden.

Kodiak kann dir da aber sicher eine sehr viel fundiertere Auskunft geben.  :)


P.S.:
Rund ums Programmieren fällt mir das C-plusplus Forum ein, guck dort doch mal ins Unterforum C# und .NET im Abschnitt Programmiersprachen.

http://www.c-plusplus.de/forum/

Offline Der Depp

  • Flugschüler
  • ***
  • Beiträge: 119
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #16 am: 22.Mai.2012, 23:54 »
Vielen Dank für Deine Antwort. Leider bringt Control.Update() auch nicht den gewünschten Erfolg, ebensowenig wie Refresh().  :(

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #17 am: 23.Mai.2012, 07:07 »
Control.Refresh() ist eigentlich nichts anderes als

Control.Invalidate();
Control.Update();

Invalidate() markiert ein Control als "Updatebedürftig", das Update wird dann ausgeführt wenn die Anwendung Idle ist, d.h. wenn gerade keine Messages anstehen. Das Neuzeichnen kann man aber mit Update() erzwingen.

http://blogs.msdn.com/b/subhagpo/archive/2005/02/22/378098.aspx


Offline Der Depp

  • Flugschüler
  • ***
  • Beiträge: 119
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #18 am: 23.Mai.2012, 22:57 »
Vielen Dank für die Erläuterungen, aber Invalidate, Update sowie Refresh zeigen in jeder beliebigen Kombination keinerlei Wirkung.

Gebe ich Control.Invalidate ein, erhalte ich folgende Fehlermedung:

"Für das nicht statische Feld, die Methode oder die Eigenschaft "System.Windows.Forms.Control.Invalidate()" ist ein Objektverweis erforderlich."

Deswegen habe ich auch this.Invalidate() geschrieben, aber wahrscheinlich mache ich hier einen grundsätzlichen Denkfehler.

Offline III./JG27_Culli

  • Hallenfeger
  • **
  • Beiträge: 39
Re: [Scripting for Dummies RELOADED] - Vorbereitungen
« Antwort #19 am: 29.Juni.2012, 09:17 »
Wann geht es denn weiter ?  ;D