JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=18c0f3a8506459c5dccd8e81b5a0daf6Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Frage bezüglich if...

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 11:51    Titel: Frage bezüglich if... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 11:54    Titel: Antworten mit Zitat

wo hast du denn x definiert?
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HotAcid
Super JLI'ler


Alter: 43
Anmeldedatum: 04.08.2002
Beiträge: 372
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 12:42    Titel: Antworten mit Zitat

du wirst irgendwo in deiner Schleife die Anweisung
Code:
x=200;


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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 12:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 12:51    Titel: Antworten mit Zitat

Benutze doch mal die Suchfunktion in VC++ und suche nach "x=". Dann wirst du sehen, wo du alles x einen Wert zuweist. Wink

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 13:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 13:20    Titel: Antworten mit Zitat

^^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
Benutzer-Profile anzeigen Private Nachricht senden
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 15:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 15:44    Titel: Antworten mit Zitat

ich glaube dass du bei diesem Kapitel nicht richtig aufgepasst hast Razz

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...Wink bei jedem Aufruf Laughing
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 16:58    Titel: Antworten mit Zitat

Achso, ok dann vielen Dank euch allen. Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 17:02    Titel: Antworten mit Zitat

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 Wink
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 18:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 18:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.10.2004, 20:01    Titel: Antworten mit Zitat

Ich würde dafür eine Ressourcenklasse schreiben und darin alles verwalten...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum