Autor Beitrag
P-A-L
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.03.09 12:56 
Hallo zusammen,

vor einiger Zeit hatte battledevil unter www.delphi-library.d...Artillery_51745.html ein wunderbares Tutorial für einen Artillery/Scorch-Clone gepostet.

Der dort gezeigte Quelltext weist jedoch ein paar Bugs auf:
- Die Landschaft wird vom "gepimpten" Himmel überzeichnet
- Es wird nur das Rohr des jeweils aktiven Panzers gezeichnet

Ich habe diese korrigiert und ein paar Verbesserungen eingefügt:
- Die Panzerung der Panzer wird auf der Seite angezeigt, auf der sich diese befinden
- Der Winkel des Rohres wird "in Richtung des Gegners" angezeigt
- Ein Log schreibt wichtige Ereignisse mit
- Der Schaden berechnet sich nach der Entfernung zur Explosion

Ich möchte das Programm gern mit anderen Nutzern Teilen, daher poste ich es hier. Ich hoffe, battledevil hat nichts dagegen, ihm gebührt schließlich das Copyright. :)

Wenn ihr den (auskommentierten) Himmel irgendwie funktionstüchtig machen könnt oder sonst Vorschläge zur Verbesserung habt, her damit!

Grüße

P-A-L

EDIT:

Neue Version 1.1 beinhaltet einige Änderungen, die meine "Tester" angeregt haben... :)
- Rundenzählung (wichtig für Log)
- Fallschaden (wenn Panzer herunterfällt)
- Schaden durch direkte Treffer stark erhöht
- Log ist jetzt scrollbar
- Schnellere Schussdarstellung
- Panzerung wird auch als "Lebensbalken" angezeigt
- Wind wird in Pfeilform dargestellt
- Alle Labels mit Fettdruck, um Schrift besser Lesen zu können

Weiterhin gewünscht werden Vorschläge, wie folgende "Features" implementiert werden könnten:
- Farblich abgestufter Himmel
- Herunterfallen der Teile der Landschaft, welche "in der Luft hängen"

EDIT2:

Neue Version 1.2 behebt einen Bug und fügt etwas Funktionalität hinzu:
- Bug in Fallschadenberechnung (Höhenunterschied wurd immer zum roten Panzer berechnet, auch wenn Blau fiel) behoben
- Vollständig über Tastatur spielbar (leider nicht mehr mit der Maus)
- 'A'-Taste schaltet Cheat-Modus an/aus (Fadenkreuz zeigt Einschlagpunkt bei gegenwärtigen Einstellungen)
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von P-A-L am Mi 25.03.09 18:23, insgesamt 2-mal bearbeitet
P-A-L Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.03.09 21:47 
Neue Version hochgeladen...

Dateien und Changelog siehe erster Post! :)

Hat irgendjemand eine Idee, wie man die Teile der Landschaft, welche "in der Luft hängen", herunterfallen lassen könnte?
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 24.03.09 21:59 
Sieht doch schon ganz gut aus.

Einige Vorschläge:
- Bitte häng im ersten Post einen Screenshot mit an
- "Form1" als Titel ist unschön ;)
- Formular sollte meiner Meinung nach in der Mitte des Bildschirms starten (TForm.Position auf poScreenCenter setzen)
- Ich fänds toll, wenn man das Spiel rein mit der Tastatur steuern könnte. Also z.B. mit den Cursortasten den Winkel + Geschwindigkeit einstellen, mit Leertaste schießen oder so.
- Eine KI oder Multiplayer über Netzwerk wär toll :D In dem Zusammenhang vielleicht auch direkt mehr Spieler.
- Vielleicht auch verschiedene Waffen, mit unterschiedlicher Feuerkraft

Und noch zu deinem Code:
- Hat das einen Grund, dass du immer 4 mal einrückst? "Standard" sind 2.

_________________
PROGRAMMER: A device for converting coffee into software.
P-A-L Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.03.09 22:39 
user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
Sieht doch schon ganz gut aus.

Einige Vorschläge:
- Bitte häng im ersten Post einen Screenshot mit an
- "Form1" als Titel ist unschön ;)
- Formular sollte meiner Meinung nach in der Mitte des Bildschirms starten (TForm.Position auf poScreenCenter setzen)
- Ich fänds toll, wenn man das Spiel rein mit der Tastatur steuern könnte. Also z.B. mit den Cursortasten den Winkel + Geschwindigkeit einstellen, mit Leertaste schießen oder so.
- Eine KI oder Multiplayer über Netzwerk wär toll :D In dem Zusammenhang vielleicht auch direkt mehr Spieler.
- Vielleicht auch verschiedene Waffen, mit unterschiedlicher Feuerkraft

Und noch zu deinem Code:
- Hat das einen Grund, dass du immer 4 mal einrückst? "Standard" sind 2.


Vielen Dank für Deine Anregungen!

- Das mit dem Titel und dem Startort des Formulars ist mir auch aufgefallen, aber das hab ich dann im Eifer des Gefechts vergessen zu ändern... Ist nun geändert und zusammen mit einem Screenshot im ersten Post! Danke!!!
- Tastatursteuerung... Hmm, das ist natürlich eine Idee! Danke!
- KI ist schwierig, da die ja theoretisch den optimalen Schuss berechnen könnte und so immer träfe. Da könnte man mit Wahrscheinlichkeiten etwas reißen... Mal sehen. Multiplayer über Netzwerk - ich habe null Ahnung von Socket-Programmierung, hab aber schon Tutorials für Chats hier gesehen, daher ist das wohl prinzipiell kein Problem... Das ist dann aber sicher was für später...
- Mehr Spieler... Darüber hatte ich auch schon nachgedacht. Das zerstört natürlich das ganze derzeitige Interface-Konzept. Aber mehr Spaß macht das schon... Ich denke, das werde ich mal testen!
- Mehr Waffen - die Idee ist gut, aber was sollen die Unterschiede sein, so dass das auch "balanced" ist? Oder meinst du kaufbare Einweg-Superwaffen wie taktische Nuklearsprengköpfe (Explosionsradius*3) oder Streubomben (3 Geschosse statt einem)?
- Einrückungen: Jaaa, die waren schon in dem Quelltext des Originals von battledevil... Da hab ich sie durch copy-paste mitgeschleppt. War mir dann zu aufwändig die alle manuell zu stutzen...

Mein Hauptanliegen zur Zeit ist die Frage, warum der Himmel in der ursprünglichen Fassung den ganzen Bildschirm übermalt hatte... Ich hab das für meine Version einfach auskommentiert, aber das Ergebnis ist etwas langweilig...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TForm1.SpielfeldZeichnen();
var i:integer;
begin
//    with Buffer.Canvas do
//    begin
//        for i:=1 to 600 do
//        begin
//            Pen.Color:=RGB(255 - i div 3, 255 - i div 3, 255);
//            MoveTo(0,i);
//            LineTo(800,i);
//        end;
//    end;

    Buffer.Canvas.Draw(0,0,Landschaft);

    PanzerZeichnen('rot');
    Buffer.Canvas.Draw(PanzerRot.X-7,PanzerRot.Y-3,Panzer);

    Panzerzeichnen('blau');
    Buffer.Canvas.Draw(PanzerBlau.X-7,PanzerBlau.Y-3,Panzer);

    Image1.Picture.Bitmap:=Buffer;  // Buffer-Bitmap in das Image kopieren

    ZeichneKanonen;
end;


Zuletzt bearbeitet von P-A-L am Di 24.03.09 22:59, insgesamt 1-mal bearbeitet
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 24.03.09 22:58 
Hab grad nochmal den Quellcode durchgeschaut. So auf Anhieb kann ich da auch nichts finden.

Aber noch ne Frage :D Kommst du aus der C Welt? Weil bei Prozeduraufrufen ohne Parameter die leeren Klammern mit dabei stehen ;)
ausblenden Delphi-Quelltext
1:
procedure TForm1.SpielfeldZeichnen();					


Zu den Waffen:
Hm.. kA wie man das lösen könnte.
Hatte zu DOS Zeiten mal ein Spiel.. glaub, das hieß einfach nur "Bomb"? Jedenfalls hat man da für jeden abgeschossenen Gegner Geld bekommen, wofür man sich dann neue Waffen kaufen konnte. Gabs dann so Sachen mit größerer Sprengkraft, aber auch nen Laser, der durch den Berg schießen konnte usw.
Andere Möglichkeit wäre vielleicht, dass alle Spieler gleich viele verschiedene Waffen bekommen - und man die am "klügsten" einsetzen muss?

_________________
PROGRAMMER: A device for converting coffee into software.
P-A-L Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 24.03.09 23:02 
user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
Aber noch ne Frage :D Kommst du aus der C Welt? Weil bei Prozeduraufrufen ohne Parameter die leeren Klammern mit dabei stehen ;)
ausblenden Delphi-Quelltext
1:
procedure TForm1.SpielfeldZeichnen();					


Nein, bin eingefleischter TurboPascaler... :D Die Klammern standen schon im Original, da habe ich einfach den Stil beibehalten. Die machen ja auch nix böses, und irgendwie sieht's für mich auch besser aus, da sieht man gleich dass es eine Methode ist... :)

Hab jetzt einen Screenshot und einige deiner Anregungen in den ersten Post eingefügt.
P-A-L Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 25.03.09 18:29 
Neue Version hochgeladen.

Das Spiel wird jetzt ausschließlich über die Tastatur gespielt, Pfeil_links/rechts ändert Winkel, Pfeil_oben/unten die Geschwindigkeit. Mit Leertaste wird der Schuss abgefeuert. 'A' schaltet den Cheat-Modus an/aus, in welchem der aktive Spieler den Zielpunkt unter den gegenwärtigen Einstellungen angezeigt bekommt. :)

Ich denke ernsthaft über eine KI nach... Wie würdet ihr das Lösen? Optimale Einstellungen finden, dann je nach Schwierigkeit zufällig davon abweichen? Oder Testschuss, Prüfen, merken, nächstes mal mehr/weniger usw.? Was macht die KI, wenn es keine Schussposition gibt (Berg ist im Weg, Wind ist falsch etc.)? Ideen?
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mi 25.03.09 18:39 
Also ich kenne sowas mit Burgen statt Panzern. Da konnte man dann z.B. bis zu drei Kanonen kaufen, Eine Windfahne kaufen, damit die Windstaärke angezeigt wird, ein Munitionsdepot kaufen (Mehr geschwindigkeit), was dann aber auch explodieren konnte, und Öltürme bauen, die mehr Geld bringen.
P-A-L Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 25.03.09 18:49 
user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Also ich kenne sowas mit Burgen statt Panzern. Da konnte man dann z.B. bis zu drei Kanonen kaufen, Eine Windfahne kaufen, damit die Windstaärke angezeigt wird, ein Munitionsdepot kaufen (Mehr geschwindigkeit), was dann aber auch explodieren konnte, und Öltürme bauen, die mehr Geld bringen.


Ballerburg? :D

Ich habe als Kind immer Scorched Earth gespielt, das war mit bis zu zehn Panzern und jeder Menge Waffen. Ich bin dann über das Tutorial von battledevil gestolpert und hab mich riesig gefreut, nur leider funktionierte sein Quelltext bei mir nicht richtig. Irgendwie hab ich mich dann in die Aufgabe verbissen, aus dem alten Rohbau ein funkelndes neues Spiel zu machen! :) Mal sehen, wie weit ich komme.

Wenn jemand noch Ideen hat (vor allem bzgl. des Himmels und der herabfallenden Landschaft), bitte postet sie!!! Müssen keine ausgefeilten Quelltexte sein, ich brauch nur Ideen!
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 25.03.09 19:07 
ich war mal dabei eine KI für das spiel zu schreiben, vl. find ich den quelltext irgendwo dann kann ich ihn dir posten. ;-)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
P-A-L Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Do 26.03.09 18:57 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
ich war mal dabei eine KI für das spiel zu schreiben, vl. find ich den quelltext irgendwo dann kann ich ihn dir posten. ;-)

lg elundril


Gern, immer her damit! :)

Wenn du sie nicht findest, weißt du noch nach welchen Prinzipien sie gearbeitet hat?