AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Spiel - Figur soll nicht über Hindernisse (Shapes) laufen
Thema durchsuchen
Ansicht
Themen-Optionen

Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

Ein Thema von Flickz · begonnen am 26. Mär 2018 · letzter Beitrag vom 28. Mär 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 26. Mär 2018, 18:49
Als Einstiegs-Projekt schon eine Herausforderung, Kollisionsabfrage etc.
Einfacher als Einstieg in die Welt der Spiel wäre da eventuell so etwas:
ein Fenster zu Darstellung von Bildern und vier Bewegungs-Knöpfe für vier Richtungen wobei Knopf "Hoch" bzw "Runter" dafür verantwortlich ist welches Bild gerade in dem Fenster dargestellt wird, "Rechts" und "Links" optional je nach Bild zuschaltbar.
Klassische Adventure Steuerung der 80'er Jahre
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Flickz

Registriert seit: 26. Mär 2018
4 Beiträge
 
#2

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 26. Mär 2018, 18:55
Als Einstiegs-Projekt schon eine Herausforderung, Kollisionsabfrage etc.
Einfacher als Einstieg in die Welt der Spiel wäre da eventuell so etwas:
ein Fenster zu Darstellung von Bildern und vier Bewegungs-Knöpfe für vier Richtungen wobei Knopf "Hoch" bzw "Runter" dafür verantwortlich ist welches Bild gerade in dem Fenster dargestellt wird, "Rechts" und "Links" optional je nach Bild zuschaltbar.
Klassische Adventure Steuerung der 80'er Jahre
Ein Einstieg ist das nicht direkt. Habe neben der Schule bereits Mensch ärgere Dich nicht bspweise programmiert und als Belegarbeit nu am Ende der 12ten Schach. Ich wollte mich einfach mal an was anderes wagen und gucken, was ich evtl mit meinem schulischen Grundwissen erreichen könnte.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 26. Mär 2018, 22:45
Hier im Forum hat jemand ein Pacman Spiel vorgestellt, das könntest Du lesen und lernen wie eine Kollisionsabfrage funktioniert.
Einfacher dafür wäre Pong, ich finde nur gerade keine Quelle dafür.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
487 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 27. Mär 2018, 06:32
Guten Morgen,

das einfachste ist einfach die Koordinatengrenzen abzufragen, dann hast du aber nur die Prüfung auf die "harte Kante" deines Rechtecks das du prüfst, wenn dus genauer willst dann musst du das "Zielrechteck" auf der Spielfläche mittels XOR prüfen inwieweit sich Pixel überschnneiden
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#5

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 27. Mär 2018, 07:05
Ich werfe da einfach mal MSDN-Library durchsuchenIntersectRect in den Raum.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.157 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 28. Mär 2018, 09:27
Aber bitte keine Kollisionsabfrage über Pixel auf dem Bildschirm...

Stell Dir vor Dein Spiel müsste komplett ohne Tastatureingaben und ohne Bildschirm laufen.
Am besten, wenn Deine Spiellogik komplett ohne Form funktioniert.

Also hast Du eine Routine der Du die Bewegungsrichtung übergibst. Und die Daten, wie Deine Räume aussehen. Bitte nicht FIX in den Code hacken...

Vielleicht ein 2 DIM-Array für X und Y
Darin stehen bytes oder was auch immer... Vielleicht ein Aufzählungstyp...

TFeldType = (ftFrei,ftWand,ftBlume); Oder ein Byte mit der Image Nummer...

wenn Du nun den Raum aufbraust, stellst Du einfach nur die Daten aus dem Array dar...

Wenn Dein Spieler also bei Position X=10,Y=10 ist, kannst Du einfach Abfragen:

Delphi-Quellcode:
Case Bewegungsrichtung of
  Hoch : if Feld[Player.X,Player.Y-1] = ftFrei
           then KannHoch := true
           else KannHoch := false;
 Links : if Feld[Player.X-1,Player.Y] = ftFrei
           then KannLinks := true
           else KannLinks := false;
// usw.
end; // of case
Dann kannst Du auch einfach Deine Game-Logik testen... (z.B. mit Unittests)


Delphi-Quellcode:
Procedure TesteLogik;
begin
  GameEngine.Player := TPlayer.Create(10,10);
  GameEngine.Bewege(Hoch);
  GameEngine.Bewege(Hoch);
  Check(GameEngine.KannHoch,'Fehler in der Logik'); // Da steh eine Wand - kann nicht sein!
end;
Mavarik
  Mit Zitat antworten Zitat
Flickz

Registriert seit: 26. Mär 2018
4 Beiträge
 
#7

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 28. Mär 2018, 20:36
Aber bitte keine Kollisionsabfrage über Pixel auf dem Bildschirm...

Stell Dir vor Dein Spiel müsste komplett ohne Tastatureingaben und ohne Bildschirm laufen.
Am besten, wenn Deine Spiellogik komplett ohne Form funktioniert.

Also hast Du eine Routine der Du die Bewegungsrichtung übergibst. Und die Daten, wie Deine Räume aussehen. Bitte nicht FIX in den Code hacken...

Vielleicht ein 2 DIM-Array für X und Y
Darin stehen bytes oder was auch immer... Vielleicht ein Aufzählungstyp...

TFeldType = (ftFrei,ftWand,ftBlume); Oder ein Byte mit der Image Nummer...

wenn Du nun den Raum aufbraust, stellst Du einfach nur die Daten aus dem Array dar...

Wenn Dein Spieler also bei Position X=10,Y=10 ist, kannst Du einfach Abfragen:

Delphi-Quellcode:
Case Bewegungsrichtung of
  Hoch : if Feld[Player.X,Player.Y-1] = ftFrei
           then KannHoch := true
           else KannHoch := false;
 Links : if Feld[Player.X-1,Player.Y] = ftFrei
           then KannLinks := true
           else KannLinks := false;
// usw.
end; // of case
Dann kannst Du auch einfach Deine Game-Logik testen... (z.B. mit Unittests)


Delphi-Quellcode:
Procedure TesteLogik;
begin
  GameEngine.Player := TPlayer.Create(10,10);
  GameEngine.Bewege(Hoch);
  GameEngine.Bewege(Hoch);
  Check(GameEngine.KannHoch,'Fehler in der Logik'); // Da steh eine Wand - kann nicht sein!
end;
Mavarik
Danke Dir! Das ist die beste Lösung gewesen ^^
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz