Programmieren: Hilfe & Austausch
Programmieren: Hilfe & Austausch
11.09.2012 um 15:36Programmieren: Hilfe & Austausch
11.09.2012 um 15:39Programmieren: Hilfe & Austausch
11.09.2012 um 15:41@interpreter
ja die war ein wenig verkehrt, war aber nicht schlimm
die reihenfolge hat eben nur die kagge gemacht, dass das forrest bild über alle anderen gelegt wurde, weil es ja als letztes drauf gebracht wurde :D
ändert aber nichts an der funktion an sich^^
ich hab grade noch ein anderes behindertes problem, bei dem ich nicht verstehe was ich falsch mache
ja die war ein wenig verkehrt, war aber nicht schlimm
die reihenfolge hat eben nur die kagge gemacht, dass das forrest bild über alle anderen gelegt wurde, weil es ja als letztes drauf gebracht wurde :D
ändert aber nichts an der funktion an sich^^
ich hab grade noch ein anderes behindertes problem, bei dem ich nicht verstehe was ich falsch mache
Programmieren: Hilfe & Austausch
11.09.2012 um 15:49was ist hier
falsch?
ich will, dass wenn ich die leertaste drücke meine figur (die high benutzt für ihre y-position) einmal +5 hoch und dann wieder runter geht, also hüpft
aber sie macht einfach gar nichts
wenn ich schreibe
dann bewegt sie sich hoch oder runter, je nachdem welche der tasten ich wie lange drücke
jetzt soll sie das da oben bei einmaligem tastendruck durchführen
die forschleifen deshalb, damit die bewegung flüssig ist und die figur nicht einfach die position sprunghaft wechselt
wobei das
auch nicht funktioniert
an der leertaste kanns nicht liegen, hab schon eine andere versucht, geht auch nicht
if (key [KEY_SPACE]) {
for (int i=0;i<=5;i++) {
high++;
}
for (int j=0;j<=5;j++) {
high--;
}
}
falsch?
ich will, dass wenn ich die leertaste drücke meine figur (die high benutzt für ihre y-position) einmal +5 hoch und dann wieder runter geht, also hüpft
aber sie macht einfach gar nichts
wenn ich schreibe
if (key [KEY_DOWN])
high++;
if (key [KEY_UP])
high--;
dann bewegt sie sich hoch oder runter, je nachdem welche der tasten ich wie lange drücke
jetzt soll sie das da oben bei einmaligem tastendruck durchführen
die forschleifen deshalb, damit die bewegung flüssig ist und die figur nicht einfach die position sprunghaft wechselt
wobei das
if (key [KEY_SPACE]) {
high+=5;
high-=5;
}
auch nicht funktioniert
an der leertaste kanns nicht liegen, hab schon eine andere versucht, geht auch nicht
Programmieren: Hilfe & Austausch
11.09.2012 um 15:52@YaaCool
Na ganz einfach... du veränderst nur die Variable (high) er zählt sie hoch, dann wieder runter aber das wird ja nirgendwo auf dem Bildschirm umgesetzt.
ich nehme mal an, das nach dem KeyDown/Up irgendwo noch ein Befehl kommt der das umsetzt oder nicht? den müsstest du auch in deine Schleife einbauen.
Na ganz einfach... du veränderst nur die Variable (high) er zählt sie hoch, dann wieder runter aber das wird ja nirgendwo auf dem Bildschirm umgesetzt.
ich nehme mal an, das nach dem KeyDown/Up irgendwo noch ein Befehl kommt der das umsetzt oder nicht? den müsstest du auch in deine Schleife einbauen.
Programmieren: Hilfe & Austausch
11.09.2012 um 15:57@interpreter
ja na klar
weil high steht für die y-position bei
blit(mario,Doublebuffer, 0,0, right, high,20,40);
verändert sich die variable, verändert sich die position
deshalb sag ich doch, bei den anderen tasten mit
if (key [KEY_DOWN])
high++;
if (key [KEY_UP])
high--;
bewegt sie sich doch auch
ja na klar
weil high steht für die y-position bei
blit(mario,Doublebuffer, 0,0, right, high,20,40);
verändert sich die variable, verändert sich die position
deshalb sag ich doch, bei den anderen tasten mit
if (key [KEY_DOWN])
high++;
if (key [KEY_UP])
high--;
bewegt sie sich doch auch
Programmieren: Hilfe & Austausch
11.09.2012 um 16:01@YaaCool
ja... in den Beiden Fällen veränderst du die Variable
high(0)
high++ (1)
umsetzung (1)
in deinem Konzept
aber änderst du die Variable
high(0)
high(5)
high(0)
umsetzung (0)
wenn es also bei deiner Umsetzung angekommen ist ist der Wert wieder 0 und es ändert sich an der ausgabe nichts.
Versuch mal das hier:
Ich glaube du hältst den Computer einfach für viel schlauer als er ist :D
ja... in den Beiden Fällen veränderst du die Variable
high(0)
high++ (1)
umsetzung (1)
in deinem Konzept
aber änderst du die Variable
high(0)
high(5)
high(0)
umsetzung (0)
wenn es also bei deiner Umsetzung angekommen ist ist der Wert wieder 0 und es ändert sich an der ausgabe nichts.
Versuch mal das hier:
if (key [KEY_SPACE]) {
for (int i=0;i<=5;i++) {
high++;
blit(mario,Doublebuffer, 0,0, right, high,20,40);
}
for (int j=0;j<=5;j++) {
high--;
blit(mario,Doublebuffer, 0,0, right, high,20,40);
}
}
Ich glaube du hältst den Computer einfach für viel schlauer als er ist :D
Programmieren: Hilfe & Austausch
11.09.2012 um 16:03@YaaCool
wenn dir das dann noch zu schnell geht, bau ne Zählschleife oder sowas ein, um es zu verzögern :)
wenn dir das dann noch zu schnell geht, bau ne Zählschleife oder sowas ein, um es zu verzögern :)
Programmieren: Hilfe & Austausch
11.09.2012 um 16:07@YaaCool
dann verzögere es mal stark... es steht anzunehmen das der ganze Sprung in diesem fall vielleicht ne Millisekunde braucht oder sowas...
dann verzögere es mal stark... es steht anzunehmen das der ganze Sprung in diesem fall vielleicht ne Millisekunde braucht oder sowas...
Programmieren: Hilfe & Austausch
11.09.2012 um 16:10@interpreter
ich habs jetzt so
aber auch nichts
dabei sollte das stark genug verzögert sein?
ja die dummen variabeln heißen jetzt anders, das tut aber nichts zur sache
ich habs jetzt so
if (key [KEY_SPACE]) {
for (int i=0;i<=5;i++) {
varHigh++;
Sleep(1000);
blit(mario,Doublebuffer, 0,0, varRight, varHigh,20,40);
}
for (int j=0;j<=5;j++) {
varHigh--;
Sleep(1000);
blit(mario,Doublebuffer, 0,0, varRight, varHigh,20,40);
}
}
aber auch nichts
dabei sollte das stark genug verzögert sein?
ja die dummen variabeln heißen jetzt anders, das tut aber nichts zur sache
Programmieren: Hilfe & Austausch
11.09.2012 um 16:10Programmieren: Hilfe & Austausch
11.09.2012 um 16:11hab ich
tut sich auch nichts
tut sich auch nichts
Programmieren: Hilfe & Austausch
11.09.2012 um 16:13
if (key [KEY_SPACE]) {
for (int i=0;i<=5;i++) {
varHigh++;
Sleep(500);
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
blit(mario,Doublebuffer, 0,0, varRight, varHigh,20,40);
}
for (int j=0;j<=5;j++) {
varHigh--;
Sleep(500);
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
blit(mario,Doublebuffer, 0,0, varRight, varHigh,20,40);
}
}
wenn man doublebuffer und mario andersrum setzt tut sich auch nichts
Programmieren: Hilfe & Austausch
11.09.2012 um 16:15der Befehl für das Blitten auf den Screen müsste sinnvollerweise nach dem Blitten auf den Doublebuffer kommen... aber auswirken müsste sich das trotzdem....
Programmieren: Hilfe & Austausch
11.09.2012 um 16:18@YaaCool
wirkt sich das blitten normalerweise sofort aus oder braucht das noch nen Refresh-Befehl oder sowas?
wirkt sich das blitten normalerweise sofort aus oder braucht das noch nen Refresh-Befehl oder sowas?