AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit großerer Abfrage

Ein Thema von godman · begonnen am 1. Jun 2004 · letzter Beitrag vom 2. Jun 2004
Antwort Antwort
godman

Registriert seit: 25. Mai 2003
25 Beiträge
 
#1

Probleme mit großerer Abfrage

  Alt 1. Jun 2004, 15:15
Hi Leute! Weiß irgendwer wie ich die Werte in einfach in eine If bedingung od. mehrfachauswahl packen kann!

ich hab hundert var ballsprite:TSprite;, ballsprite1:TSprite; definiert das Problem ist nur das ich bei jedem den Wert ballsprite.x und ballsprite.y abfragen muss!

Nur jetzt das mit einer if bedingung ist schon ziemlich lang! Bsp: if (ballsprite.x=10) and (ballsprite.y<=500) or (ballsprite1.x=10) and (ballsprite1.y<=500) then
begin
end;
Als nächstes muss ich noch ballsprite.m abfragen!

Nach meiner Meinung ist das ziemlich blöd so, weil das Problem ist das das Programm ziemlich lange brauchen wird bis es diese bedingungen abarbeitet!

Vielleicht weiß irgendwer eine Möglichkeit wie man die Werte einfacher abzufragt!
Danke im Voraus!

LG

godman
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Probleme mit großerer Abfrage

  Alt 1. Jun 2004, 15:39
Du hast anscheinend ein Klasse TSprite. Falls es sich um einen Record handelt, könnte es sich lohnen, den Record in eine Klasse umzuwandeln.
Die Sprite-Klasse braucht bestimmte Grundfunktionen:
Delphi-Quellcode:
function TSprite.IsInsideRect(r:TRect):boolean; // Sprite befindet sich komplett innerhalb des Rechtecks
function TSprite.CollidesWithRect(r:TRect):Boolean; // Sprite überdeckt Rechteck teilweise oder vollständig
function TSprite.CollidesWithSprite(s:TSprite):Boolean; // Kollision mit anderem Sprite
procedure TSprite.MoveSprite; // bewege Sprite
Mit diesen Funktionen vereinfachen sich deine If-Abfragen schon erheblich.

Du hast anscheinend 100te globale Variablen. Das ist eine schlechte Taktik.
Gleichartige Objekte/Datentypen werden in einem Array oder einer Liste gespeichert.
Damit reduzieren sich hunderte von Abfrage auf eine Schleife innerhalb der du die
Abfrage platzierst.
Andreas
  Mit Zitat antworten Zitat
godman

Registriert seit: 25. Mai 2003
25 Beiträge
 
#3

Re: Probleme mit großerer Abfrage

  Alt 1. Jun 2004, 19:56
Ich habe nur 100 Variablen benutzt ob jedes Objekt in dieser Engine anders beeinflussen zu können! Leider hat das natürlich seine Nachteile!

godman
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Probleme mit großerer Abfrage

  Alt 2. Jun 2004, 09:57
Zitat von godman:
Ich habe nur 100 Variablen benutzt ob jedes Objekt in dieser Engine anders beeinflussen zu können! Leider hat das natürlich seine Nachteile!
Genau, diese Nachteile sind entscheidend.
Du kannst ein Array benutzen und trotzdem jedes Sprite mit seinem "Namen" ansprechen:
Delphi-Quellcode:
const S_Ritter1 = 0, S_Ritter2 = 1, S_LaserbeamBlue= 2, ...
var
   sprites : array[0..120] of TSprite;
// Benutzung
   sprites[S_Ritter2].x := 5;
Du könntest auch die Sprites in Gruppen einteilen. Jede Gruppe hat eine andere Funktion
(Angreifer, Spielfigur, Steine, Waffen,...).
TSprite wird um die Eigenschaft Group erweitert und schon kannst du bestimmte Operationen
mit allen Sprites einer Gruppe durchführen. (z.B. Prüfe, ob ein Sprite der Gruppe "Waffen" mit
der Hauptspielfigur kollidiert)
Andreas
  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 00:11 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