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

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

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

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Processing

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

Q&A

解決済

1回答

353閲覧

Processingにて画像をキャラクタで埋め尽くすようなものを作りたいのですがエラーが出てきて上手くいきません

naker

総合スコア1

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Processing

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

1グッド

0クリップ

投稿2023/11/29 05:14

編集2023/12/05 03:55

実現したいこと

●void step()でプログラムの初期化を作動させる
●void draw()でメインループを作動
●color getRandomColor()でランダムな色データを作って返す
●void drawChara(float charaX,float charaY,color charaColor)でキャラクターを指定した位置と色で画面に描く

前提

void setup()とvoid draw()には"Missing operator, semicolon, or ‘}’ near ‘setup’?"というエラーが出てきてしまい、color getRandomColor()とvoid drawChara(float charaX,float charaY,color charaColor)には"";”がありませんというエラーが出てきます。
イメージ説明

発生している問題・エラーメッセージ

"Missing operator, semicolon, or ‘}’ near ‘setup’?"

該当のソースコード

PImage img; void setup(){ size(300,300); smooth(); background(0); imageMode(CENTER); img=loadImage("C_Pro.png"); frameRate(3); } void draw(){ int x=int(random(width)); int y=int(random(height)); color c=getRandomColor(); drawChara(x,y,c); } color getRandomColor(){ colorMode(HSB,360,100,100); color c=color(random(60,300),80,99); return c; } void drawChara(float charaX,float charaY,color charaColor){ tint(charaColor); image(img,charaX,charaY); }

試したこと

””を予想した箇所に打ってみたがエラー場所が変化する一方
大文字小文字の変更

お返事遅くなり申し訳ございません。
質問へのお答えありがとうございます。

イメージ説明

画像は160px 160px 72dpiのpng形式を使用しております。

スケッチデータはCo001.pdeで保存してやってみましたがやはりエラーが出てきてしまいます。
イメージ説明
掲示頂いたコードをコピペでやってみたところ正常に作動しました。
画像データの記入に問題があるんですかね?

画像データの名前間違っていました。正しくは"Proce.png"です

お手数をおかけしますがご回答のほどよろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Processing-4.3

TN8001👍を押しています

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

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

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

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

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

TN8001

2023/11/29 09:32 編集

こちらでは(画像があれば)提示コードそのままで動きました。 提示画像では14行目以前が分かりませんがどうなっていますか? 提示画像で気になるのは、タイトルバーやタブ名です。 こちらの手元では「sketch_231129a | Processing 4.3」や「sketch 231129a」のようになります。 提示画像のような状態にする方法が分かりませんでした。どんなスケッチ名で保存しましたか? 「aaa」でもなんでもいいのですが当たり障りのない名前でスケッチを保存し、提示コードをコピペするとどうなりますか?
guest

回答1

0

ベストアンサー

こちらでは(画像があれば)提示コードそのままで動きました。

提示画像では14行目以前が分かりませんがどうなっていますか?

Processing

1PImage img; 2 3void setup() { 4 size(300, 300); 5 smooth(); 6 background(0); 7 imageMode(CENTER); 8 9 img = loadImage("https://www.gravatar.com/avatar/2fd3952371191c0f074bda2aaf3ad2c2?d=identicon", "png"); 10 11 frameRate(3); 12} 13 14void draw() { 15 int x =int(random(width)); 16 int y =int(random(height)); 17 color c = getRandomColor(); 18 19 drawChara(x, y, c); 20} 21 22color getRandomColor() { 23 colorMode(HSB, 360, 100, 100); 24 color c = color(random(60, 300), 80, 99); 25 return c; 26} 27 28void drawChara(float charaX, float charaY, color charaColor) { 29 tint(charaColor); 30 image(img, charaX, charaY); 31}

証拠動画


追記

端的に言うと14行目より前の部分がいらないです(コメント化しましたが削除してしまって結構です)

Processing

1//size(300,300); 2//smooth(); 3//background(0); 4//imageMode(CENTER); 5 6//PImage img=loadImage("C_Pro.png"); 7 8// int x=int(random(width)); 9// int y=int(random(height)); 10// float scale=random(0.2,0.8); 11 12// image(img,x,y,img.width*scale, img.height*scale); 13 14 PImage img; 15 16void setup(){ 17 size(300,300); 18 smooth(); 19 background(0); 20 imageMode(CENTER); 21 22 img=loadImage("C_Pro.png"); 23 24 frameRate(3); 25} 26void draw(){ 27 int x=int(random(width)); 28 int y=int(random(height)); 29 color c=getRandomColor(); 30 31 drawChara(x,y,c); 32} 33 34color getRandomColor(){ 35 colorMode(HSB,360,100,100); 36 color c=color(random(60,300),80,99); 37 return c; 38 } 39void drawChara(float charaX,float charaY,color charaColor){ 40 tint(charaColor); 41 image(img,charaX,charaY); 42 }

Processingではstaticモードとactiveモードという2つの書き方があります。
提示のコードは両方が混じってしまっています。そのためエラーになっています(エラー文がよくないですが...

例えばこういうのがstaticモードです。
動きがないスケッチなら、setupやdrawを書かずに短くシンプルに書くことができます。

Processing

1size(400, 400); 2background(192, 64, 0); 3stroke(255); 4line(150, 25, 270, 350);

そしてこういうのがactiveモードです。
動きがあるスケッチは初回に実行されるsetupと、毎フレーム呼ばれるdrawが必要です。

Processing

1void setup() { 2 size(400, 400); 3 stroke(255); 4 background(192, 64, 0); 5} 6void draw() { 7 line(150, 25, mouseX, mouseY); 8}

エラー文が改善したと思っていたんですが、いつの間にか戻ってますねぇ^^;
"Missing operator, semicolon, or '}' near 'setup'?"  のエラー表示が消えない

投稿2023/12/01 21:51

編集2023/12/04 07:35
TN8001

総合スコア9412

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問