-1
私はピンポンゲームをしたい、私はボールの動きにこだわっています。私はそれが640 x 480の境界から抜け出したくないです。 ....私はそれがこの境界から抜け出すが、代わりにちょうど衝突の場合のように再び移動したくない... 次のコードC++の特定の境界内でオブジェクトを移動する方法
#include <iostream>
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\TC\\BGI");
int x = 0, y = 0, i;
setcolor(RED);
setfillstyle(SOLID_FILL, YELLOW);
circle(x, y, 20);
floodfill(x, y, RED);
loop1:
for (i = 0; i <= 45; i++) {
cleardevice();
setcolor(RED);
setfillstyle(SOLID_FILL, YELLOW);
circle(x, y, 20);
floodfill(x, y, RED);
if (y == 460) {
break;
}
else {
x += 10;
y += 10;
}
delay(10);
}
for (i = 0; i <= 46; i++) {
cleardevice();
setcolor(RED);
setfillstyle(SOLID_FILL, YELLOW);
circle(x, y, 20);
floodfill(x, y, RED);
if (x == 620) {
break;
}
else {
x += 10;
y -= 10;
}
delay(10);
}
for (i = 0; i <= 45; i++) {
cleardevice();
setcolor(RED);
setfillstyle(SOLID_FILL, YELLOW);
circle(x, y, 20);
floodfill(x, y, RED);
if (y == 20) {
break;
}
else {
x -= 10;
y -= 10;
}
delay(10);
}
for (i = 0; i <= 45; i++) {
cleardevice();
setcolor(RED);
setfillstyle(SOLID_FILL, YELLOW);
circle(x, y, 20);
floodfill(x, y, RED);
if (x == 20) {
goto loop1;
}
else {
x -= 10;
y += 10;
}
delay(10);
}
getch();
closegraph();
}
湖は、goto' 'を使用すると、すべてのグラフィックスコードを含めることは、この例ではなく、ハードを理解します。あなたの例が単純になればなるほど、誰かがそれを理解する時間を取る可能性が高くなります。あなたは、あなたの例を適切にインデントし、減らす必要があります。さらに、ローカルファイル( '' C:\\ TC \\ BGI "')を使用することで、この例は他の人には実行不能になり、助けにはならないでしょう。 –
これはあなたが持つことができる 'goto'の最悪の使用法です。ラベルを上に向かって 'for'ループから分岐し、' for'ループに戻ります。整数 'i'をループカウンターとして使用します。両方のループで、あなたは再び出てきます。 [スパゲッティコード](https://en.wikipedia.org/wiki/Spaghetti_code) – PaulMcKenzie