Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
12.05.2002, 14:03
bl4ckfire



Hi,

Ich probiere im Moment ein kleines MiniSpiel (nichts ernstes nur zum rumprobieren usw.) zu programmieren, aber leider habe ich einige Probleme.

Das ganze sieht ca so aus...

(So wird die "Map" erzeugt)

arr: array[0..4, 0..4] of integer = ( (3, 3, 3, 3, 3),
(3, 1, 0, 0, 0),
(3, 2, 4, 3, 3),
(4, 2, 5, 3, 3),
(3, 2, 4, 3, 3));
-----
for x := 0 to 4 do begin
for y := 0 to 4 do begin
case arr[x, y] of

0: PaintBox1.Canvas.CopyRect(Rect(x*30, y*30, (x*30)+30, (y*30)+30),
S1.Canvas, Rect(0, 0, 30, 30));
usw.... das sind die Landschaftsbilder (z.B. ein Haus)

Mit den Pfeiltasten kann man ein kleines Bild (Spielfigur) bewegen nun das Problem:
Ich möchte das wenn z.B. die Spielfigur(SF) auf das Feld 0 kommt eine gewisse Aktion ausgeführt wird (z.B. ShowMessage('BlaBlaBla')) mit der Maus hab ich es hinbekommen

Maus:
///
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mousex := X div 30;
mousey := Y div 30;

SantaImg.Left := mousex * 30;
SantaImg.Top := mousey * 30;

if arr[mousex, mousey] = 2 then
ShowMessage('BlaBlaBla');
end;
///

Mit den Pfeiltasten schaff ichs einfach nicht - weis einer wie das gehen könnte ?

Ich weis das ganze was ich geschrieben habe is bissl schwer zu verstehen =P

Thx for help

--

zum Seitenanfang zum Seitenende Profil || Suche
001
12.05.2002, 17:36
snoopdog



Hi
ich programmiere zwar noch nicht lange in Delphi aber ich versuch dir trotzdem mal zu helfen, weil es ja eigentlich in allen Sprachen gleich ist.

Also erstmal wenn du ja mit der tastatur dein "männchen" bewegst machst du ja warscheinlich

if key = vk_left then
begin
x:= x -5;
end;

das dann für die anderen Tasten auch.
so wenn du jetzt auf Feld zwei kommst mach das doch so:

if x = Feld2x an y = Feld2y then
begin
ShowMessage("getroffen oder sonstwas");
end;

oder hab ich deine Frage jetzt nicht verstanden?
bei weiteren Fragen frag einfach!!!

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
002
12.05.2002, 21:15
bl4ckfire



Das Problem ist das es nicht nur 1 Feld Nummer "2" gibt sondern 10 oder mehr gibt deswegen funtzt
if x = Feld2x an y = Feld2y then
begin
ShowMessage("getroffen oder sonstwas");
end;
nicht

--

zum Seitenanfang zum Seitenende Profil || Suche
003
12.05.2002, 21:35
Onkel Dittmeyer



Dann musste das wohl mit "or" abfragen...

--

zum Seitenanfang zum Seitenende Profil || Suche
004
12.05.2002, 23:01
bl4ckfire



Hm ne wenn das z.B. eine 100x100 Felder große Map ist und davon z.B. 500 Tiles Wasser sind dann wird das mit or bisschen viel =P

--

zum Seitenanfang zum Seitenende Profil || Suche
005
13.05.2002, 10:10
TheTinySteini



Hm? Du kannst das doch dann mit div und so weiter genauso machen wie bei der Maus-Steuerung, oder?
Du hast doch die aktuelle Position, die teilst du durch die Plattengröße und nimmst den int-Wert davon. Dann hast du die Platte, auf der man gerade ist. Und dann im Array nachgucken, was das nun für ne Platte ist.

Oder versteh ich da was falsch?

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
006
13.05.2002, 13:22
snoopdog



oder mach doch ne switch verzweigung!! also

case feld of

1: begin
//anweisung
end;
2: begin
//anweisung
end;
....
....

das ist natürlich jetzt eine ergänzung zu dem was ich als erstes geschrieben hab, anstatt if .. then

oder versteh ich jetzt was falsch?

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
007
13.05.2002, 16:47
Another1



jo, genau wie TTT es sagt:

Du hast:
- Playerposition (X,Y)
- Spielfelddaten (als array, (EinFeldWeite, EinFeldHöhe))
- Spielfeldgröße (in pixel oder was auch immer, (width,height))

Du brauchst:
- Spiel'platte' auf der sich der spieler befindet

so, wo is das problem?

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
008
13.05.2002, 20:01
bl4ckfire



Danke ! Habs hinbekommen - war eigentlich sehr leicht... bin wohl auf der Leitung gestanden =P

--

zum Seitenanfang zum Seitenende Profil || Suche