Androidのサンプル
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
まず、関連する部分を上げてみてください。あんどろいどくん さんが書きました:ちょっと分からなくなってきました。
どうやって説明すればいいのか言葉が出てこないです。
すくなくとも、どの行が関連しているかぐらいは提示できませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
元のソースコードの行番号ですよね? 足らないのと、なにか違うところまで提示されている気が。あんどろいどくん さんが書きました:MainViewの
25行~33行目
74行~84行目
113行~148行目
151行目~168行目
class Circleに関連する所だけでお願いできますか。 それと、元のブログのソースコードに掲載されている行番号を使って下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Androidのサンプル
softyaさん 落ち着いてください。
世の中にはいろんな人がいます。
中学生でも書き込める時代ですから
(中学生とは言ってはいないけど、日本語があまりにもあれです)
世の中にはいろんな人がいます。
中学生でも書き込める時代ですから
(中学生とは言ってはいないけど、日本語があまりにもあれです)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
dicさん。心配していただいて有難うございます。dic さんが書きました:softyaさん 落ち着いてください。
世の中にはいろんな人がいます。
中学生でも書き込める時代ですから
(中学生とは言ってはいないけど、日本語があまりにもあれです)
私は怒っているわけではなく、冷静に分かって貰おうとしているだけです。
と言うことで あんどろいどくん さんも今しばらくお付き合いくださると嬉しいです。
では、これらの行の中であんどろいどくん さんが書きました:MainViewの
64行~109行目
112行~147行目
150行~167行目
(1)ボールの色に関する処理をしている部分
(2)ボールを発生させている部分。
(3)衝突した後でボールの軌道を変えている部分。
をそれぞれ出来るだけ狭い範囲の行で書き出してみてください。
【追記】
(2)はついでなので、省略可です。
他の人と相談した所、全体を理解してもらうのは次の機会として今回は色の変更だけに絞り込んだほうが良いとなりました。
と言うことで、全体の理解をしたい場合は別のトピックで質問をなさってください。
さて、class Circleの使われて所を絞り込んでもらったのですが、class Circleがボールに関する全情報を保持するためのクラスです。
当然、その中にはボールの色も含まれます。
説明の都合で、行番号を入れ替えています。
(1)150行~167行目。class Circleのインスタンスを生成しています。当然色に関しては処理が有りますがインスタンスの生成に関連した処理です。
(2)112行~147行目。移動と描画を担当しています。この中でclass Circleのインスタンスから色を取り出して描画に使っています。
(3)64行~109行目に関しては、色の扱いはありません。ボールの衝突に関する処理ですから。この中に衝突した瞬間が分かる部分がありますので、衝突時の処理としてclass Circleのインスタンスの保持する色を変更をすれば良いことになります。
では、
(1)の色は最終的のどの変数あるいはクラスのインスタンスが保持していることに成るでしょうか?
(2)で色を処理している行を書いてみてください。
(3)色の変更をどの部分に加えると良いと思いますか? 行番号でこの行の上と具体的に書いてみてください。
それとどのような処理をすると良いと思われますか? → ヒント:インスタンスに変更を加えます。
わからない部分は分かりませんでかまいません。特に(1)は分からなくても何となくの理解でも今回は何とかなります。
ただ、これ以外の改造を加えていく上では最終的には理解しなとダメな部分でも有ります。
その場合は質問タイトルとズレてくることに成るので、別トピックで質問をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Androidのサンプル
質問者さんはnew Circle(~)でセットされた色が自動的に描画に使われていると考えているように見えます。
ほんとうはコードから自力で読み取って欲しいのですが、ライブラリが絡むのでほとんど答えのようなヒントです。
paint.setColor(Color.argb(255, a.cr, a.cg, a.cb)); // 描画色をセット
canvas.drawCircle(a.x, a.y, a.radius, paint); // セットした描画色を使う
円(ボール)の描画は毎度ひとつずつ描画色をセットしながら行われています。
ほんとうはコードから自力で読み取って欲しいのですが、ライブラリが絡むのでほとんど答えのようなヒントです。
paint.setColor(Color.argb(255, a.cr, a.cg, a.cb)); // 描画色をセット
canvas.drawCircle(a.x, a.y, a.radius, paint); // セットした描画色を使う
円(ボール)の描画は毎度ひとつずつ描画色をセットしながら行われています。
Re: Androidのサンプル
(1)の色は
最後にreturn trueで終わっていますので
(32行目)paint.setAntiAlias(true);に返されると思います。
(2)で色を処理している行
142と143行目で色の生成と描画が行われていると思います。
(3)色の変更をどの部分に加えると良いか
この行の上と具体的に書くというのは色の変更が行われる行の上
でしょうか。
最後にreturn trueで終わっていますので
(32行目)paint.setAntiAlias(true);に返されると思います。
(2)で色を処理している行
142と143行目で色の生成と描画が行われていると思います。
(3)色の変更をどの部分に加えると良いか
この行の上と具体的に書くというのは色の変更が行われる行の上
でしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
これに関してはJavaやC++のクラスや更にはC言語での関数の理解度が足らないと思われますので、今回は詳しく説明しません。あんどろいどくん さんが書きました:(1)の色は
最後にreturn trueで終わっていますので
(32行目)paint.setAntiAlias(true);に返されると思います。
それとAndroidのイベント駆動の動作自体も未理解だと思ってもらったほうが良いです。
別途勉強をして頂きたいと思いますが、分からないことがあれば別トピックということでお願いします。
これに付いてはここで終わりにしますが、大事なのはcontainerとだけ書いておきます。
そうですね。それは何のどの変数を使って色を生成していますか?あんどろいどくん さんが書きました: (2)で色を処理している行
142と143行目で色の生成と描画が行われていると思います。
色の変更を行ったほうが良いと思われる行の範囲で構いません。あんどろいどくん さんが書きました: (3)色の変更をどの部分に加えると良いか
この行の上と具体的に書くというのは色の変更が行われる行の上
でしょうか。
あるいは、この行の上に差し込むという書き方でもOKです。
どちらでもお好きな方で。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Androidのサンプル
(1)
関数にとっつきにくいこともありまして関数が未だに分かりません。
(2)
a.cr,a.cg,a.cbで色が生成されている
a.x, a.y, a.radiusで描画が行われている
(3)
101行目の上に差し込まれると思います
86行~98行目が衝突判定だと思いますので、その後色が変わるという
処理を加えればと考えました。
関数にとっつきにくいこともありまして関数が未だに分かりません。
(2)
a.cr,a.cg,a.cbで色が生成されている
a.x, a.y, a.radiusで描画が行われている
(3)
101行目の上に差し込まれると思います
86行~98行目が衝突判定だと思いますので、その後色が変わるという
処理を加えればと考えました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
(1)関数は基本なので、それが理解できないとプログラムが組めないと思ってもらって良いと思います。
関数のないプログラムは初歩の初歩ぐらいにしかありません。
(2)
>a.cr,a.cg,a.cbで色が生成されている
aは何処から生まれたかを理解すればもっと良いですね。
(3)のためにも考えてみてください。
(3)
>86行~98行目が衝突判定だと思いますので、その後色が変わるという
実はif文の理解も足りないと思います。
ただ、101行目でも構わないのでここに追加するとしましょう。
さて、どのようなソースコードを追加しますか?
関数のないプログラムは初歩の初歩ぐらいにしかありません。
(2)
>a.cr,a.cg,a.cbで色が生成されている
aは何処から生まれたかを理解すればもっと良いですね。
(3)のためにも考えてみてください。
(3)
>86行~98行目が衝突判定だと思いますので、その後色が変わるという
実はif文の理解も足りないと思います。
ただ、101行目でも構わないのでここに追加するとしましょう。
さて、どのようなソースコードを追加しますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Androidのサンプル
(2)
Circleからa.を書くことが出来てると思います
それかcontainerが生成の原点なのかと思ってたりします
(3)
Circle a = container.get(i);
if(AとBが衝突したら)
{
色を変える
a.cr;
}
if(AとCが衝突したら)
{
色を変える
a.cg;
}
if(AとDが衝突したら)
{
色を変える
a.cb;
}
Circleからa.を書くことが出来てると思います
それかcontainerが生成の原点なのかと思ってたりします
(3)
Circle a = container.get(i);
if(AとBが衝突したら)
{
色を変える
a.cr;
}
if(AとCが衝突したら)
{
色を変える
a.cg;
}
if(AとDが衝突したら)
{
色を変える
a.cb;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
(2) 生まれてきたという書き方が語弊がありましたね。失礼しました。
何処から持ってきたのかですね。 containerの方が正解です。
(3) 衝突相手で色を変えるのは、あんどろいどくん さんには高度なので色を変えるだけに絞った方が良いと思います。
つまりif文は増やさないでください。
あと a.cb; やa.cr; だけでは色は変わりません。色を代入してください。
何処から持ってきたのかですね。 containerの方が正解です。
(3) 衝突相手で色を変えるのは、あんどろいどくん さんには高度なので色を変えるだけに絞った方が良いと思います。
つまりif文は増やさないでください。
あと a.cb; やa.cr; だけでは色は変わりません。色を代入してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
> Circle a = container.get(i);
既に有るので必要ありません。
>元の色からほかの色に変える
> a.r = 元の色;
rはメンバ変数として存在しません。
あと代入文を理解されていますか?
a.cr=元の色;
だとしてどんな効果を期待していますか。
それと「元の色」って部分も具体的な命令文でお願いします。
既に有るので必要ありません。
>元の色からほかの色に変える
> a.r = 元の色;
rはメンバ変数として存在しません。
あと代入文を理解されていますか?
a.cr=元の色;
だとしてどんな効果を期待していますか。
それと「元の色」って部分も具体的な命令文でお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Androidのサンプル
(3)
代入が逆でした
元の色?( canvas.drawCircle)=a.r
命令文で
if( canvas.drawCircle == a.r)
{
canvas.drawCircleの色を青にする?
}
代入が逆でした
元の色?( canvas.drawCircle)=a.r
命令文で
if( canvas.drawCircle == a.r)
{
canvas.drawCircleの色を青にする?
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
> 元の色?( canvas.drawCircle)=a.r
すいません。意味不明です。
canvas.drawCircleはメンバ関数なので代入で書きません。
あとa.rはrと言うメンバ変数が先程も書いた通りありません。
それとif文は増やす必要がないと書いたのですが何故増やすのですか?理由を教えてください。
すいません。意味不明です。
canvas.drawCircleはメンバ関数なので代入で書きません。
あとa.rはrと言うメンバ変数が先程も書いた通りありません。
それとif文は増やす必要がないと書いたのですが何故増やすのですか?理由を教えてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
とりあえず最大のヒントです。
cr,cb,cgに値を代入すれば色は変わります。
if文は必要ないです。
※ crはcolor redの略です。以下cb,cgも同様。
それ以上の事をプログラムに加えたいなら、今一度基礎の基礎から勉強しなければならない状態だと思ってください。
cr,cb,cgに値を代入すれば色は変わります。
if文は必要ないです。
※ crはcolor redの略です。以下cb,cgも同様。
それ以上の事をプログラムに加えたいなら、今一度基礎の基礎から勉強しなければならない状態だと思ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Androidのサンプル
101行目の上に
例:int cr = 0;
int cg = 0;
int cb = 255
と記述してもボールが衝突したときに青色に変わらないですよね
例:int cr = 0;
int cg = 0;
int cb = 255
と記述してもボールが衝突したときに青色に変わらないですよね
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
描画で使っているのはcontainer.get(i);で得たa.crなどですから、色を変更するのもcontainer.get(i);から得たa.crなどでなければいけません。
と言う理解で今はやってください。本当の話は難しすぎるので省略します。
と言う理解で今はやってください。本当の話は難しすぎるので省略します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Androidのサンプル
a.cr=0;
a.cg=255;
a.cb=0;
を記述して色を変えることはできました。
もしも同色のボールと衝突したら消滅するという
処理を行うとしたら。
次のような記述をするのでしょうか
if(もしも同色と同じなら)
{
消滅する(destroye)
}
a.cg=255;
a.cb=0;
を記述して色を変えることはできました。
もしも同色のボールと衝突したら消滅するという
処理を行うとしたら。
次のような記述をするのでしょうか
if(もしも同色と同じなら)
{
消滅する(destroye)
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
関数やクラスを理解できていない現状のあんどろいどくん さんには難しいと思います。あんどろいどくん さんが書きました:a.cr=0;
a.cg=255;
a.cb=0;
を記述して色を変えることはできました。
もしも同色のボールと衝突したら消滅するという
処理を行うとしたら。
次のような記述をするのでしょうか
if(もしも同色と同じなら)
{
消滅する(destroye)
}
まず、ちゃんと言語の勉強をされるべきです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidのサンプル
効率のよい方法なんてのは多分ないと思います。あんどろいどくん さんが書きました:どのように独学で学ぶのが効率いいでしょうか
ちゃんと1命令、1命令をコンパイル実行してデバッガやprintfなどで動作を確認しなら機能をイメージできるように理解するしかありません。
それを何ヶ月も続けて、やっと分かってくるというのがプログラミングです。
なお、既に本題から外れていますので、これを続けるなら別トピックでお願いします。
こちらは、解決チェックして投稿してください。
【補足】
効率のよい方法があるなら、学校などであんなに長い期間を掛けて言語の授業なんてしないと思いませんか。
あと、あの分厚く密度の濃い言語の入門書なんて必要ないですよね。
とにかく地道な積み重ねがじわじわと効いてくるのがプログラミングですので途中をすっ飛ばすと現状の あんどろいどくん さんの様に分けがわからなくなります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。