Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 17.10.2004, 11:51 Titel: Frage bezüglich if... |
|
|
Hallo,
ich möchte eine Bitmap Datei bewegen wenn man z.B. die rechte Pfeiltaste drückt. Dazu habe ich folgende if-Verzweigung genommen:
Code: | if (KEY_DOWN(VK_RIGHT))
{
// Bitmap nach rechts bewegen
x+=20;
} |
Für x habe ich die Koordinate angegeben, auf der das Bild bei Programmstart liegt. Nun soll das Bild aber soweit nach rechts bewegt werden, dass es irgendwann an der Bildschirmkante ankommt und das eben in 20 Pixel schritten. Doch das Bild springt nach dem Loslassen immer wieder in die Ausgangs position zurück. Das soll es aber nicht. Sondern es soll dann an x+=20 stehen bleiben wenn man die Taste loslässt. Was kann ich machen??
Vielen Dank. |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 17.10.2004, 11:54 Titel: |
|
|
wo hast du denn x definiert? _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 17.10.2004, 12:42 Titel: |
|
|
du wirst irgendwo in deiner Schleife die Anweisung
stehen haben, so dass das Bild jedesmal wieder auf diesen Wert gesetzt wird. _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 17.10.2004, 12:49 Titel: |
|
|
genau, x habe ich weiter oben im Quellcode deklariert und x hat einen Wert. Da ich das Bild ja an einer bestimmten Stelle starten lassen will.
Wie kann ich das also machen, dass das Bild trotzdem an x=200 ist und es nicht zurückspringt? |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 17.10.2004, 12:51 Titel: |
|
|
Benutze doch mal die Suchfunktion in VC++ und suche nach "x=". Dann wirst du sehen, wo du alles x einen Wert zuweist.
PS: Wo im Quellcode hast du das definiert? Ist es eine lokale oder globale Variable? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 17.10.2004, 13:11 Titel: |
|
|
Der Variable wir dodch garantiert jedesmal der Startwert zugewiesen. Du must dich versichern, das genau nur einmal ein absoluter Wert benutzt wird, am besten postest du mal den gesamten quellcode, dann müsste ich dir sagen können, wo der Fehler liegt. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 17.10.2004, 13:20 Titel: |
|
|
^^das ist doch gar nicht nötig.
Wahrscheinlich hast du x in der Callbackfunktion definiert und mit dem Wert 200 initialisiert....du solltest aber die Variable global deklarieren...oder garantieren, dass der Wert nur einmal mit 200 initialisiert wird.. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 17.10.2004, 15:38 Titel: |
|
|
Es war lokal deklariert.
Jetzt hab ich Global gemacht, also direkt unter den includes und jetzt funktioniert es so, wie ich es vorhatte. Der Wert wird also nicht zurückgesetzt.
Aber wie kommt das, dass der Wert bei Globalel Deklaration nicht zurückgesetzt wird? |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 17.10.2004, 15:44 Titel: |
|
|
ich glaube dass du bei diesem Kapitel nicht richtig aufgepasst hast
wenn du in einer Funktion eine Variable deklarierst
int func(void)
{
int x=10;
x+=5;
return 0;
}
dann passiert das:
funktion wird aufgerufen
lokale variable x wird erstellt und mit dem wet 10 initialisiert
x wird um 5 erhöht
da die funktion jetzt beendet wird, werden alle enthaltenen lokalen variablen gelöscht, in diesem fall nur x
und das passiert immer wieder... bei jedem Aufruf  _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 17.10.2004, 16:58 Titel: |
|
|
Achso, ok dann vielen Dank euch allen.  |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 17.10.2004, 17:02 Titel: |
|
|
mach aber am besten nächsten mal gleich eine Struktur für deine Bilder
wie:
struct image
{
LPDIRECT3DSurface9 surface;
D3DXVECTOR2 Position;
};
oder so ähnlich, weil wenn man mehr als ein Bild nimmt wird es langsam unübersichtlich  _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 17.10.2004, 18:33 Titel: |
|
|
Die Idee mit dem Lokal ist unter umständen nicht soo schlecht du kannst mein neues Lieblings wort "static" davor schreiben (Dazu gibts auch nen Thread).
Aber eigentlich dürfte dir das nicht helfen, da du die Variable mindestten in 2 Funktionen bracuhen müssen solltest. In der Render und der Move Funktion, das sollte man irgendwie immer trennen. Bewegen kommt in die Move anzeigen in die Render also wird die Variable mindestens 2 mal gebraucht.
Also Global? Nein, am besten in eine "Game"-Klasse. Schön gekapselt und prima übersichtlich. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 17.10.2004, 18:41 Titel: |
|
|
Ich würds in ein namespace schreiben, dann muss man nicht in diesem Falle lästigen Accessormethoden benutzen und ansonsten wird es ja unschön. |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 17.10.2004, 20:01 Titel: |
|
|
Ich würde dafür eine Ressourcenklasse schreiben und darin alles verwalten... _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
|