| Autor |
Beitrag |
´|` R /\ I | ) O $
      
Beiträge: 62
|
Verfasst: Sa 05.04.08 11:29
Hoi, ich hätte da mal ne Frage:
Ich bin grad am schreiben von nem kleinen Spiel. Dazu wollte ich folgendes machen, ich weiß aber nich genau, wie ich das in Delphi umsetzen kann, vlt. kann mir da jmd. n Hinweiß geben, oder sogar n Quelltext. Danke schonmal im Vorraus!
Ich wollte:
Einen ganzen Haufen an Buttons nebeneinander, untereinander ect. machen und diese als Felder nehme, auf denen sich ein Charakter vortbewegen kann. Jetzt wollte ich, dass sich der Charaker immer nur auf ein Feld, dass direkt an seins angrenz bewegen kann, also nich hin-und herspringen kann. Zudem wollte ich, dass auf dem Button dann n Zeichen, oder n Wort is, dass man sieht, dass man dort ( Charakter ) steht.
THX
Moderiert von Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 05.04.2008 um 11:33
Zuletzt bearbeitet von ´|` R /\ I | ) O $ am Sa 05.04.08 11:34, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 05.04.08 11:32
Hallo und  ,
bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
| 1.2 Beiträge: | | Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...] |
Einfach oben bei Deinem ersten Beitrag auf  oder  klicken und den Titel ändern. Danke Dir!
Viele Grüße,
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: Sa 05.04.08 11:35
Danke!
Besser der Name?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 05.04.08 11:40
Japp, jetzt ist der Titel besser.
Die Buttons würde ich in einem Array verwalten. Darin kannst Du dann recht einfach mit ein oder zwei Schleifen (je nachdem, ob das Array ein- oder zweidimensional ist) durchgehen und abfragen, welcher Button direkt an den Charakter angrenzt. Bei allen anderen setzt Du buttonX.Enabled := false;
Eigentlich gilt hier pro Frage ein Thread, aber die zweite Frage beantworte ich ganz kurz. button1.Caption := 'hier';. Damit setzt Du den Text eines Buttons. Bei Nachfragen dazu aber bitte einen neuen Thread aufmachen. Danke! 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: Sa 05.04.08 12:08
:-/
Mir stellt sich dann grad die Frage, wie genau ich das machen soll *ist grad leicht verwirrt*
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 05.04.08 12:11
Wie weit bist Du denn gekommen? Probier's doch mal selber und wenn Du nicht weiter kommst, fragst Du nochmal konkret nach. Da lernst Du auf jeden Fall mehr bei 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: Sa 05.04.08 13:40
Ich versteht grad nich, wie ich dein Beispiel so umschreibe, dass ich von Button zu Button "laufen" kann, wobei halt nur die Felder, die direkt angrenzen begehbar sind.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 05.04.08 13:42
Dazu musst Du erst einmal erklären, wie das Laufen funktionieren soll. Soll der Spieler auf einen Button klicken, damit der Charakter dorthin läuft?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: Sa 05.04.08 13:57
Ja. Also er steht auf dem Anfangsfeld und wenn er dann auf den Button rechts daneben klickt, dann "lauft" er dorthin. Es steht dann auf dem geklickten Button z.B. "Du", damit man weiß, wo man ist.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 05.04.08 14:17
Welche Gedanken hast Du Dir dazu gemacht, wie das funktionieren könnte?
Und an welcher Stelle hakt es jetzt?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: Sa 05.04.08 14:23
Ich dachte mir das so:
Wenn ich auf den Button klicke, dann "wandert" das "Du" ( Angabe wo man sich befindet ) auf das geklickte Feld ( Button ). Dabei muss aber ne Festlegung erfolgen, dass ich nich auf ein Feld, was ewig weit weg ist springen kann. Also müssten alle, die nicht direkt angrenzen "abgesperrt" werden und wenn man n Feld geht, muss sich die Grenze ja verändern.
Das Problem wo ich hänge is im Moment die Grenze zu setzen.
Das "Du" wandern lassen hab ich schon eingebaut.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 05.04.08 14:35
Du brauchst die Koordinaten des Buttons, auf den geklickt wird und die Koordinaten des Buttons, wo das "Du" aktuell steht. Und die dürfen nicht zu weit auseinander sein. Wenn Du wie in dem Link von mir beschrieben die Buttons im Quellcode erzeugst, kannst Du die Koordinaten direkt bei der Erstellung in der Tag-Eigenschaft des Buttons speichern.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
IceBube
      
Beiträge: 231
|
Verfasst: Sa 05.04.08 15:06
Hallo!
Also ich würde das so machen:
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: 26: 27: 28: 29:
| procedure TForm1.Button1Click(Sender: TObject); var Sprung : integer; Default : TButton; begin Default := (Sender As TButton); Sprung := Default.Tag - Start;
if Sprung < 0 then Sprung := Sprung * (-1);
if (Sprung = 1) or (Sprung=4) then begin
Button.Caption := '';
Start := Default.Tag; Button := Default; Button.Caption := 'Du'; end;
end; |
Form onCreate
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.FormCreate(Sender: TObject); begin Start := 1; Button := Button1;
end; |
//
Wie schon im Code erwähnt, ist dabei wichtig die Tags von den Buttons!
Im Public/Private bereich noch zwei Variablen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure FormCreate(Sender: TObject); private public Start : integer; Button : TButton; end; |
lg
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Sa 05.04.08 15:28
Hi,
Hier einmal eine überarbeitete Version:
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: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure TForm1.Button1Click(Sender: TObject); var Sprung: Integer; Default: TButton; begin Default := (Sender as TButton);
Sprung := Default.Tag - Start;
if Sprung < 0 then Sprung := -Sprung;
if Sprung in [1, 4] then begin Button.Caption := '';
Start := Default.Tag; Button := Default; Button.Caption := 'Du'; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin Start := 1; Button := Button1;
end; |
Wie schon im Code erwähnt, ist dabei wichtig die Tags von den Buttons!
Im Public/Private bereich noch zwei Variablen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure FormCreate(Sender: TObject); private public Start : integer; Button : TButton; end; |
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: So 06.04.08 11:38
Ok, nur jetzt stellt sich mir die Fragem wie ich die "Tags" zuweisen kann mit den Zahlen. :-/
Edit: Die Buttons brauch ich nich erzeugen, die hab ich schon fest eingebaut.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 06.04.08 12:08
Hi,
Die Variable "Start" entfällt, die sie ja immer gleich des Tags des Buttons ist.
Wenn du die Buttons nicht automatisch erstellen willst, musst do wohl von hand die einzelnen Bittons anklicken und im opject inspector unter properties "Tag" auf den jeweiligen wert setzen.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: So 06.04.08 12:25
Ok, hab ich jetzt gemacht.
Bei mir sieht es momentan so aus:
Quelltext 1: 2: 3:
| XX X Meine erstellte Karte: XXXXX |
Und so weiter
Start ist ganz links unten in der Ecke.
Quelltext dazu:( laufen war im oberen Bsp. "Sprung" )
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button9Click(Sender: TObject); var laufen:Integer; default:TButton; begin Default:=(Sender as TButton); laufen:=Default.Tag-1; if laufen<0 then laufen:=-laufen; if laufen in [1,4] then begin Button9.Caption := ''; laufen:=Default.Tag; Button9:=Default; Button9.Caption:='Sie'; end; |
Er startet das Programm, aber es geht nich :-/
Moderiert von Christian S.: Delphi-Tags hinzugefügt
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 06.04.08 12:38
Hi,
Bitte verwende Delphi-Tags für deine Code-Beiträge:
Quelltext 1:
| <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG17050fc2ca09bd6452a71dfc8cb7a33c}</span></span> |
Hier einmal der Quelltext in formatierter und überarbeiteterVersion:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button9Click(Sender: TObject); var laufen: Integer; default: TButton; begin Default := (Sender as TButton); if Abs(Default.Tag - 1) in [1, 4] then begin Button.Caption := ''; Button := Default; Button.Caption := 'Sie'; end; |
Dann noch: gehr nicht ist keine Fehlerbeschreibung. Was genau passiert?
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
´|` R /\ I | ) O $ 
      
Beiträge: 62
|
Verfasst: So 06.04.08 13:03
k.A., warum es nicht geht.
Ich hab den überarbeitetet jetzt reingemacht, aber schonwieder passiert nix.
Es kommt nichtmal das "Du", wenn ich auf nen Button klicke.
Wäre super nett, wenn einer mal 3 Buttons, oder so sich erstellen würde und das mal testet, weil ich komm überhaupt garnich weiter im Moment.
Wenn es klappt, bitte mal posten.
Keiner ne Idee?
THX
|
|