Programmieren: Hilfe & Austausch
Programmieren: Hilfe & Austausch
11.09.2012 um 16:22macht keinen unterschied
Programmieren: Hilfe & Austausch
11.09.2012 um 16:24vielleicht ist die Auswirkung zu gering...
ersetz mal varHigh++ mit varHigh+=10
ersetz mal varHigh++ mit varHigh+=10
Programmieren: Hilfe & Austausch
11.09.2012 um 16:31geht auch nicht
wenn ich nicht die selben zahlen nehme sondern das - erhöhe zeigt sich auch keine änderung
also die figur wandert dann nicht runter
dass es an der verzögerung liegt kann also nicht sein, dann würde man nur die bewegung nicht sehen, sie müsste aber trotzdem runter gehen, bei tastendruck
tut sie aber nicht, sie macht einfach gar nichts
wenn ich nicht die selben zahlen nehme sondern das - erhöhe zeigt sich auch keine änderung
also die figur wandert dann nicht runter
dass es an der verzögerung liegt kann also nicht sein, dann würde man nur die bewegung nicht sehen, sie müsste aber trotzdem runter gehen, bei tastendruck
tut sie aber nicht, sie macht einfach gar nichts
Programmieren: Hilfe & Austausch
11.09.2012 um 16:33Programmieren: Hilfe & Austausch
11.09.2012 um 16:37na gut
nicht schön, is aber auch nur ein kleines testprogramm^^
//#define USE_CONSOLE
#include <iostream>
#include <windows.h>
#include <allegro.h>
#include <time.h>
void jump(int &high) {
if (key [KEY_SPACE]) {
for (int i=0;i<=5;i++) {
high++;
}
for (int j=0;j<=5;j++) {
high--;
}
}
}
int main() {
int varRight= 320;
int varHigh= 240;
int varTriR= 320;
int varTriH= 40;
allegro_init();
install_keyboard();
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
BITMAP *Doublebuffer = create_bitmap(640, 480);
BITMAP *mario = load_bitmap("mario.bmp", NULL);
BITMAP *forrest = load_bitmap("forrest.bmp", NULL);
while(!key [KEY_ESC]) {
if (key [KEY_RIGHT])
varRight++;
if (key [KEY_LEFT])
varRight--;
if (key [KEY_DOWN])
varHigh++;
if (key [KEY_UP])
varHigh--;
if (key [KEY_D])
varTriR++;
if (key [KEY_A])
varTriR--;
if (key [KEY_S])
varTriH++;
if (key [KEY_W])
varTriH--;
/*if (key [KEY_SPACE]) {
varHigh+=5;
Sleep(1000);
varHigh-=5;
}*/
if (key [KEY_SPACE]) {
for (int i=0;i<=5;i++) {
varHigh+=10;
Sleep(1);
blit(mario,Doublebuffer, 0,0, varRight, varHigh,20,40);
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
}
for (int j=0;j<=5;j++) {
varHigh-=30;
Sleep(1);
blit(mario,Doublebuffer, 0,0, varRight, varHigh,20,40);
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
}
}
//jump(varHigh);
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
blit(forrest, Doublebuffer, 0,0, 0,0, 640,480);
triangle(Doublebuffer, varTriR, varTriH, 147, 340, 493, 340, makecol(255, 0, 0));
//circlefill(screen, varRight, varHigh, 50, makecol(255, 255, 255));
blit(mario,Doublebuffer, 0,0, varRight,varHigh,20,40);
}
;
return 0;
}
END_OF_MAIN();
nicht schön, is aber auch nur ein kleines testprogramm^^
Programmieren: Hilfe & Austausch
11.09.2012 um 16:41versuchs mal, indem du den ganzen Anzeigeprozess in deine Schleife einbaust... also
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
blit(forrest, Doublebuffer, 0,0, 0,0, 640,480);
triangle(Doublebuffer, varTriR, varTriH, 147, 340, 493, 340, makecol(255, 0, 0));
//circlefill(screen, varRight, varHigh, 50, makecol(255, 255, 255));
blit(mario,Doublebuffer, 0,0, varRight,varHigh,20,40);
Aber bevor du das machst :) ordne mal die Reihenfolge richtig an :D
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
blit(forrest, Doublebuffer, 0,0, 0,0, 640,480);
triangle(Doublebuffer, varTriR, varTriH, 147, 340, 493, 340, makecol(255, 0, 0));
//circlefill(screen, varRight, varHigh, 50, makecol(255, 255, 255));
blit(mario,Doublebuffer, 0,0, varRight,varHigh,20,40);
Aber bevor du das machst :) ordne mal die Reihenfolge richtig an :D
Programmieren: Hilfe & Austausch
11.09.2012 um 16:43Die über die wir ganz am Anfang geredet haben...
erst den Puffer verändern dann ausgeben.
erst den Puffer verändern dann ausgeben.
Programmieren: Hilfe & Austausch
11.09.2012 um 16:45und in welche schleife?
in die forschleife?
aber das ist doch dumm
bei den anderen if's gehts doch auch
in die forschleife?
aber das ist doch dumm
bei den anderen if's gehts doch auch
Programmieren: Hilfe & Austausch
11.09.2012 um 16:50Dein ganzes Programm ist eine Schleife.
Darum wirken sich die änderungen aus...
pass auf
Anfang der Schleife
veränderung der Variable
veränderung des Puffers
veränderung des Bildschirms
Ende der Schleife
Das ist der normale Ablauf
du aber
Anfang der schleife
Veränderung der Variable
Veränderung des Bildschirms
Veränderung des Puffers
Da aber die Veränderung des Bildschirms von der Veränderung des Puffers abhängig ist, wirkt sich bei einem konstanten Einfluss deine Änderung langfristig aus, halt jeweils im NÄCHSTEN, nicht im aktuellen Abschnitt der Schleife.
Du muss kapieren, das die Tatsache das es so aussieht, als wenn es funktioniert, beim Programmieren nicht notwendigerweise heißt das du es richtig gemacht hast.
Darum wirken sich die änderungen aus...
pass auf
Anfang der Schleife
veränderung der Variable
veränderung des Puffers
veränderung des Bildschirms
Ende der Schleife
Das ist der normale Ablauf
du aber
Anfang der schleife
Veränderung der Variable
Veränderung des Bildschirms
Veränderung des Puffers
Da aber die Veränderung des Bildschirms von der Veränderung des Puffers abhängig ist, wirkt sich bei einem konstanten Einfluss deine Änderung langfristig aus, halt jeweils im NÄCHSTEN, nicht im aktuellen Abschnitt der Schleife.
Du muss kapieren, das die Tatsache das es so aussieht, als wenn es funktioniert, beim Programmieren nicht notwendigerweise heißt das du es richtig gemacht hast.
Programmieren: Hilfe & Austausch
11.09.2012 um 16:52ja, das mit der reihenfolge hab ich schon verstanden aber du hast geschrieben
also in welche schleife?
interpreter schrieb:versuchs mal, indem du den ganzen Anzeigeprozess in deine Schleife einbaust... alsodas ist aber alles schon in der while (blubb ESC) .. schleife drin
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
blit(forrest, Doublebuffer, 0,0, 0,0, 640,480);
triangle(Doublebuffer, varTriR, varTriH, 147, 340, 493, 340, makecol(255, 0, 0));
//circlefill(screen, varRight, varHigh, 50, makecol(255, 255, 255));
blit(mario,Doublebuffer, 0,0, varRight,varHigh,20,40);
also in welche schleife?
Programmieren: Hilfe & Austausch
11.09.2012 um 16:53in die For-Schleife für den Sprung.
Programmieren: Hilfe & Austausch
11.09.2012 um 16:55ok, hab ich gemacht
die abfrage und/oder schleife sieht jetzt so aus
gebracht hats nichts
die abfrage und/oder schleife sieht jetzt so aus
if (key [KEY_SPACE]) {
for (int i=0;i<=5;i++) {
varHigh+=10;
Sleep(1);
blit(forrest, Doublebuffer, 0,0, 0,0, 640,480);
triangle(Doublebuffer, varTriR, varTriH, 147, 340, 493, 340, makecol(255, 0, 0));
//circlefill(screen, varRight, varHigh, 50, makecol(255, 255, 255));
blit(mario,Doublebuffer, 0,0, varRight,varHigh,20,40);
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
}
for (int j=0;j<=5;j++) {
varHigh-=30;
Sleep(1);
blit(forrest, Doublebuffer, 0,0, 0,0, 640,480);
triangle(Doublebuffer, varTriR, varTriH, 147, 340, 493, 340, makecol(255, 0, 0));
//circlefill(screen, varRight, varHigh, 50, makecol(255, 255, 255));
blit(mario,Doublebuffer, 0,0, varRight,varHigh,20,40);
blit(Doublebuffer, screen, 0,0, 0,0, 640, 480);
}
}
gebracht hats nichts
Programmieren: Hilfe & Austausch
11.09.2012 um 17:01hmmm die integer-Werte sind Pixel, oder? 150 px müssten sich schon auswirken....
funktionieren die Pfeiltasten immernoch?
funktionieren die Pfeiltasten immernoch?
Programmieren: Hilfe & Austausch
11.09.2012 um 17:02die pfeiltasten ja, die leertaste macht nur immer noch nichts
Programmieren: Hilfe & Austausch
11.09.2012 um 17:03versuch mal den Trigger für den Sprung auf ne andere Taste zu legen...
Programmieren: Hilfe & Austausch
11.09.2012 um 17:03hab ich schon, geht nicht
Programmieren: Hilfe & Austausch
11.09.2012 um 17:05gegenprüfung ob die Leertaste funktioniert:
kommentier den Kram mal aus und leg ne andere funktion auf die Leertaste.
kommentier den Kram mal aus und leg ne andere funktion auf die Leertaste.
Programmieren: Hilfe & Austausch
11.09.2012 um 17:11irgendwie macht es grade ganz seltsamen unfug