Androidのサンプル

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あんどろいどくん

Re: Androidのサンプル

#31

投稿記事 by あんどろいどくん » 11年前

ちょっと分からなくなってきました。
どうやって説明すればいいのか言葉が出てこないです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#32

投稿記事 by softya(ソフト屋) » 11年前

あんどろいどくん さんが書きました:ちょっと分からなくなってきました。
どうやって説明すればいいのか言葉が出てこないです。
まず、関連する部分を上げてみてください。
すくなくとも、どの行が関連しているかぐらいは提示できませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#33

投稿記事 by あんどろいどくん » 11年前

MainViewの
25行~33行目
74行~84行目
113行~148行目
151行目~168行目

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#34

投稿記事 by softya(ソフト屋) » 11年前

あんどろいどくん さんが書きました:MainViewの
25行~33行目
74行~84行目
113行~148行目
151行目~168行目
元のソースコードの行番号ですよね? 足らないのと、なにか違うところまで提示されている気が。
class Circleに関連する所だけでお願いできますか。 それと、元のブログのソースコードに掲載されている行番号を使って下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#35

投稿記事 by あんどろいどくん » 11年前

MainViewの
64行~109行目
112行~147行目
150行~167行目

dic
記事: 658
登録日時: 14年前
住所: 宮崎県
連絡を取る:

Re: Androidのサンプル

#36

投稿記事 by dic » 11年前

softyaさん 落ち着いてください。
世の中にはいろんな人がいます。

中学生でも書き込める時代ですから
(中学生とは言ってはいないけど、日本語があまりにもあれです)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#37

投稿記事 by softya(ソフト屋) » 11年前

dic さんが書きました:softyaさん 落ち着いてください。
世の中にはいろんな人がいます。

中学生でも書き込める時代ですから
(中学生とは言ってはいないけど、日本語があまりにもあれです)
dicさん。心配していただいて有難うございます。
私は怒っているわけではなく、冷静に分かって貰おうとしているだけです。
と言うことで  あんどろいどくん さんも今しばらくお付き合いくださると嬉しいです。
あんどろいどくん さんが書きました: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(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: Androidのサンプル

#38

投稿記事 by ISLe » 11年前

質問者さんはnew Circle(~)でセットされた色が自動的に描画に使われていると考えているように見えます。
ほんとうはコードから自力で読み取って欲しいのですが、ライブラリが絡むのでほとんど答えのようなヒントです。

paint.setColor(Color.argb(255, a.cr, a.cg, a.cb)); // 描画色をセット
canvas.drawCircle(a.x, a.y, a.radius, paint); // セットした描画色を使う
円(ボール)の描画は毎度ひとつずつ描画色をセットしながら行われています。

あんどろいどくん

Re: Androidのサンプル

#39

投稿記事 by あんどろいどくん » 11年前

(1)の色は
最後にreturn trueで終わっていますので
(32行目)paint.setAntiAlias(true);に返されると思います。

(2)で色を処理している行
142と143行目で色の生成と描画が行われていると思います。

(3)色の変更をどの部分に加えると良いか
この行の上と具体的に書くというのは色の変更が行われる行の上
でしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#40

投稿記事 by softya(ソフト屋) » 11年前

あんどろいどくん さんが書きました:(1)の色は
最後にreturn trueで終わっていますので
(32行目)paint.setAntiAlias(true);に返されると思います。
これに関してはJavaやC++のクラスや更にはC言語での関数の理解度が足らないと思われますので、今回は詳しく説明しません。
それとAndroidのイベント駆動の動作自体も未理解だと思ってもらったほうが良いです。
別途勉強をして頂きたいと思いますが、分からないことがあれば別トピックということでお願いします。
これに付いてはここで終わりにしますが、大事なのはcontainerとだけ書いておきます。
あんどろいどくん さんが書きました: (2)で色を処理している行
142と143行目で色の生成と描画が行われていると思います。
そうですね。それは何のどの変数を使って色を生成していますか?
あんどろいどくん さんが書きました: (3)色の変更をどの部分に加えると良いか
この行の上と具体的に書くというのは色の変更が行われる行の上
でしょうか。
色の変更を行ったほうが良いと思われる行の範囲で構いません。
あるいは、この行の上に差し込むという書き方でもOKです。
どちらでもお好きな方で。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#41

投稿記事 by あんどろいどくん » 11年前

(1)
関数にとっつきにくいこともありまして関数が未だに分かりません。

(2)
a.cr,a.cg,a.cbで色が生成されている
a.x, a.y, a.radiusで描画が行われている

(3)
101行目の上に差し込まれると思います
86行~98行目が衝突判定だと思いますので、その後色が変わるという
処理を加えればと考えました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#42

投稿記事 by softya(ソフト屋) » 11年前

(1)関数は基本なので、それが理解できないとプログラムが組めないと思ってもらって良いと思います。
関数のないプログラムは初歩の初歩ぐらいにしかありません。

(2)
>a.cr,a.cg,a.cbで色が生成されている
aは何処から生まれたかを理解すればもっと良いですね。
(3)のためにも考えてみてください。

(3)
>86行~98行目が衝突判定だと思いますので、その後色が変わるという
実はif文の理解も足りないと思います。
ただ、101行目でも構わないのでここに追加するとしましょう。
さて、どのようなソースコードを追加しますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#43

投稿記事 by あんどろいどくん » 11年前

(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;
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#44

投稿記事 by softya(ソフト屋) » 11年前

(2)  生まれてきたという書き方が語弊がありましたね。失礼しました。
何処から持ってきたのかですね。 containerの方が正解です。

(3) 衝突相手で色を変えるのは、あんどろいどくん さんには高度なので色を変えるだけに絞った方が良いと思います。
つまりif文は増やさないでください。
あと a.cb; やa.cr; だけでは色は変わりません。色を代入してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#45

投稿記事 by あんどろいどくん » 11年前

(3)
Circle a = container.get(i);
 
元の色からほかの色に変える
  a.r = 元の色;

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#46

投稿記事 by softya(ソフト屋) » 11年前

> Circle a = container.get(i);

既に有るので必要ありません。

>元の色からほかの色に変える
>  a.r = 元の色;

rはメンバ変数として存在しません。
あと代入文を理解されていますか?
a.cr=元の色;
だとしてどんな効果を期待していますか。
それと「元の色」って部分も具体的な命令文でお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#47

投稿記事 by あんどろいどくん » 11年前

(3)
代入が逆でした
元の色?( canvas.drawCircle)=a.r

命令文で
if( canvas.drawCircle == a.r)
{
canvas.drawCircleの色を青にする?
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#48

投稿記事 by softya(ソフト屋) » 11年前

> 元の色?( canvas.drawCircle)=a.r
すいません。意味不明です。
canvas.drawCircleはメンバ関数なので代入で書きません。
あとa.rはrと言うメンバ変数が先程も書いた通りありません。

それとif文は増やす必要がないと書いたのですが何故増やすのですか?理由を教えてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#49

投稿記事 by あんどろいどくん » 11年前

if文が複数あるのはダメだと捉えてしまって。
if文が命令文であったからです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#50

投稿記事 by softya(ソフト屋) » 11年前

とりあえず最大のヒントです。
cr,cb,cgに値を代入すれば色は変わります。
if文は必要ないです。
※ crはcolor redの略です。以下cb,cgも同様。

それ以上の事をプログラムに加えたいなら、今一度基礎の基礎から勉強しなければならない状態だと思ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#51

投稿記事 by あんどろいどくん » 11年前

101行目の上に
例:int cr = 0;
  int cg = 0;
int cb = 255
と記述してもボールが衝突したときに青色に変わらないですよね

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#52

投稿記事 by softya(ソフト屋) » 11年前

描画で使っているのはcontainer.get(i);で得たa.crなどですから、色を変更するのもcontainer.get(i);から得たa.crなどでなければいけません。
と言う理解で今はやってください。本当の話は難しすぎるので省略します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#53

投稿記事 by あんどろいどくん » 11年前

a.cr=0;
a.cg=255;
a.cb=0;
を記述して色を変えることはできました。

もしも同色のボールと衝突したら消滅するという
処理を行うとしたら。

次のような記述をするのでしょうか

if(もしも同色と同じなら)
{
消滅する(destroye)
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#54

投稿記事 by softya(ソフト屋) » 11年前

あんどろいどくん さんが書きました:a.cr=0;
a.cg=255;
a.cb=0;
を記述して色を変えることはできました。

もしも同色のボールと衝突したら消滅するという
処理を行うとしたら。

次のような記述をするのでしょうか

if(もしも同色と同じなら)
{
消滅する(destroye)
}
関数やクラスを理解できていない現状のあんどろいどくん さんには難しいと思います。
まず、ちゃんと言語の勉強をされるべきです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#55

投稿記事 by あんどろいどくん » 11年前

どのように独学で学ぶのが効率いいでしょうか

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: Androidのサンプル

#56

投稿記事 by softya(ソフト屋) » 11年前

あんどろいどくん さんが書きました:どのように独学で学ぶのが効率いいでしょうか
効率のよい方法なんてのは多分ないと思います。
ちゃんと1命令、1命令をコンパイル実行してデバッガやprintfなどで動作を確認しなら機能をイメージできるように理解するしかありません。
それを何ヶ月も続けて、やっと分かってくるというのがプログラミングです。

なお、既に本題から外れていますので、これを続けるなら別トピックでお願いします。
こちらは、解決チェックして投稿してください。

【補足】
効率のよい方法があるなら、学校などであんなに長い期間を掛けて言語の授業なんてしないと思いませんか。
あと、あの分厚く密度の濃い言語の入門書なんて必要ないですよね。
とにかく地道な積み重ねがじわじわと効いてくるのがプログラミングですので途中をすっ飛ばすと現状の あんどろいどくん さんの様に分けがわからなくなります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あんどろいどくん

Re: Androidのサンプル

#57

投稿記事 by あんどろいどくん » 11年前

どうもありがとうございます
新たにトピックを作り直そうと思います

閉鎖

“C言語何でも質問掲示板” へ戻る