Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Frischling
Administrator
Aber jeder fängt klein an. Mein aktuelles Projekt ist sowas ähnliches wie das eigentlich bei allen bekannten OpenTTD.
Frischling
Was hindert dich denn daran es zu implementieren?
Ich sehe bei dem was du machen willst zwei Aufgaben:
1. Bestimmen welche Felder Straße werden (aka Linie ziehen)
2. Für jedes Feld Straße prüfen ob auf Nachbarfeldern auch Straßen sind, und je nach Konstellation die Straßenart setzen
Zu 1)
Über den Winkel von der aktuellen Position zum Ziel kannst du herausfinden in welche Richtung du gehen musst. Das machst du schrittweise bis du am Ziel bist.
Zu 2)
Ist im Prinzip nur eine Reihe von Überprüfungen um die verschiedenen Konstellationen zu erkennen.
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public static implicit operator Point(POINT point) { return new Point(point.X, point.Y); } [DllImport("user32.dll")] public static extern bool GetCursorPos(out POINT lpPoint); public void DrawLine(PaintEventArgs e) { Pen blackPen = new Pen(Color.Black, 3); POINT lpPoint; GetCursorPos(out lpPoint); e.Graphics.DrawLine(blackPen, lpPoint); } |
Das ist ziemlich genau das Gegenteil von „klein anfangen“. Ich rate dir, mit wirklich einfachen Dingen zu starten.
Das schöne an OpenTTD ist, dass es quelloffen ist. Vielleicht hilft ja ein Blick in den Code um ein wenig Inspiration zu bekommen.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Nox« (17.01.2018, 00:16)
Muss denn die Sprache können um die Grundzüge eines Programms zu verstehen? Hier mal ein Beispiel:
http://earth.uni-muenster.de/~joergs/doc…/bsp/bsp2c.html <- das hier ist Fortran geschrieben. Ich denke man kann so einige Sachen daraus verstehen auch ohne Fortrankenntnisse zu haben.
Außerdem sind c++ und c# nicht sooo ewig weit von einander entfernt...
Frischling
Zitat
C#-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public static implicit operator Point(POINT point) { return new Point(point.X, point.Y); } [DllImport("user32.dll")] public static extern bool GetCursorPos(out POINT lpPoint); public void DrawLine(PaintEventArgs e) { Pen blackPen = new Pen(Color.Black, 3); POINT lpPoint; GetCursorPos(out lpPoint); e.Graphics.DrawLine(blackPen, lpPoint); }
Ist nun etwas unsauber, aber bevor ich Sachen implementiere, programmiere ich sie immer erstmal testweise ausserhalb vom Spiel. Wo sitzt da der Umsetzungs oder Denkfehler in der Linien Zeichnung und Mauserkennung ?
C#-Quelltext |
|
1 2 3 4 5 6 7 |
[DllImport("user32.dll", EntryPoint = "GetCursorPos")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetCursorPos(ref System.Drawing.Point lpPoint); [DllImport("user32.dll", EntryPoint = "ScreenToClient")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool ScreenToClient([In] IntPtr hwnd, ref System.Drawing.Point lpPoint); |
Werbeanzeige