質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

1回答

427閲覧

processing for文について

horirinm

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2022/05/28 14:21

編集2022/05/28 16:00

processingの質問です プログラミング言語はPythonを利用しています 知識は激浅です
考えてもどのようなプログラムを利用すればよいのかわかりません助言いただけるとありがたいです

def draw():
background(128)
x, y = 100, 100
for i in range(0, 3):
ellipse(x, y+150i, 50, 50)
rect(x+150, y-25+150
i, 50, 50)
triangle(x+350, y-25+150i, x+325, y+25+150i, x+375, y+25+150*i)

やりたい動作のイメージです
クリックされるたびに塗りつぶされる図形が移動する
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2022/05/28 15:19

コードは画像ではなく文字(コードブロック)で提示してください 回答者も念のため動作確認等をして慎重に回答しています。画像で提示されるとすべて書き起こさなくてはならず面倒です。 > 色がつく図形をマウスがクリックされるたびに左上の円から順番に変わり続けるプログラム すいませんが意味がまるで分かりません。 「(何かを)クリックすると(どこかの)図形の色が(何色かに)変わるのかな?」ぐらいにしか伝わっていません。 もっと細かく説明するか、言葉で説明しづらければ図かなんかを使っても結構です。 > 一応、mouseClicked をfor文の外側に書いてやってみたのですが失敗しました。 やってみてダメだったことも説明してください。 うまくいかないコードでも、何をやろうとしているかのヒントにはなります。 [ヘルプ | 質問する時のヒント](https://teratail.com/help/question-tips)
TN8001

2022/06/05 09:41

> ベストアンサーをいったん解除して2,3日様子を見たら、ほかの方の回答もあるかもしれません(解決済み質問に新たに回答が付くことは非常にまれです) 1週間経ちましたが反応がないですね^^; 提示の3つで十分だろう(別解はいくらでもあるがトリッキーになったり、あまり面白くもない)と思われたかもしれません。 あるいはProcessing+Pythonという組み合わせが、想像以上に少数派なのかもしれません^^; (タイミングはお任せしますが)どこかで区切りをつけて、(ベストアンサーを付けなおして)質問をクローズしてください。
guest

回答1

0

やりたい動作のイメージです
クリックされるたびに塗りつぶされる図形が移動する

なるほどそういう感じですか。
for文で描いているのでちょっとややこしいですかね。
いろいろやり方はあるでしょうが、色の配列を用意しておくのはどうでしょうか。

Python

1colors = [] 2 3def setup(): 4 global colors 5 6 size(600, 600) 7 colors = [color(255)] * 9 8 colors[0] = color(0) 9 10def draw(): 11 background(128) 12 x, y = 100, 100 13 for i in range(0, 3): 14 fill(colors[0 + i * 3]) 15 ellipse(x, y + 150 * i, 50, 50) 16 17 fill(colors[1 + i * 3]) 18 rect(x + 150, y - 25 + 150 * i, 50, 50) 19 20 fill(colors[2 + i * 3]) 21 triangle(x + 350, y - 25 + 150 * i, x + 325, y + 25 + 150 * i, x + 375, y + 25 + 150 * i) 22 23def mouseClicked(): 24 global colors 25 26 #一番後ろ(-1:)と一番後ろ以外の全部(:-1)をつなげて入れなおす(=右に1っこずれる) 27 colors = colors[-1:] + colors[:-1]

配列のシフトがPythonicな感じです^^
Python リストのインデックスをずらす!! - Qiita


色の配列にしたのは、色を増やしたりが楽だろうと思ってのことです。

要件を満たすだけなら、グローバル変数はintひとつで十分です。

Python

1current = 0 2 3def setup(): 4 size(600, 600) 5 6def draw(): 7 background(128) 8 x, y = 100, 100 9 for i in range(0, 3): 10 fill(0 if 0 + i * 3 == current else 255) 11 ellipse(x, y + 150 * i, 50, 50) 12 13 fill(0 if 1 + i * 3 == current else 255) 14 rect(x + 150, y - 25 + 150 * i, 50, 50) 15 16 fill(0 if 2 + i * 3 == current else 255) 17 triangle(x + 350, y - 25 + 150 * i, x + 325, y + 25 + 150 * i, x + 375, y + 25 + 150 * i) 18 19def mouseClicked(): 20 global current 21 current = (current + 1) % 9

ループを9回まわすほうが、fillに関してはわかりやすいかもしれません。

Python

1current = 0 2 3def setup(): 4 size(600, 600) 5 6def draw(): 7 background(128) 8 translate(100, 100) 9# for i, (col, row) in enumerate([(i % 3, i / 3) for i in range(9)]): 10 for i in range(9): 11 fill(0 if i == current else 255) 12 col = i % 3 13 row = i / 3 14 y = 150 * row 15 if col == 0: 16 ellipse(0, y, 50, 50) 17 elif col == 1: 18 rect(150, y - 25, 50, 50) 19 else: 20 triangle(350, y - 25, 325, y + 25, 375, y + 25) 21 22def mouseClicked(): 23 global current 24 current = (current + 1) % 9

投稿2022/05/28 16:29

編集2023/07/30 08:40
TN8001

総合スコア9315

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horirinm

2022/05/28 17:57

丁寧に対応してくださってありがとうございます。 答えていただいたコードを試してみたところ完璧に動作しました。 良ければでいいのですが他のコードで作る場合はどのようすなコードを使用することがあるのでしょうか
TN8001

2022/05/28 21:59

> 良ければでいいのですが他のコードで作る場合はどのようすなコードを使用することがあるのでしょうか このお題での別バリエーションということですか? 2パターン追記しましたが、あまり面白くないかもしれません^^; ベストアンサーをいったん解除して2,3日様子を見たら、ほかの方の回答もあるかもしれません(解決済み質問に新たに回答が付くことは非常にまれです)
horirinm

2022/05/29 04:39

3個のパターンを用意してくださりありがとうございます。 自分ではこの方法を思いつくことができませんでした。 これからより精進していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問