Autor Beitrag
Strike55
Hält's aus hier
Beiträge: 8

WinXP
D7 Pers
BeitragVerfasst: Sa 17.01.04 00:31 
Hallo allesammt
Erstmal will ich sagen, dass (wie man es sieht) es hier mein erster Post ist. Ich hab aber auf diesem Board schon sehr viele Antworten gefunden. Jetzt hab ich mich endlich auch registriert und kann euch jetzt auch etwas sagen:
Respekt Leute und weiter so !!! :wink: :P
Gut. Jetzt kommt mein Thread. Ich plane gerade n 2d Game. Das soll so aussehen : Ein Spielfeld, bestehend aus 80 aneinander geordnete Bilder (73*73) . Links und rechts davon soll jeweils ein Dorf stehen (das besteht dann aus 4 oder 5 Häusrn, die außerhalb vom Spielfeld stehen -> Hauptquartier, Kaserne, Spezialeinheitenkaserne, Markt) Ach ja, das soll n rundenbasierendes Multiplayer strategie Spiel werdn. Man schickt dann seine Einheiten rundenweise auf dem Feld her und kämpft gegen den Gegner :D und bekommt dadurch auch Punkte...:wink:

Codemäßig sieht es so aus :
Pro Spieler ein arrey für die Einheitenposition für y coordinatoren, eins für x (wobei es da nicht um pixl geht sondern um Kästchen (-> 80 Bilder<-))
Dann noch eins für die stärke, entweder den Wert 1 oder 2 (Das heisst normale od spezialeinheit)

So jetzt mein Prob:
Wie lass ich nachprüfen ob auf einem Feld eine gegnerische Einheit steht, welche Stärke diese hat und so weiter. Ich glaub da hört die Idee mit den Kästchen nämlich auf, oda?


Also ich hoff das war für den 1. Thread nicht zu viel,
Ich hoffe ihr könnt mir helfen
Thx Strike[/b] :wink:


[Added]
Wenn übrigens jemand gut zeichnen kann, wär ne Meldung sehr nett. Ich brauch 4 (bzw 8) verschiedene Häuserfassaden (Wichtig : Soll bloß keine aufwendige Perspektive sein. Das Game soll lustige ABER Simple Graphiken haben. Naja, is aber noch nicht für sofort (Hab bisher selber welche "gemalt" :D )


Zuletzt bearbeitet von Strike55 am So 18.01.04 13:40, insgesamt 1-mal bearbeitet
Seniman
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 42


D6 Pers
BeitragVerfasst: Sa 17.01.04 11:44 
Hallo Strike55,

um zu überprüfen, was für eine Figur in einem Feld steht, hast du zwei Möglichkeiten:

Entweder gehts du in einer for-Schleife alle Einheiten durch und prüfst, ob sie in dem gefragten Feld stehen.
Oder du legst noch einen zweidimensionalen Array, in dem du für jedes Feld speicherst, was für eine Figur in dem Feld steht. Diesen Array müsstest du nach jedem Zug aktuallisieren.

Die erste Möglichkeit dauert etwas länger, wenn auch nur minimal. Dafür braucht die zweite mehr Speicher. Bei den kleinen Ausmaßen, die das Spielfeld hat, ist es aber fast egal, wie du das machst.

Grüße
Seniman
Strike55 Threadstarter
Hält's aus hier
Beiträge: 8

WinXP
D7 Pers
BeitragVerfasst: Sa 17.01.04 15:09 
Ja danke!
Meine Befürchtung war halt bei 80 Felder, dass ne attacke irre lahm wird :?!?:
Aber wenn du meinst, dass das geht...
Thx Strike
Strike55 Threadstarter
Hält's aus hier
Beiträge: 8

WinXP
D7 Pers
BeitragVerfasst: So 18.01.04 13:54 
Hallo Ich hab noch ein Problem :(
Ich hab mich auch schon umgesehen im forum, hab aber diesmal keine zutreffende Antwort gefunden:
Ich will in einer for-schleife eine "pause" einlegen, um auf ein klick-event des Spielers zu warten (es geht um die Bewegung einer Einheit)
Der bisherige Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TFrm_Polenalarm.Bt_Bewegen_DeClick(Sender: TObject);
var n:integer;
begin
  Bt_Steuerung_De_Oben.Enabled:=true;     //  Unwichtig,
  Bt_Steuerung_De_C.Enabled:=true;        //  is nur optisch.
  Bt_Steuerung_De_Unten.Enabled:=true;    //  Das ist das Steuerpult
  Bt_Steuerung_De_Links.Enabled:=true;    //  zum steuern der Einheit
  Bt_Steuerung_De_Rechts.Enabled:=true;   //  JaJa... :)
  
  for 0 to De_einheiten_anzahl -1 do
    Lbl_NameEinheit_De.Caption:= 'Feld'+ De_einheiten_position[n,1]+De_einheiten_position[n,2];  // Anzeigen des Feldes wo die Einheit steht
    n:=n+1;   //Zum zählen

end;


Wie soll ich da jetzt ne Pause machen bis der Spieler einen der Buttons drückt (Bt_Steuerung_De_Oben, Bt_Steuerung_De_C, Bt_Steuerung_De_Unten, Bt_Steuerung_De_Links, Bt_Steuerung_De_Rechts) ???

Danke für eure Hilfe !

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
umpani
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 389



BeitragVerfasst: So 18.01.04 14:23 
Wenn ich das ganze richtig verstehe, geht das SPiel alle Spielereinheiten durch und du willst, daß der Spieler bei jeder Einheit eine Eingabe machen muß, oder z.B: auf "Nächste Einheit" klickt.

Dies macht das ganze jedoch relativ eingeängt. Ich als Spieler, möchte z.B. am Anfang der Runde eine FIgur überspringen weil ich diese erst am Ende der Runde bewegen möchte (Taktik).

Du solltest also nicht alle figuren in einer For-Schleife durchgehen,, sondern den Spieler die Figur auswählen lassen, die er bewegen will. In der Datenstruktur der Figur sollte dann hinterlegt werden, ob sie schon bewegt wurde, oder nicht.

Gruß Umpani

_________________
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius
Strike55 Threadstarter
Hält's aus hier
Beiträge: 8

WinXP
D7 Pers
BeitragVerfasst: So 18.01.04 19:08 
Stimmt, du hast das Spiel genau verstanden :D

Damit wird alles einfacher!!!
Der Spieler kann einfach das Feld anklicken, indem eine Einheit steht und dann wird gefragt in welche Richtung diese bewegt werden soll.
Wieso bin ich nicht darauf gekommen, ach ja genau:
Ich muss dafür 80 mal die ganze Abfrage scripten (für jedes Feld 1x), da der Spieler ja auf jedes mögliche Feld klicken kann... :autsch:


Nagut dann auf in den Script :lol:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var De_auswahl_x, De_auswahl_y: integer;
 
Procedure click // Hab kein bock das jetzt auszuschreiben, jedenfalls klick auf ein Feld
begin
if Rot_00.visible=true then  //Rot_00 ist das bitmap der Einheit auf dem Feld (0|0). Ich hab des halt so genannt..
begin  
  Lbl_NameEinheit_De.caption:=00;  // Um anzuzeigen welches Feld man ausgewählt hat
  De_auswahl_x:=0;
  De_auswahl_y:=0;
end
end;


So, das mach ich jetzt für jedes Feld.
Wie kann ich jetzt, nachdem der Spieler eine Richtung ausgewählt hat, die Koordinaten der Einheit mit denen im 2d array vergleichen, um somit die Position der Einheit im array zu finden, oder brauch ich das array jetzt garnicht mehr ?:?!?: Reicht es auch wenn ich nur noch mit 'if' und 'visible' arbeite?
Thx Strike

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
umpani
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 389



BeitragVerfasst: So 18.01.04 19:15 
ARGHHHHHHHHHHHHHHHHHHHHHHH. Bist Du denn wahnsinnig geworden? :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:


80 mal das selbe schreiben? "Schüttel"

Das geht doch auch einfacher!!!!

du besorgst dir die Cursorkoordinaten - sagen wir mal der Cursor steht bei x=403, y=233 (des gesamten (vollbild) Bildschirms).

Auf dem Bildschirm fängt dein Spielfeld sagen wir mal 40 Pixel von links und 80 Pixel von Oben an.

Also ist die Maus im Spielfeldbereich bei x - 40 und y - 80 (in meinem Beispiel also bei x=363 und y=153.

Dann rechnest du einfach x durch (div) 73 (deine Feldgröße) und
y div 73

und schon hast du die x und y Werte des Feldes auf dem du mit deiner Maus bist.


Gruß Umpani

_________________
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius
umpani
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 389



BeitragVerfasst: So 18.01.04 19:19 
Un den zweiten Teil Deiner Frage kann ich so nicht beantworten. Du müßtest Dafür mal den Code posten, oder besser als Quelltext zum Download stellen.

Gruß Umpani

_________________
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius
Strike55 Threadstarter
Hält's aus hier
Beiträge: 8

WinXP
D7 Pers
BeitragVerfasst: So 18.01.04 19:28 
Ok
Code kommt, muss nur noch Platz finden...
Strike55 Threadstarter
Hält's aus hier
Beiträge: 8

WinXP
D7 Pers
BeitragVerfasst: So 18.01.04 21:37 
Strike55 hat folgendes geschrieben:
Ok
Code kommt, muss nur noch Platz finden...


Ok Code up !
Ich muss hinzufügen, dass das eine grafisch-vorläufige Version ist. Die Idee übrigens auch, sie stammt von einem Freund.
Hier der Link: [url=www.strike55.de.tc]Projekt[/url]

Die Seite besteht nur aus einer Textlinie und dem Link.
Thx Strike