ここから本文です

int i,j; void setup() { size(400,400); background(255); for(i=0;i<20;i...

アバター

ID非公開さん

2017/11/2213:34:48

int i,j;

void setup()
{
size(400,400);
background(255);
for(i=0;i<20;i++){

for(j=0;j<20;j++){

ellipse(10+i*20,10+j*20,18,18);
}
if((i+j)%2==0){
fill(0);
}
else{
fill(255);
}
}
}


プロセッシングで○をチェック柄にしたいんですけど、これだと
○●○●○●○●○●
○●○●○●○●○●
○●○●○●○●○●
○●○●○●○●○●
○●○●○●○●○●
こんな感じになります
これを
●○●○●○●○●○
○●○●○●○●○●
●○●○●○●○●○
○●○●○●○●○●
●○●○●○●○●○
こんな感じにしたいんですけど、どうすればいいですか?

閲覧数:
20
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

namnさん

2017/11/2213:53:33

なんの言語か知りませんけど、

jループの中にifを入れればいいんじゃないでしょうか?

jループの外にあるので、
全てのi+jがi+20になり、せっかくの%2による計算が全てiに対してのみ行われているように見えます。

検証等は一切していないので勘ですけど、、

ベストアンサー以外の回答

1〜1件/1件中

2017/11/2214:57:57

そのプログラムがどう動いているかというと、
size,backgroundはいいとして
for文でi=0にして
for文でj=0にして
ellipse(10+0*20,10+0*20,18,18);
for文でj=1にして
ellipse(10+0*20,10+1*20,18,18);
for文でj=2にして
ellipse(10+0*20,10+2*20,18,18);
<略>
for文でj=19にして
ellipse(10+0*20,10+19*20,18,18);
for文でj=20にしてループを抜けて
i+jは20だから2で割って余り0
塗り潰しを黒に設定して

for文でi=1にして
for文でj=0にして
ellipse(10+1*20,10+0*20,18,18);
for文でj=1にして
ellipse(10+1*20,10+1*20,18,18);
for文でj=2にして
ellipse(10+1*20,10+2*20,18,18);
<略>
for文でj=19にして
ellipse(10+1*20,10+19*20,18,18);
for文でj=20にしてループを抜けて
i+jは21だから2で割って余り1
塗り潰しを白に設定して

つまり、縦に一列ずらっと同じ色で円を描いて、その隣にずらっと同じ色で円を描いて...という動作なので市松模様にはなりません。
内側のfor文の中で色を切り替える動作をいれてみたらいかがでしょう。それと、円を描く前に色の指定をしたほうがいいなぁ...今のプログラムだと、最初の一列は特にfillの指定をされないまま円を描いています。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる