投稿
Mr.m udatomoki_2
せっかくですし、中・上級者へのプログラムの問題。今日の夜9時に締め切りです。 ~問題1~ SPDEFでスプライトを指定する時に、元の画像を180度回転させ、縦反転にして、スプライトを定義する時のアトリビュートを答えなさい。 (もちろんスプライト非表示のビットにはしませんよ)
6そうだね
プレイ済み
返信[1]
親投稿
Mr.m udatomoki_2
あと必ずネタバレで回答してくださいね。
1そうだね
プレイ済み
返信[2]
親投稿
InDoor TheInDoor12
スプライトの練習もかねて、さっきハカセを実験台にして確かめてきましたー。 答えは... &B10101(10進数では21)だな!
3そうだね
プレイ済み
返信[3]
親投稿
SPDEF 500 OUT U,V,W,H,OX,OY,A SPDEF 500,U,V,W,H,OX,OY,A XOR 16+4 こういうこと???
2そうだね
プレイ済み
返信[4]
親投稿
KU kerorinU
21ですかね。SPDEF使ったことないので間違っているかわからない、、、
3そうだね
プレイ済み
返信[5]
親投稿
勘違いしてたのかも? 元の画像を定義元の画像(定義状態)という意味だと思ってた…
1そうだね
プレイ済み
返信[6]
親投稿
おかっぺ Japanese_WASABI
16だったと記憶しているけど、自信は無いです。
1そうだね
プレイ済み
返信[7]
親投稿
けい kei0baisoku
スプライトの基本的な設定の問題かなと思って軽い気持ちで皆の回答をオープンしたら予想斜め上の応用回答が混ざってた(°Д°)
3そうだね
プレイ済み
返信[8]
親投稿
おかっぺ Japanese_WASABI
皆の回答を見てしまって、問題の内容をやっと理解したorz 1+4+16=21ですかね。
3そうだね
プレイ済み
返信[9]
親投稿
pinfu ANNAININ
何げに、解説というか、解答の提示や解答者へのコメントを期待している初心者がコメントを残していきます。 うん、わからんなぁ・・・。
2そうだね
プレイ済み
返信[10]
親投稿
けい kei0baisoku
>pinfuさん、ほか、色々覚え中の方 スプライトを回転させたり反転させたりはちょっとグラフィカルなプログラム作るとすぐ使いたくなると思いますので、覚えておいて損はないと思いますよ(^O^) (私が想像してる通りの答えだったらの話ですが………(´ω`))
1そうだね
プレイ済み
返信[11]
親投稿
MGウッディー udatomoki_rinzi
正解は「21」です。 つまり、&b10101を10進数にしたらいいんですね。
0そうだね
未プレイ
返信[12]
親投稿
MGウッディー udatomoki_rinzi
この問題は結構難しくないようでしたね。ちなみに投稿者の「MGウッディー2」も利用制限が…。これからは、変なコメントをしないようにな。 (でも、それはそれで楽しんでくれる人もいるし…)
1そうだね
未プレイ
返信[13]
親投稿
あ、やっぱり21でしたか〜…。ウッディさんがまた変化していて通知が来なかった(^^; ちょっとオオボケかまして趣旨と全く異なる書き込みをしてしまいました…
2そうだね
プレイ済み
返信[14]
親投稿
けい kei0baisoku
ダメもとで全員に私の共感通知を飛ばしてみましたが、私の力では少々及ばなかったようです………(´ω`)メンボクナイ でんぺんさんの例も面白いので、正答含めて、見てる人向けにもう少し解説してみてもいいかもと考えたり。
3そうだね
プレイ済み
返信[15]
親投稿
pinfu ANNAININ
質問を1つしていいでしょうか? 使い方は少し理解したのですが・・・ ヘルプで出る  b1~b2 とは、 2進数にした場合、0~3は 0,1,10,11になり、その表記を 00,01,10,11にする?みたいな考え方ですか?? おかっぺさんの 1+4+16 の考え方みたいなのが知りたいです。説明書、初心者講座にあったかな・・・??
1そうだね
プレイ済み
返信[16]
親投稿
pinfu ANNAININ
b0 (1) → 1 b1 (2) → 10 b2 (4) → 100 b3 (8) → 1000 b4 (16)→ 10000 1+4+16 → 10101 うーん。???
2そうだね
プレイ済み
返信[17]
親投稿
始めの0ビット目は10進数にすると1です。 次の3ビット目は10進数にすると4です。 次の5ビット目は10進数にすると16です。 1になっているところの10進数を全て足すと、その二進数を10進数にした数字になるのですよー。
2そうだね
プレイ済み
返信[18]
親投稿
けい kei0baisoku
>pinfuさん うーんと言いながらバッチリその通りですよ(^O^) 足して求めているのは、ケタが被らないから足すのとビットのOR計算が同じだからです。 10進数でいうと、 1000+200+30+4=1234 みたいなことです。
2そうだね
プレイ済み
返信[19]
親投稿
pinfu ANNAININ
プログラムの性質上、 設定をon,offするのに、 ビットなら、 b0、b1、b2・・・で使える(?)というような書き方をしているという理解でいいのですか?
1そうだね
プレイ済み
返信[20]
親投稿
けい kei0baisoku
なぜビットかと言われると正確な説明は意外と難しいですが、一言でいうと「ビットを分けることで複数のパラメータを1変数にまとめると、効率的だから」じゃないかと私は思ってます。 効率化好きなプログラマの性質ですね。 アトリビュートの引数って結局「表示on/off」「回転4種」「横反転有無」「縦反転有無」という独立した4つの情報なので、本当はこれらをバラバラに4つの引数として受け取った方が直感的には分かりやすいと思います。 でも、これらの情報って大体ワンセットで扱うので、もし一つの変数にパッキングできればプログラム内でコピーしたり受け渡したりする時も、一変数で済んでラクチンなのです。
2そうだね
プレイ済み
返信[21]
親投稿
pinfu ANNAININ
でんぺんさん、 けいさん、 ありがとうございます!! うーん。 使い方は分かったものの、 何処か引っ掛かる・・・ まぁ、慣れていけば腑に落ちる瞬間がくるのかな(笑) 勉強になりました!!
3そうだね
プレイ済み
返信[22]
親投稿
けい kei0baisoku
覚えようとする人がビットのどこで引っ掛かるかは知りたいので、もしモヤモヤの正体がはっきりしましたらその時に質問なり投げかけて下さると助かります(´ω`)/ では。
2そうだね
プレイ済み
返信[23]
親投稿
始めにけいさんが言われたように、これは数字の特性が関係していて、数字の桁が違うもの同士は干渉しない(桁上がりしなければ)という事を利用しているところが大きいですね。 なので、たとえば10進数で考えると3桁(999)まであったとして、干渉しない桁数は3つしかありませんが、2進数は桁が多いのが特徴でもあるので例えば255まででも8桁あるので、干渉しない桁が8つもあるわけです。 ただ10進数はその1つのけたで0〜9の10の状態を管理出来ますが、2進数は0と1しかないのでONとOFFしか管理出来ないと…。 ただ2進数でも2桁使えば0〜3の状態を管理出来るので、スプライトの場合、それを回転状態として利用しているわけですね。 って、そういうことじゃないのかなぁ? なかなかなにに引っかかってるかの判断も難しいですよね〜…。
2そうだね
プレイ済み
返信[24]
親投稿
けい kei0baisoku
取りあえず、うまく使えるととっても気持ちいいのは保証しますw(^O^) ※使用感には多少個人差があります
3そうだね
プレイ済み
返信[25]
親投稿
まあもともとはコンピュータはメモリが少なかったので省エネ的な考え方が主だったのかもしれませんけどね〜。 ただメモリが潤沢だったとしても、もしBUTTON関数が、 BUTTON OUT UP,DONW,LEFT,RIGHT,A,B,X,Y,LEFT,RIGHT と書かなきゃいけないよりは今の方が楽で好きです(^^;
4そうだね
プレイ済み
返信[26]
親投稿
MGウッディー udatomoki_rinzi
~今更ですが、一応解説を~ 今回は180度回転させ、非表示ではないとします。 まず各ビットを並べていきます。 表示(b0)・・・・&b1  (十進数は1) 回転(b1~b2)・・&b10  (十進数は2) 横反転(b3)・・・&b0  (十進数は0) 縦反転(b4)・・・&b0  (十進数は0) それを連結します。 1+10+0+0 その順番を逆にします。 0+0+10+1 で、連結。 &b00101 それを十進数に直すと「5」になります。この場合は5にすればOKです。 ※もし非表示のビットにしても、SPSHOWを使えば表示できますよ!
1そうだね
未プレイ
返信[27]
親投稿
pinfu ANNAININ
MGウッディーさん、 でんぺんさん、 けいさん、 おかっぺさん(そうだね)、 ありがとうございます!! 取りあえずは、今の理解で大きくハズレている所はない・・・って事で、納得?と言うより、コレでいいんだな。と自信?が出ました(笑) なんだか、理解の外堀は埋った感じがします。色んな角度からの説明本当にありがたいです!! MGウッディーさん、問題作成お疲れ様でした!解説、感謝です!!
0そうだね
プレイ済み