Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 19:30

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Nov 18, 2004 22:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Sers!

Ich überleg und überleg, aber irgendwie reichts net.
Habe mir ne Mapgemacht die in etwa so aussieht:

(.)(,)(.)(,)(.)(,)(.)
(,)(')(,)(')(,)(')(,)
(.)(,)(.)(,)(.)(')(.)
(,)(')(,)(')(,)(,)(,)
(.)(,)(.)(,)(.)(,)(.)

Ich möchte jetzt wissen ob meine Kugel auf dem Feld mit einem "." ist.
Nun Habe ich nur die X und Y Koordinaten.
Die Feldhöhen sind in einem 2 Demensionalem Array gespeichert.
Ich brauche nun die Feldnummern.
Wobei nur die Punkte als Nummern Zählen . , . , . , . Wäre also 3 lang (0 einbezogen)
Versteht ihr das?
Die Feldgrößen sind Variierbar. Die habe in in einer Variable stehen. (Alle Felder sind gleich Groß.)

Noch mehr Infos?!

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 18, 2004 23:23 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Also ich habe deinen Post mehrmals gelesen - und verstehe höchstens nebulös, was du meinst!

Zitat:
Ich möchte jetzt wissen ob meine Kugel auf dem Feld mit einem "." ist.

Ok, du hast ein Objekt, das auf deiner Map positioniert ist.

Zitat:
Nun Habe ich nur die X und Y Koordinaten.

Von was? Der Kugel?

Zitat:
Die Feldhöhen sind in einem 2 Demensionalem Array gespeichert.

ok

Zitat:
Ich brauche nun die Feldnummern.
Wobei nur die Punkte als Nummern Zählen . , . , . , . Wäre also 3 lang (0 einbezogen)
Versteht ihr das?

Nein!

Wenn nur Punkte als Koordinaten zählen (wobei mir der Sinn des Ganzen abgeht), steht die Kugel doch immer auf einem Punkt, wenn ihre Position in eben solchen Koordinaten angegeben ist.
Wenn du hingegen die Koordinaten der Kugel in deinem 2D-Feld meinst, kannst du dieses ja einfach auslesen, indem du die Position der Kugel als Zeilen- und Spaltenindizes verwendest (allerdings glaube ich nicht, dass du deine Frage so elementar war)

Zitat:
Die Feldgrößen sind Variierbar. Die habe in in einer Variable stehen. (Alle Felder sind gleich Groß.)

Ich nehme an, dass du die Position der Kugel in "Real"-Koordinaten hast, und nun die entsprechenden Indizes in dein 2D-Feld haben möchtest. Die Indizes i und j entsprechen dann:
Code:
  1.   i = Trunc(x / SizeX)
  2.   j = Trunc(y / SizeY)


Wobei (x,y) die Koordinaten deiner Kugel sind, SizeX, SizeY die Ausdehnung eines Elementes im Feld und i,j der Spalten/Zeilen Index in dein 2D-Feld.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 19, 2004 14:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Mh.
Ne die Kugel kann auch auf einem Komma oder sonstigem sein.
Und ich will wissen ob sie auf einem Punkt ist.
Mein bisheriger Source zum checken ob sie auf nem Bestimmten Feld ist. ist dieser:
Code:
  1.  
  2. function TMapKlasse.GetInterpolatedHeight(x, y: single): single;
  3. var
  4.  x1,y1,x2,y2: integer;
  5.  fx,fy: single;
  6. begin
  7. OnFixedQuad := false;
  8. YofFixedQuad := 0;
  9.  x := abs(x); y := abs(y);
  10.  
  11.  fx := frac(x);
  12.  fy := frac(y);
  13.  
  14.  x1 := trunc(x);
  15.  x2 := x1 + 1;
  16.  y1 := trunc(y);
  17.  y2 := y1 + 1;
  18.  
  19.  if x1  > high(vMap)-1 then
  20.  begin
  21.   result := 0;
  22.   exit;
  23.  end;
  24.  if y1  > high(vMap[x1])-1 then
  25.  begin
  26.   result := 0;
  27.   exit;
  28.  end;
  29.  
  30.  if ((x mod 2) = 0) and ((y mod 2) = 0) then //Hier brauche ich die Abfrage passend.
  31.  begin
  32.    result := vMap[y1,x1].y*y_faktor; //Hier brauche ich die richtige Feldnummern.
  33.    YofFixedQuad := result;
  34.    OnFixedQuad := true;
  35.    exit;
  36.  end;
  37.  
  38. end;
  39.  


Aber der Klappt nicht so ganz.
Die Punkte sind höhen der Felder, ein Feld ist jetzt zB. 1*1 Groß.
Danach kommt ein Feld frei sozusagen, dann kommt wieder ein Feld. dann frei dann wieder usw.
Das in beide Richtungen.

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 25, 2004 15:56 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Das ist dein Feld:
Code:
  1. 0/2      2/2
  2.     _ _ _
  3.    |_|_|_|
  4.    |_|_|X|
  5.    |_|_|_|
  6.  
  7. 0/0      2/0

Das X stellt die Kugel dar.

Die Kugel hat momentan die Position 2,5/1,5 (X/Y) auf der Karte (Diese Position kennst du aber nicht)
Sie befindet sich somit auf dem Feld 2/1.
Da die Felder alle gleich groß sind - meinetwegen 32 - gestaltet sich das ganze sehr einfach.

Und du willst jetzt wissen, auf welchem Feld die Kugel ist? Hab ich dich richtig verstanden?

Du musst lediglich die Position der Kugel durch die Kästchenzahl teilen.

In diesem Fall also:
Kugel:
X: 80
Y: 48

Die Karte ist 3x3 Felder groß.
80 (Kugel.X) durch 32 (Feldgröße) = 2,5
48 (Kugel.Y) durch 32 (Feldgröße) = 1,5

Wenn du das jetzt abrundest, bekommst du die Position auf der Karte raus.

Code:
  1. if Karte[Kugel.Kartenposition.X] = '.' then tell_the_user_that_the_ball_is_on_the_right_place;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 25, 2004 17:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Naja, net ganz :D
Code:
  1.  
  2. |X|_|X|_|X|
  3. |_|_|_|_|_|
  4. |X|_|X|_|X|
  5. |_|_|_|_|_|
  6. |X|_|X|_|X|
  7.  
  8.  


|X| sind die Felder, an denen es überhaupt sein kann das die kugel da drauf ist. und nur diese Felder zählen.
Wenn die kugel in der mitte ist, ist das das Feld 1,1 (Da Arrays bei 0 beginnen ;) ist klar ne)
Die da zwischen sind nur leere Felder.
Nun wie berechne ich ob und auf welchem feld sich die kugel befinden?

_________________
www.audi32.de


Zuletzt geändert von Adler am Do Nov 25, 2004 20:46, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 25, 2004 20:13 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Also irgendwie ist die Fragestellung immer noch sehr nebulös, weswegen Hilfestellung schwierig ist. Da ich annehme, dass du eigentlich nur eine Lösung für ein relativ einfaches Problem suchst, möchte ich dich bitten, einfach mal genau zu beschreiben, was du eigentlich machen willst, und vor allem wofür es gut sein soll (sowas in der Art von "Isometrisches Spiel von schräg oben, mit Mauern" - dann bin ich sicher, dass man dir besser weiter helfen kann.
Ein aussagekräftiges JPEG wäre eventuell auch besser, als diese ASCII Skizzen.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 25, 2004 20:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Also gut, ich nehme einfach mal ein Bild das ich hier schonmal wegen einem Problem postete.

Bild

Nun ich möchte wissen,
1. OB sich das Objekt auf einem GrünRotem Felt bewegt.
2. WO sich das Objekt bewegt, also aufem 1,2,3 oder 4ten Rot/Grünem Feld.

Grund:
Habe nur die höhen Daten der RotGrünen Felder.
Die anderen Felder sind nur zum verbinden der Map gedacht.
Das bewirkt, mehr als Doppeltsogroße Spielfläche durch gleichviele Variablen mit Infos.
Ist zwar net so flexible, aber ausreichend.

Versteht ihrs nun oder nochmal?

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 25, 2004 21:07 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Dann sag einfach:" Ein Feld besteht aus dem eigentlichen Feld + 3 Verbinder"

1Feld:
Code:
  1.  
  2. |X|_|
  3. |_|_|


Dann kannste wieder ganz normal arbeiten. Wenn du an den Rändern noch verbinder haben willst, dann rechnest du bei den Positionsrechnungen noch den entsprechenden Offset (Verschiebung) mit ein.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 25, 2004 21:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Aber die drei verbinder sollen net mit einberechnet werden.
Kann man da ne Formel aufstellen oder mit vielen If Abfragen lösen? :-/

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 26, 2004 13:17 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Du denkst etwas zu kompliziert.

Code:
  1.  
  2. |X|_|X|_|X|_|X|_|X|_|X|_|
  3. |_|_|_|_|_|_|_|_|_|_|_|_|
  4. |X|_|X|_|A|_|X|_|X|_|X|_|
  5. |_|_|_|_|_|_|_|_|_|_|_|_|
  6. |X|_|X|_|X|_|X|_|X|_|X|_|
  7. |_|_|_|_|_|_|_|_|_|_|_|_|
  8.  


Wenn du die Position von A hast, musst du die Koordinaten ja nur durch die Länge von zwei Feldern dividieren, und bekommst die gesuchten Offsets. Nehmen wir an A hat die Koordinaten 4, 2 (bei nullbasierten Indizes) und zwei Felder sind 2 Einheiten lang, dann sind die gesuchten Offsets Trunc(4/2) und Trunc(2/2) also 2 und 1. So überprüfst du zwar nicht, ob sich die Kugel auf einem grün/roten Feld befindet oder nicht - nach deiner Definition tut sie das aber sowieso, und du möchtest nur wissen, auf welchem.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]