Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Spiel wie Pokemon (https://www.delphipraxis.net/159105-spiel-wie-pokemon.html)

Yakiniku 14. Mär 2011 19:58

Spiel wie Pokemon
 
Hey Leute,
Ich bin dabei ein Spiel wie Pokemon zu programmieren doch ich habe ein paar Probleme und finde dafür keine Lösung
1.Ich schaffe es nicht Images von allein (also ohne Tastendrück) bewegen zu lassen.
2.Ich weiss nicht wie ich Images undbegebar machen kann(Ich habe ein Pokecenter gemacht wo mein Hauptcharakter aber drüber läuft.
3.Ich habe einen kleinen Kampfmodus eingebaut und möchte,dass wenn ich auf einen Button (mit dem namen einer Attacke) drücke Von einer Caption eines Buttons mit der Zahl 100 eine bestimmte Zahl wie 2 oder 3 abgezogen.
Ich hoffe ihr könnt mir Helfen
Bis dann,
Yakiniku

-187- 14. Mär 2011 20:09

AW: Spiel wie Pokemon
 
Basics, Basics, Basic :)

1. Auf welches Ereignis sollen sich die Images denn bewegen ?
2. Wie bitte? Glaub bitte nicht das jeder weiss was ein Pokecenter ist :P
3. Label1.Caption:=IntToStr(Lebenspunkte-KampfAttacke); // Lebenspunkte und KampfAttacke vom Typ Integer

Yakiniku 15. Mär 2011 12:46

AW: Spiel wie Pokemon
 
also nen pokecenter ist einfach nen haus und das wollt ich nicht begehbar machen
und die images sollen sich ohne tasten druck nach rechts und links bewegen ich hab es bisher nur mit tasten druck geschaft
und danke für die antwort auf 3.

joachimd 15. Mär 2011 13:19

AW: Spiel wie Pokemon
 
Zitat:

Zitat von Yakiniku (Beitrag 1088600)
also nen pokecenter ist einfach nen haus und das wollt ich nicht begehbar machen

Du teilst Dein komplettes Spielbrett in Kachel auf (zB 3 oder 6 eckig), welche dann bestimmte Eigenschaften haben (zB: über welcher der Ecken kann man diese Kachel betreten/verlassen, wieviele Personen passen auf diese Kachel, ist diese Kachel überhaupt begehbar).
Zitat:

Zitat von Yakiniku (Beitrag 1088600)
und die images sollen sich ohne tasten druck nach rechts und links bewegen ich hab es bisher nur mit tasten druck geschaft

Timer heißt das Zauberwort.

TonyR 15. Mär 2011 13:40

AW: Spiel wie Pokemon
 
Wenn du es wirklich Ernst meinst, dann empfehle ich dir einige Tutorials zu einfacheren Spielen durchzulesen, wenn du dabei etwas nicht verstehst, kannst du immernoch fragen.

Ich will dir hier auf keinen Fall den Wind aus den Segeln nehmen, aber um dir helfen zu können bedarf es schon einem gewissen Basiswissen.

Sieh dir doch z.B. mal folgendes an, die arbeiten da zwar mit OpenGL, aber das Wichtigste wird erstmal unabhängig von der verwendeten Grafikumsetzung erklärt: http://wiki.delphigl.com/index.php/T...und_der_Editor

Edit: Die DP hat scheinbar auch was zu bieten, wo man sich die Methode der Spielfelder ansehen kann http://www.delphipraxis.net/22871-snake-das-spiel.html

Blup 15. Mär 2011 14:04

AW: Spiel wie Pokemon
 
Zitat:

Zitat von Yakiniku (Beitrag 1088472)
1.Ich schaffe es nicht Images von allein (also ohne Tastendrück) bewegen zu lassen.

Von allein passiert garnichts.
Du könntest aber eine TTimer-Komponente auf dein Formular ziehen, das Intervall z.B. auf 100ms einstellen und im OnTimer-Ereignis der Komponente die Images bewegen.

Zitat:

Zitat von Yakiniku (Beitrag 1088472)
2.Ich weiss nicht wie ich Images undbegebar machen kann(Ich habe ein Pokecenter gemacht wo mein Hauptcharakter aber drüber läuft.

Wen man nicht mit Kacheln arbeiten möchte, muss man die Kollision der Objekte untereinander abtesten. Im Prinzip so:
Delphi-Quellcode:
function BewegePokemon(AImagePokemon: TImgage;
  GeschwindigkeitHorizontal, GeschwindigkeitVertical: Integer): Boolean;
var
  DummyRect, NewRect: TRect;
begin
  NewRect := ImagePokemon.ClipRect;
  NewRect.Left  := NewRect.Left  + GeschwindigkeitHorizontal;
  NewRect.Right := NewRect.Right + GeschwindigkeitHorizontal;
  NewRect.Top   := NewRect.Top   + GeschwindigkeitVertical;
  NewRect.Bottom := NewRect.Bottom + GeschwindigkeitVertical;
  Result := not IntersectRect(DummyRect, NewRect, ImagePokecenter.ClipRect);
  if Result then
  begin
    AImagePokemon.Left := AImagePokemon.Left + GeschwindigkeitHorizontal;
    AImagePokemon.Top := AImagePokemon.Top + GeschwindigkeitVertical;
  end;
end;

BewegePokemon(Pikatschu, +1, -2);


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz