begin
with Form1.PaintBox1.Canvas do
begin
c の値に応じて,ブラシとペンの色を定める; // ???
(例: if c=1 then "ブラシとペンを赤にする"
else "ブラシとペンを青にする";)
中心が (x,y) で半径が r の円をかく ; // ???
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with PaintBox1.Canvas do
begin
Brush.Color := clBlue; Rectangle(0,0,500,280); // 長方形 (500 X 280)
Circle(250,140,20,1); // 円 (半径 20)
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var x1,y1,x2,y2,dx,i : integer;
begin
dx := 1;
x1 := 250; y1 := 140;
with PaintBox1.Canvas do
begin
i := 0;
repeat
if (x1<=20) または (x1>=480)) ならば,dx を (-1) 倍する ; // ??? 壁にぶつかったとき,進行方向を逆向きにする
x2 := x1 + dx; y2 := y1; // (x1,y1) は古い位置,(x2,y2) は新しい位置
Circle(??, ??, 20, ?); // ??? 前に描いた円を「消す」
Circle(??, ??, 20, ?); // ??? 新たに赤い円を描く
x1 := x2; y1 := y2;
sleep(2);
i := i+1;
until i>=1000;
end;
end;
end.
宿題は自分でしましょう(笑)。
D8以降「Circle」というメソッドが増えたのですか? >ALL
まずそれからね。
D6ですが、初心者なのでまったくわかりません
まず、Circle()という関数は、少なくとも私のDelphiにはないので、おそらくどこかで独自に定義してあるはず。
procedure TForm1.Button1Click(Sender: TObject);にCircle(250,140,20,1); とあるので、
おそらく引数は最初3つがx座標、y座標、半径 だとして、第4引数がPenの太さかな?それだと回答不能。
第4引数が1=描画 2=消去なら2を渡せばいい。
泣いてばかりじゃ家に帰れない。
興味があるので質問です。
まず、これは課題でしょうか?
だとすると、大学?短大?高校?、そんでもって理系?文系?総合?
そもそも私はこの問題自体が回答者を小馬鹿にしているように思えます。
出題者の意図がさっぱりです。
私の質問に答えてくれたら穴埋め引き受けます。
procedure Circle(x, y, r, c: Integer);
var
X1, Y1, X2, Y2: Integer;
begin
with Form1.PaintBox1.Canvas do
begin
{c の値に応じて,ブラシとペンの色を定める; // ???
(例: if c=1 then "ブラシとペンを赤にする"
else "ブラシとペンを青にする";)}
if c=1 then
begin
Brush.Color := clRed;
Pen.Color := clRed;
end
else
begin
Brush.Color := clBlue;
Pen.Color := clBlue;
end;
{中心が (x,y) で半径が r の円をかく}
X1 := x-r; Y1 := y-r;
X2 := x+r; Y2 := y+r;
Ellipse(X1,Y1,X2,Y2); // ???
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with PaintBox1.Canvas do
begin
Brush.Color := clBlue; Rectangle(0,0,500,280); // 長方形 (500 X 280)
Circle(250,140,20,1); // 円 (半径 20)
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var x1,y1,x2,y2,dx,i : integer;
begin
dx := 1;
x1 := 250; y1 := 140;
with PaintBox1.Canvas do
begin
i := 0;
repeat
{if (x1<=20) または (x1>=480)) ならば,dx を (-1) 倍する ;} // ??? 壁にぶつかったとき,進行方向を逆向きにする
if (x1<=20) or (x1>=480) then
dx := -1*dx;
x2 := x1 + dx; y2 := y1; // (x1,y1) は古い位置,(x2,y2) は新しい位置
Circle(x1, y1, 20, 0); // ??? 前に描いた円を「消す」
Circle(x2, y2, 20, 1); // ??? 新たに赤い円を描く
x1 := x2; y1 := y2;
sleep(2);
i := i+1;
until i>=1000;
end;
end;
end.
https://www.petitmonte.com/bbs/answers?question_id=6770
どこぞの宿題?
あざーすwww
おかげでできましたwww
質問者は、delphi さんなのかな?
取り敢えず、解決で良いよね?。
ツイート | ![]() |