AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zielsuchende Objekte

Ein Thema von Dunkelbunt27 · begonnen am 10. Aug 2010 · letzter Beitrag vom 12. Aug 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 04:58
Dank,
Hört sich schonmal super an. Hab vergessen wie eng Delphi mit Mathematik zusammenhängt.
Wir haben noch eine weitere Frage:
Ist es richtig wenn sie Schiffe erstmal in der Mitte sind:
- es soll ein Laser entstehen

Erste Gedanken:
Image1.canvas.moveto(schiffx, schiffy); Dann
Image1.canvas.lineto(zielx, ziely);
Klang für uns logisch, es kommt aber statt einer Linie ein schwarzer flimmernder Bildschirm.
Ich hoffe ihr wisst wieder so tolle antworten
LG Dunkelbunt

Geändert von mkinzler (11. Aug 2010 um 05:34 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 05:35
Ein Spiel auf dem Canvas zeichnen ist keine gute Idee. Schau dir hier besser Lösungen an, welche uf DX/OpenGL basieren wie z.B. Andorra und Co.

Btw: Bite verwende Delphi-Tags für Delphi-Code
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 09:05
Hab vergessen wie eng Delphi mit Mathematik zusammenhängt.
was kann Delphi denn dafür, dass ihr ein mathematisches Problem lösen wollt?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#4

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 09:30
Wenn es um eine Schiffsbewegung geht, kommen da sicherlich auch noch irgendwann Hindernisse mit ins Spiel, oder sei es nur, um bereits von anderen Schiffen blockierte Felder "auszukeyen"
Ich würde mich deswegen an deiner Stelle mal generell über Wegfindungs-Algorithmen wie A* oder dergleichen informieren, wenn man das Prinzip mal verstanden hat, spart es einem ne Menge Müllcode

Michael Puff hat auch eine Delphi-Implementation des A*-Algorithmus inklusive PDF-Tutorial in seinem Gepäck:
http://www.michael-puff.de/Programmi...emos/AStar.zip

Geändert von blackfin (11. Aug 2010 um 09:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#5

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 15:00
@ igel

Deine Rechnung hat mir geholfen, jedoch gibt es ein problem:
Ich rechne hier mal ein beispiel vor:

schiffX= 2
schiffY = 2
MitteX = 26
MitteY = 12

zuerst Vektoren berechnen:
vx = MitteX-SchiffX = 26-2 = 24
vy = MitteY - SchiffY = 12-2 = 10

Laenge:
Wurzel(vx²+vy²) = 26

vx= vx/laenge = 24:26 = 0.923
vy= vy/laenge = 10:26 = 0,384


Das ist erstmal die Rechnung. Also muss sich mein schiff 0,923 einheiten um x bewegen und 0,384 um y....
Das Problem ist das 1Pixel doch schon die kleinste schrittweite ist ... daraus folgt das das schiff immer genau diagonal wandert und nicht ankommt...
Höchstens wenn ich es mit 10 multipliziere, was leider zu große schritte sind.


Ich werde mich jetz um den A* algorithmus kümmern auch wenn ich ihn noch nicht ganz verstanden habe.
Gruß Dunkelbunt.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 15:12
Speichere die Position der Schiffe als Fließkommazahl (Double) und runde diese ausschließlich für die Anzeige.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 15:18
Es ist fast immer eine gute Idee Positionen als Floats zu verwalten, und nur zum Zwecke der Anzeige beim Zeichnen zu runden.

Edit: Okay, nächstes Mal erst F5 drücken, dann antworten
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 15:19
Wenn man eine genügend kraftvolle Hardware hat
Markus Kinzler
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 15:48
Wenn man eine genügend kraftvolle Hardware hat
So langsam sind Floats nun auch wieder nicht... oder nutzt du etwa einen 10Mhz-Prozessor?
Ich habe für solche Zwecke immer Floats genommen und meistens betrug die CPU-Last ohne Grafikausgabe 0%.
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#10

AW: Zielsuchende Objekte

  Alt 11. Aug 2010, 16:07
Klasse, Zielsuchende random am Bildschirmrand erscheinende Schiffchen funktioniert.
Nächstes Problem ^^
Wir wollen das die Schiffe sobald sie halt nur noch 100 Pixel vom Ziel entfernt sind auf die Basis (Mitte) schießen.
Am infachsten(so denken wir) ist eine Rote Linie wie einen Laser vom Schiff zur Basis zu zeichnen.
Hier nun die Frage, wie funktioniert das? Ich hatte es schonmal mit canvas beschirben und jemand hat geantwortet lieber open GL zu benutzen. Open Gl ist uns leider nicht möglich, erstens weil wir davon leider keine ahnung haben und weil unser lehrer das ganze lieber mit canvas sehen würde.
Wenn jemand genau beschreiben kann dies mit Open Gl zu verwirklichen wär ich auch dankbar, hauptsache wir bekommen eine Linie gezogen.
Viele Liebe Grüße Dunkelbunt

EDIT: omg sry nächstes mal F5 drücken
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:17 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