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();
}
-------------------------------------------------------
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.
Danke für die Hilfe. Gruss
Gast
#6143384
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Warning beim Compiler einschalten kann auch helfen. Afaik ab GCC 7.irgendwas wird dann auch ein implicit fall through angemeckert.
Gast
#6144032
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 :)
Gast
#6144282
Da wird ja wieder geistig von der Hand in den Mund programmiert.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.