Hallo,guten Tag. Das Sprite bewegt sich nicht mit den Buchstaben "A" nach links und "W" nach oben. Nur mit "S" nach unten und mit "D" nach rechts. Was ist da bitte falsch? Danke. --------------------------------------------- #include <dos.h> #include <conio.h> #include <iostream.h> #include <ctype.h> #define VIDEO_SEGMENT 0xA000 #define SCREEN_WIDTH 320 void SetTextMode () { _AH = 0; _AL = 0x03; geninterrupt (0x10); } void SetMode13h () { _AH = 0; _AL = 0x13; geninterrupt (0x10); } void PutPixel (int x, int y, unsigned char color) { pokeb (VIDEO_SEGMENT, (y * SCREEN_WIDTH) + x, color); } void sprite(int zx ,int zy) { int x,y; for (y = zy; y <= zy+16; y++) { for (x =zx+32; x <= zx+16+32; x++) { PutPixel (x,y,14); } } } int main () { int x, y, zx ,zy; char cmd; SetMode13h (); zx=150; zy=100; sprite(zx,zy); do { cmd = toupper(getch()); switch (cmd) { case 'W': zy=zy-2; case 'S': zy=zy+2; case 'A': zx=zx-2; case 'D': zx=zx+2; case 'E':break; } sprite(zx,zy); } while (cmd != 'E'); SetTextMode(); } -------------------------------------------------------
:
Bearbeitet durch User
Schließ mal jeden case mit break ab. Dann klappts auch mit den Sprites ?
Ahhh....danke. Jetzt funktioniert es. Ich dachte mit break verlässt man die ganze Whileschleife und das Programm beendet sich. Gruss
break wirkt bei Schleifen und bei switch, aber es springt immer nur eine Ebene raus, also in dem Fall nur aus dem Switch.
Peter B. schrieb: > Ich dachte mit break verlässt man die ganze Whileschleife und das > Programm beendet sich. wenn du nach dem case kein break machst kommst du ins nächste case
1 | case 0 |
2 | case 1 |
3 | case 2: |
4 | blub(); <-- kommt bei 0,1,2 |
5 | break; |
6 | case 3: |
7 | tralala(); <-- kommt bei 3 |
8 | break; |
Warning beim Compiler einschalten kann auch helfen. Afaik ab GCC 7.irgendwas wird dann auch ein implicit fall through angemeckert.
Nico W. schrieb: > Warning beim Compiler einschalten kann auch helfen. Afaik ab GCC > 7.irgendwas wird dann auch ein implicit fall through angemeckert. Aber ganz bestimmt nicht bei seinem Turbo C 3 :)
Da wird ja wieder geistig von der Hand in den Mund programmiert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.