Helpdesk
Menschen Wissenschaft Politik Mystery Kriminalfälle Spiritualität Verschwörungen Technologie Ufologie Natur Umfragen Unterhaltung
weitere Rubriken
PhilosophieTräumeOrteEsoterikLiteraturAstronomieHelpdeskGruppenGamingFilmeMusikClashVerbesserungenAllmysteryEnglish
Diskussions-Übersichten
BesuchtTeilgenommenAlleNeueGeschlossenLesenswertSchlüsselwörter
Schiebe oft benutzte Tabs in die Navigationsleiste (zurücksetzen).

Programmieren: Hilfe & Austausch

920 Beiträge ▪ Schlüsselwörter: Programm, Code, Html ▪ Abonnieren: Feed E-Mail

Programmieren: Hilfe & Austausch

11.09.2012 um 16:20
@YaaCool

der sleep-wert wird in sekunden gerechnet... reduzier mal auf 1 :D


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:22
macht keinen unterschied


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:24
vielleicht ist die Auswirkung zu gering...

ersetz mal varHigh++ mit varHigh+=10


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:31
geht 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


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:33
@YaaCool

darf ich mal das ganze Programm im Zusammenhang sehen?


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:37
na gut
//#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^^


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:41
versuchs 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


1x zitiertmelden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:42
welche reihenfolge?
und in welche schleife?


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:43
Die über die wir ganz am Anfang geredet haben...

erst den Puffer verändern dann ausgeben.


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:45
und in welche schleife?
in die forschleife?
aber das ist doch dumm
bei den anderen if's gehts doch auch


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:50
Dein 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.


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:52
ja, das mit der reihenfolge hab ich schon verstanden aber du hast geschrieben
Zitat von interpreterinterpreter schrieb:versuchs 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);
das ist aber alles schon in der while (blubb ESC) .. schleife drin
also in welche schleife?


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:53
in die For-Schleife für den Sprung.


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 16:55
ok, hab ich gemacht
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


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 17:01
hmmm die integer-Werte sind Pixel, oder? 150 px müssten sich schon auswirken....

funktionieren die Pfeiltasten immernoch?


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 17:02
die pfeiltasten ja, die leertaste macht nur immer noch nichts


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 17:03
versuch mal den Trigger für den Sprung auf ne andere Taste zu legen...


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 17:03
hab ich schon, geht nicht


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 17:05
gegenprüfung ob die Leertaste funktioniert:

kommentier den Kram mal aus und leg ne andere funktion auf die Leertaste.


melden

Programmieren: Hilfe & Austausch

11.09.2012 um 17:11
irgendwie macht es grade ganz seltsamen unfug


melden