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

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

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

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

Q&A

解決済

2回答

7368閲覧

Processingでのクラスの初期化について

退会済みユーザー

退会済みユーザー

総合スコア0

Processing

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

0グッド

0クリップ

投稿2015/07/19 15:51

Processingでクラスの勉強をしていて、
上下に動く円があって、マウスをクリックしたら円の動く方向が変わるというプログラムをはじめに書いて、
その後にクラスを使って書いていたのですが、実行するとPlayerクラスが初期化されていませんと出てしまいます。
以下が元のコードとクラスを使って書いたコードとエラー文なのですが、何が間違っているのかを教えてくれると助かります。

元のコード

int xPos;
int yPos;
int dia;
int vy;
void setup() {
size(600, 400);
xPos = width/4;
yPos = height/2;
dia = 10;
vy = -2;
}

void draw() {
background(255);
ellipse(xPos, yPos, dia, dia);
if (mousePressed == true) {
vy = -vy;
}
yPos = yPos + vy;
}

Mainタブ

Player player;
void setup(){
size(600,400);
player = new Player();
}

void draw(){
background(255);
Player player;
player.update();
player.draw();
}

Playerタブ

class Player {
int xPos;
int yPos;
int dia;
int vy;
Player() {
xPos = width/4;
yPos = height/2;
dia = 10;
vy = -2;
}
void update() {
if (mousePressed == true) {
vy = -vy;
}
yPos = yPos + vy;
}
void draw() {
ellipse(xPos, yPos, dia, dia);
}
}

エラー文
The local veriable player may not have been initialized

よろしくお願いします。

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

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

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

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

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

guest

回答2

0

java

1Player player; 2void setup(){ 3 size(600,400); 4 player = new Player(); 5} 6 7void draw(){ 8 background(255); 9 player.update(); 10 player.draw(); 11}

イメージ説明

投稿2015/07/19 22:04

katoy

総合スコア22324

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

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

0

ベストアンサー

あらかじめ断っておきますと、私はProcessingは専門外です。ですがProcessingの元(?)のJavaは守備範囲内なので少々お付き合い頂けるとありがたいです。

まず、エラーの内容ですが、ニュアンスとしては「ローカル変数であるplayerが初期化されていないかもしれない」です。
これはローカル変数を初期化していない状態で利用しようとしている、ということです。

質問文中のコードで、初期化していないローカル変数を利用しようとしているのは、おそらくMainタブのこの部分です。

Processing

1void draw() { 2 background(255); 3 Player player; // このローカル変数playerが初期化されていない 4 player.update(); // 初期化されていない状態で利用しようとしている 5 player.draw(); 6}

playerは既に宣言されており、setup()で初期化もされているように見受けられます。
ですので上記のPlayer player;の行をコメントアウトしてみてはいかがでしょうか?

投稿2015/07/19 17:12

shiolier

総合スコア1156

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

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

退会済みユーザー

退会済みユーザー

2015/07/19 22:53

皆さんありがとうございます! おかげで実行することが出来ました! こちらが早かったのでBAにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問