我正在努力使用 Splashkit 处理最小/最大范围变量的语法



我是编码领域的新手,从C++开始。我刚刚完成了我的你好世界和其他一些简单的任务,这是我的第一个相当大的任务。我已经完成了大约90%,但我在语法上很吃力。

我有一个可以上下左右移动的圆圈,它会改变颜色,背景也是如此。它还可以使用减号和等号来更改大小。

问题是:目前,半径是通过来自终端的用户输入来设置的,这是一项任务要求。我现在需要的半径只允许在10到200之间。

我已经做了几个小时了,现在我开始工作的时候更累了,哈哈;10部分工作,无法获得>200部分正确。现在他们都犯了错误。

请帮助一个傻瓜开始他的编码冒险:(

#include "splashkit.h"
// #define RADIUS 50
#define MIN_RANGE 10
#define MAX_RANGE 200
string read_string(string prompt)
{
string result;
write(prompt);
result = read_line();
return result;
}
int main()

{
double x;
double y;
color circle_color = COLOR_GREEN;
color screen_color = COLOR_WHITE;
int radius;
string line;
radius = 32;

while (radius <= MIN_RANGE) + (radius >= MAX_RANGE);
{
line = read_string("Enter the starting Radius of the Circle: ");
radius = convert_to_double(line);
if (radius < MIN_RANGE)
{
write("Sorry. Please select a radius between 10 and 200! ");
}
else if (radius > MAX_RANGE)
{
write("Sorry. Please select a radius between 10 and 200! ");
}
else
{
open_window("Circle Mover by James Jones", 800, 600);
x = screen_width() /2;
y = screen_height() /2;
}
}

while( not quit_requested() )
{
process_events();

if ( key_typed ( SPACE_KEY ))
{
screen_color = random_color();
}
if ( key_typed ( C_KEY ))
{
circle_color = random_color();
}
if ( key_down(RIGHT_KEY) )
{
x = x + 3;
}
if ( key_down(LEFT_KEY) )
{
x -= 3;
}
if ( key_down(DOWN_KEY) )
{
y = y + 3;
}
if ( key_down(UP_KEY) )
{
y -= 3;
}
if ( key_down(EQUALS_KEY) )
{
radius = radius + 1;
}
if ( key_down(MINUS_KEY) )
{
radius = radius - 1;
}

if ( x + radius > screen_width() )
{
x = screen_width() - radius;
}
if ( x - radius < 0 )
{
x = radius;
}
if ( y + radius > screen_height() )
{
y = screen_height() - radius;
}
if ( y - radius < 0 )
{
y = radius;
}
clear_screen(screen_color);
fill_circle(circle_color, x, y, radius);
refresh_screen(60);

}
return 0;
}

我认为问题出在这条线上

while (radius <= MIN_RANGE) + (radius >= MAX_RANGE);

我建议你把它换成

while ((radius <= MIN_RANGE) and (radius >= MAX_RANGE))

并确保删除while循环前面的分号;。因为它表示一个空语句。例如

while(1<2);

是一个无限while循环,在每次迭代中执行该空语句(意味着什么都不执行(

最新更新