C言語何でも質問掲示板


Total hit  今日  昨日  

必ずお読み下さい → 規約と注意事項  アンケートはこちら  エラーで投稿できない方はこちら  過去ログ検索はこちら

 
   [雑談] 最近何か研究し ....   
     ・[48238] Dixq (管理人) 
     ・[48240] 御津凪 
     ・[48241] Tororo 
     ・[48245] 山崎 
     ・[48247] バグ 
     ・[48251] Dixq (管理人) 
     ・[48266] あ〜る 
     ・[48267] sizuma 
     ・[48268] array 
     ・[48274] たかぎ 
     ・[48277] Tororo 
     ・[48294] Dixq (管理人) 
     ・[48315] たかぎ 
     ・[48318] softya 
     ・[48349] Dixq (管理人) 
     ・[48351] たかぎ 
     ・[48356] dic 
     ・[48362] sizuma 
     ・[48364] たかぎ 
     ・[48385] sizuma 
     ・[48401] softya 
     ・[48412] sizuma 
     ・[48476] 組木紙織 
   テーブル化について   
     ・[48316] たかぎ 
     ・[48353] 少年X 
     ・[48367] ft 
     ・[48373] サンタクロース 
     ・[48413] ft 
     ・[48439] non 
     ・[48446] fatens 
     ・[48448] たかぎ 
     ・[48460] kazuoni 
     ・[48461] サンタクロース 
   同時キー入力   
     ・[48451] MNS 
     ・[48452] kameo 
   while文について   
     ・[48399] mnkr 
     ・[48411] Dixq (管理人) 
     ・[48445] スルメ 
     ・[48447] sizuma 
   誤字報告^0^/   
     ・[48414] Dixq (管理人) 
     ・[48444] スルメ 
   ドラクエ風の画面処理   
     ・[48375] ひよこ 
     ・[48396] ti 
     ・[48420] ひよこ 
     ・[48421] ti 
     ・[48424] ti 
   無題   
     ・[48395] array 
     ・[48397] Yuno 
     ・[48398] あ〜る 
     ・[48402] sizuma 
     ・[48403] Yuno 
     ・[48404] Yuno 
     ・[48405] Dixq (管理人) 
     ・[48406] Yuno 
     ・[48410] Dixq (管理人) 
   &の意味   
     ・[48384] Stanry 
     ・[48387] sizuma 
     ・[48389] Stanry 
     ・[48394] Stanry 
   お初にお目に掛かりま ....   
     ・[48341] Ma 
     ・[48342] 通りすがり 
     ・[48343] Ma 
     ・[48388] アルバトロス 
   揚力のベクトルを求め ....   
     ・[48289] たいちう 
     ・[48292] softya 
     ・[48333] Ma 
     ・[48346] Ma 
     ・[48348] softya 
     ・[48360] Ma 
   多重ループの計算回数 ....   
     ・[48334] R 
   レンタルサーバとデー ....   
     ・[48325] たかぎ 
     ・[48328] array 
     ・[48329] たかぎ 
     ・[48331] 山崎 
   はねさんはいらっしゃ ....   
     ・[48275] こめかみ 
     ・[48295] Dixq (管理人) 
     ・[48303] こめかみ 
   SetWindowIconIDのIDを ....   
     ・[48278] Ma 
     ・[48282] レッドリ 
     ・[48283] Tatu 
     ・[48302] レッドリ 
   フリーフォントの使用 ....   
     ・[48118] Justy 
     ・[48121] Justy 
     ・[48285] 宮 
   [雑談(相談?)] 社会に ....   
     ・[48252] shilfia 
     ・[48253] 山崎 
     ・[48254] Dixq (管理人) 
     ・[48255] sizuma 
     ・[48260] ちゃお 
     ・[48261] Dixq (管理人) 
     ・[48269] array 
     ・[48270] M1S 
   確率の偏らせ方   
     ・[48236] 紅葉 
     ・[48239] KA 
     ・[48242] KA 
     ・[48243] えーや 
     ・[48249] KA 
   コンパイラって   
     ・[47617] たかぎ 
     ・[47622] アキ 
     ・[47623] fatens 
     ・[47624] 御津凪 
     ・[47628] アキ 
     ・[47643] Tororo 
     ・[47650] Dixq (管理人) 
     ・[47927] BIGBANG 
     ・[47936] ぽこ 
     ・[47954] Dixq (管理人) 
     ・[47955] lbfuvab 
     ・[47956] たかぎ 
     ・[48013] 無名 
     ・[48029] nayo 
     ・[48246] REDBIRD 
     ・[48248] MNS 
   バグです。   
     ・[48222] Dixq (管理人) 
     ・[48227] Ma 
     ・[48234] Dixq (管理人) 
     ・[48244] ディア 
   C++ オブジェクトの初 ....   
     ・[48204] バグ 
     ・[48205] Tororo 
     ・[48206] MNS 
     ・[48207] kazuoni 
     ・[48208] バグ 
     ・[48209] kazuoni 
     ・[48210] ホースメン 
     ・[48212] Justy 
     ・[48215] たかぎ 
     ・[48221] ホースメン 
     ・[48224] たかぎ 
     ・[48225] たかぎ 
     ・[48226] SCI 
     ・[48229] たかぎ 
     ・[48232] SCI 
     ・[48233] たかぎ 
   PIC18F2550・タイマ1が ....   
     ・[48133] softya 
     ・[48135] アニー 
     ・[48137] softya 
     ・[48139] たかぎ 
     ・[48143] アニー 
     ・[48147] softya 
     ・[48150] アニー 
     ・[48154] softya 
     ・[48155] アニー 
     ・[48186] アニー 
     ・[48189] アニー 
     ・[48190] softya 
     ・[48194] アニー 
     ・[48195] softya 
     ・[48199] アニー 
     ・[48202] softya 
     ・[48231] アニー 
   無題   
     ・[48216] たかぎ 
     ・[48217] きぼんぬ 
     ・[48218] たかぎ 
     ・[48219] きぼんぬ 
     ・[48220] Dixq (管理人) 
     ・[48223] たいちう 
   C言語が解らない人にC ....   
     ・[48176] MNS 
     ・[48177] softya 
     ・[48178] たかぎ 
     ・[48184] たいちう 
     ・[48192] dic 
     ・[48193] Tororo 
     ・[48196] デラ初心者 
     ・[48197] デラ初心者 
     ・[48200] softya 
     ・[48201] デラ初心者 
     ・[48211] デラ初心者 
   DXライブラリ使用時の ....   
     ・[48180] Ma 
     ・[48181] DG 
     ・[48182] non 
     ・[48187] DG 
   龍神録「3D背景を作っ ....   
     ・[48129] Ma 
     ・[48130] non 
     ・[48132] 御津凪 
     ・[48134] softya 
     ・[48138] non 
     ・[48142] non 
     ・[48144] non 
     ・[48145] 御津凪 
     ・[48146] 通りすがり 
     ・[48148] softya 
     ・[48149] non 
     ・[48151] softya 
     ・[48153] non 
     ・[48164] Justy 
     ・[48172] Dixq (管理人) 
     ・[48173] non 
   ゲームプログラミング ....   
     ・[48170] たかぎ 
     ・[48171] waniwani 
   困っています(大至急 ....   
     ・[47836] 通りすがり 
     ・[47837] たかぎ 
     ・[47845] やそ 
     ・[47846] non 
     ・[47861] 通りすがり 
     ・[47863] non 
     ・[47866] 通りすがり 
     ・[48168] 通りすがり 
     ・[48169] たかぎ 
   選択画面の拡張で・・ ....   
     ・[48099] Ma 
     ・[48101] kazuoni 
     ・[48103] St 
     ・[48136] kazuoni 
     ・[48157] St 
     ・[48159] Ma 
     ・[48162] kazuoni 
     ・[48165] Justy 
     ・[48166] kazuoni 
   すいませんC言語じゃあ ....   
     ・[48113] softya 
     ・[48114] PEGASUS 
     ・[48115] PEGASUS 
     ・[48119] non 
     ・[48120] たいちう 
     ・[48126] Mikan 
     ・[48158] PEGASUS 
   東方の3D背景の作り方 ....   
     ・[48056] Ma 
     ・[48064] レッドリ 
     ・[48098] Ma 
     ・[48152] レッドリ 
   処理落ちの軽減につい ....   
     ・[48068] softya 
     ・[48074] たかぎ 
     ・[48078] ft 
     ・[48106] 少年X 
     ・[48112] Justy 
     ・[48116] サンタクロース 
     ・[48123] ft 
     ・[48124] softya 
   ホームページのソース ....   
     ・[48107] softya 
     ・[48108] シノニム 
     ・[48122] dic 
   スタティックテキスト ....   
     ・[48110] 入門者 
   無題   
     ・[48102] kazuoni 
   物理の問題が解けませ ....   
     ・[48069] Tororo 
     ・[48070] softya 
     ・[48071] conio 
     ・[48072] Tororo 
     ・[48073] Tororo 
     ・[48076] Tatu 
     ・[48077] とく 
     ・[48079] non 
     ・[48080] ぽこ 
     ・[48081] ぽこ 
     ・[48082] とく 
     ・[48083] とく 
     ・[48084] ぽこ 
     ・[48085] とく 
     ・[48086] Tatu 
     ・[48087] とく 
     ・[48089] ぽこ 
     ・[48091] ぽこ 
     ・[48092] とく 
     ・[48093] Tatu 
     ・[48094] ぽこ 
     ・[48095] Tatu 
     ・[48096] ぽこ 
     ・[48097] Ma 
   横スクロールSTGゲーム ....   
     ・[48022] non 
     ・[48025] こばち 
     ・[48027] こばち 
     ・[48051] Ma 
     ・[48060] こばち 

Name: Dixq (管理人) [URL]  ..ウィザード(1,149,023ポイント)   Date: 2010/02/19(金) 18:31   No:48237       
Title: [雑談] 最近何か研究してること(したい事)ありますか?    
皆さんこんにちは^^

毎年この時期になると掲示板のアクセスが少なくなりますね。大学生の方々は有意義な春休みを過ごされていることでしょう。
社会人から見るといいな〜とか思ったりして・・。

と言うことで、トピタイトルに関わらず、何か雑談でもいかがでしょう^^


さて、ここにいらっしゃっている方々は専門職の方や大学や高校で理系を専門としている方々が多いのではないかと思います。
何か研究されていたり、研究する予定があったり、研究したいテーマをお持ちの方いらっしゃるのではないでしょうか?

大学のうちは研究ったって何を研究したらいいか解らず、解って軌道に乗ったころ卒業してしまう人もいらっしゃるかもしれません。
仕事についてから、専門的な分野が詳しくなり、研究したいテーマが出てきたって経験ある方もいらっしゃるのではないでしょうか。

大学生のうちはテーマは見つけ難いが時間はある。 社会人はテーマは見つかるが、時間が無い。
そんな傾向があるかもしれませんね。

そこで、研究したいテーマがあるのに時間が無くて出来ない!とストレスたまってる人は愚痴をこぼして発散し(?)
大学生の方はそんな方の話を聞いて何か刺激を得てみてはいかがでしょう?
特許や企業秘密関連で言えない人は「言えないけどテーマあるよ!」って感じで発散されてはいかがでしょうw

-------------------------------------------------------------------------------

それじゃ言いだしっぺなので、まず私から。
↓次へ


134ポイント を手に入れた。


Name: Dixq (管理人) [URL]  ..ウィザード(1,149,763ポイント)   Date: 2010/02/19(金) 18:34   No:48238     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
私は社会人になってから、企業と言う所は想像以上にこぞって特許を出願しているのだと知りました。
職場でもあちこちで特許の話が出ています。
特許なんて自分には関係ない・・と思っていましたが、彼らの話を聞いて刺激を受け色々研究したい事が増えました。

そんな中、ふと年賀状を見ました。
「年賀状って自分の家族の写真印刷する人多いな〜。動画ならもっと伝わるものが多いのに。」
「そうだ、動画のデータを印刷するって事は出来ないけど、インデックス番号印刷して、送り主はサーバーにデータを上げ、受け取り主はサーバーからその識別番号に対応した動画をDLしたら送れるんじゃないかな。」
なんて思ってました。
しかし、別の機会にQRコードを見て
「あれ、ホントに動画のデータを印刷するって事は出来ないのか?」
と思いました。
QRコードってすごくピクセルが大きいし、無駄がありそう。
利便性、信頼性などを考えてあのような仕様になってるんでしょうけど、
スキャナで正確に読み取れればもっと多くの情報が印刷出来るんじゃないかなと思いました。
ピクセルを小さくすることはもちろんだけど、せっかくカラーで印刷出来るんだから、ピクセルに色情報を持たせればかなり情報量は多くなるはず。

500万画素の写真って生データは500万×3バイト(15MB)にもなるんだから極論から言えば、色諧調が完全に255種類識別出来、ピクセル単位で正確に読み取れれば
15MBのデータが紙に印刷して渡すことが出来ますよね。
15BMあればちょっとした動画なら送れる大きさ。

しかし画像をスキャンした時少しでもななめになっているとデータが狂うこと、
(そもそも1ピクセル単位で傾かないようにスキャンなんて無理)
色の3原色と光の3原色は違うから正確な色スキャンは難しいであろうこと等など沢山問題はありますが、
QRコードを進化させるような研究やってみたいな〜!なんてふと思ったりしました。

そしてゆくゆくは「動画を印刷して渡す」そんな年賀状出来たらいいな〜、なんて思いました^^



※以前からfontタグが正常動作しないと思っていたら、タグ内の空白まで空白文字に置き換わってますね・・。


740ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(140,660ポイント)   Date: 2010/02/19(金) 19:18   No:48240     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
では私からも。

私の場合、気になったアルゴリズムがあったらすぐ調べ、その場で研究という形で日々送っています。
(もちろん仕事もしています。)
ただ、そのほとんどが既出ものですし、さらに大規模な研究はしてないです。時間もありませんし。

あと、研究ということではありませんが、プログラムに関して何かと凝り性な性格なのか、
最近アセンブラに手を出しています。

C言語で出来ないプログラムや最適化があるのが手をつけた動機ですが、
最近はインラインアセンブラではなく MASM に移植する作業をしています。

まあ、特別珍しいことではないのですが。


それと全く関係ないですが、 Dixq さん、
なかなか連絡(IMとか)が取れないのですが、うまく届いているのでしょうか?
暇があったらメールを下さい。


さて、これから実家に帰ってネタ探しでもするかな。


332ポイント を手に入れた。

Name: Tororo  ..入門者(3,436ポイント)   Date: 2010/02/19(金) 19:25   No:48241     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
自分もやります。

まぁ中学なので研究とかは言いませんけど、プログラムがワカラナイ人でも、東方風のSTGが
簡単に作れるツールを作りたいです。

ってか皆さんが言ってることのLVが高くて、自分の言ってることが恥ずかしい><

卒業したら約3年間来れなくなるかも知れませんけど、忘れないでくださいw


100ポイント を手に入れた。

Name: 山崎  ..プログラマー(36,230ポイント)   Date: 2010/02/19(金) 20:13   No:48245     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
こんばんは、私も雑談に参加させてくださいな。

研究、ですかぁ。
「これって研究するテーマになるかな?」と興味のある分野はあっても、
その問題が既に研究されていて、有力な答えが見つかっているのではないか、
今から自分がやっても2番煎じなのではないか…という疑問が湧き、
結局取り組めないということがよくあります。

実際、私がやっていた研究の発表の時も、
「それって〜〜を使えばいいんじゃない?」と外部の先生に指摘され、
タジタジになった経験があります。

自分の研究するテーマに関する他の研究の情報をリサーチしなかった奴が悪い、
と言ってしまえばそれまでですが、関連する技術を完璧にリサーチしきるのは
普通の学生には難しいのがほんとのところだと思います。

「何が研究テーマになりえるのか」が、わからないというのが私の本音です。



でも気になっている技術とかはありますね。
「戦場の絆」っていう、自分の360度全てがゲームのディスプレイになるという
ガンダムの業務用筺体があると聞きました。
すごいですよね、本当に自分がガンダムの戦場にいるような気持ちになれるんですもん。
ゲームにとっての「視覚的な臨場感」の究極の形なのでは?と思ってしまいます。
これまではゲームの世界は飽くまで「テレビの中」だけのものでしたが、
戦場の絆では、首を回して後ろを見ても、そこにはゲームの世界が広がっているのです。(たぶん)
ゲームセンターに行かなくても360度すべてゲーム画面にできたら、
これからの家庭用ゲーム界には新風が巻き起こるかなぁと思案していました。

でも、家庭用のデバイスとしてあの筺体を売り出すわけにはいきませんからね。
なんとか、「360度ディスプレイの中に入る」以外の形で360度ゲーム画面を実現したい。
ならば、昔あったバーチャルボーイみたいに、目の周辺だけディスプレイで覆えば、
十分全ての視界をゲーム画面で覆えると思うのです。
また、首の動きも入力できるようにすれば、振り返れば別の景色が見えるようにできます。
疑似的に、360度全ての方向がゲーム画面になったような感じになるはずです。
加速度センサーとか磁気センサーとかがあれば、簡単に首の向きも算出できるでしょう。

なので、「視界を覆うディスプレイ」と「首の向きの感知」を組み合わせれば、
家庭でも360度のゲームの世界を実現できるかも、と考えています。

ただ、すごく目が悪くなりそうですけどね ^^;
ディスプレイが目のすぐ近くにあっても、ちゃんとぼやけずに見えるのか?
という疑問もぬぐえません。
もしかしたら、ディスプレイと眼球はある程度の距離をとらないといけないのかもしれない、
そうなると視界をディスプレイで覆うことが難しくなるかもしれない…。
なにぶん素人なので、興味ばかり先走ってそれ以上には進めません。

凡人の私が考え付くことです、すでに誰かが研究済みなんでしょうけれど…。
最近の私の気になることの一つですね。


661ポイント を手に入れた。

Name: バグ  ..ハッカー(190,232ポイント)   Date: 2010/02/19(金) 20:16   No:48247     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
まだ何も着手していませんが、最近は色々なメーカーの画像処理ツール(ライブラリ含む)を使っての仕事が多いんですが、高性能な分、どこも値段が高いんですよね。

なので、性能は低くても安価な画像処理ライブラリを自前で作れたらいいかな?とか思いますね。


77ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,150,293ポイント)   Date: 2010/02/19(金) 23:26   No:48251     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>> 御津凪さん

どのようなアルゴリズムかにもよりますが、ソートだとかのアルゴリズムだと思い付いたものは既出で、
もう他の人が全て考えつくされている感じがありますよね。
画期的な何かを生み出すにはそれ相応の時間と機会と能力がそろわないと難しそうですよね。
気になった物は調べ、興味を持ったものは研究したいとやっぱこんな職業だと思いますよね。

> なかなか連絡(IMとか)が取れないのですが、うまく届いているのでしょうか? 

すみません、hotmailの方は未読5000件とかになってるので、埋もれてるかも知れません;
確認しておきますね。


>>Tororoさん

>プログラムがワカラナイ人でも、東方風のSTGが簡単に作れるツールを作りたいです。 

なるほど、シューティングツクールのようなものですか。
小学生ならスーパーファミコンとか知らないんだろうな・・。
昔、今のPS3なんかよりずっと性能の低いゲーム機があったのですが、沢山の名作がありました。
スーパーファミコン時代、自分でゲームを作るというソフトが流行って(?)
RPGツクールだとかシューティングツクールだとかって「ゲームを作るゲーム」という物が売り出されました。

ゲームを作る楽しさっていうのはやはりプログラムを知らない人たちにも共感してもらえるようです。
東方風というと「弾幕風」という弾幕を作るスクリプトがありますね。
これ結構いいみたいですよ。ちょっと前に流行ったようで、沢山弾幕風で作った弾幕が動画サイトに上がりました。
中でも「東方夢終劇」ってのが私は好きです。弾幕も良く出来ています。
龍神録を作る際に何度も見て参考にさせてもらいました。
ご存じかも知れませんが、もしご存じなければ興味あればご覧ください^^

> 卒業したら約3年間来れなくなるかも知れませんけど、忘れないでくださいw 

あれ、どこか寮でもはいるんですか?


>>山崎さん

お〜とても興味深いですね^^
ゲーム学会などの資料をあさってみるといいかもしれません。
もしよい発表をすればゲーム業界に良い印象を与えられるかも?
まだ就職活動中なら、ゲーム学会で活躍したことなど強みになるかもしれませんね。

バーチャルボーイいい考えですね。
もっともコストを低く実現出来そうです。
ただ、やはり首を回して辺りを見渡すことに意味があるかも?
360度全てにディスプレイを置くのは無理があるので、左前右の3方向に投影するプロジェクタがあると可能かもしれません。
専用のプロジェクタが無くともトリプルディスプレイの要領で投影する画像を制御すれば可能そうですね。
・・・お金かかりそうだ・・。
しかし現在そういう仕事をしてるのでとても興味深いです^^


>>バグさん

バグさんは日々大変そうな分みについた幅広い知識で人が思いつかないような発明が出来そうですねw

そのライブラリと言うのはC++ですか?OpenGLでは出来ないのです?
出来ないから困ってるんでしょうけど^^;(あれは画像処理ライブラリではないか・・


530ポイント を手に入れた。

Name: あ〜る  ..上級者(16,531ポイント)   Date: 2010/02/20(土) 01:13   No:48266     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
研究している、訳では無いのでやりたい事垂れ流します

まず!夢として!
僕はもうめっきり廃れてしまった2Dシューティング業界をまた盛り上げたいです!!

まぁ廃れたってのは語弊がありますけど…まだ新作もちょいちょい出てますし
今だってファンの人達がやってて、それはそれで良いんですけど、、、
やはり一昔前みたいなシューティング全盛期の再来に期待しています
というのも、僕は2Dシューティング大好きなんですけど、今ではマイナーなジャンルじゃないですか。
でも昔はもっとシューティングが盛んだったみたいな話もよく聞く訳ですよ
もうなんで今生まれてきたのかと、なんでもっとはやく生まれなかったのかと自分に聞きたいくらいです
ただそこは悔やんでも仕方ないので考えを一転
去ったならばまた起こせばいいんだ!!
っていう短絡的思考です(笑)
実際今3Dが主体ですしリアルさが求められますし難しいゲームは敬遠されますし、ゲームの対象年齢も不安定・全年齢化してますしノベルゲームも徐々に(?)勢力を延ばしてますし、まずもってゲーム離れが進んでますけども!
がんばります(漠然)
まぁまだよくわからないことだらけなんで夢であって夢でしかないんですけどね


で、興味があることは
3Dですね(ぉぃ)
というのも最近アバターっていう映画、まぁまだ見てないんですけど、あるじゃないですか
あれって飛び出してくるんですよね?
で、3Dテレビみたいのも発売されるんですよね?
ならそれをゲームに使えないかと。
いやまぁ理論とか全く知らないんですごい馬鹿な事言ってるのかもしれないですけど……
でも飛び出せるんだったら擬似3Dマップみたいのも出来るのかなぁとか一人で妄想してます、誰かマジレスしてくれると嬉しいです
前やったダライアスバーストってシューティングでも敵は3Dだったんで、2Dシューティングでもそういうところで3Dを使ってけるのかぁ、と感心したんで
まぁこっちも理想でしかないですけど

ってか僕理想ばっかだ(汗)
もうちょい自分でもがんばろ


長文に付き合ってもらいありがとうございました。


183ポイント を落としてしまった。

Name: sizuma [URL]  ..プログラマー(34,456ポイント)   Date: 2010/02/20(土) 01:32   No:48267     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>管理人様
動画送信、いいですね。
このあいだ先生とAR技術でスカウターみたいなの作っていろいろやってみたいなぁって話をしてました。
色の認識と違って、形の認識は難しいみたいですけど。
はがきの情報をスカウターで読み込んではがきの上ぐらいで再生、みたいなことは出来そうです。
いや、スカウターがないけど(笑

AR技術
http://www.nicovideo.jp/watch/sm2300874
さすが日本、検索したらこんなんばっかだわ。まぁロマンだけどな!!

研究じゃないですけど、とりあえず動くコンパイラとかOS、擬似プロセッサなんて作ってみたいですね。
 編集済み


109ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(63,024ポイント)   Date: 2010/02/20(土) 01:51   No:48268     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
みなさんとても興味深い話をしているのでコメントを書きたくなりました。

> qさん

動画を印刷というのは、面白い発想ですね。印刷系会社ならではの発想で会社の仕事としても研究のやりがいがありそうですね。
問題があるとすれば、印刷するデータの見栄えですかね。
年賀状を例に上げてましたが、ゴチャゴチャしたQRコードの様なものが印刷されていたら
恐怖ですので・・・・

それだったら、磁気カードの容量強化の方が楽で利便性も高そうかな・・・と思いました。


> みつなぎさん

私が一番苦労したアルゴリズムは双方向(循環)リストですかね。
アルゴリズムと言うほどでもないですけど、再起関数などでノードを走査してる一連の流れを見たときは
テンション上がりましたw(一番感動するのはクイックソードですけどね)
シューティングゲームの弾幕で双方向リストを使うので、C++の演算子オーバーロードとか覚えたての
知識を無駄に使って双方向リストをクラス化したりしました。

他にも、Cygwinをダウンロードして、中にはいっていたC++のライブラリのソースが見れたのでSTL
のアルゴリズムをひたすら見て、勉強したりもしました。(typedefが多用されるとみにくいですね。海外では主流の書き方なのかな・・・?typedefは保守性が上がるとか?)

みつなぎさんはPHPもしているようなので、PEARというライブラリを見たことがあると思うのですが
PEARのコードは美しく、とても綺麗で勉強になります。

オープンソースは本当に参考になります。


> Tororoさん

私も、似たようなものを作りたいと思ったことがあります。ムゲン(MUGENだったかな・・・)というゲームがありますが
そのような拡張性のあるゲームを・・・無理でした。

と思っていたら、qさんのAerobeatを見てビックリしました。そういうゲーム作りたかったです。


> 山崎さん

「それって〜〜を使えばいいんじゃない?」って私も言われた事ありますが、今思えば探究心を削がれる
先生として、その発言は良いの?って感じですね。

加速度センサを使って360°見渡せるゲームは面白い案ですね。
企業が本気をだせば本当に実現できそうですよね。GPSも活用しながらネットワーク対戦ができればなお面白そうですw


> バグさん
画像処理関係は無知なので詳しくないですが、それもメーカーの画像処理ツールが欲しいと思って
買おうと思ったら、ぼったくり価格だったので諦めました。(PhotoShopの話です)
高クオリティーの画像編集をしようと考えるのなら、必要になってくるソフトだと思うので、「ぼったくり」という言葉は語弊ですかね。




ここまで書くのに時間が掛かり過ぎてしまったので、自分の話はまた今度にします。
文章を中途半端に添削したので文脈がおかしい部分が多数あるかもしれませんが大目に見てください。


1,164ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(161,456ポイント)   Date: 2010/02/20(土) 07:31   No:48274     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
目先の話なのですが、来年度の講義で何をやるか模索中です。
擬似プロセッサでも作らせようかな。


44ポイント を手に入れた。

Name: Tororo  ..入門者(3,469ポイント)   Date: 2010/02/20(土) 08:26   No:48277     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>>あれ、どこか寮でもはいるんですか?
ただ単に塾、部活等でパソコンをイジル時間がなくなるからですw 


26ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,154,735ポイント)   Date: 2010/02/20(土) 13:40   No:48294     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>> あ〜るさん

2Dシューティング楽しいですよね^^
東方が無かったらこの分野は全然知りませんでした。
CAVEという会社自体知らなかったかも。

>で、興味があることは3Dですね(ぉぃ) 

気持ちわかりますw
3Dテレビすごいですよね。
ただユーザーがいちいちメガネかけないといけないってのが難点ですが・・。

このTVを使えば3Dという言葉だけでは足りぬ、リアル3Dとでもいえるゲームが出来そうですよね。
まだ実際に見たこと無いのでどんなものかはわかりませんが、
テーマパークとかで時々ある立体映像みたいなあれかなと想像しています。

夢は膨らみますね^^
あ〜るさんの歳ならこれから探せば大学の頃にはよい研究テーマが見つかりそうですね☆


>>sizumaさん

面白そうですね。
OpenCVを使えば色々もっと面白い事が出来そうかも?
エアロビートのペットボトル、傾き検知できないかな〜とか友達と話していました。
加速度センサー無しで傾き検知出来たらいいよね、と。
精度は悪いでしょうけど、OpenCVで色々やってみたいなと思ったりしました^^

> 研究じゃないですけど、とりあえず動くコンパイラとかOS、擬似プロセッサなんて作ってみたいですね。 

それじゃまずたかぎさんの講義に出なくては(笑


>>arrayさん

> 問題があるとすれば、印刷するデータの見栄えですかね。 

あ〜何もはがき全体に印刷する必要はないと思っています。
普通のはがきの右下の方にでもちょこっとデータ画像をかなりの密度で印刷しておき、それをスキャンする形をとればどうかと。
データサイズは小さくなってしまうでしょうけど。
ふちなし印刷でデータ画像が送られてきたら怖いだろうな〜w

適当に試作とも言えないようなプログラム作ってみました。
mp3だろうがaviだろうが、画像に変換出来ます・・・が、
完全にカラーの砂嵐です^^;
何か見た目を良くする方法は・・・ないよなぁ・・。


> たかぎさん
>目先の話なのですが、来年度の講義で何をやるか模索中です。擬似プロセッサでも作らせようかな。 

いいですね〜、私も講義とかやってみたいです^^
うちは代々教職員の家系で曾じぃちゃんの頃から姉貴まで全て教員なので、その血が流れているのかも知れません^^;
まぁまずは教えられるだけの知識を付けないと話になりませんが・・。


>>Tororoさん

>ただ単に塾、部活等でパソコンをイジル時間がなくなるからですw 

なるほど、忙しくなりそうですね^^
確かに私は高校の時家は寝るだけの場所でした・・w


944ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(162,336ポイント)   Date: 2010/02/20(土) 22:37   No:48315     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
> それじゃまずたかぎさんの講義に出なくては(笑 

そういえばsizumaさんも擬似プロセッサを作りたいと書かれていましたね。
興味をもってくれる生徒とそうでない生徒の差が非常に大きいマニアックな題材ですからね。
今のところ考えているのは、C++で

template <unsigned N>
struct basic_bitarray
{
    bool d[N];
};

のようなビット配列をレジスタやバスに使って...

inline bool
half_adder(bool a, bool b, bool& s)
{
    s = a ^ b;
    return a & b;
}

inline bool
full_adder(bool a, bool b, bool x, bool& s)
{
    a = half_adder(a, b, s);
    return a | half_adder(s, x, s);
}

のようなノリで、これを必要ビット分組み合わせて加算器を作らせて...

switch文か関数テーブルをマルチプレクサにしてALUを実装させる、といったものを考えています。
リアルなものにすることはいくらでもできるのですが、時間的な制約と相手の実力的な制約から、適当に簡略化しないとしかたがないかな、と思っています。


2倍のポイントを手に入れた! 656ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(123,618ポイント)   Date: 2010/02/20(土) 23:06   No:48318     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
最近研究しているのはLANに接続されている機器を判別したり、調査したりする方法ですね。
最終目的は、ゲーム機やオンラインゲームの接続トラブルを調査して改善案を提示するツールを作る予定でいます。ルータやら無線LANやら色々調べてますが、ネットワークが本業じゃなかったので分からない事だらけです。テストが出来る段階になったら、みなさんに協力をお願いするかも知れません。よろしくお願いします。

それとマイコンArduino用のBASICインタプリタか、オリジナル言語(オブジェクト指向?)インタプリタを作りたいなっておぼろげに考え中です。
互換機Japaninoが大人の科学の付録に付く予定なので、少しはArduinoがメジャー化するのではと期待。
http://otonanokagaku.net/magazine/vol27/index.html 編集済み


2倍のポイントを手に入れた! 326ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,154,864ポイント)   Date: 2010/02/21(日) 11:42   No:48349     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>> たかぎさん

> 興味を持ってくれる生徒とそうでない生徒

確かにそうですね。
特にプログラム自体にあまり興味を示さない生徒だとなんのこっちゃ・・ってことになりそうですね。
プログラムを組む前の段階の前提知識をかなりきちんと付けておかないと優秀な生徒以外は挫折の原因となりそうですね^^;


>> softyaさん

通信関係は奥が深いですよね〜。
ネットワーク関連の本を先日一冊読んでみました。
特にプログラムを組まずに理論的なことを見ていったのですが、
「こりゃ試しながら覚えていかないとダメだな。。。」と思いました^^;
概念的な事が解っても「じゃぁこのときどうしたらいいの?」って事がなかなかわからないんですよね;

・・・今ふと学生の時に覚えたOSI基本参照モデルの覚え方を思い出しました
「ソーセージとピザを投げないで」
(Please Do Not Throw Sausage and Pizza Away)
だったかな・・?
懐かしいな^^;


335ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(162,980ポイント)   Date: 2010/02/21(日) 11:56   No:48351     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
> 特にプログラム自体にあまり興味を示さない生徒だとなんのこっちゃ・・ってことになりそうですね。 

プログラミングとは関係ない学科の一般教養ならともかく、あくまでもプログラミング系の学科なので、プログラム自体に興味がない者のことは無視してもよいとは考えています(数学に興味がないのに数学科に行くようなものですから)。
題材としては、

・コンピュータの動作原理
・ポインタや論理演算といった苦手の克服
・テスト駆動開発
・オブジェクト指向プログラミング

といったことを一気に身に付けられるんですけどね。


138ポイント を手に入れた。

Name: dic  ..熟練のプログラマー(52,738ポイント)   Date: 2010/02/21(日) 12:15   No:48356     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
純粋に英語の勉強してます
って英語検定準2級(高校生)レベルですが

プログラムってどうしても、詳しく調べると英語の資料にいきあたるんですよね
海外では、もっとさかんに気軽にプログラムに関してやりとりをしているようで
どうしても、日本語化は遅くなっちゃいますよね
テクニックなども、英語だと結構好きな方がいらっしゃるので大変参考にもなります

また、高校数学U・B V・C
をやり直して、3Dプログラミングもできるように勉強してます

ちょっとjavaでも遊んでるんですが、javaのオブジェクト指向はすごいものが
あると考えてます
もっとも対抗してMSも.NETを出してます
プロの作ったソース(dll,java)など、一瞬で再利用可能なオブジェクト指向も
勉強中です

HTML、PHP関係も習得したいのですが、ちょっとつめこみすぎかなと思ってます

ハードウェアよりもソフトウェアよりの勉強ですね(研究って言うまでにはいってないですね


290ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(34,596ポイント)   Date: 2010/02/21(日) 13:21   No:48362     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
> それじゃまずたかぎさんの講義に出なくては(笑 
>そういえばsizumaさんも擬似プロセッサを作りたいと書かれていましたね。 
実はたかぎさんのサイトを見て、実際にやってみようと思いました。
明日から学校は4月中ごろまでずっと資格試験対策(組込み)の自習なんで時間は山のようにあるので・・・

うちの学校だと、たいした授業をしてくれないのでたかぎさんが教えてるところの学生がうらやましいです。


140ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(163,611ポイント)   Date: 2010/02/21(日) 13:38   No:48364     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
> sizumaさん
いま資料を作っているので、ある程度できたら別途雑談スレを立ち上げます。


21ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(34,730ポイント)   Date: 2010/02/21(日) 22:30   No:48385     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>たかぎさん
楽しみにしてます!
たかぎさんのページで紹介されてる「CUPの創り方」でも買って見ようかなーと思います。表紙的に萌えそうだし(笑
ただ、レビューを見てると、内容のわりに値段が高い気がしますね。
勉強になりそうなんで、こんなところケチっちゃだめなんでしょうけど。


116ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(125,182ポイント)   Date: 2010/02/21(日) 23:09   No:48401     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>>sizumaさんへ
「CPUの創り方」は、完全なデジタル回路の入門書って感じです。
CPUのごく基本的な仕組みを学びつつ、デジタル回路の基本もって本ですね。

「CPUの創り方」が面白いなと感じたらCPLD/FPGAの世界も楽しいですよ。
※ CPLD/FPGAはプログラミング出来るデジタル回路です。
http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%96%E3%83%AB%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9
プログラミングと言ってもHDL言語と言うのを使うのですが、ある意味究極の並列処理プログラミングです。
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E8%A8%98%E8%BF%B0%E8%A8%80%E8%AA%9E

VHDLでhelloWorld!
http://ja.wikipedia.org/wiki/VHDL
これを使ってファミコンやらアーケードゲームやらを再現している人もいます。
http://crystal.freespace.jp/pgate1/nes/index.html
ただいまスーパーファミコンを開発中!
http://crystal.freespace.jp/pgate1/snes/index.html

私はFPGAでオリジナルCPUとか作ってみたいのですが、これはまた時間が取れたらですね。
当然コンパイラとかOSとかも作る壮大な計画なんですけどね。壮大すぎるかも(汗)


292ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(35,209ポイント)   Date: 2010/02/21(日) 23:36   No:48412     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
>softyaさん
すごいおもしろそうです!
擬似プロセッサでロジックを書けるようになったら、HDL言語を使ってデジタル回路設計
なんて出来たらいいんですけど、わからないことだらけだからどうなることやら。
今のところ擬似プロセッサがつくれるかも分かりませんし・・・

紹介していただいたサイトを詳しく読んでないので、わからないところだらけです。
PLDに自分で回路設計するためにコーディングする環境を用意するのっていくらかかるんでしょうかね。
仮想環境でもあればいいんですけど。

>下の二つのリンク
やろうと思えばこんなこともできるんですね。
こういうのを見ると、自信をなくしつつ、がんばらなきゃなぁって思います。
明日から勉強がんばろうっと。


215ポイント を手に入れた。

Name: 組木紙織  ..比類無きプログラマー(77,106ポイント)   Date: 2010/02/23(火) 00:33   No:48476     
Title: Re:[雑談] 最近何か研究してること(したい事)ありますか?    
大学にいるので一応書いておこうかと。

研究してるのは地震学です。
地震学といっても地震予知ではなく、地球の内部を調べています。
その関係で数式をいじったりやプログラムをしてますが、やっぱり研究は難しいです。
基本的に教えてくれる人はいないので、情報を集めるとこから自分で動かないといけないです。
まあ、そこが一番楽しいとこではあるんですが。

どちらかというと趣味で研究(というより知りたいこと)は
群論、ベクトル解析、複素関数論です。
大学の研究と一部関連するのですが、プログラムしたいことの数学的基礎知識といった意味で
使えるようになりたいですね。


108ポイント を手に入れた。



Name: サンタクロース  ..入門者(4,539ポイント)   Date: 2010/02/20(土) 22:26   No:48314       
Title: テーブル化について    
こんばんは、私もPSPでシューティングを作っておりsin,cosのテーブル化を試みたのですが
どうも頭が固くて、とても初歩的なことでしょうけど回答お願いします
このソースは算術用関数sin()をSin()に置き換えて使うように作ったつもりです。
が、Sin()を呼び出すたびに初期化も行われているのでめちゃくちゃ時間がかかってしまうのです。
一般のテーブル化のように最初に一度だけ初期化を行いそれからSin()で数値の代入だけですむように
すればどうすればよいのでしょうか?
出来れば、龍神録のように○○.cppに〜を追加。のように書いていただけるとありがたいです。
float Sin(int i){
    float Sin[361];
    if(i<0)i*=-1;//マイナス値にならないように
    if(i>360)i=i%360;//360度を超えたら360度以下する
    
    for(i=0; i<360; i++){
        
        Sin[i]= sinf(PI2/360*i);
    }
    return Sin[i];
}
 編集済み


388ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(162,493ポイント)   Date: 2010/02/20(土) 22:41   No:48316     
Title: Re:テーブル化について    
こんなのでどうでしょうか?

float Sin(int i){
    struct initializer
    {
        float sin_table[361];
        initializer()
        {
            for(i=0; i<360; i++){
                sin_table[i]= sinf(PI2/360*i);
            }
        }
    };
    static initializer init;

    if(i<0)i*=-1;//マイナス値にならないように
    if(i>360)i=i%360;//360度を超えたら360度以下する    
    return init.sin_table[i];
}


157ポイント を手に入れた。

Name: 少年X  ..かけだし(2,202ポイント)   Date: 2010/02/21(日) 12:05   No:48353     
Title: Re:テーブル化について    
僕が関わったスレでないので広めるのは気がひけますけど書きます。
過去のNo:40384「三角関数のテーブル化」にある一周を1024度にした自作三角関数が載ってますよ。それを用いることによって処理速度は上がりました。しかし、そうすることによって数か所の書き換えが必要になったりするので頑張ってください。また、ftさんの話によれば、弾幕の計算以外で三角関数をテーブル化したところ処理が遅くなったとか・・・
まあ、いろいろと試してみるのがいいと思います。
あと、アドバイス的にことを少し・・・

・一気に改良するとどこでバグが発生したかわからない。
・PIではなく512となる。
・表示の際には度数法(1024度)から孤度法に変換する必要があります。

まあ、初心者がてこずった一例なので参考になればいいですけど^^


350ポイント を手に入れた。

Name: ft [URL]  ..中級者(13,844ポイント)   Date: 2010/02/21(日) 15:57   No:48367     
Title: Re:テーブル化について    
if文は使わない方がいいと思います。

2倍のポイントを手に入れた! 26ポイント を手に入れた。

Name: サンタクロース  ..初心者(6,371ポイント)   Date: 2010/02/21(日) 19:56   No:48373     
Title: Re:テーブル化について    
こんばんわ、回答ありがとうございます。
自分でいろいろ考えてみたのですが、やはりsin_table[90]={0.000 0.・・・・}
という風に直接入れたほうがいいと思いまして進めていったのですが
詰まりました。externを使ってsin_cos.cppで宣言した0度から90度の値を含む配列を
boss_shotH.cppに渡したつもりでしたが、printfDxで配列の1つを表したけれど値は0.00でした。
externでは配列の値の受け渡しは出来ないのでしょうか?
あと、ftさんのいうとおりif文が多いので360度分の値を代入したほうがいいかもしれません

sin_cos.cpp--------
#include "GV.h"

  int Sin_table[91]={0    ,175  ,349  ,523  ,698  ,872  ,1045 ,1219 ,1392 ,1564 ,
                     1736 ,1908 ,2079 ,2250 ,2419 ,2588 ,2756 ,2924 ,3090 ,3256 ,
                     3420 ,3584 ,3746 ,3907 ,4067 ,4226 ,4384 ,4540 ,4695 ,4848 ,
                     5000 ,5150 ,5299 ,5446 ,5592 ,5736 ,5878 ,6018 ,6157 ,6293 ,
                     6428 ,6561 ,6691 ,6820 ,6947 ,7071 ,7193 ,7314 ,7431 ,7547 ,
                     7660 ,7771 ,7880 ,7986 ,8090 ,8192 ,8290 ,8387 ,8480 ,8572 ,
                     8660 ,8746 ,8829 ,8910 ,8988 ,9063 ,9135 ,9205 ,9272 ,9336 ,
                     9397 ,9455 ,9511 ,9563 ,9613 ,9659 ,9703 ,9744 ,9781 ,9816 ,
                     9848 ,9877 ,9903 ,9925 ,9945 ,9962 ,9976 ,9986 ,9994 ,9998 ,
                     10000};
 
  int Cos_table[91]={10000,9998 ,9994 ,9986 ,9976 ,9962 ,9945 ,9925 ,9903 ,9877 ,
                     9848 ,9816 ,9781 ,9744 ,9703 ,9659 ,9613 ,9563 ,9511 ,9455 ,
                     9397 ,9336 ,9272 ,9205 ,9135 ,9063 ,8988 ,8910 ,8829 ,8746 ,
                     8660 ,8572 ,8480 ,8387 ,8290 ,8192 ,8090 ,7986 ,7880 ,7771 ,
                     7660 ,7547 ,7431 ,7314 ,7193 ,7071 ,6947 ,6820 ,6691 ,6561 ,
                     6428 ,6293 ,6157 ,6018 ,5878 ,5736 ,5592 ,5446 ,5299 ,5150 ,
                     5000 ,4848 ,4695 ,4540 ,4384 ,4226 ,4067 ,3907 ,3746 ,3584 ,
                     3420 ,3256 ,3090 ,2924 ,2756 ,2588 ,2419 ,2250 ,2079 ,1908 ,
                     1736 ,1564 ,1392 ,1219 ,1045 ,872  ,698  ,523  ,349  ,175  ,
                     0     };//10の4乗しといてint型にする。使うとき1/10000する

int Sin(int kakudo){
     int sign=1;
     if(kakudo<0)kakudo=-kakudo;//角度が負の値なら正にする
     if(kakudo>360)kakudo=kakudo%360;//角度を360度以内に収める
     if(90 <kakudo && kakudo<=180)kakudo=180-kakudo;        //91度〜180度なら
     if(180<kakudo && kakudo<=270)kakudo=kakudo-180,sign=-1;//181度〜270度なら
     if(270<kakudo && kakudo<=360)kakudo=360-kakudo,sign=-1;//271度〜360度なら
         return (sign*Sin_table[kakudo]);
}
    


int Cos(int kakudo){
     int sign=1;
     if(kakudo<0)kakudo=-kakudo;//角度が負の値なら正にする
     if(kakudo>360)kakudo=kakudo%360;//角度を360度以内に収める
     if(90 <kakudo && kakudo<=180)kakudo=180-kakudo;sign=-1;//91度〜180度なら
     if(180<kakudo && kakudo<=270)kakudo=kakudo-180,sign=-1;//181度〜270度なら
     if(270<kakudo && kakudo<=360)kakudo=360-kakudo;         //271度〜360度なら
         return (sign*Cos_table[kakudo]);
}
    
boss_shotH.cpp--------
extern  int Sin_table[91];
extern  int Cos_table[91];
{sin()の代わりにSin()を1/10000を掛けて使用}




1,832ポイント を手に入れた。

Name: ft [URL]  ..中級者(14,075ポイント)   Date: 2010/02/21(日) 23:36   No:48413     
Title: Re:テーブル化について    
色々なパターンで試していないのでどれが最適か分からないのですが、
以前サンタクロース氏が三角関数について本家掲示板にて聞いておりました回答がif文を使ってなかったので
とても良いものと考えて用いています。
現在は過去ログにありますが

『日時: 2009/10/25 23:20
名前: 憂煉

・・・すいません。ちょっと意味不明な気がします。
>サイン、コサインのあたいをfor()文に対応したマクロ定義?の書き方が分からないです。

とりあえずこんなのはどうでしょうか

float sincos[360];

void initSincos()
{
int i;
for(i = 0;i < 360;++i)
{
sincos[i] = sin(i * PI / 180);
}
}

#define SIN(KAKUDO) (sincos[KAKUDO % 360])
#define COS(KAKUDO) (sincos[(KAKUDO + 90) % 360])

initSincosで配列を初期化し、SIN、COSの関数マクロで値を取得します。』

見覚えありますでしょうか?
この例では1周を360等分していますが、私は一周1024等分にして%360をビット演算子「&」で計算してます。
これでif文を使うことなく、値はビット演算で探し出せます。
またテーブル初期化と参照部分は分離されているので混同されにくいと思われます。 編集済み


231ポイント を手に入れた。

Name: non  ..比類無きプログラマー(95,506ポイント)   Date: 2010/02/22(月) 11:25   No:48439     
Title: Re:テーブル化について    
たかぎさんのプログラムがいいと思うけど、環境で問題があるなら
こんなのではいかがですか。
#define PI 3.14159265f
float Sin(int deg)
{
    int i;
    static int sw=0;
    static float sin_table[360]; 
    if(sw==0){
        for(i=0; i<360; i++)
            sin_table[i]= sin(PI/180*i);
        sw=1;
    }    
    if(deg<0) deg*=-1;//マイナス値にならないように 
    if(deg>360)deg=deg%360;//360度を超えたら360度以下する     
    return sin_table[deg]; 
}



183ポイント を手に入れた。

Name: fatens  ..初心者(8,022ポイント)   Date: 2010/02/22(月) 17:54   No:48446     
Title: Re:テーブル化について    
>float Sin[361];
360°= 0°なので要素数は0〜359の360個で良いです。

>if(i<0)i*=-1;//マイナス値にならないように
これだけだと例えば、sin(-90°) = sin90°になってしまいます。

>if(i>360)i=i%360;//360度を超えたら360度以下する
比較をなるべく少なくするのであれば常にi=i%360としても良いと思います。

Cなら、
float Sin(int deg)
{
    const static float sin_table[] = {
        0.0000000f, 0.0174524f, 0.034899f, 0.0523359f, 0.0697564f,
        //以下略
    };

    if (deg < 0)
        return -sin_table[-deg % 360];

    return sin_table[deg % 360];
}

float Cos(int deg)
{
    return Sin(deg + 90);    //sinとcosは90°ずれている
}


C++なら、たかぎさんのような方法でsin_tableを初期化する。

というのはどうでしょう(未検証)



340ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(163,831ポイント)   Date: 2010/02/22(月) 18:10   No:48448     
Title: Re:テーブル化について    
私の方法で問題が出るとすれば、マルチスレッドの場合か、標準準拠度が非常に低いC++処理系(GCCなら、よほど古いバージョンでない限り問題ないでしょう)か、Cの場合だけです。
まあ、内部的には条件分岐が発生していますので、そのオーバーヘッドが問題になるのであれば、関数の外に追い出すしかありません。


106ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(135,861ポイント)   Date: 2010/02/22(月) 21:30   No:48460     
Title: Re:テーブル化について    
テーブル化はいろいろ工夫しがいがありますよね。
以前Justyさんからのアドバイスをいただいたものを実現してみました。
もう少し精度がほしい場合用ですかね。

自分の場合は、nonさんよりはメモリを約2.8倍食いますが、
その分精度が上がります。(360→65536)
ただ、シューティングにはこんな精度いらないですかね。

参考までに。

#追記
説明を書いていませんでした。
0〜2PIを
0〜65535で表現しただけです。
ぱっとみ「へ?」って思うかもしれませんが、結構便利です。
特に正規化とかは。
っというか、これは正規化のためのものである気がしますが^^;

#さらに追記
psp開発の環境でコンパイルしていませんので良くわかりませんが、
M_PIが使えないかもしれないです。
(たしかgccだった気がするので使えるのかな・・・?) 編集済み


140ポイント を手に入れた。

Name: サンタクロース  ..初心者(6,699ポイント)   Date: 2010/02/22(月) 21:36   No:48461 解決!     
Title: Re:テーブル化について    
皆さん、いろいろな回答ありがとうございます。
テーブル化とひとくちに言ってもさまざまな方法がありますね。
>>ftさん 過去ログだったのですね。私もその記事を参考にしようと思ったのですが
どうにも見つからず削除されてしまったのかな?と思いました。
みなさんのソースはとても参考になりました。

結果としては、あらかじめsinとcosの360度分の値を配列に渡しておき関数で呼び出すことにしました
毎回360個のint型を用意していて馬鹿みたいかも知れませんが一応、自分もまだまだ
初心者ですので、今のところは処理落ち云々にこだわり過ぎないでいこうと思います。

>>ftさん(zaneさん?)も初心者XさんもPSP本家のほうでよく見かけます。
PSPで移植、これからもがんばっていきましょう^^ 編集済み


328ポイント を手に入れた。



Name: kameo  ..ぴよぴよ(284ポイント)   Date: 2010/02/22(月) 18:55   No:48450       
Title: 同時キー入力    
はじめまして kameoというものです。
C言語は大学の講義で半年程度やっていましたが、今は独自でゲーム作りに挑戦しています。

質問ですが、以下のようなプログラムを作成しました。
#include "DxLib.h"
 
typedef struct{
        int x,y,dx,dy,img;
}ch_t;
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        
    int image[4];
    char Key[256];
    ch_t ch;
 
    if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
 
    ch.x    =320;
    ch.y    =240;
    ch.dx=4;  //移動量
    ch.dy=4;
 
    SetDrawScreen( DX_SCREEN_BACK ) ;                                                 //描画先を裏画面に設定
    LoadDivGraph( "jiji.png" , 4 , 2 , 2 , 32 , 32 , image ) ;//画像を分割してimage配列に保存
 
    while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
            //↑メッセージ処理        ↑画面をクリア         ↑キーボード入力状態取得       ↑ESCが押されると終了
 
         ch.img=image[0];
         if( Key[ KEY_INPUT_RIGHT ]  == 1 )  {
           ch.x+=ch.dx ;
           ch.img=image[3];
         }
         else if( Key[ KEY_INPUT_LEFT ]  == 1 )  {
           ch.x-=ch.dx ;
           ch.img=image[2];
         }
         else if( Key[ KEY_INPUT_UP ]  == 1 )  {
           ch.y-=ch.dy ;
           ch.img=image[0];
         }
         else if( Key[ KEY_INPUT_DOWN ]  == 1 )  {
           ch.y+=ch.dx ;
           ch.img=image[1];
         }
//斜め移動 
               else if( Key[ KEY_INPUT_RIGHT ]  == 1&&Key[ KEY_INPUT_UP ]  == 1 )  { 
           ch.x+=ch.dx ;
           ch.y-=ch.dy;
         }
         else if( Key[ KEY_INPUT_RIGHT ]  == 1&&Key[ KEY_INPUT_DOWN ]  == 1 )  {
           ch.x+=ch.dx ;
           ch.y+=ch.dy;
         }
         else if( Key[ KEY_INPUT_LEFT]  == 1&&Key[ KEY_INPUT_UP ]  == 1 )  {
           ch.x-=ch.dx ;
           ch.y-=ch.dy;
         }
         else if( Key[ KEY_INPUT_LEFT]  == 1&&Key[ KEY_INPUT_DOWN ]  == 1 )  {
           ch.x-=ch.dx ;
           ch.y+=ch.dy;
         }
 
        DrawGraph( ch.x , ch.y , ch.img , TRUE  ) ;
 
        ScreenFlip();//裏画面を表画面に反映
    }
 
    DxLib_End();
    return 0;
}

このプログラムで斜め移動を行おうと思いましたが斜めに進んでくれません。
どのようにプログラムすればいいでしょうか?
よろしくお願いします。(画像ファイルを添付しておきます)


284ポイント を手に入れた。


Name: MNS  ..プログラマー(32,028ポイント)   Date: 2010/02/22(月) 19:01   No:48451     
Title: Re:同時キー入力    
else if となっていることが問題です。
コードにある斜め移動の処理をいったんコメントアウトか消去し、
上下左右移動の処理にあるelseを取り払い、全てifにすれば、
一応の解決にはなるはずです。


77ポイント を手に入れた。

Name: kameo  ..ぴよぴよ(255ポイント)   Date: 2010/02/22(月) 19:06   No:48452 解決!     
Title: Re:同時キー入力    
できました!
なぜelse ifだと駄目だったのかは
自分で勉強してみます。

ありがとうございました。


29ポイント を落としてしまった。



Name: スルメ  ..ぴよぴよ(777ポイント)   Date: 2010/02/21(日) 22:46   No:48390       
Title: while文について    
初の質問なので注意事項のテンプレートに沿って記述していきます
自分は今C言語にてゲームプログラミングをしようとがんばっています。
そこでゲームプログラミングの館で修行しているのですが
ttp://dixq.net/g/14.html
の[ソースを短く書く@]
でのwhile文で
ProcessMessage()
ClearDrawScreen()
GetHitKeyStateAll( Key )
Key[KEY_INPUT_ESCAPE]
をまとめるということをしていて
なぜこの文になるのかこんがらがってしまい先に進めません。 
while文自体は
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key ) && !Key[KEY_INPUT_ESCAPE] )
なのですが
!は否定という意味なのでwhile文に照らし合わせると
「4つの内どれかひとつが●●でなかっただったときループ」
という風になると思います。
正確に言えば
「ProcessMessageが0以外でなかったとき、又はClearDrawScreenが0以外でなかったとき、………」
となると思います。
そろそろ分からなくなってきましたよぉ><(汗
「4つの内どれかひとつが0でなかったときループ」
だと4命令的にありえません
「4つの内どれかひとつが0以外でなかったときループ」
で考え方はあっていると思うのですが。。。
上記をシンプルにまとめると…
「4つの内どれかひとつが0でなかったときループから外れる」
と言う考え方なのでしょうか?
そうするとwhile文が捻じ曲がってしまうような…

このwhile文構成でどのように解釈すればいいのでしょうか?
↑この一文が今回の本題です。
どなたか助言お願いします。


495ポイント を手に入れた。


Name: mnkr  ..入門者(4,484ポイント)   Date: 2010/02/21(日) 23:05   No:48399     
Title: Re:while文について    
>while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key ) && !Key[KEY_INPUT_ESCAPE] ) 

>「ProcessMessageが0以外でなかったとき、又はClearDrawScreenが0以外でなかったとき、………」 

「&&」の意味は「または」ではなく、「かつ」です。

参考情報
C言語では「真」は「0以外の値」です
http://www.geocities.jp/ky_webid/c/014.html

ProcessMessage()で記述するとエラー(返却値 -1)のときだけループする、となるので
否定の「!」をつけて正常時(返却値 0)にループする、となります。
 編集済み


53ポイント を落としてしまった。

Name: Dixq (管理人) [URL]  ..ウィザード(1,155,712ポイント)   Date: 2010/02/21(日) 23:34   No:48411     
Title: Re:while文について    
(1) && (2) && (3)

は「(1)も(2)も(3)も全部満たした時真」となります。

(1) || (2) || (3)

は「(1)または(2)または(3)のどれかが満たした時真」となります。

!(1) && !(2) && !(3)

は「(1)じゃなく(2)じゃなく(3)でもない時真」となります。

!(1) || !(2) || !(3)

は「(1)じゃないか(2)じゃないか(3)じゃない、どれか一つでも当てはまる時真」となります。

ということで今回の場合


プロセスメッセージ関数が異常ではなく、
クリアスクリーンが異常ではなく、
キー入力状態取得関数が異常ではなく、
「エスケープが押されている」ではない時、

全て満たした時条件式全体は真となるわけです。
おわかりいただけたでしょうか?


337ポイント を手に入れた。

Name: スルメ  ..ぴよぴよ(919ポイント)   Date: 2010/02/22(月) 17:33   No:48445 解決!     
Title: Re:while文について    
皆さんありがとうございます!!

無事問題(疑問?)を解決することができました^^

0以外が真
ってところがミソでしたね…

又困ったときはよろしくお願いします^^


72ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(35,262ポイント)   Date: 2010/02/22(月) 17:58   No:48447     
Title: Re:while文について    
質問内容とは関係ありませんけど、文章は内容の区切りとかで4,5行を目安に改行したほうが見やすくなりますよー


53ポイント を手に入れた。



Name: スルメ  ..ぴよぴよ(282ポイント)   Date: 2010/02/21(日) 17:12   No:48370       
Title: 誤字報告^0^/    
こんにちは。

今現在「ゲームプログラミングの館」でさ迷ってますスルメといいます。

管理人さんが書いてくださったありがたいプログラムを写してはコンパイル、写してはコンパイルを繰り返しいつか(東方系ではなくシタースケインさん系の)シューティングゲーム、又いろんなゲームプログラミングを夢見てます。
もちろん将来の職業希望はゲームプログラマー!!

と余談は置いておいて(^^;
誤字報告です。
ttp://dixq.net/g/10.html

サンプルプログラム内の
        while( CheckHitKey( KEY_INPUT_RETURN ) == 0 ){//ENTERが押されている間ループ
               if( ProcessMessage() == -1 )
                         break ;        // エラーが発生したらループを抜ける
        }

//ENTERが押されている間ループ
のところ
//ENTERが押されていない間ループ
ではないでしょうか?
押されている間ループでしたらたぶんENTERキー押しながら起動しないと一瞬で終了してしまうんじゃ・・・w


282ポイント を手に入れた。


Name: Dixq (管理人) [URL]  ..ウィザード(1,155,785ポイント)   Date: 2010/02/21(日) 23:37   No:48414     
Title: Re:誤字報告^0^/    
なるほど、そうですね。
誤字報告ありがとうございます。
これからも何かあれば教えてください^^

特に大勢で共有する必要が無い内容でしたら、メールでも結構ですので、
お知らせいただけると幸いですm(_ _)m


73ポイント を手に入れた。

Name: スルメ  ..ぴよぴよ(847ポイント)   Date: 2010/02/22(月) 17:30   No:48444 解決!     
Title: Re:誤字報告^0^/    
分かりました^^

これからもサイト運営、ゲームプログラミングがんばってください!! 編集済み


2倍のポイントを手に入れた! 70ポイント を手に入れた。



Name: ti  ..初心者(5,203ポイント)   Date: 2010/02/21(日) 20:02   No:48374       
Title: ドラクエ風の画面処理    

お久しぶりです 
kazuoniさんsoftyaさん返答遅くなってしまってすいません 
だいぶ時間が空いてしまって過去ログになってしまったので
新しく作り直します

メイン関数の書き方にならって 
関数を書いてみました 

窓がない状態から

Xボタンで窓1
窓1が開いてる状態で

Xボタンで窓2が開いてる状態
Zボタンで窓1が開いてる状態へ

という処理を目指して状態推移処理で作り直してみました

</pre>
int function_status=888;//状態設定

int Make_CmdWindow1(int cr__x,int cr__y,int i,int j)//座標、座標、座標、座標、bmp名
{
    char Key[256];
    

    GetHitKeyStateAll( Key ) ; 
    while(1){
        //GetHitKeyStateAll(Key);
        switch(function_status){
            
            case 888:

                if(Key[KEY_INPUT_Z]==1)
                    MessageBox(NULL ,"window1" , "B" ,MB_OK);
                    function_status=999;//初期
                break;

                if(Key[KEY_INPUT_X]==1)
                    MessageBox(NULL ,"window1" , "A" ,MB_OK);
                    function_status=777;//ウィンドウ2?
                break;

            case 777:
                if(Key[KEY_INPUT_X]==1)
                    MessageBox(NULL ,"window2" , "A" ,MB_OK);
                    function_status=888;//ウィンドウ2が開いた状態?
                break;

                
                
                if(Key[KEY_INPUT_Z]==1)
                    MessageBox(NULL ,"window1" , "B" ,MB_OK);
                    function_status=888;//初期
                break;

            

            case 999:
                return 0;
                break;
                
            default:
                return 0;
                break;

        }
    }
    
 
    return 0;
}
</pre>
初期で 
if(Key[KEY_INPUT_Z]==1)
                    MessageBox(NULL ,"window1" , "B" ,MB_OK);
                    function_status=999;//初期
                break;

                if(Key[KEY_INPUT_X]==1)
                    MessageBox(NULL ,"window1" , "A" ,MB_OK);
                    function_status=777;//ウィンドウ2?
                break;



キーを押していなくても押している状態として認識してしまいます 
原因がわからないのですがkeyの宣言の仕方を変えるべきか 
ソースの書き方の問題か教えてくださいよろしくお願いします
 編集済み


234ポイント を手に入れた。


Name: ひよこ  ..比類無きプログラマー(80,218ポイント)   Date: 2010/02/21(日) 20:50   No:48375     
Title: Re:ドラクエ風の画面処理    
初めて見た感じ、caseとbreak;の数があっていないように見えます。それが原因かもしれません。
ソースにwhile(1)のループがあったりと、ちょっと無駄が多いソースに見えます。
ちがっていたらすみません。


78ポイント を手に入れた。

Name: ti  ..初心者(5,403ポイント)   Date: 2010/02/21(日) 23:01   No:48396     
Title: Re:ドラクエ風の画面処理    
ひよこさん
while(1)のループはここのMain関数の書き方というところををまねして書きました
無駄が多いのはほぼ素人なので・・・
追記です

たとえば他の関数でもkeyを取得していて
そちらでは正しく十字キーを押したときの処理はできているのですが
ほかでkeyの取得が正常にできないとか起こりえますか?



110ポイント を手に入れた。

Name: ひよこ  ..比類無きプログラマー(80,655ポイント)   Date: 2010/02/21(日) 23:56   No:48420     
Title: Re:ドラクエ風の画面処理    
ほかでkeyの取得が正常にできないとか起こりえますか? 
>>メッセージ処理をしていればいちおうないと思います。
一回メインループを考えて作ったほうがよさそうです。
取得できないのではなく取得してないのだと思います。

私が考えたのは、これです。{スイッチ文が何度も1ループで動かない(1回しか処理しない)と思っています。}(プログラムが始まってからZキーを押していると仮定して)
GetHitKeyStateAll( Key ) ;でキーを取得し、ループへ、
Zが押されているので、Zが押されている処理が動きます。
そのあとwhile(1)で、無限ループなので、さらにGetHitKeyStateAll( Key )で押されているキーを取得するので
これを使っていないということは、ずっと押されぱなしと判断するからだと思います。

ゲームプログラムの館みたいに1ループ一回キーを取得、画面を消去、メッセージを処理をすると
無駄もないし、いいですよ。


308ポイント を手に入れた。

Name: ti  ..初心者(5,467ポイント)   Date: 2010/02/21(日) 23:56   No:48421     
Title: Re:ドラクエ風の画面処理    
なんか自己解決したみたいです
GetHitKeyStateAllの場所と変数の名前を変えたら直りました
お騒がせしました
またなにかありましたらよろしくお願いします


64ポイント を手に入れた。

Name: ti  ..初心者(5,479ポイント)   Date: 2010/02/22(月) 00:02   No:48424 解決!     
Title: Re:ドラクエ風の画面処理    
解決しわすれました

12ポイント を手に入れた。



Name: Yuno  ..ぴよぴよ(259ポイント)   Date: 2010/02/21(日) 22:56   No:48393       
Title: 無題    
初投稿です
Yunoと申します

皆さんに知っておいていただけたらと思い
あえて新規投稿させていただきました

まだまだひよっこですがよろしくお願いします

まだ高校生ですが頑張りたいと思います
歳は16です

趣味は音楽とかです
気の合う人よろしくお願いします



142ポイント を手に入れた。


Name: array [URL]  ..熟練のプログラマー(63,716ポイント)   Date: 2010/02/21(日) 22:59   No:48395     
Title: Re:無題    
アレイと申します。

ヨロシクお願いします。

最近は、アニソンを聞くのが増えたんじゃないかと自覚していますが
別にそれで良いと思ってます。


ここに書き込みをしているところを見ると、少なからずプログラムに興味があると
思うので、これから勉強を始めるのであれば、つまずいたり分からなかったりする事があると思います。

そんな時は、お気軽に質問してください。 編集済み


2倍のポイントを手に入れた! 248ポイント を手に入れた。

Name: Yuno  ..ぴよぴよ(312ポイント)   Date: 2010/02/21(日) 23:04   No:48397     
Title: Re:無題    
ありがとうございます

よろしくお願いします。

結構わからないことだらけなので
その時はお願いしたいと思います


53ポイント を手に入れた。

Name: あ〜る  ..上級者(16,907ポイント)   Date: 2010/02/21(日) 23:05   No:48398     
Title: Re:無題    
よろしくお願いします
16です。
部活は水球。
ピアノを小一ぐらいからやっててDTMで音楽作ったりしてます(音楽が趣味らしいのであえて書いときました)
プログラミングはまだまだヘッポコです。同い年同士がんばりましょう!^^

とノってみたけど、この掲示板の人達は基本みんな優しいから自己紹介とかしなくても丁寧に答えてくれるから別に安心して大丈夫ですよ?
とか主に質問ばっかの奴が言ってみる(-.-;)


198ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(34,994ポイント)   Date: 2010/02/21(日) 23:11   No:48402     
Title: Re:無題    
こんにちははじめましてー

前の投稿を見たら、プログラム6年目なんですね。
僕は2年目なのでがっつり後輩ですがよろしくお願いします。
実年齢だと、僕が教えてる塾の生徒と同じくらいの差なのに(笑

音楽が趣味ということで、どんな音楽がすきか書かれてるとくいつかれやすいと思いますよ。
僕はゲームのサントラとかクラシック、ジャズが好きですね。
アニソンも大好きですけど。
そういえば、ナウシカやってましたね。結婚したいd、おっと。
ジブリのBGMをよく作ってる久石譲さんは大好きです。ピアノ譜5冊ぐらい持ってます。


あ、トピックのタイトルはちゃんとつけたほうがいいですよ。


231ポイント を手に入れた。

Name: Yuno  ..ぴよぴよ(543ポイント)   Date: 2010/02/21(日) 23:13   No:48403     
Title: Re:無題    
そうなんですかwww
とりあえずよろしくお願いしますね!!
DTM僕もやりますよ〜

まぁ、それでも一応礼儀ってものがありますしね…orz
www
とにかくよろしくです!

水球…うちのガッコにはないなぁ…


2倍のポイントを手に入れた! 206ポイント を手に入れた。

Name: Yuno  ..ぴよぴよ(619ポイント)   Date: 2010/02/21(日) 23:16   No:48404     
Title: Re:無題    
>sizumaさん
はいすみません
トピのタイトルつけとくの忘れてました

まあ音楽はサントラとかクラシックとか...
やっぱでも東方もいいですねー

そういうわけです
よろしくお願いします


76ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,154,915ポイント)   Date: 2010/02/21(日) 23:17   No:48405     
Title: Re:無題    
初めまして。管理人のDixqと申します^^

こんなサイトの管理人といっても今年社会人になったばかりの青二才ですので、
お気軽にお話下さいませヽ(´▽`)ノ


51ポイント を手に入れた。

Name: Yuno  ..ぴよぴよ(630ポイント)   Date: 2010/02/21(日) 23:21   No:48406     
Title: Re:無題    
あ、これはどうも管理人さん
ここのサイトにはお世話になってます

次いで申し訳ないのですが
フルスクリーンへの移行ができません
というトピックの回答をよろしければいただけないでしょうか?

今後もよろしくお願いいたします。


11ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,155,375ポイント)   Date: 2010/02/21(日) 23:30   No:48410     
Title: Re:無題    
もう十分すぎる回答が付いているようです^^;

23ポイント を手に入れた。



Name: Stanry  ..ぴよぴよ(268ポイント)   Date: 2010/02/21(日) 22:28   No:48383       
Title: &の意味    
C++言語を始めて基礎が終わったくらいの初心者です。
現在Win32のキーボードフックのプログラムを作っておりまして、SetWindowsHookEx関数を使いキーフックまでは出来たのですが、キー入力時にlParamに送られてくるデータから押上や押下の取得の方法がわからず、探してようやく見つけたのが↓のif文でした。しかし、if文中の&の意味を調べてもポインタなどの資料ばかり出てきて見つからなかったので質問させていただきます。
if((lParam&0xc0000000)!=0){
    //WM_KEYDOWNと同じ
}
上のような&の時の意味はなんでしょうか。



//キー入力時にデータが送られてくるCALLBACK関数
LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp)

    if (nCode < 0 ){
        return CallNextHookEx(hMyHook, nCode, wp, lp);
    }
    if (wp >= VK_XBUTTON2){
        if((lp&0xc0000000)==0){
            //WM_KEYDOWNと同じ
        }
        return CallNextHookEx(hMyHook, nCode, wp, lp);
    } else{
        return CallNextHookEx(hMyHook, nCode, wp, lp);
    }
    return TRUE;
}  編集済み


268ポイント を手に入れた。


Name: Stanry  ..ぴよぴよ(300ポイント)   Date: 2010/02/21(日) 22:30   No:48384     
Title: Re:無題    
申し訳ありません。タイトルが消えてしまっていたようです。

※修正しました 編集済み


2倍のポイントを手に入れた! 32ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(34,763ポイント)   Date: 2010/02/21(日) 22:33   No:48387     
Title: Re:無題    
論理積ですね。
これで検索すれば詳しく説明してるサイトが出てきますよ。



一応ぺたっと。
Wikipediaより引用です

C言語やPerlなどでは、ビット単位の論理積は「&」 で表され、

    z = x & y;
    $z = $x & $y;

のように使用される。

単なる論理積は「&&」で表され

    if (x==0 && y==0)

のように使用される。 編集済み


33ポイント を手に入れた。

Name: Stanry  ..ぴよぴよ(358ポイント)   Date: 2010/02/21(日) 22:39   No:48389     
Title: Re:無題    
sizumaさん、ありがとうございます。
&&はよく使っていたのですが&も同じようなものだったのですね。。。勉強になりました。
変な質問をしてしまいスミマセンでした。。


58ポイント を手に入れた。

Name: Stanry  ..ぴよぴよ(393ポイント)   Date: 2010/02/21(日) 22:58   No:48394 解決!     
Title: Re:無題    
調べたところ普通にlParam * 0xc0000000 = 0x0 になったらWM_KEYDOWNってことで実装してあるんですね。
勉強になりました。


35ポイント を手に入れた。



Name: アルバトロス  ..ぴよぴよ(143ポイント)   Date: 2010/02/21(日) 05:37   No:48336       
Title: お初にお目に掛かります。    
みなさん、初めまして。

アルバトロスと申します。
初投稿させていただきました。

歳は今年で22歳になります。
ゲーム会社でゲームプログラマーをやっております。

毎日プログラムと格闘してます。
個人的に実感したのはプログラマーは短気で我慢強くない人には
向かないことですかね。


143ポイント を手に入れた。


Name: Ma  ..熟練のプログラマー(53,324ポイント)   Date: 2010/02/21(日) 09:57   No:48341     
Title: Re:お初にお目に掛かります。    
雑談ならタイトルを雑談だとわかるようにしてはどうでしょうか?
あと、もしそうなら話す話題を自分からピックアップしてみてはどうでしょうか?
今見た限りではただの自己紹介ですよね、何をしたいのかわかりません。 編集済み


2倍のポイントを手に入れた! 148ポイント を手に入れた。

Name: 通りすがり  ..上級者(20,728ポイント)   Date: 2010/02/21(日) 10:20   No:48342     
Title: Re:お初にお目に掛かります。    
あなたは何歳?のトピックに投稿しようとして間違ったんじゃないでしょうか?

21ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(53,329ポイント)   Date: 2010/02/21(日) 10:23   No:48343     
Title: Re:お初にお目に掛かります。    
あぁ、なるほど。

5ポイント を手に入れた。

Name: アルバトロス  ..ぴよぴよ(242ポイント)   Date: 2010/02/21(日) 22:39   No:48388     
Title: Re:お初にお目に掛かります。    
返答の方、遅くなりまして申し訳ないです。

はい、通りすがりさんの仰るとおりです。

自分とした事が”[雑談]あなたは何歳?”に参加しようと思ったのですが
間違えて新規投稿を作ってしまいました。

誤解を与えてしまいスイマセン。


99ポイント を手に入れた。



Name: Ma  ..熟練のプログラマー(52,972ポイント)   Date: 2010/02/20(土) 12:13   No:48284       
Title: 揚力のベクトルを求める。(フライトシミュ)    
今、ちょっと簡易フライトシミュレーターを作るために、(主翼の)揚力が行う力のベクトルを求めようとしています。
(重要視しているのは方向です。)
行列は未学習です。(いずれやりますが)

分かっている情報は、xz座標上の角度(方角:0rad〜2πrad)、xz座標に対して作る角度(仰角:-π/2rad〜π/2rad)、ひねり角度(ロール角:-π〜π)です。

xz座標を地面、yの+方向が宇宙の向きだとすると、この機体の揚力によって発生する揚力のベクトルはどのように求めればいいでしょうか?
(航空力学を使用しなくてOKです。あまり細かい事がからんでくるような航空力学や物理的ではなく、数学的にお願いします。)

行列のほうがはるかに簡単な場合は、行列の勉強を先にやってみようかと思いますが、
他に導く方法はありませんか?ありましたらご指導よろしくおねがいします。


念のため環境:

DXライブラリ 3.01
VC++ 編集済み


209ポイント を手に入れた。


Name: たいちう  ..熟練のプログラマー(57,584ポイント)   Date: 2010/02/20(土) 13:04   No:48289     
Title: Re:垂直なベクトルを求める。    
基礎的なベクトルの知識のみを使って大雑把な方針を立ててみました。

1.機体の進行方向のベクトルを求める
2.進行方向に垂直な平面を求める
3.垂直な平面上でロール角0の場合の機体の鉛直方向のベクトルを求める
4.垂直な平面上で任意のロール角での機体の鉛直方向のベクトルを求める

簡易版ということなので、まずは4.を揚力と見做して良いでしょう。
再度質問する場合は、どこまでできたかを教えてください。
どの位手を抜いて回答出来るのかがわかります。


180ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(123,292ポイント)   Date: 2010/02/20(土) 13:13   No:48292     
Title: Re:垂直なベクトルを求める。    
擬似的な計算方法としては、翼平面に対して垂直なベクトルを考えるだけで良いと思います。速度でベクトルは変わりますので、速度1の翼平面の垂直ベクトルを求めて速度係数を掛け算するだけでそれっぽくなるかなって気がしますが、フライト系は作ったことが無いのをお断りしておきます。

まず回転変換する前は、揚力はy軸+の方向に長さ1のベクトルです。ベクトル(0,1,0)ですね。
これを回転変換します。ってところで気づいたのがオイラー角だとジンバルロックの問題があるので、フライトシムはクォータニオンが必要ですね。
http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%B3%E3%83%90%E3%83%AB
ジンバルロック
http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%B3%E3%83%90%E3%83%AB
クォータニオン
http://marupeke296.com/DXG_No10_Quaternion.html
http://www015.upp.so-net.ne.jp/notgeld/quaternion.html


323ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(53,176ポイント)   Date: 2010/02/21(日) 00:37   No:48333     
Title: Re:垂直なベクトルを求める。    
>1.機体の進行方向のベクトルを求める 
>2.進行方向に垂直な平面を求める 
>3.垂直な平面上でロール角0の場合の機体の鉛直方向のベクトルを求める 
>4.垂直な平面上で任意のロール角での機体の鉛直方向のベクトルを求める 

1は簡単にできます。
2がよくわかりませんね。
平面における三点から、垂直なベクトルを求められるのは分かるんですが、逆が。。。

ただ、softyaさんが提案してくださったクォータニオンのほうが有力そうなので、ひとまずいまはそちらの方法をやってみます。




>クォータニオン
いま、読んでいます。


 R,P,Q はクォータニオン

====転載====
R P Q = (0; 答え) 
============


と、ありましたが、
Vが、機体の進行方向のベクトルだとして。
P = (0; V) となり
答えに揚力の方向ベクトルがでるんでしょうけれど、


====転載====
回転の軸が(α, β, γ)で
Q = (cos(θ/2); α sin(θ/2), β sin(θ/2), γ sin(θ/2)) 
R = (cos(θ/2); -α sin(θ/2), -β sin(θ/2), -γ sin(θ/2)) 
============

ということは、翼が伸びている向きのベクトルを、(α, β, γ)として、θ=π/2rad
とすれば、いいということなのでしょうか?

(原理はまったく理解していませんがw)

ちょっと実装するコード量がそこそこありそうなので、ここは実験するよりも先に確認のため聞かせていただきました。


ところで、虚数がないのになんで虚部なんていうんでしょうね・・・。 編集済み


204ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(53,851ポイント)   Date: 2010/02/21(日) 11:24   No:48346     
Title: Re:垂直なベクトルを求める。    
例のサイト
http://www015.upp.so-net.ne.jp/notgeld/quaternion.html 

にあるソースコードの一部を流用して、実際にクォータニオンを使ってみました。
働きはある程度理解したつもりです。
(ソースコード内の変数である th,px,py,pz,ax,ay,az を動的に変えて、DXライブラリでそれらのベクトル3つ(元の位置ベクトル、軸ベクトル、結果ベクトル)を表示して、動作を確認しました。)


それで、前に言った方法を早速実装しようとしたんですが、問題がでてきました。

>翼が伸びている向きのベクトルを、(α, β, γ)

機体の方向のベクトルは簡単に求められるのですが、翼の方向にのびるベクトルの求め方がわかりません…。
だって、このベクトルを求めるのにもクォータニオンが必要そうなんですものorz
じゃぁ実際に求めてみようとしたら、回転軸である(α, β, γ)は揚力方向のベクトルですorz

このように、いきづまりました。
どうしたらいいでしょうか?ヒントでもいいのでお願いします。 編集済み


2倍のポイントを手に入れた! 522ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(124,011ポイント)   Date: 2010/02/21(日) 11:38   No:48348     
Title: Re:垂直なベクトルを求める。    
あっ、大分進んでますね。
>翼が伸びている向きのベクトルを、(α, β, γ) 
あれ?機体に垂直なベクトル(揚力)が欲しかったんでは?
垂直なベクトルは(0,1,0)に速度の係数を掛けたものです。これを3軸で回転変換するだけですよ。
あとは重力加速ベクトルと進行方向ベクトルと合成させれば、飛行機の飛んでいく方向がでます。


116ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(54,434ポイント)   Date: 2010/02/21(日) 12:37   No:48360 解決!     
Title: Re:垂直なベクトルを求める。    
>垂直なベクトルは(0,1,0)に速度の係数を掛けたものです。これを3軸で回転変換するだけですよ。 
あー、自分はどうやら、難しく考えていたみたいです><
何度か読み直して、考えてみたらできました!

以下、完成したコードです。
関数は
http://www015.upp.so-net.ne.jp/notgeld/quaternion.html  
からそのまま使いました。

pppが、完成する揚力ベクトルを持つクォータニオンです。
(rrrとqqqが使い捨てのクォータニオンです。)
vAngle が仰角
hAngle がxz座標上の回転角度
rotAngle がロール角
です。


ppp   = PutXYZToQuaternion(0, 1, 0); 
    //回転軸を、機体のxz座標の角度+90度に指定して、そこから仰角分だけ回転する時に利用するクォータニオンを生成。
    qqq   = MakeRotationalQuaternion(vAngle, sin(hAngle+PHI_F/2), 0, cos(hAngle+PHI_F/2));      
    rrr   = MakeRotationalQuaternion(-vAngle, sin(hAngle+PHI_F/2), 0, cos(hAngle+PHI_F/2));

    //仰角分、回転。
    ppp   = Kakezan(rrr, ppp);      
    ppp   = Kakezan(ppp, qqq);

    //回転軸を機体の進行方向に指定し、ロール各だけ回転時に利用するクォータニオンを生成。
    qqq   = MakeRotationalQuaternion(rotAngle, sin(hAngle), sin(vAngle), cos(hAngle));      
    rrr   = MakeRotationalQuaternion(-rotAngle, sin(hAngle), sin(vAngle), cos(hAngle));

    //ロール分、回転。
    ppp   = Kakezan(rrr, ppp);      
    ppp   = Kakezan(ppp, qqq);

    //揚力のベクトルを表示。
    DrawLine3D(VGet(0,0,0),VScale(VGet(ppp.x,ppp.y,ppp.z),10000),GetColor(255,255,255));
    
    //機体のベクトルを表示。
    DrawLine3D(VGet(0,0,0),VScale(VGet(sin(hAngle),sin(vAngle),cos(hAngle)),10000),GetColor(255,0,255));

ご協力ありがとうございました!無事解決です。
これから、機体への影響への実装に向かっていきます。


583ポイント を手に入れた。



Name: R  ..初心者(8,200ポイント)   Date: 2010/02/20(土) 23:12   No:48319       
Title: 多重ループの計算回数について    
LU分解の乗算、除算回数を求める為に次のようなコードを書きました
    int i,j,k,n;
    int waru=0,kakeru=0;
    n=5;
    for( i = 0; i < n; i++ ){
        for( j = i+1; j < n; j++ ){
            waru++;
            for( k = i+1; k < n; k++ ){
                kakeru++;
            }
        }
    }


waruとkakeruの回数をnの式で表したいので、次のような考えで計算してみたのですがうまくいきません

iによるループがn回
jによるループはΣ[k=1,n](n-(k+1)-1) = Σ[k=1,n](n-k-2)にiによるループ回数をかけたもの
kによるループはjによるループの時と同じようにΣ[k=1,n](n-k-2)にjによるループ回数をかけたもの
一般にループが入れ子に鳴っている場合外側のループ回数と内側のループ回数をかければ内側のループ内の命令が実行される回数が求まるはずなのでこれでいいかと思ったのですがプログラムで計算したwaruやkakeruとあわないのでどうも間違っているようです
どのように考えればいいのか教えていただけないでしょうか 編集済み


254ポイント を手に入れた。


Name: R  ..初心者(8,219ポイント)   Date: 2010/02/21(日) 01:59   No:48334 解決!     
Title: Re:多重ループの計算回数について    
自己解決しました
お騒がせしました


19ポイント を手に入れた。



Name: 山崎  ..プログラマー(36,971ポイント)   Date: 2010/02/20(土) 23:37   No:48321       
Title: レンタルサーバとデータベースについて    
こんばんは、毎度お世話になっております、山崎です。
今回はCやC++ではなく、PHPなどを使ったデータベースに関する質問をさせてください。

現在、次のような使用のシステムを構築したいと考えています。
・レンタルサーバ上にデータベースを作る。
・データベースには、HTMLフォームを通してだれでもアクセスでき、情報を引き出せる。
・IDとパスを持つ人は、専用のHTMLフォームからデータを追加・削除できる。
・管理者は、HTMLフォームを通さずに、データベースの作成、削除、データ登録などを素早く行える。

なお、私はPHPとMySQL,HTMLはある程度書くことができますが、
レンタルサーバやウェブサーバに関することはほとんどわかりません。
自分のパソコンにApacheなどをインストールし、自分のパソコンの中だけで
データベースを構築しデータ登録フォームなどを作ったことはありますが、
ウェブ上のデータベースをいじくったことはありません。
WindowsXPを使っています。

そこで、質問です。
1.PHPやMySQLを使用可能とうたっているレンタルサーバなら、自由にテーブルの削除・作成を行えるのでしょうか?
2.サーバ上のデータベースに直接アクセスできるのでしょうか?たとえば、コマンドプロンプトのような画面からクエリを発行し、サーバ上のデータベースにテーブルを追加するなど。
3.すでに自分のパソコン内にあるテーブルをウェブ上のデータベースに追加したり、ウェブ上のテーブルを自分の端末にダウンロードする、といったことは可能なのでしょうか?

知識不足で勘違いしていたり素っ頓狂なことを申し上げているかもしれませんが、
どうかお教え頂けますでしょうか。


415ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(162,658ポイント)   Date: 2010/02/20(土) 23:53   No:48325     
Title: Re:レンタルサーバとデータベースについて    
あらゆるレンタルサーバーを網羅するような知識はありませんが...

> 1.PHPやMySQLを使用可能とうたっているレンタルサーバなら、自由にテーブルの削除・作成を行えるのでしょうか? 

できます。

> 2.サーバ上のデータベースに直接アクセスできるのでしょうか?たとえば、コマンドプロンプトのような画面からクエリを発行し、サーバ上のデータベースにテーブルを追加するなど。 

レンタルサーバーによります。
telnetやsshが使えるのであれば、まさしくそのようなことができます。
そうでなければ、PHPやCGI経由で操作することになります。MySQLAdminとかが使えることも多いかと思います。

> 3.すでに自分のパソコン内にあるテーブルをウェブ上のデータベースに追加したり、ウェブ上のテーブルを自分の端末にダウンロードする、といったことは可能なのでしょうか? 

普通はできます。
MySQLAdminなどを使うのが普通の方法かと思います。
SQLiteなどであれば、FTPでファイルをコピーするだけですので、便利だと思います。


165ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(63,468ポイント)   Date: 2010/02/21(日) 00:02   No:48328     
Title: Re:レンタルサーバとデータベースについて    
2,3について

phpMyAdminも使いやすいですよ。PHPなのでWeb上に設置して使います。

クリエの発行をGUIで補助してくれたりもします。任意のクリエも送信できます。

一度試した時は、文字コードの問題で上手くいかなかったのですが
phpMyAdminの機能にファイルのエクスポートとインポートがあるので、自分の端末にダウンロードも可能だと思います。



136ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(162,802ポイント)   Date: 2010/02/21(日) 00:06   No:48329     
Title: Re:レンタルサーバとデータベースについて    
> phpMyAdminも使いやすいですよ。

実はphpMyAdminと書こうと思ってうっかり別のものを書きました。
多くのレンタルサーバーで使いやすいのは、むしろphpMyAdminです。


2倍のポイントを手に入れた! 110ポイント を手に入れた。

Name: 山崎  ..プログラマー(37,109ポイント)   Date: 2010/02/21(日) 00:19   No:48331 解決!     
Title: Re:レンタルサーバとデータベースについて    
たかぎさん、arrayさん
ご返信、誠にありがとうございます。
どうやら、私の考えているシステムは実装できそうですね。
後は、条件を満たすレンタルサーバを探せば…。

phpMyAdminについて先ほど少し調べてみました。
管理者である私はこれを用いて直接データベースを操作し、
一般のユーザやIDを持つユーザは別に作った専用のHTMLフォームを使う、
というのが私の考えるシステムを実装するには一番いい方法でしょうかな…。

いやぁ、貴重な情報本当にありがとうございました。


138ポイント を手に入れた。



Name: こめかみ  ..熟練のプログラマー(52,960ポイント)   Date: 2010/02/20(土) 06:38   No:48273       
Title: はねさんはいらっしゃいますか?    
掲示板を私信に使ってしまい大変失礼いたします。
直接メールでお礼を言いたかったのですがはねさんのメールアドレスをバックアップごと紛失してしまいまして。申し訳ないです。卒業研究成果の発表資料を見て頂きたいのでよければまたメールアドレスを教えていただけませんでしょうか。


こちらのトピックではお世話になりました。
http://www.play21.jp/board/formz.cgi?action=res&resno=32802&page=&lognum=101&id=dixq&rln=328021242639038

トピックでいただいたアドバイスについては結局研究内容には生かせませんでしたが。dixqさんにもあらためて感謝です。メールで発表資料など送らせていただきますのでよかったら見てみてください。
私のC言語パワーの礎はゲームプログラムの館にあるのでそのことについても改めて感謝いたします。
ゲームプログラムの館やC言語何でも質問掲示板を取り巻く全ての方々ににお礼を言わせてください。
ありがとうございました。
今後もゲームプログラム作成の折にアドバイスをいただきにくることもあるかと思いますがそのときは厳しい手ほどきよろしくお願いします。


こめかみ



・・・いまさらハンドルネームが締まらないことに後悔してます。名前かえていいでしょうか(T-T )


514ポイント を手に入れた。


Name: こめかみ  ..熟練のプログラマー(53,084ポイント)   Date: 2010/02/20(土) 07:42   No:48275     
Title: Re:はねさんはいらっしゃいますか?    
公開できる資料の範囲に不安があったので教授に確認をとったところ、研究内容は題目すら完全非公開とのお達しが来ました。
発表資料くらいはいいと思ってたのですが。。。雑談すら出来ないのが残念です。

早とちり失礼いたしましたが、感謝の気持ちだけでも再度述べさせていただきます。
ありがとうございました。 編集済み


124ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,154,939ポイント)   Date: 2010/02/20(土) 13:49   No:48295     
Title: Re:はねさんはいらっしゃいますか?    
わざわざありがとうございます^^
よい研究が出来たようで、よかったですね☆
お疲れ様でした^^

しかし朝6時に教授と連絡取れるんだ・・すごいな^^;

ところで共同研究ですか?
また、提出する前に「著作権譲渡します」的な書類書いたのでしょうか?
学会に提出する時はよく著作権譲渡の書類書きますが、学校に出す場合はあまり書かないのでは・・。
指導を受けたとは言え、研究したのも資料作ったのも全て自力であれば、そこまで教授に制限される必要はないと思いますけどね・・って、あえて教授の困るような事をしなくてもいいかもしれませんが・・^^;

何がともあれお疲れ様でした^^


204ポイント を手に入れた。

Name: こめかみ  ..熟練のプログラマー(53,775ポイント)   Date: 2010/02/20(土) 17:53   No:48303     
Title: Re:はねさんはいらっしゃいますか?    
>しかし朝6時に教授と連絡取れるんだ・・すごいな^^; 

2倍稼ぐ為には人の3倍働くと公言するような方です。TA業に付き合いつつの卒業研究は苛烈の一言に尽きます。アノ人ハ、キット原子力デ稼動シテイル。



>ところで共同研究ですか? 

同級生との共同研究ではないですが、使わせていただいたデータはありました。
企業や他大学とは・・・言われてみればちょっとだけリンクしてたり、サポートしたりされたりの間柄です。研究室の過去のデータも縦横無尽に使っていますので考えてみれば当然のことなようですね。


>また、提出する前に「著作権譲渡します」的な書類書いたのでしょうか? 
>学会に提出する時はよく著作権譲渡の書類書きますが、学校に出す場合はあまり書かないのでは・・。 
>指導を受けたとは言え、研究したのも資料作ったのも全て自力であれば、そこまで教授に制限される必要はな
>いと思いますけどね・・って、あえて教授の困るような事をしなくてもいいかもしれませんが・・^^;

そのような書類は書いていませんが提出前に資料の立ち位置を確認した時に、口頭で慣例として大学の著作物になると言う話を聞いています。その時点では要旨の公開は「可」だったのですが、他の研究室の教授から研究内容を事前に知られたくない為題目も非公開にしたいとの要望があったそうでして。
非公開の原則は個々人で違うそうなのですが、大学として原則は統一しないと後進に示しがつかないとの理屈はよく理解できますので特に逆らうつもりもありません。ただもっと早く言ってほしかったー。否、もっと早く聞いておくべきでした。


>ともあれお疲れ様でした^^

ありがとうございます。
ですが私はまだのぼりはじめたばかりです。この果てしなく長い研究坂を…!(男坂)



691ポイント を手に入れた。



Name: レッドリ  ..ぴよぴよ(139ポイント)   Date: 2010/02/20(土) 00:10   No:48258       
Title: SetWindowIconIDのIDを知る方法    
こんにちは、レッドリです。VC++EE2008とDXライブラリでゲームを作っています。

http://homepage2.nifty.com/natupaji/DxLib/dxtec.html#M2

で、EXEのアイコンを変更することはできました。

ですが、ウインドウのアイコンも変更したいと思い

SetWindowIconIDを使おうと思いましたが、肝心のアイコンのIDがわかりませんでした。

#define IDI_ICON1 というものがresorce.hに生成されると公式ページの

http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R11N2

には書かれていたのですが、見当たりませんでした。

IDを調べる方法を教えて頂けないでしょうか? 編集済み


226ポイント を落としてしまった。


Name: Ma  ..熟練のプログラマー(52,763ポイント)   Date: 2010/02/20(土) 09:19   No:48278     
Title: Re:SetWindowIconIDのIDを知る方法    
> ミニテクコーナーの一連の作業を行った場合
とありましたが、行いましたか? 編集済み


39ポイント を手に入れた。

Name: レッドリ  ..ぴよぴよ(181ポイント)   Date: 2010/02/20(土) 11:14   No:48282     
Title: Re:SetWindowIconIDのIDを知る方法    
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R11N2 
公式ページの文脈によれば、
ミニテクの一連の作業というものが
EXEのアイコンを変更することだと思いますので…
おそらくですが、作業は行っていると思います。
resorce.hが生成されるのはVC++だけなんですかね…


42ポイント を手に入れた。

Name: Tatu  ..プログラマー(27,435ポイント)   Date: 2010/02/20(土) 11:47   No:48283     
Title: Re:SetWindowIconIDのIDを知る方法    
リファレンスページの
SetWindowIconIDについて書かれているところで
VC++EEでもBorland C++の場合のようにすれば
ウインドウのアイコンも変えられますよ。


63ポイント を手に入れた。

Name: レッドリ  ..ぴよぴよ(203ポイント)   Date: 2010/02/20(土) 17:50   No:48302 解決!     
Title: Re:SetWindowIconIDのIDを知る方法    
できました!
ありがとうございます!


22ポイント を手に入れた。



Name:  ..入門者(4,822ポイント)   Date: 2010/02/16(火) 04:03   No:48117       
Title: フリーフォントの使用(DXライブラリ)    
DXライブラリで、フリーフォントを使用したいのですが
どうしたらいいでしょうか?

PCにインストールせずに使えませんか?


53ポイント を手に入れた。


Name: Justy  ..伝説なるハッカー(500,648ポイント)   Date: 2010/02/16(火) 08:17   No:48118     
Title: Re:フリーフォントの使用(DXライブラリ)    
 フォントをインストールせずに使うには添付のような png(透明 pngが望ましいです)をつくり、
表示したい文字の文字コードと情報テーブル(画像内の位置、次の文字までの間隔、上下の位置オフセット等)を元に
画像を切り出して一文字一文字を並べて表示します。

 ただフォントのライセンスには注意して下さい。
 このような使い道はライセンス違反となるフォントもありますので。 編集済み


166ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(500,816ポイント)   Date: 2010/02/16(火) 09:55   No:48121     
Title: Re:フリーフォントの使用(DXライブラリ)    
 先に添付した画像は文字を詰めたので、DrawRectGraphや DrawPolygon等でうまく切り出して
表示する必要がありますが、グリッド上に綺麗に文字を並べてあげればテクスチャのサイズ、枚数は増えますが
LoadDivGraphで分割テクスチャとして扱えるので、楽ですね。


 尚、参考までにライセンス的に再配布可能なフォントを添付して“一時的に”インストールして
しまってもいいのであれば、過去ログに似たような質問がありました。

http://www.play21.jp/board/formz.cgi?action=res&resno=31997&page=&lognum=99&id=dixq&rln=32043

http://www.play21.jp/board/formz.cgi?action=res&resno=25090&page=&lognum=78&id=dixq&rln=25099


168ポイント を手に入れた。

Name:  ..入門者(4,928ポイント)   Date: 2010/02/20(土) 12:52   No:48285 解決!     
Title: Re:フリーフォントの使用(DXライブラリ)    
Justyさん、
せっかく詳しく答えていただいたのに
返事が遅くなってしまって申し訳ありません。

2通りのやり方があるのですか。
一時的にインストールするだけなら相手の負担にはなりませんよね?

それと、ライセンスの問題は面倒ですね。
使用するときは注意してみます。

回答、ありがとうございました。


106ポイント を手に入れた。



Name: M1S  ..ぴよぴよ(34ポイント)   Date: 2010/02/19(金) 22:50   No:48250       
Title: [雑談(相談?)] 社会に出て働くということ    
現在,就職活動をしている情報通信系の院生です.

就職活動を進める中で,誤解を恐れずに言えば,
何のために仕事をするのかが分からなくなってしまいました.

先日見学に行った産総研(←社会的貢献という意味で,志望度高め)の人が,
「定年まで産総研にいる人は負けです.能力があれば,引き抜かれます.」
なんて言っていたので,なおさらです.

どの会社に勤めても,衣食住の生活に困らない程度の給料はくれると思います.
しかし,お金のためだけに働くのは虚しいと思います.
かといって,自分のために自分のやりたいことだけをするのも違うと思います.

そこで,就職をされていない方も含めて,

 1. 社会に出て働くとはどういうことか
 2. 仕事のやりがいとは何か

就職されている方には,

 3. 今の会社をどのように選ばれたのか
 4. 入社前と後のギャップ

について,ぜひ意見を聞かせて頂ければと思います.

よろしくお願いします.


34ポイント を手に入れた。


Name: shilfia  ..入門者(4,698ポイント)   Date: 2010/02/19(金) 23:33   No:48252     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
とってもタイムリーな質問なので回答します。
情報系学部三年生の就活生です。

>1. 社会に出て働くとはどういうことか 
生きるということです。

>2. 仕事のやりがいとは何か 
自分が楽しめる仕事です。

すごくシンプルに書きましたが、私はやりたいことが決まっているのでお金に関しては特に気にしていません。
決してブラック企業でもいいとかそういうのじゃなくて、ちゃんと企業の情報を収集しながら一番働きやすい企業はどこかを吟味しています。
自分のために自分のやりたいことだけをするのは違うと仰いますが、私は自分のために働きたいと思っています。
結果としてそれが人のためにもなるわけであって、目的は他人のためではありません。
といいますか、自分のために生きないのってつまらなくはないですか?
みんなプログラミングが嫌いだけど、仕事だから仕方なくやっているのでしょうか?
少なくともそんなのは私は嫌ですし、嫌なことをやって死ぬまで働くのは最終手段です。
可能性があるうちは、自分がやりたいことができる企業を探します。
当然嫌なことはたくさん経験するでしょうが、みんなそこは同じだと思うのであきらめたくありません。


ちなみに
>どの会社に勤めても,衣食住の生活に困らない程度の給料はくれると思います.
これってどうなのでしょう・・・。
就活してる中で、危険なところもいっぱいあるなと私は感じました。


こんな回答で良ければ参考にしてください^^;


401ポイント を手に入れた。

Name: 山崎  ..プログラマー(36,724ポイント)   Date: 2010/02/19(金) 23:44   No:48253     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
こんばんは。

では、私も学生という立場から意見を述べさせて頂きますね。

1. 社会に出て働くとはどういうことか
うーん、なかなか抽象的な問いですね〜。
「社会に出て働く」という部分だけ見れば、それは「ご飯を食べるために苦労する」ことだと私は考えています。国民として税金を納めることとか、社会の一員としてそのシステムを保たせるために動くとか、そういう仰々しい解釈もあると思いますが、実際のところ、そんな大げさな理由のために働いている人はほとんどいないのではと思っています。難しい屁理屈なしに、働く、というのはただ社会の中で餓死とか凍死しないために必要なことなのだと私は思います。
ちょっと厳しいことを言えば、働くことに対してそれらしい理由が見つからないからといって、働こうとしない人がいればそれは稚拙だと思います。

2. 仕事のやりがいとは何か
まだ学生の私が言うのもおこがましいですが、今のところの私の考えを述べさせてください。
私は、「仕事の楽しさ」の実感を、仕事のやりがいにしたいと考えています。他にも、自分のかかわった仕事で大勢の人が何らかの形で良い思いができれば嬉しいでしょうし、自分の仕事が実感できる形で完成すれば喜びも大きいでしょう。「えっ、あの会社に勤めてるの!?」と驚いてもらえるところに就職できれば、そんな驚きも仕事のやりがいと感じるかもしれません。自分のやりたいことを仕事にできる、これが私の仕事に対しての最も大きなやりがいでしょうね。
私の場合は、給料の額はそれほど大きなやりがいとは感じないかもしれません。



「何のために仕事をするのかが分からなくなってしまいました.」というのは、
履歴書の志望動機に書くネタがないということなのか、
働くことを正当化する崇高な理由が見いだせない、ということなのか、
働く意欲がないだけなのか、気になるところです。

このご時世、就職に関していろいろなところで不安になる情報が流れていることでしょう。
でもそんな怪情報に振り回されないでくださいね、中には真実もあるでしょうが、
他の就活生を陥れるためのデマや、不安をあおるための誇張もあるかもしれません。

私もいろいろ不安を抱えています…。それでもやるしかありません。
お互い頑張っていきましょう。


494ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,151,817ポイント)   Date: 2010/02/19(金) 23:56   No:48254     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
就職活動中は色々悩みますよね〜。私も悩みました。
私が就職活動をした経験も含めて及ばずながら何かアドバイス出来たらと思います。

1. 社会に出て働くとはどういうことか

何か哲学的な方面に行っちゃいそうなので、とりあえず答えやすく

→何故働くのか?

にさせてください。

一番の理由は生活する為ですよね。そういう当然なことはとりあえず置いておきましょう。
私は毎日同じことを繰り返して仕事を続けても仕事を終えた時何も残らないものは嫌だと思いました。
特定の職業を例に出すとその職業の方に失礼なので、言えませんが、
毎日特に自分の為になるわけでもなく、興味が持てるわけでもない同じ作業を淡々とこなすような仕事は、
私はせっかく人生の大半を仕事をして過ごすのだからそれでは嫌だと思いました。

仕事をすることで自分のためになり、仕事をしているのが楽しいと思えるものがいいと思いました。
楽しんでお金がもらえるのは幸せなことだし、楽しんでしかも自分の為になるなんて夢みたいな話です。

私はプログラムが好きだったので、プログラマーを志望しました。
ここからは3番と被るので、3に移ります。

3. どうやって今の会社を選んだか

うちのHPを見て頂けたら解るとおり、私はゲーム作りが大好きです。
大学時代はゲームしか作って無かったんじゃないかと思うほど毎日ゲーム作ってばかりでした。
寝ても覚めてもゲーム作り。
だから就職先もゲーム会社だろ?と同級生にも言われてました。

(ここからはゲーム会社勤務の方に失礼な発言があるかもしれませんが、ご了承ください。他意はありません。)
しかしゲーム会社はとても大変だとよく聞いていました。
残業も多く、「ゲーム=生活必需品ではないもの」である以上、コンスタントに利益があげられるかどうかも分からず、給料の増減も大きい、景気に左右されやすい、この先ずっとあるものであるかどうかわからないなど・・。
それに「ゲーム離れ」が進んでいると聞きます。
(私が聞いた話です。現場を知りません。安定して、高給料で残業の無い会社もあると思いますので誤解無きよう(N社みたいに))

なりたい職種はゲームプログラマーですが、「やりたい事が出来るなら安月給でも不安定でも重労働でもいい!」と何も考えず突っ込んで良いものか・・かなり考えました。
就職活動中もまだ悩んでいました。

今まではお遊び程度にしかゲームを作ってこなかったので将来自分で会社立てて本格的に作りたいとまで考えていました。でもオヤジに一言言われました

「今趣味で楽しんでいるからゲームプログラムが楽しいんだよ。仕事にするとそれは楽しさより重圧や苦しみが上回ってしまうかもしれない。独立したりしたら特に。ゲーム作りは今までみたいに趣味でいいじゃないか。福利厚生がしっかりしていて、自分の時間がちゃんと持てる会社を選んでゲーム作りは趣味でやればいいんだよ」

と言われました。
確かに安直に好きなことを仕事にしていいのかどうかは悩みました。
仕事にしたらそれが好きではなくなってしまうかもしれない・・。

結局悩んだ結果私はゲームと無関係の会社を選びました。
今でもゲームプログラマーになりたい夢は捨てきれない気持ちでいますが、
徐々に今の仕事の楽しさが解ってきました。
ゲームとは異なるといえども、念願のプログラマーです。
毎日楽しく仕事をしています。

4. 入社前後のギャップ

ギャップは私の場合全くありませんでした。
入社前に会社の事をよく調べました。
良く言う「ブラックな会社」にあたらないように、社員を大事に思ってくれる、良い社風の会社を選びました。
実際は予想以上で、今の会社は本当に社員を大切にしてくれています。
上で書いた「自分の時間」についてですが、1年目だからという事もあるでしょうけど、定時あがりなので、
自分の時間も確保できています。(仕事ではない用件で忙しかったりするのですが(汗))
こればかりは人の経験はあてになりませんね。どこの会社に入るかで違いそうです。
とりあえず入社前に社風や評判について良く調べた方がよさそうです。

2. やりがいとは?

上でずいぶん書いた気がしますが、
「仕事やってて楽しい」と思えたらそれがやりがいなんじゃないでしょうか。
先日初めて仕事を任せてもらいました。
「与えられた以上の成果を出して納期に間に合わせたい」そう思って頑張りました。
そして無事システムは完成し、納品できました。
私は小さい頃から「ものを作る」ということが大好きでした。
ですから、日々ものを作り、こうやって「システムが完成した!」という区切りがあるとやりがいを感じます。


・・と順番バラバラですみません。
話もまとまりがないですし、見解も偏っていると思います。
大して知らずに言っている部分もありますので、他の方補足や訂正などありましたらよろしくお願いしますm(_ _)m


では、よい就職活動が出来る事お祈りしています^^


1,524ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(34,347ポイント)   Date: 2010/02/19(金) 23:56   No:48255     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
今日某ゲーム会社の説明会があったんですが、社長が
「関わる人を笑顔にする仕事」
と、その会社で働くことについて語ってました。
なんかいいですよね。この理由。

会社の人の話を聞けば、自分がそこで働きたいか働きたくないかわかると思います。
それできめてもいいんじゃないかな、と個人的には思ってます。

働く意義や、そのやりがいなんて結局働き始めないと分からないことでしょうから。それに

学生生活で勉強することとはどういうことでしょうか?
勉強のやりがいは?

学生であるうちはこんなこと考えないように、社会人になってもその意義なんて考えない気もします。
想像の範囲でしかありませんけどね。


178ポイント を手に入れた。

Name: ちゃお  ..入門者(4,743ポイント)   Date: 2010/02/20(土) 00:17   No:48260     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
4月から入社の者です。
卒業するだけで、暇なので書き込み。
ちなみに情報系院生です。

1. 社会に出て働くとはどういうことか 
⇒自己実現のためです。一つではなく、たくさんあります。成し遂げたい目標や欲しいものなど。

2. 仕事のやりがいとは何か 
⇒働いてみないとわからないと思いますが、イメージすることが大事だと思います。
 よく聞くことですが、SE(システムエンジニア)の場合、システムを納入して、お客様に喜んでもらえたとき やりがいを感じるとよく言っています。作る過程でたくさんの苦労と想いがあるはずですから。
 つまり、この仕事を通して、どんなやりがいがあるだろうとイメージすること。やっぱりたくさんの社員さん に聞くのが いいと思います。

3. 今の会社をどのように選ばれたのか 
⇒内定もらってるので、選んだ理由を言うと

 表の理由(面接で言うようなことだけど、もちろん自身もそう思ってる)
 @社会に対して大きな影響を与えられる仕事があって、何か作ったり、新しいサービスを自分で提案して、  世の中に普及したら、嬉しい&楽しいと思う。
 Aあと、会社の展開するサービスが世の中を大きく変えてくれることを期待してる。
 B創業100年以上たっていて、世の中からの信頼がある。安定してる。
 Cやってみたい仕事がある SEとか研究開発etc

 裏の理由(面接では言えないこと)
 休みが多い&残業・激務が少ない。その割に給料がなかなか良い
 福利厚生が良い
 誰でも知ってる自慢できる会社
 大学で学んだことがある程度は活かせる



たぶん、社会に出て働く意味がわからないということは、自己分析が足りてないか、もしかすると考えの循環が悪い方向にいってる可能性もあります。自己分析は間違えた方向にいくと自分でもよくわからなくなることがあります。

働くというのは、お金のためだけではありません。
人は一人では生きれません。誰かと何かを成し遂げたり、人との間で育まれる感情の共有をすることが、大事です。認められたり、喜びを分かち合ったりなど。
また、お金があれば、あれがしたいや、あれが欲しいなども実現できると思います。
仕事だけに全てを求める人は少ないと思います。


あなたは、今までに何に感動して、何が好きになりましたか?
私自身インターネットの普及で実現できることに驚いたり、コンピュータの素晴らしさとモノづくりの喜びを常日頃から感じていたので、そのような喜びを与えられる仕事に携わりたいと思ったのが、一番シンプルなところです。
ICカードやパーソナルコンピュータ、携帯電話など、昔はありませんでした。今では当たり前すぎて、忘れてるかもしれませんが、そうゆうところに感動を覚えたとかありませんか?ここが、かなり大事になってくると思います。情報系学生の人間は少なからずこうゆうよころに感動を覚えている人が多いと思います。

会社に対する志望動機や仕事のやりがいなども考えるのは必要だけど、
自分自身が何に対して、どのように今まで感じたかっていう、一番シンプルな部分を引き出せると求めてる答えが出やすいかもしれません。特に好きだと感じれることだけを掘り下げていくといいと思います。
私の中のモヤモヤがとれたときは、そうでした。

頑張ってください。


918ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,152,355ポイント)   Date: 2010/02/20(土) 00:25   No:48261     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
あ、これについてコメントするの忘れていました。

> 「定年まで産総研にいる人は負けです.能力があれば,引き抜かれます.」

勝ち負けって何で決まるんでしょう?
ヘッドハンティングで給料が4倍になったとかって人も聞きます。確かに彼らは「勝ち」でしょう。
でも私はヘッドハンティングされなかった人たちが「負け」では決して無いと思います。

「仕事を楽しみ、いつも楽しんで生活出来る人」これが勝ちなんじゃないでしょうか?
となれば「負け」である人は
毎日仕事が楽しくなく、朝や月曜を迎えるのが億劫で、生活の為だと
ただひたすら我慢して嫌な仕事を定年まで過ごしている人でしょうか

(ただし、生活が厳しく早くから働きに出てしまった人等をの事を言っていません。
学生時代チャンスがあったにも関わらずサボって自分でチャンスを逃したような人の事について言っています)

人生のほとんどは仕事をして過ごすんですから楽しくやりたいもの。
仕事が楽しければそれが勝ちだと思いますよ。
「仕事が楽しければ不安定でも安月給でもなんでもいい」とは言いません。
家庭をもつようになれば、そんなこと言っていたら無責任以外の何物でもないですから。
ただし独身や既婚であっても金銭的に困っていなければ「勝ち」を得るためにあらゆる可能性に挑戦することは大いにアリですよね。

色々書きましたが、私は給料が高い事が勝ちだとは思いません。


323ポイント を手に入れた。

Name: array [URL]  ..熟練のプログラマー(63,332ポイント)   Date: 2010/02/20(土) 02:12   No:48269     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
私の浅はかな考えを簡単に書いておきます
入社1年の21歳です。

 1. 社会に出て働くとはどういうことか
   分かりません。
   意味合いが違うと思いますが、とりあえず
   お金が無いと飢え死にますので働きます

 2. 仕事のやりがいとは何か
   自分のスキルが上がる事だと思います。
   仕事を通じて知識を身につけ仕事に生かす。
   例えば、自分の作ったものが
   製品として世の中に出回って評価を得られ
   れば、かなりやりがいがあったとおもえる
   のではないでしょうか

 3. 今の会社をどのように選ばれたのか
   ソフトウェア会社ですが、プログラムが
   時間を忘れるくらい好きだからです。
   好きな事をして、好きな知識を勉強できて
   お金をもらえるなんて幸せじゃないですか?

 4. 入社前と後のギャップ 
   やる気満々だったのですが仕事が無くて
   今後不安です。


308ポイント を手に入れた。

Name: M1S  ..ぴよぴよ(987ポイント)   Date: 2010/02/20(土) 02:58   No:48270     
Title: Re:[雑談(相談?)] 社会に出て働くということ    
こんな短時間に,こんなに返信して頂いてありがとうございます.

本当は,お一人お一人のお一言お一言に返信したい気持ちですが,
予想以上に返信を頂けたので,このくらいでご了承ください.


> shilfiaさん
「生きるということ」,そう言われると,
いまの延長線上に全てがあるということを改めて感じました.

例え仕事として,「自分のやりたいことだけをする」としても,
私は少なくとも誰か一人には理解して欲しいと思っています.
本当に「自分のため」だけに働けるほど,私は強くありません..

余談ですが,ブラック企業って何で潰れないんでしょうね.


> 山崎さん
個人的には,「国民として税金を納める」というのに引っかかりました.
国民の義務なんて昔習いましたが,日本という国のシステムを考えると,
どんな仕事にしろ,国,ひいては国民のためになっているのは,
今更ながらすごいと思いました.

また,この投稿の本意についてですが,
大学の就職課からは脅され続け,実際氷河期を超える厳しさで,
早速1社落ちてしまったこともあり,立ち止まって,
「オレは何をしているのか」と考えてみたくなったというところでしょうか.


> 管理人さん
実体験で,とても参考になりました.
友達にもゲーム業界志望で,どんな形にしろゲーム制作に携わって,
エンドロールに名前を載せるのが夢だって言っているやつがいるので,
その友達にもこういう考え方もあるということを教えたいと思います.

あと,「色々書きましたが、私は給料が高い事が勝ちだとは思いません。」については,
その前の部分も全て含めて,全面的に同感です.


> sizumaさん
確かに,案ずるより産むが易しという一面もあるかも知れませんね.
私も,「関わる人を笑顔にする仕事」というのは好きです.


> ちゃおさん
正直なところ,自己実現と答えられる人には憧れます.
豪邸に住んで外車を乗り回す人生もいいなと思う反面,
田舎で自給自足の人生も悪くないと思っている自分がいます.
夢があるのか無いのか,自己分析をしていても暗中模索の毎日です.

「考えの循環が悪い方向にいってる可能性」は,大いにあると思います.
みなさんのアドバイスを参考にさせて頂きながら,
良い循環を回せるように頑張りたいと思います.


> arrayさん
確かに,好きなことをしてお金をもらえる,
俗に言う天職につけるというのは幸せだと思います.


---

最後に,やりがいについては,
みなさん「人を喜ばせることから来る楽しさ」ということに
集約できるのかなと思いました.

まだ,スッキリ快晴とはいきませんが,
重い暗雲が動いて青空が覗き,
隙間から太陽を探せそうな予感です.


953ポイント を手に入れた。



Name: KA  ..かけだし(1,505ポイント)   Date: 2010/02/19(金) 18:00   No:48235       
Title: 確率の偏らせ方    
乱数を使って現れる座標を変えるというプログラムを作っています。

現れる座標には幅があって、その幅の中から必ず現れます。

ここまで出来たのですが、その座標に偏りを持たせたいのですがうまくいきません。(上>下・上>真ん中)

どうすれば偏りを持たせることが出来るでしょうか。よろしくお願いします。(C++・標準rand関数)


107ポイント を手に入れた。


Name: 紅葉  ..中級者(12,153ポイント)   Date: 2010/02/19(金) 18:24   No:48236     
Title: Re:確率の偏らせ方    
あらかじめ多めにとって修正するのはどうでしょうか?
ソースは確認していないので動くかわかりません。

0〜100の値を取得したい場合
(80〜100を多めに出す)

int r = rand()%120;
if(r > 100) r = r - 20;


こんな感じにすれば偏り?が出せるかもしれません。


118ポイント を手に入れた。

Name: KA  ..かけだし(1,544ポイント)   Date: 2010/02/19(金) 19:01   No:48239 解決!     
Title: Re:確率の偏らせ方    
結構偏りが出ました。
これでやってみたいと思います。ありがとうございました。


39ポイント を手に入れた。

Name: KA  ..かけだし(1,614ポイント)   Date: 2010/02/19(金) 19:32   No:48242     
Title: Re:確率の偏らせ方    
すいません。
解決を付けてしまいましたが、やっぱりわからないことが出てきました。

例では80〜100を多く出していましたが、これを例えば10〜20を多くするにはどうすればよいでしょうか?


70ポイント を手に入れた。

Name: えーや  ..ぴよぴよ(635ポイント)   Date: 2010/02/19(金) 19:42   No:48243     
Title: Re:確率の偏らせ方    
>10〜20を多く出したい
上記では 余分な20(101〜120)の時に80〜100になるように設定していますが、
10〜20なら

int r = rand()%120;
if(r > 100) r = r - 90;


にすればよいと思われます。

訂正:
10〜20でしたね。上記の例だと10〜30ですね。
if(r > 100) r = (r - 100)/2 + 10
とかでよいのではないでしょうか。ほかにもありそうですが... 編集済み


2倍のポイントを手に入れた! 180ポイント を手に入れた。

Name: KA  ..かけだし(1,627ポイント)   Date: 2010/02/19(金) 20:29   No:48249 解決!     
Title: Re:確率の偏らせ方    
参考にして、区間・開始を操作することが出来るようになりました。
本当にありがとうございました。


13ポイント を手に入れた。



Name: アキ  ..かけだし(1,158ポイント)   Date: 2010/02/04(木) 15:06   No:47616       
Title: コンパイラって    
はじめまして〜初心者です
コンパイラってインターネットを繋いでないPCにインストールしてC言語を実実行することってできます!?


48ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(158,042ポイント)   Date: 2010/02/04(木) 15:11   No:47617     
Title: Re:コンパイラって    
> インターネットを繋いでないPCにインストールして

可能です。

> C言語を実実行する

「実実行」というのが、単なるミスタイプなのか、実行とは別の意味なのかわかりません。
仮に実行の意味だとしても、「C言語を実行する」というのが何を意図しているのかわかりません。


14ポイント を手に入れた。

Name: アキ  ..かけだし(1,227ポイント)   Date: 2010/02/04(木) 16:17   No:47622     
Title: Re:コンパイラって    
実行でした(^◇^;)解答ありがとうございます
あと最近テレビの見過ぎかハッキングに興味をもちました(笑)
でも犯罪なので行いなせんが知識として取り入れたいので
そこでハッキングではコマンドプロントのような画面にプログラミングしてるのをテレビで見ますがあれって本当なんですか!?


69ポイント を手に入れた。

Name: fatens  ..初心者(7,350ポイント)   Date: 2010/02/04(木) 16:26   No:47623     
Title: Re:コンパイラって    
Cを学んでいけば正しい意味でのハッキングには近づけるでしょうね。


2倍のポイントを手に入れた! 46ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(139,350ポイント)   Date: 2010/02/04(木) 16:45   No:47624     
Title: Re:コンパイラって    
昔のプログラミングは今と比べると殺風景な白黒の画面に文字が出力されるだけの環境(CUI)でしたから、
おそらくその概念が今のテレビのような演出になっているのでしょう。
(Linux など、今でもそのような環境はあります)
今ではカラフルな画面環境(GUI)がほとんどですね。

ちなみに、「ハッキング」という言葉を調べるとすぐに分かりますが、
ハッキングという言葉は不正行為の意味ではありません。
明確な不正行為の場合は「クラッキング」といいます。

Linux 環境でバリバリ仕事しているプログラマーがいれば、
もしかしたらテレビのような作業をしているのかもしれませんね。
それがハッキングなのかクラッキングなのかはさておき。

まあ、コマンドプロンプトでハッキングやクラッキング行為が出来るということは間違いないので、
コマンドプロンプトを使って雰囲気を楽しみながらプログラミングするってことも出来ますね。


330ポイント を手に入れた。

Name: アキ  ..かけだし(1,267ポイント)   Date: 2010/02/04(木) 17:01   No:47628 解決!     
Title: Re:コンパイラって    
ありがとうございましたヽ(^^)(^^)ノ
また分からない事があったら書きますね〜


40ポイント を手に入れた。

Name: Tororo  ..かけだし(2,402ポイント)   Date: 2010/02/04(木) 20:45   No:47643     
Title: Re:コンパイラって    
関係ないですけど、
ブラッディマンデイな気がする・・


2倍のポイントを手に入れた! 30ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,146,244ポイント)   Date: 2010/02/05(金) 00:06   No:47650     
Title: Re:コンパイラって    
何か色々と勘違いがありそうな気がしますが^^;

>あと最近テレビの見過ぎかハッキングに興味をもちました(笑) 
>でも犯罪なので行いなせんが知識として取り入れたいので

何について知識を取り入れたいのでしょうか?
文脈からすると、人のPCや企業のシステムなどに侵入する為の知識を付けたいということでしょうか?
それとも、ハッキングする際はコマンドプロンプトで行うかどうかだけ聞きたいのでしょうか?

映画なんかのシーンでプログラムを作っているシーンはあまりないと思うので、
何かのツールを実行したりしているだけだとは思いますよ。
GUIの無い無料のLinuxなんかをDLして使ってみると雰囲気が味わえるかも知れないですね。


188ポイント を手に入れた。

Name: BIGBANG  ..ぴよぴよ(20ポイント)   Date: 2010/02/10(水) 16:56   No:47927     
Title: Reハッキングつーる    
ハッキングツールがダウンロードできるサイトとかページのアドレス

誰か貼り付けてもらえませんか


20ポイント を手に入れた。

Name: ぽこ  ..初心者(6,427ポイント)   Date: 2010/02/10(水) 19:40   No:47936     
Title: Re:Reハッキングつーる    
どうぞ。
#Windows限定ですが。
http://www.microsoft.com/japan/msdn/vstudio/express/


36ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,148,514ポイント)   Date: 2010/02/11(木) 11:14   No:47954     
Title: Re:Reハッキングつーる    
ハッキングツールというものがどんなものなのかよく解りません。
BIGBANKさんが思っていらっしゃるハッキングツールは何をするものですか?

最近よく誤解されている、人のコンピュータの侵入したり、企業のコンピュータの不正アクセスするようなもののことですか?

不正はおいておくとして、
人のコンピュータを操作する仕組みなら「リモートデスクトップ」という言葉をキーワードに調べてみるとよいと思います。

似たようなフリーソフトもあります。
http://xrowcc.blog.shinobi.jp/Entry/160/

リモートデスクトップはprofessional版でなくては操作が出来ないので時々このソフトも使ったりします。


111ポイント を手に入れた。

Name: lbfuvab  ..プログラマー(25,024ポイント)   Date: 2010/02/11(木) 11:29   No:47955     
Title: Re:コンパイラって    
ハッキングもどきをして遊びたいならhack this site辺りに行けば良いと思いますよ

Name: たかぎ [URL]  ..ハッカー(160,136ポイント)   Date: 2010/02/11(木) 12:09   No:47956     
Title: Re:コンパイラって    
Wikipediaによると、「ハッキング」は

ハッキング (hacking) とは、コンピュータの隅々までを熟知した者が行うハードウェア・ソフトウェアのエンジニアリングを広範に意味する言葉。

です。
つまり、

> ハッキングツールがダウンロードできるサイトとかページのアドレス 

ダウンロードなどといっている時点でハッキングは無理です。
ハンダごてとオシロスコープから始めてください。
また、必要なプログラムは自作するのがハッカーというものです。


139ポイント を手に入れた。

Name: 無名  ..ぴよぴよ(72ポイント)   Date: 2010/02/13(土) 17:26   No:48013     
Title: Re:コンパイラって    
アセンブラなどはハッカーになる為には知っておかなければいけないでしょう。
文章を見る限り程遠いような気がしますけどね。


41ポイント を手に入れた。

Name: nayo  ..中級者(14,993ポイント)   Date: 2010/02/13(土) 23:14   No:48029     
Title: Re:コンパイラって    
ハッカーのたのしみって本はプログラミングを学ぶ上でなかなか面白かったですね
本物のハッカーになるには学校の勉強を含め幅広い知識が必要な気がします


33ポイント を手に入れた。

Name: REDBIRD  ..ぴよぴよ(5ポイント)   Date: 2010/02/19(金) 20:15   No:48246     
Title: Re:コマンドプロント    
コマンドプロントでハッキングする方法などが、のっているサイトがあったら教えてください。



5ポイント を手に入れた。

Name: MNS  ..プログラマー(31,420ポイント)   Date: 2010/02/19(金) 20:21   No:48248     
Title: Re:コマンドプロント    
http://d.hatena.ne.jp/tt_clown/20090816/p1
どうぞ


16ポイント を手に入れた。



Name: ディア  ..初心者(5,842ポイント)   Date: 2010/02/16(火) 22:23   No:48160       
Title: バグです。    
どうも ディアと申します。
龍神録、楽しい弾幕ゲーとしていつもやらせて頂いています。

この度、龍神録にてバグのようなものを発見しました。
再インストールや詳しい調査をしたわけではないのですが。
「GAME START」からゲームを始めました。

ゲットしたアイテム(マネー大)がアイシャから離れません。
アイテム自体の回転運動も止まって、アイシャの画像の上に居座ります。
一度死んでもまたくっついてきます。
コンティニューでも戻ってきます。

今まで4回中3回ほどありました。

四聖龍神録Plus v2.08.02です。




244ポイント を手に入れた。


Name: Dixq (管理人) [URL]  ..ウィザード(1,148,766ポイント)   Date: 2010/02/19(金) 00:04   No:48222     
Title: Re:バグです。    
>ディアさん

ご報告ありがとうございます。
何度もコンテニューするとアイテムのあたり判定範囲が次第に小さくなっていき、
しまいにアイテムのあたり判定が無くなり、まとわりついてしまうというバグがあるようなんです。

ただ直したくてもプログラムデータ消してしまったので直せないんですよね;
申し訳ないです;

# 最近こちらの掲示板のアクセスが少なくなり、龍神録の方のアクセスが増えたみたいですけど、大学生の方が多いんですかね〜?
# 私も春休みが欲しい・・。


32ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(51,382ポイント)   Date: 2010/02/19(金) 05:52   No:48227     
Title: Re:バグです。    
>ただ直したくてもプログラムデータ消してしまったので直せないんですよね; 
Dixqさんってよくプロジェクトのデータ消しますねw
過去の作品、大半がソースはもう消えてるとかってかいてありましたね。
HDスペースの節約でしょうか。

どうでもいいつっこみと横槍しつれいしました。 編集済み


132ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,148,889ポイント)   Date: 2010/02/19(金) 17:58   No:48234     
Title: Re:バグです。    
>Maさん

はい、良く消します;
バージョン管理はしているんですが、1年に一度はPCをHDDごと変えるので、ごっそり引っ越しするんですよね。
で、オッチョコチョイなので、その時よく大事なデータ引っ越ししわすれたりします;
外部HDDに大事なデータ保存したりしといた方がいいですね^^;


123ポイント を手に入れた。

Name: ディア  ..初心者(5,878ポイント)   Date: 2010/02/19(金) 19:49   No:48244     
Title: Re:バグです。    
引越しですかー
頻繁にPC変えるんですね、羨ましいですw


要は、コンティニューし過ぎですね(笑)
腕を鍛えまーすw


36ポイント を手に入れた。



Name: ホースメン  ..ぴよぴよ(209ポイント)   Date: 2010/02/18(木) 18:53   No:48203       
Title: C++ オブジェクトの初期化について    
こんにちは。C++のオブジェクトの初期化について質問させて下さい。

クラスオブジェクトのメンバ変数を、コンストラクタ内で全て0の値で初期化する時、
どのようにするのが良いでしょうか?
メンバ変数は様々な型で20個以上、仮想関数なしという仮定でお願いします。

1.memset( this, 0, sizeof(CLASSNAME) ); ← サイズやアドレスに起因して問題が生じるケースは無いでしょうか?
2.メンバ一つ一つ代入していく。 ← データメンバが多い場合、出来れば避けたいです。
3.その他

また、memset()の内部アルゴリズムは、1バイトずつループで回して値をセットしていると書いてあったのですが、本当でしょうか?

その他注意点等御座いましたら、合わせてご意見頂けましたら幸いです。

よろしくお願い致します。


209ポイント を手に入れた。


Name: バグ  ..ハッカー(190,118ポイント)   Date: 2010/02/18(木) 19:10   No:48204     
Title: Re:C++ オブジェクトの初期化について    
初期化用のメンバ関数を作成し、メンバ変数1つ1つ初期化を行うのに1票

34ポイント を手に入れた。

Name: Tororo  ..入門者(3,336ポイント)   Date: 2010/02/18(木) 19:25   No:48205     
Title: Re:C++ オブジェクトの初期化について    
バクさんと同じく初期化メンバ関数で一つ一つ初期化に一票

21ポイント を手に入れた。

Name: MNS  ..プログラマー(31,404ポイント)   Date: 2010/02/18(木) 19:48   No:48206     
Title: Re:C++ オブジェクトの初期化について    
メンバイニシャライザで初期化する分には、大した作業量にはならないと思います。

9ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(135,561ポイント)   Date: 2010/02/18(木) 19:50   No:48207     
Title: Re:C++ オブジェクトの初期化について    
初期化にこだわるならコンストラクタ初期化子で一つ一つ初期化に一票

1番についてはたかぎさんあたりから意見が出てくるのではないでしょか^^;
メンバ変数は様々な型っというのがミソな気がしますが。
個人的には、1は真っ当な方法ではないと思います。

#初期化用のメンバ関数を作成し、メンバ変数1つ1つ初期化
これは代入ではないのでしょか・・・?


100ポイント を手に入れた。

Name: バグ  ..ハッカー(190,155ポイント)   Date: 2010/02/18(木) 19:59   No:48208     
Title: Re:C++ オブジェクトの初期化について    
メンバが変数ではなくクラスや構造体の場合もありますので、ああいう書き方をしました。

37ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(135,587ポイント)   Date: 2010/02/18(木) 20:35   No:48209     
Title: Re:C++ オブジェクトの初期化について    
> バグさん

納得しました。
もうすこし考えてから質問すべきでした。大変失礼しました。


26ポイント を手に入れた。

Name: ホースメン  ..ぴよぴよ(477ポイント)   Date: 2010/02/18(木) 21:48   No:48210     
Title: Re:C++ オブジェクトの初期化について    
バグさん、Tororoさん、MNSさん、kazuoniさん、ご意見ありがとう御座います。
メンバは自分の中では一般のデータ型を考えていたので、代入といった表現になってしまいました。
曖昧な記述をしてしまい申し訳御座いません。
みなさんの理由は、memset()を使うのはリスクがある、ということでしょうか?

「メンバが非常に多い時にmemset()で値をセット出来れば都合が良いが、問題が発生するケースは無いか?
あるとしたら、出来るだけ簡潔に値をセットする方法は無いか?」という疑問が今回質問させて頂いた経緯ですが、質問文を考えているうちに真意の伝わり難い文章になってしまったようです。

以前、microsoft(?)のサンプルコードにmemset()を使用しているものがあり、自分で使用したこともあります。その時は問題ありませんでした。

余談ですが、こんなのもあったような…なるほど、と思いつつなんか怖いな、とも思ったりした記憶があります。
RECT rect;
func((LPPOINT)&rect);// rectの左上の座標


268ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(501,574ポイント)   Date: 2010/02/18(木) 22:02   No:48212     
Title: Re:C++ オブジェクトの初期化について    
>どのようにするのが良いでしょうか? 

 設計的にこのクラスが20以上のメンバを持つことが妥当なのか見直す必要はありそうですが、
仮に妥当だったとして。

 今はあまり思いつかないですが、希な例外はあるにしても基本は2、
コンストラクタ初期化子で初期化、ですね。

 ただ、
 
・ 複数のコンストラクタがあり、それぞれで同じような初期化を行う場合で、
 個々のコンストラクタで初期化するとメンテナンス上問題があり、
 且つ代入で初期化しても問題のないメンバ変数

・ クラスを生成後、途中で複数のメンバ変数を再初期化する必要がある場合

のどちらかの条件を満たす場合は初期化用のメンバ関数を作って、コンストラクタで呼んでも
いいでしょう。


 或いはそれらのメンバ変数が intや double、ポインタ型などのプリミティブ型であるなら
boost::value_initializedを使うとか、或いはそれらを1つのC互換構造体に纏めてしまって

    struct DATA
    {
        ...
    };

    class A
    {
        DATA data;
    public:
        A():data() { }
    };
のようにコンストラクタ初期化子で初期化してもいいかと思います。




>memset()の内部アルゴリズムは、1バイトずつループで回して値をセットしている
 感覚的にはそんな感じですが、実際にそうなっているかどうかは処理系によります。
 アライメントとサイズによっては1バイトではなく多バイトずつ処理している処理系も
あります。


>サイズやアドレスに起因して問題が生じるケースは無いでしょうか?
 とりあえず、たかぎさんのところのページをお読み下さい。

[迷信] とりあえず memset で初期化 | 株式会社きじねこ
http://www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html

C++における構造体の初期化 | 株式会社きじねこ
http://www.kijineko.co.jp/node/681


474ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(160,842ポイント)   Date: 2010/02/18(木) 23:17   No:48215     
Title: Re:C++ オブジェクトの初期化について    
クラスの初期化に関しては、一般論で議論しても決定的かつ単一の良策はありません。
C互換構造体なのか、C互換共用体なのか、C互換でない集成体クラスなのか、それ以外なのかによって方法論が変わります。
静的記憶域期間を持つかどうかによっても変わってきます。

あるいは、処理系を特定して移植性を考慮しないのであれば、memsetやZeroMemoryやbzeroなどでゼロクリアするという手もあります。


160ポイント を手に入れた。

Name: ホースメン  ..ぴよぴよ(10ポイント)   Date: 2010/02/18(木) 23:59   No:48221 解決!     
Title: Re:C++ オブジェクトの初期化について    
Justyさん、アドバイスありがとうございます。

>boost::value_initializedを使う
>C互換構造体に纏めてしまって
知らなかったことなので、勉強になります。ただ、データアクセスが冗長になるんでしょうか?

>感覚的にはそんな感じですが、実際にそうなっているかどうかは処理系によります。 
>アライメントとサイズによっては1バイトではなく多バイトずつ処理している処理系も 
>あります。
そうですか・・・memset()って速そうなイメージあったんだけどなあ;;
魔法みたいな方法って意外に無いものなんですね。

>[迷信] とりあえず memset で初期化 | 株式会社きじねこ 
http://www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html 
>C++における構造体の初期化 | 株式会社きじねこ 
http://www.kijineko.co.jp/node/681
上のリンクの方は先ほどたまたま拝見させて頂いたところでした。
こちらのたかぎさんが書いてらしたと知って、びっくりしました。

コンパイラに依存するmemset()はこのケースでは避けるべき、というように理解しました。
集成体なら{}で初期化、new演算子で生成した場合等は()で初期化(C互換構造体なら問題なし?)ってことでしょうか?
しかし集成体の条件としてユーザ定義のコンストラクタが無いことや、集成体やC互換構造体の定義を正確に理解していない現在の自分にとっては、一つ一つ初期化していくのが最良に思えました。

あのサンプルコードはmicrosoftだからこそ出来た、ってことなんですかね(苦笑)。


…っと思ったら

たかぎさん、アドバイスありがとう御座います!
たかが0クリア、と思っていましたが、非常に奥が深いものなんですね。
生兵法は怪我の元、注意一秒怪我一生(違)ですね…。

サイトを拝見させて頂き、今の自分では理解出来ない部分はありましたが、とても勉強になります。

皆様、色々とありがとう御座いました。


467ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(160,999ポイント)   Date: 2010/02/19(金) 00:17   No:48224     
Title: Re:C++ オブジェクトの初期化について    
> しかし集成体の条件としてユーザ定義のコンストラクタが無いことや、集成体やC互換構造体の定義を正確に理解していない現在の自分にとっては、一つ一つ初期化していくのが最良に思えました。 

初期化と代入は別だということも理解してくださいね。
メンバを一つ一つ初期化するには、コンストラクタ初期化子を使うか、{ } の初期化子を使う以外にはありません。

面倒なのは、newで生成する場合と一時オブジェクトなんです。
それらを考慮しないのであれば、コンストラクタがあるならコンストラクタを使って、そうでなければ { } でと覚えておけば充分です。

あと、やたら遅レスですが...

> メンバが変数ではなくクラスや構造体の場合もありますので、ああいう書き方をしました。

配列の場合は ( ) を使えばコンストラクタ初期化子でゼロクリアできます。
構造体の場合も、コンストラクタがある場合やC互換構造体なら ( ) でOKです。
それ以外は、(移植性を考えると)別途初期化済みのオブジェクトを作っておいて、それをコピーするしかなのですが、現実的ではありませんね。
GCCやC++0Xであれば、複合リテラルを使って初期化するという手もあるのでしょうが...


57ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(161,027ポイント)   Date: 2010/02/19(金) 00:28   No:48225     
Title: Re:C++ オブジェクトの初期化について    
> GCCやC++0Xであれば、複合リテラルを使って初期化するという手もあるのでしょうが... 

書いたあとで気付きましたが、C++0xには複合リテラルはないようですね。


28ポイント を手に入れた。

Name: SCI  ..上級者(23,296ポイント)   Date: 2010/02/19(金) 03:18   No:48226     
Title: Re:C++ オブジェクトの初期化について    
>>たかぎさん

詳しくは知りませんが、C++0xには類似したものでinitializer_listというものがあるようです。
個人的には、言語のファーストクラスオブジェクトなのにライブラリ依存というのはなんか慣れませんが(笑)


107ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(161,158ポイント)   Date: 2010/02/19(金) 07:51   No:48229     
Title: Re:C++ オブジェクトの初期化について    
> 詳しくは知りませんが、C++0xには類似したものでinitializer_listというものがあるようです。

それはまったく別のものです。
複合リテラルというのは...

struct A
{
    int a;
    double b;
    char *c;
};

struct A a = (struct A){ 123, 4.56, "abc" };

のようなものです。
C++でもこれが使えれば、集成体のデータメンバをコンストラクタ初期化子で初期化できるはずです(コピー可能で
あることが必須ですが...)。


131ポイント を手に入れた。

Name: SCI  ..上級者(23,396ポイント)   Date: 2010/02/19(金) 10:12   No:48232     
Title: Re:C++ オブジェクトの初期化について    
initializer_listを調べてみましたが、これはコンストラクタにリストを与えることができるということで、複合リテラルとは全然似てないですね(笑)
C++0xに関してはまだ理解が追いつかないです。

複合リテラル自体はC99だかの関連で知ってはいますが、実際に使ったことはないですねぇ・・・GCCだけですか?


100ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(161,412ポイント)   Date: 2010/02/19(金) 10:23   No:48233     
Title: Re:C++ オブジェクトの初期化について    
> 複合リテラル自体はC99だかの関連で知ってはいますが、実際に使ったことはないですねぇ・・・GCCだけですか?

GCCだけということはないですが、本当に複合リテラルを使いたくなるのはVC++だったりします。
例えば、

RegisterClassEx(&(WNDCLASSEX){ .cbSize = sizeof(WNDCLASSEX), .style = CS_HREDRAW | CS_VREDRAW, lpfnWndProc = &WndProc, ... });

のようなことができると、それなりに便利です。



2倍のポイントを手に入れた! 254ポイント を手に入れた。



Name: アニー  ..ぴよぴよ(306ポイント)   Date: 2010/02/16(火) 14:11   No:48131       
Title: PIC18F2550・タイマ1が8bitでリセットしてしまう    
大変恐縮ですが、下記項目につき原因についてアドバイス頂けますと幸いです。
作成環境はMPLAB V8.36、MPLAB C18コンパイラV3.33 です。
<質問内容>
◎タイマ1がうまく動作しない。
やりたい事は、
 (1)タイマ0(8bit)を使い割り込みを発生させ、ポートから信号ON/OFF(PWM信号を出したい)。
 (2)タイマ1(16bit)を使いCCP1/2のコンペアマッチ割り込みを行ない、CCP1ポートからPWM信号ON/OFF(サーボモータの動作用PWM信号を出したい)。
(1),(2)を同時進行で動作させたい、というものです。
シミュレーションで確認したところ、タイマ0/1のカウントアップ動作自体は確認できているのですが、タイマ1が8bitのところでオーバーフロー?して、タイマ0と同時に0にリセットされてしまいます。
以下に作成コードを掲載します。
--【以下、コード抜粋】--
//===《初期設定》===
//---<ヘッダーファイル>---
#include<p18f2550.h>
//---<コンフィグレーション>---
//---<関数宣言>---
//---<割り込みの定義関連>---
//===《動作プログラム》===
//---<メイン関数>---
void main()
{
ioport_settei(); //サブルーチン「ioport_settei」実行(入出力ポート初期設定)
interrupt_settei(); //サブルーチン「interrupt_settei」実行(割り込み初期設定)
tmr_ccp_settei(); //サブルーチン「tmr_ccp_settei」実行(タイマ&CCPモード初期設定)
while(1) //繰り返し(ずっと繰り返す)
{
}
}
//---<サブルーチン>---
void ioport_settei(void) //[入出力ポート初期設定]
{省略}
void interrupt_settei(void) //[割り込み初期設定]
{
INTCONbits.GIE = 1; //グローバル割り込み設定:許可
INTCONbits.PEIE = 1; //周辺割り込み設定:許可
INTCONbits.TMR0IE = 1; //タイマ0割り込み設定:許可
PIE1bits.TMR1IE = 1; //タイマ1割り込み設定:許可
PIE1bits.CCP1IE = 1; //CCP1割り込み設定:許可
PIE2bits.CCP2IE = 1; //CCP2割り込み設定:許可
}
void tmr_ccp_settei(void) //[タイマ&CCPモード初期設定]
{
TMR0H = 0;
TMR0L = 0;
TMR1H = 0;
TMR1L = 0;
T0CON = 0b11001000; //タイマ0設定(有効,8bit,内部クロック,プリ1倍)
T1CON = 0b10000001; //タイマ1設定(有効,16bit,内部クロック,プリ1倍)
CCP1CON = 0b00001001; //CCP1設定(Compare mode,RC2=0,割り込み発生)
CCP2CON = 0b00001011; //CCP2設定(Compare mode,スペシャルイベントトリガ,割り込み発生)
CCPR1 = 3750; //CCP1 Duty値初期設定(PWM(ON時間)=1.5ms…ニュートラル位置)
CCPR2 = 50000; //CCP2 Duty値初期設定(PWM(周期)=20ms)
}
//---<割り込み処理関数>---
#pragma code
void isr(void)
{
if(INTCONbits.TMR0IF == 1)
{
INTCONbits.TMR0IF = 0;
}
}
となります。
大変恐縮ですが、原因が判る方がいらっしゃいましたら、ご教示のほどよろしくお願い致します。 


306ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(121,951ポイント)   Date: 2010/02/16(火) 14:36   No:48133     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
ここはマルチポストが基本禁止ですので、まず他のサイトのを閉じてもらえますか。
http://oshiete1.goo.ne.jp/qa5678699.html
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html

解決したら、その後で。


110ポイント を手に入れた。

Name: アニー  ..ぴよぴよ(409ポイント)   Date: 2010/02/16(火) 14:53   No:48135     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
ルールをよく存じておらずすみません。
「マルチポスト」という言葉を初めて知りました。
元の投稿(OK Wave)に対してなかなか回答がもらえないため、焦ってこちらにも投稿した次第です。
元の投稿が削除できないようですので、こちらを削除としたいと思います。
ご迷惑をお掛けし、大変申し訳ありませんでした。
もしお時間があるようでしたら、元の投稿に回答頂けますと幸いです。
以上、よろしくお願い致します。


103ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(121,879ポイント)   Date: 2010/02/16(火) 14:59   No:48137     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
okwave系は、返答が無い状態なら取り消し可能だと思います。お試し下さい。
あと、社員研修であれば研修の指導者に聞くのが本筋だと思うのですが、聞けない理由でもあるんでしょうか?
私が研修の指導者なら、聞いてこない新人は逆に不安になりますけど。


67ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(160,482ポイント)   Date: 2010/02/16(火) 15:09   No:48139     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
> こちらを削除としたいと思います。

自分の勝手な都合で記事を削除することは禁止されています。
いずれにせよ、利用規約を熟読することをお勧めします。


48ポイント を手に入れた。

Name: アニー  ..ぴよぴよ(602ポイント)   Date: 2010/02/16(火) 15:30   No:48143     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
親切なご指導、ありがとうございます。
OK Waveの方を削除できました。こちらで回答頂けますと幸いです。
また、「研修の指導者に聞くのが本筋」という件については、まさにその通り
なのですが、現在行っている研修は、自分達でテーマ(と使用機材等)を決めて
行なうもので、PICマイコンに関しては精通している者が社内に居ないため質問
ができず、そのためここのような専門知識を持った方に質問をさせて頂いた次第
です。
何卒ご理解のほどよろしくお願い致します。


193ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(122,138ポイント)   Date: 2010/02/16(火) 15:40   No:48147     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
それでは、picfun(電子工作の実験室)と言うサイトはご存知でしょうか?
PIC関係の著作物で有名な後閑哲也氏のサイトで、
http://www.picfun.com/
その中にあるC18による内蔵モジュールの使い方。
http://www.picfun.com/mod18frame.html
まず、これを読んでください。

あと、下記の本のいずれかがあった方が今後のためだと思いますが。
http://www.picfun.com/picbook8.html
http://www.picfun.com/picbookI.html

ソースコードについては、インデントし直して投稿いただけると助かります。
※ このサイトではちゃんとインデントされますので。


259ポイント を手に入れた。

Name: アニー  ..かけだし(1,762ポイント)   Date: 2010/02/16(火) 16:01   No:48150     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
ありがとうございます。
ご紹介頂いたサイトは、先日net検索でたまたま辿り着き、内容を読ませて頂きました。
…ただ、解説内容が下名には難解すぎて、どうしても具体的な内部ロジック(どこの設定が間違って
いるのか)が理解できませんでした。

ソースコードを貼り付け直しました。
条件は、オシレータは10MHzのセラロックで優先割り込み無しとして書いて(書いたつもり)あります。
その他ご不明な点がありましたら指示下さい。

大変申し訳ありませんが、ご教授のほどよろしくお願い致します。

--以下、プログラムコード--

//【タイマ割り込み&コンペアマッチ割り込み動作テストプログラム】
//---------------------------------------------------------------------------------------------
//●使用マイコン:PIC18F2550
//===《初期設定》===
//---<ヘッダーファイル>---
#include<p18f2550.h>
//#include<delays.h>
//---<コンフィグレーション>---
#pragma config FOSC = HS, PLLDIV = 1
#pragma config FCMEN = OFF, IESO = OFF, PWRT = ON
#pragma config BOR = OFF, BORV = 3, WDT = OFF, WDTPS = 1
#pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF
#pragma config STVREN = OFF, LVP = OFF, XINST = OFF, DEBUG = OFF
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF
#pragma config CPB = OFF, CPD = OFF
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF
#pragma config WRTB = OFF, WRTC = OFF, WRTD = OFF
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF
#pragma config EBTRB = OFF
//---<関数宣言>---
void ioport_settei(void);    //サブルーチン「ioport_settei」を宣言
void interrupt_settei(void); //サブルーチン「interrupt_settei」を宣言
void tmr_ccp_settei(void);    //サブルーチン「tmr_ccp_settei」を宣言
void isr(void);

//---<割り込みの定義関連>---
//****** 割込みの定義(優先レベルなし)
#pragma interrupt isr save = PROD
//***** 割込みベクタへジャンプ命令セット
#pragma code isrcode = 0x8
void isr_direct(void)    // 割り込みベクタから割り込み関数へ跳ぶための関数
{
    _asm
    goto isr
    _endasm
}
//----------------------------

//---<変数宣言>---
/*
char  = 0;    //変数「c_flg」を宣言(直角コーナー通過処理用)
int  = 0;        //変数「s_value」を宣言(ニュートラル:100,右折:〜200,左折:0〜)
*/
//---------------------------------------------------------------------------------------------
//===《動作プログラム》===
//---<メイン関数>---
void main()
{
    ioport_settei();    //サブルーチン「ioport_settei」実行(入出力ポート初期設定)
    interrupt_settei(); //サブルーチン「interrupt_settei」実行(割り込み初期設定)
    tmr_ccp_settei();    //サブルーチン「tmr_ccp_settei」実行(タイマ&CCPモード初期設定)
    while(1)        //繰り返し(ずっと繰り返す)
    {
    }
}
//---<サブルーチン>---
void ioport_settei(void) //[入出力ポート初期設定]
{
    ADCON1 = 0b00001111;    //A/D設定:全ポートデジタル
    TRISA = 0b00111111;    //ポートA・I/O設定:RA0〜RA5入力,RA6(OSC2)
    TRISB = 0b00011111;    //ポートB・I/O設定:RB0〜4入力,RB5,6出力,RB7未使用
    TRISC = 0b00110000;    //ポートC・I/O設定:RC0,1,3未使用,RC2(CCP),RC4,5入力,RC6,7出力
    LATA = 0;        //ポートAクリア
    LATB = 0;        //ポートBクリア
    LATC = 0;        //ポートCクリア
}
void interrupt_settei(void) //[割り込み初期設定]
{
    INTCONbits.GIE = 1;    //グローバル割り込み設定:許可
    INTCONbits.PEIE = 1;    //周辺割り込み設定:許可
    INTCONbits.TMR0IE = 1;    //タイマ0割り込み設定:許可
    PIE1bits.TMR1IE = 0;    //タイマ1割り込み設定:許可しない
    PIE1bits.CCP1IE = 1;    //CCP1割り込み設定:許可
    PIE2bits.CCP2IE = 1;    //CCP2割り込み設定:許可
}
void tmr_ccp_settei(void) //[タイマ&CCPモード初期設定]
{
    TMR0H = 0;    //タイマ0クリア
    TMR0L = 0;    //タイマ0クリア
    TMR1H = 0;    //タイマ1クリア
    TMR1L = 0;    //タイマ1クリア
    T0CON = 0b11001000;    //タイマ0設定(有効,8bit,内部クロック,プリ1倍)
    T1CON = 0b10000001;    //タイマ1設定(有効,16bit,内部クロック,プリ1倍)
    CCP1CON = 0b00001001;    //CCP1設定(Compare mode,RC2=0,割り込み発生)
    CCP2CON = 0b00001011;    //CCP2設定(Compare mode,スペシャルイベントトリガ,割り込み発生)
    CCPR1 = 3750;        //CCP1 Duty値初期設定(PWM(ON時間)=1.5ms…ニュートラル位置)
    CCPR2 = 50000;        //CCP2 Duty値初期設定(PWM(周期)=20ms)
}
//---<割り込み処理関数>---
#pragma code
void isr(void)
{
    if(INTCONbits.TMR0IF == 1)
    {
        INTCONbits.TMR0IF = 0;    
    }
/*
    if(PIR1bits.TMR1IF == 1)
    {
        PIR1bits.TMR1IF = 0;
    }
*/
    if(PIR1bits.CCP1IF == 1)
    {
        PIR1bits.CCP1IF = 0;
    }
    if(PIR2bits.CCP2IF == 1)
    {
        PIR2bits.CCP2IF = 0;
        LATCbits.LATC2 = 1;
    }
}
以上


1,160ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(121,731ポイント)   Date: 2010/02/16(火) 16:41   No:48154     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
PIC18Fシリーズは使ったことが無い&PICは久しぶりなので見当違いかも知れませんが、CCP1IFとCCP2IFが有効になっていない気がするのですが?。あっ勘違いですね。失礼しました。
とりあえず問題を明確にするため、CCP1だけで動くかまず確認することと、念のためタイマー3のCCP使用を無効に設定してみて下さい。CCP2に関しては一旦コメントアウトを。
もう一つ気になるのは、タイマー1の16bit設定なんですが必要なんでしょうか?
    T1CON = 0b10000001;    //タイマ1設定(有効,16bit,内部クロック,プリ1倍)
これってレジスタへの格納の仕方であって、16ビット連動ON/OFFじゃないですよね。

参考↓アセンブラですが。
http://homepage1.nifty.com/rikiya/software/315.TIMER1_1.htm 編集済み


37ポイント を手に入れた。

Name: アニー  ..かけだし(1,799ポイント)   Date: 2010/02/16(火) 17:42   No:48155     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
ありがとうございます。
とりあえず、やってみます。
確認結果はまた報告します。

よろしくお願い致します。


37ポイント を手に入れた。

Name: アニー  ..かけだし(1,958ポイント)   Date: 2010/02/18(木) 12:07   No:48186     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
報告が遅れ申し訳ありません。
昨日急な出張が入り、確認する時間が取れませんでした。
先ほど動作確認を行いましたので、報告します。

@
> とりあえず問題を明確にするため、CCP1だけで動くかまず確認することと、念のためタイマー3のCCP使用を無効に設定してみて下さい。CCP2に関しては一旦コメントアウトを。

→タイマ3を無効に設定し、CCP2の部分をコメントアウトして動作させてみました。
 結果としては、変化無し(8bitまでカウントアップしたところで0にリセットされる)でした。

A
> もう一つ気になるのは、タイマー1の16bit設定なんですが必要なんでしょうか?
>     T1CON = 0b10000001;    //タイマ1設定(有効,16bit,内部クロック,プリ1倍)
> これってレジスタへの格納の仕方であって、16ビット連動ON/OFFじゃないですよね。

→すみません、「レジスタへの格納の仕方」「16ビット連動ON/OFF」の意味がわかりませんでした。
 T1CONの設定をどのように変更すればよいでしょうか?

大変申し訳ありませんが、アドバイスのほどよろしくお願い致します。


159ポイント を手に入れた。

Name: アニー  ..かけだし(2,159ポイント)   Date: 2010/02/18(木) 14:27   No:48189     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
追加の確認結果を報告します。

T1CONのbit6(T1RUN)が、ソースコード上でON(1)に書き換えても、シミュレータ上では
書き換わってくれませんでした(bit6は0のままになってしまう)。
その他のbitはちゃんと変更を反映してくれます。
他のレジスタ設定との関連なのでしょうか?

また、コンフィグレーションの設定で関連ありそうな所はありますでしょうか?
同僚の電気屋からはそのような意見がありました(ただ、その人物も下名と同等の
PIC知識レベルですが…)。

些細な情報でも構いませんので、関連がありそうな項目がありましたら情報提供のほど、
何卒よろしくお願い致します。


201ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(122,336ポイント)   Date: 2010/02/18(木) 15:21   No:48190     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
PICは本業じゃないので、あんまり頼られてもちゃんと出来る自信は無いですが(汗)
出来る限りはやってみます。

>結果としては、変化無し(8bitまでカウントアップしたところで0にリセットされる)でした。 
聞きたいこと。
・CCP1の割り込みは発生しませんか?
CCP1CON = 0b00001001; だと割り込みが発生しないはずです。CCP1CON = 0b00001010; で試してみてください。
・TMR1Lが0の時に、TMR1Hも0のままでしょうか?

>すみません、「レジスタへの格納の仕方」「16ビット連動ON/OFF」の意味がわかりませんでした。
 T1CONの設定をどのように変更すればよいでしょうか? 
RD16の事です。読み出しだけの問題なのでONにしておけば良いみたいですね。
関係なさそうです。すいません。
TMR1は何もしなくても16bitのカウンタとして動作するはずです。

>T1CONのbit6(T1RUN)が、ソースコード上でON(1)に書き換えても、シミュレータ上では
PIC16Fに無かったビットなので詳しくないですがデータシートも見る限りREADONLYのビットの様です。
データシートまたは、PIC18Fの本を確認して下さい。

>また、コンフィグレーションの設定で関連ありそうな所はありますでしょうか? 
無さそうですよ。
http://www.picfun.com/pic18/pic18xx12.html


524ポイント を手に入れた。

Name: アニー  ..かけだし(2,403ポイント)   Date: 2010/02/18(木) 16:42   No:48194     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
> PICは本業じゃないので、あんまり頼られてもちゃんと出来る自信は無いですが(汗)
> 出来る限りはやってみます。

 親身なアドバイス、本当に感謝です。
 ありがとうございます。

 
> >結果としては、変化無し(8bitまでカウントアップしたところで0にリセットされる)でした。 
> 聞きたいこと。
> ・CCP1の割り込みは発生しませんか?
> CCP1CON = 0b00001001; だと割り込みが発生しないはずです。CCP1CON = 0b00001010; で試してみてください。
> ・TMR1Lが0の時に、TMR1Hも0のままでしょうか?

→TMR1が8bit(256)のところでリセットされてしまうので、CCPR1を150とし、「CCP1CON = 0b00001001;」
 と「CCP1CON = 0b00001010;」の両方で確認してみましたが、両方とも
  1周目  :タイマ1が150になったところでPIR1bits.CCP1IFが1に変化し(割り込み発生している)、
       タイマ0が256で再び割り込み発生(タイマ0割り込み)
  2周目以降:タイマ1が150になっても割り込み発生しない(PIR1bits.CCP1IFはちゃんと0に戻っている)
       タイマ0の割り込みはちゃんと発生
 という動きになりました。

 また、TMR1Hの値は、常に0のままです。(1度も変化しません)


> >T1CONのbit6(T1RUN)が、ソースコード上でON(1)に書き換えても、シミュレータ上では
> PIC16Fに無かったビットなので詳しくないですがデータシートも見る限りREADONLYのビットの様です。
> データシートまたは、PIC18Fの本を確認して下さい。

 データシートのR-0というのがその事ですね。見方を初めて知りました。
 ありがとうございます。

 
以上、よろしくお願い致します。


244ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(122,668ポイント)   Date: 2010/02/18(木) 17:03   No:48195     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
そうか!基本的すぎて忘れてました。
    INTCONbits.GIE = 1;    //グローバル割り込み設定:許可
    INTCONbits.PEIE = 1;    //周辺割り込み設定:許可

T1CONbits.TMR1ON = 1;
は初期化が終わるまで設定してはいけません。
    ioport_settei();    //サブルーチン「ioport_settei」実行(入出力ポート初期設定)
    interrupt_settei(); //サブルーチン「interrupt_settei」実行(割り込み初期設定)
    tmr_ccp_settei();    //サブルーチン「tmr_ccp_settei」実行(タイマ&CCPモード初期設定)
後に
    INTCONbits.GIE = 1;    //グローバル割り込み設定:許可
    INTCONbits.PEIE = 1;    //周辺割り込み設定:許可
    T1CONbits.TMR1ON = 1;   //タイマ1スタート
としてください。
なので、T1CONの初期化は
    T1CON = 0b10000000;    //タイマ1設定(有効,16bit,内部クロック,プリ1倍)
となります。

それと割り込み時には
PIE1bits.CCP1IE = 1;    //CCP1割り込み設定:許可
で割り込みをアセンブラなら再設定する必要があります。
たぶんCでも必要じゃないかなと思います。


332ポイント を手に入れた。

Name: アニー  ..入門者(3,798ポイント)   Date: 2010/02/18(木) 17:30   No:48199     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
> そうか!基本的すぎて忘れてました。
>     INTCONbits.GIE = 1;    //グローバル割り込み設定:許可
>     INTCONbits.PEIE = 1;    //周辺割り込み設定:許可
> や
> T1CONbits.TMR1ON = 1;
> は初期化が終わるまで設定してはいけません。

 コードを書き直し動かしてみましたが、症状は変わりませんでした。
 ちょっと長くなってしまいますが、変更したコードを貼り付けますので、
 確認頂けますでしょうか?
 申し訳ありませんが、よろしくお願い致します。

--以下、プログラムコード--

//-----------------------------------------------------------------------------------------
//●使用マイコン:PIC18F2550
//===《初期設定》===
//---<ヘッダーファイル>---
#include<p18f2550.h>
//#include<delays.h>
//---<コンフィグレーション>---
#pragma config FOSC = HS, PLLDIV = 1
#pragma config FCMEN = OFF, IESO = OFF, PWRT = ON
#pragma config BOR = OFF, BORV = 3, WDT = OFF, WDTPS = 1
#pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF
#pragma config STVREN = OFF, LVP = OFF, XINST = OFF, DEBUG = OFF
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF
#pragma config CPB = OFF, CPD = OFF
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF
#pragma config WRTB = OFF, WRTC = OFF, WRTD = OFF
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF
#pragma config EBTRB = OFF
//---<関数宣言>---
void ioport_settei(void);    //サブルーチン「ioport_settei」を宣言
void interrupt_settei(void);    //サブルーチン「interrupt_settei」を宣言
void tmr_ccp_settei(void);    //サブルーチン「tmr_ccp_settei」を宣言
void isr(void);

//---<割り込みの定義関連>---
//****** 割込みの定義(優先レベルなし)
#pragma interrupt isr save = PROD
//***** 割込みベクタへジャンプ命令セット
#pragma code isrcode = 0x8
void isr_direct(void)    // 割り込みベクタから割り込み関数へ跳ぶための関数
{
    _asm
    goto isr
    _endasm
}
//------------------------
//---<変数宣言>---
/*
char  = 0;        //変数「c_flg」を宣言(直角コーナー通過処理用)
int  = 0;        //変数「s_value」を宣言(ニュートラル:100,右折:〜200,左折:0〜)
*/
//----------------------------------------------------------------------------------------
//===《動作プログラム》===
//---<メイン関数>---
void main()
{
    ioport_settei();    //サブルーチン「ioport_settei」実行(入出力ポート初期設定)
    interrupt_settei();    //サブルーチン「interrupt_settei」実行(割り込み初期設定)
    tmr_ccp_settei();    //サブルーチン「tmr_ccp_settei」実行(タイマ&CCPモード初期設定)
    INTCONbits.GIE = 1;    //グローバル割り込み設定:許可
    INTCONbits.PEIE = 1;    //周辺割り込み設定:許可
    T1CONbits.TMR1ON = 1;   //タイマ1スタート 
    while(1)        //繰り返し(ずっと繰り返す)
    {
    }
}
//---<サブルーチン>---
void ioport_settei(void) //[入出力ポート初期設定]
{
    ADCON1 = 0b00001111;    //A/D設定:全ポートデジタル
    TRISA = 0b00111111;        //ポートA・I/O設定:RA0〜RA5入力,RA6(OSC2)
    TRISB = 0b00011111;        //ポートB・I/O設定:RB0〜4入力,RB5,6出力,RB7未使用
    TRISC = 0b00110000;        //ポートC・I/O設定:RC0,1,3未使用,RC2(CCP),RC4,5入力,RC6,7出力
    LATA = 0;        //ポートAクリア
    LATB = 0;        //ポートBクリア
    LATC = 0;        //ポートCクリア
}
void interrupt_settei(void) //[割り込み初期設定]
{
    INTCONbits.TMR0IE = 1;    //タイマ0割り込み設定:許可
    PIE1bits.TMR1IE = 0;    //タイマ1割り込み設定:許可しない
    PIE1bits.CCP1IE = 1;    //CCP1割り込み設定:許可
//    PIE2bits.CCP2IE = 1;    //CCP2割り込み設定:許可
}
void tmr_ccp_settei(void) //[タイマ&CCPモード初期設定]
{
    TMR0H = 0;    //タイマ0クリア
    TMR0L = 0;    //タイマ0クリア
    TMR1H = 0;    //タイマ1クリア
    TMR1L = 0;    //タイマ1クリア
    T0CON = 0b11001000;    //タイマ0設定(有効,8bit,内部クロック,プリ1倍)
    T1CON = 0b10000000;    //タイマ1設定(無効,16bit,内部クロック,プリ1倍)
    T3CON = 0b00000000;    //タイマ3設定(無効)
    CCP1CON = 0b00001010;    //CCP1設定(Compare mode,RC2=0,割り込み発生)
//    CCP2CON = 0b00001011;    //CCP2設定(Compare mode,スペシャルイベントトリガ,割り込み発生)
    CCPR1 = 150;        //CCP1 Duty値初期設定(PWM(ON時間)=1.5ms…ニュートラル位置)
//    CCPR2 = 50000;        //CCP2 Duty値初期設定(PWM(周期)=20ms)
}
//---<割り込み処理関数>---
#pragma code
void isr(void)
{
    if(INTCONbits.TMR0IF == 1)
    {
        INTCONbits.TMR0IF = 0;        
    }
/*
    if(PIR1bits.TMR1IF == 1)
    {
        PIR1bits.TMR1IF = 0;
    }
*/
    if(PIR1bits.CCP1IF == 1)
    {
        PIR1bits.CCP1IF = 0;
        PIE1bits.CCP1IE = 1;    //CCP1割り込み設定:許可(再設定)
    }
    if(PIR2bits.CCP2IF == 1)
    {
        PIR2bits.CCP2IF = 0;
        PIE2bits.CCP2IE = 1;    //CCP2割り込み設定:許可(再設定)
        LATCbits.LATC2 = 1;
    }
}


1,395ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(122,969ポイント)   Date: 2010/02/18(木) 18:25   No:48202     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
>PIE1bits.CCP1IE = 1;    //CCP1割り込み設定:許可(再設定) 
は不要だったみたいですごめんなさい。

こうなるとソースコードだけ見てる身としては、訳がわかんないですね。
こんな場合に私ならどうするかと言うと、

(1)サンプルコードを動かしてみて動作するか確認して、動いたら違いを探す。
piffunより↓
http://www.picfun.com/pic18/18ctest9.c
アセンブラのやつ↓
http://homepage1.nifty.com/rikiya/software/315.TIMER1_1.htm

(2)割り込みも何も無しでTMR1が0xff以上になるのかとか、TMR1の動作を簡単なところから始めて複雑にしていく。出来るだけシンプルなコードから始める。

(3)Cソースからアセンブラコードを出して、ちゃんと処理しているか確認する。

(4)ステップトレースして、他のフラグ類の変化を調べる。
初回のCCP1割り込みが発生したときと、2回目の発生しなくなった時で違いは無いでしょうか?

こんな感じでしょうか。


29ポイント を手に入れた。

Name: アニー  ..入門者(3,618ポイント)   Date: 2010/02/19(金) 10:07   No:48231     
Title: Re:PIC18F2550・タイマ1が8bitでリセットしてしまう    
ありがとうございます。

実際の動きを一つづつ地道に確認していくしか方法は無いようですね。
(1)から順番に確かめてみたいと思います。

自分はメカ屋で普段制御ソフトに触れる機会は皆無なのですが、今回自分で
プログラム作成をやってみて、改めてソフト屋さんの大変さを実感しました。
(コーディングそのものよりも、マイコンの初期設定項目の確認・決定が大変
ですね。(同じPICマイコンでも機種毎に同じ項目で設定レジスタが違っていた
り、データシートも英語だし…))

また判った事があったら、報告させて頂きます。

以上、よろしくお願い致します。


180ポイント を落としてしまった。



Name: きぼんぬ  ..ぴよぴよ(94ポイント)   Date: 2010/02/18(木) 23:11   No:48214       
Title: 無題    
初心者です

VS2008でプログラムの行数を表示する機能はありますか??
あったらどこで設定できますか??
お願いします。

例)

1 #include(stdio.h) 
2  #include(stdlib.h)
3
4
5
6



94ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(160,905ポイント)   Date: 2010/02/18(木) 23:20   No:48216     
Title: Re:無題    
IDEのエディタ上で行番号を表示したいのでしょうか?
あるいは、ソースの内容に行番号をつけたものを出力したいのでしょうか?
行番号ではなく行数と書いていますが、全体の行数を求めたいのでしょうか?


63ポイント を手に入れた。

Name: きぼんぬ  ..ぴよぴよ(142ポイント)   Date: 2010/02/18(木) 23:24   No:48217     
Title: Re:無題    
すいません。説明不足でした。
エディタ上で行番号を表示の仕方を教えてほしいです。
エラーが出たとき、いちいち上から番号を数えながらやってるんでめんどうなんです。


48ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(160,942ポイント)   Date: 2010/02/18(木) 23:26   No:48218     
Title: Re:無題    
ツール > オプション メニューをたどれば、行番号を表示するためのチェックボックスがあるはずです。



37ポイント を手に入れた。

Name: きぼんぬ  ..ぴよぴよ(206ポイント)   Date: 2010/02/18(木) 23:44   No:48219     
Title: Re:無題    
非常に勉強不足で悪いんですが、詳しく教えていただきませんか?
今やってみたんですが、オプションまではたどり着けたもののそれ以降がわかりません。
つまらない質問ですいません。


64ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,148,734ポイント)   Date: 2010/02/18(木) 23:57   No:48220     
Title: Re:無題    
テキストエディタ>C/C++>全般

「行番号」がありますよ。


30ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(57,354ポイント)   Date: 2010/02/19(金) 00:11   No:48223     
Title: Re:無題    
> エラーが出たとき、いちいち上から番号を数えながらやってるんでめんどうなんです。

エラーメッセージをダブルクリックしてみると吉。


21ポイント を手に入れた。



Name: デラ初心者  ..入門者(4,129ポイント)   Date: 2010/02/17(水) 22:29   No:48175       
Title: C言語が解らない人にC++はムリ?    
前本屋に行き一番解りやすかったのが
やさしいC++だったので購入するつもりでしたが
一様yahooの知恵袋で、C++で良い本はないかと
質問した所、C言語が解らない人はC++も解らない
と言われました

それは本当ですか?

Cは基礎は知っています

表示・入力・計算・繰り返し・構造体は知っています (複雑になると良くわからない)

返り値とポインタはイマイチよくわかっていません


122ポイント を手に入れた。


Name: MNS  ..プログラマー(31,328ポイント)   Date: 2010/02/17(水) 22:40   No:48176     
Title: Re:C言語が解らない人にC++はムリ?    
C++言語は、C言語の拡張として開発された言語なので、
C言語にいくつかの機能・仕様を加えたものがC++言語といって過言ではありません。

よって、C++で引き継がれているCの機能が理解できなければ、
それはC++が理解できないと言えるかもしれませんが、
デラ初心者さんが提示しているように、機能によって理解できる、出来ない場合があり、
ポインタが解らなくても、C++で新たに加えられた機能は分かる、という場合もあるでしょう。

ですから、Cが完全に理解出来ない内にC++の入門書を買うことは、別に問題はないと思います。
(Cを全くやらないで、C++から入る人もいますからね)
C++の入門書は、C++で引き継がれているCの機能については解説されていると思うので、
今、いまいちわかっていないポインタ等の機能についても、理解が可能になるかもしれません。


93ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(121,812ポイント)   Date: 2010/02/17(水) 23:08   No:48177     
Title: Re:C言語が解らない人にC++はムリ?    
ポインタはともかくとして、戻り値が分からないのはクラスを使う場合に問題があるので、戻り値の何が分からないか聞いても良いですか?
あと、C++に移る理由は何か有るのでしょうか?C言語に限界を感じたとか。


81ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(160,682ポイント)   Date: 2010/02/17(水) 23:58   No:48178     
Title: Re:C言語が解らない人にC++はムリ?    
C++を使って何をするかにもよります。
Cと同じように、低水準のプログラミングをするつもりならCが分かっていないと無理です。
一方で、C++にしかない便利な機能を使って、高水準なことしかやらないのであれば、Cが分からなくても大丈夫です。

ただし、高性能または高信頼性のプログラムを書こうとするのであれば、Cのレベルのことは必須です。
これはC++に限らず、他の言語でも(スクリプト言語でさえ)ほぼ同じことがいえます。


76ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(57,333ポイント)   Date: 2010/02/18(木) 09:25   No:48184     
Title: Re:C言語が解らない人にC++はムリ?    
以前のスレによると中2とのことですね。
作文を通じても理論的な思考を培ってもらいたいこともあり、
細かいところを突っ込んでおきます。

×:一様(いちよう)
○:一応(いちおう)


> それは本当ですか?

この掲示板はyahoo知恵袋よりも信用できるのですか?
そう思うならば最初からここで聞きましょう。
そうでないならば自分に都合の良い意見を聞きたいだけみたいです。

まあ、気持ちは分かるので、「多くの意見も聞きたいので、
ここでも質問させて頂きました」とでも書けば、ベターだったかな。
でもマルチポストには注意して下さい。


> Cは基礎は知っています

返り値もポインタも知らないようでは基礎を知っているとは言えません。
さわった事がある程度の表現の方が正確です。


> 返り値とポインタはイマイチよくわかっていません

イマイチ・今一という表現は掲示板でよく見られます。
「大体理解しているはずだけれど、この問題は上手く解けない。」
「本当は全く分からないけど(自分に対しても)それを認めたくない。」
というような心理を表したりしているのではないかと思いますが、
この言葉は避けたほうが良いでしょう。

自分がどこまで理解しているかを相手に伝えられないだけでなく、
自分がどこまで理解しているかを自分に対しても曖昧にしてしまいます。


最後に「それは本当ですか?」に対する回答ですが、
C++はCの多くの部分を含みますし、C++として書かれたはずのソースコードにも、
実質的にはCのみで書かれているものが多くあります。
部分的にCのテクニックが使われているものは更に多いです。
このような理由(ちょっと貧弱)から、本当か?と聞かれたら、本当ですと答えます。

最終的にC++をマスターするためには、Cにも精通することは必須だと思いますが、
現時点ではそこまで考えず、まずはC++の入門書で学習するというのが良いでしょう。
その入門書も、今後数限りなくある通過点の1つでしかありません。


612ポイント を手に入れた。

Name: dic  ..熟練のプログラマー(51,410ポイント)   Date: 2010/02/18(木) 15:45   No:48192     
Title: Re:C言語が解らない人にC++はムリ?    
だいたいあってます

5ポイント を手に入れた。

Name: Tororo  ..入門者(3,315ポイント)   Date: 2010/02/18(木) 15:57   No:48193     
Title: Re:C言語が解らない人にC++はムリ?    
自分、Cやらずに、C++からやりましたよ^^;
それでも、ある程度のゲーム(龍神録)は作れますよ。


41ポイント を手に入れた。

Name: デラ初心者  ..入門者(4,163ポイント)   Date: 2010/02/18(木) 17:05   No:48196     
Title: Re:C言語が解らない人にC++はムリ?    
マルチポストはルール違反でした
申し訳ありません 以後気をつけます

戻り値については


34ポイント を手に入れた。

Name: デラ初心者  ..入門者(4,431ポイント)   Date: 2010/02/18(木) 17:15   No:48197     
Title: Re:C言語が解らない人にC++はムリ?    
続きを書きます

ごめんなさい

戻り値についてはこの様なプログラムの場合
numの計算結果をsum関数に返し
value = sum();のsumはnumになる?ということでしょうか?
説明が下手ですいません

>イマイチ・今一という表現は掲示板でよく見られます

確かに曖昧になりますね 以後使わないようにします

>そうでないならば自分に都合の良い意見を聞きたいだけみたいです

フォローしてもらい有り難う御座います

漢字の間違いは以後気をつけます

>C++に移る理由は何か有るのでしょうか?

どのように違うのか、やってみたかったからです(最初の何ページか見たところ全然違いました)


268ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(122,940ポイント)   Date: 2010/02/18(木) 17:53   No:48200     
Title: Re:C言語が解らない人にC++はムリ?    
>value = sum();のsumはnumになる?ということでしょうか?
>説明が下手ですいません 

C言語の戻り値は値返しですので、値しか戻りません。
sum()でsum()の処理を行って、returnでnumの値だけを持って戻ってきます。numの変数スコープは、sum()関数内だけなので抜けてきた時点で存在しなくなっていますから戻すことは出来ません。
=は代入文ですので、右手の計算式の結果を左手の変数に代入するわけですが、sum()という式の結果がvalueに代入されます。やり取りされるのは値だけで変数ではありません。
よろしいでしょうか?

>どのように違うのか、やってみたかったからです(最初の何ページか見たところ全然違いました) 

coutやcinの辺りでしょうか。
確かに見た目は違いますが、cin,coutを実現してる仕組みはもっと違います。それがC++のキモなんですけどね。
また、分からないことがあったら聞いてください。


2倍のポイントを手に入れた! 272ポイント を手に入れた。

Name: デラ初心者  ..入門者(4,462ポイント)   Date: 2010/02/18(木) 18:11   No:48201     
Title: Re:C言語が解らない人にC++はムリ?    
>よろしいでしょうか?

多分大丈夫です(曖昧ですいません)

有り難う御座います


31ポイント を手に入れた。

Name: デラ初心者  ..入門者(4,471ポイント)   Date: 2010/02/18(木) 21:52   No:48211 解決!     
Title: Re:C言語が解らない人にC++はムリ?    
解決を付けるの忘れました

9ポイント を手に入れた。



Name: DG  ..ぴよぴよ(186ポイント)   Date: 2010/02/18(木) 01:02   No:48179       
Title: DXライブラリ使用時のウィンドウのアスペクト比変更    
ウィンドウの横縦比を16:9にしたいのですが、
DXライブラリ関数リファレンスページを見てもそれに対応した関数は無いようですし、
DXライブラリ使用時にウィンドウのアスペクト比を変更することは難しいのでしょうか? 



101ポイント を手に入れた。


Name: Ma  ..熟練のプログラマー(51,137ポイント)   Date: 2010/02/18(木) 02:08   No:48180     
Title: Re:DXライブラリ使用時のウィンドウのアスペクト比変更    
読み直してください。
おそらく読みのがしています。
(いま、パブリックからの接続で、アクセス制限があってリファレンスにアクセスできないので、これ以上助言できません><) 編集済み


6ポイント を手に入れた。

Name: DG  ..ぴよぴよ(307ポイント)   Date: 2010/02/18(木) 02:56   No:48181     
Title: Re:DXライブラリ使用時のウィンドウのアスペクト比変更    
そこにあるものだと、それらしいものには
SetWindowSizeChangeEnableFlag
SetWindowSizeExtendRate
の2つがあるんですが、これらではアスペクト比を維持したままウィンドウサイズが変化します。

また念入りに見直してみたのですが、ほかにそれらしいものはどうしても見当たりません。

DXライブラリのページの何処かに解法が書いてあるのでしょうか?


121ポイント を手に入れた。

Name: non  ..比類無きプログラマー(94,324ポイント)   Date: 2010/02/18(木) 08:45   No:48182     
Title: Re:DXライブラリ使用時のウィンドウのアスペクト比変更    
SetGraphModeです。


6ポイント を手に入れた。

Name: DG  ..ぴよぴよ(462ポイント)   Date: 2010/02/18(木) 12:08   No:48187 解決!     
Title: Re:DXライブラリ使用時のウィンドウのアスペクト比変更    
解決しました。ありがとうございます。

リファレンスページの簡単な説明では、画面モードの変更、と書いてあったので
これだとは思わず詳細を見ていませんでした。

今後はちょっと違いそうな関数も詳細を見ていこうと思う次第です。


ちなみに、関数リファレンスページでは主な関数を紹介しているとのことですが、
他の関数を紹介しているところが他にあるのでしょうか?
初心者が使うものでもないかもしれませんが、気になるもので。


155ポイント を手に入れた。



Name: non  ..比類無きプログラマー(93,721ポイント)   Date: 2010/02/16(火) 11:20   No:48125       
Title: 龍神録「3D背景を作ってみよう」    
3Dについて勉強中です。
DirectX9かOpenGLか、何がいいのかと調べていたら、龍神録にUPされているではありませんか。
おお、DxLibでも使えるのね・・・ってことで、さっそく試してみました。
UPされたのは新しいのに、DxLibのバージョンは古いのねと思いながら・・・・
これから、勉強する人のためには、やっぱり新しいバージョンの方がよろしいかと思い
チェックしてみました。

>DXライブラリは2D専用ライブラリです。
>しかし、1つだけ3Dが利用出来る関数があります。

いまは、使用できる3D関数が増えたのでは?

>DrawPolygon3Dという関数です。(関数の仕様について、出来るだけまずはリンクから本家リファレンスをご覧下さい)

リンクが違っています。

>2,4,8,16,32,64,256,512...そういうサイズの画像しか扱えません

画像は8ピクセル以上ですので、2,4は使えません。

>VERTEX_3D
これは、旧バージョンで、最新バージョンではVERTEX3Dです。

ついでにプログラムも変えました。

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
             LPSTR lpCmdLine, int nCmdShow )
{
    int GrHandle ;
    float Z, ZAdd ; 
    VERTEX3D Vertex[6] ;    // ポリゴン2枚なので、頂点は6個
    
    ChangeWindowMode(TRUE);

    // DXライブラリ初期化処理
    if( DxLib_Init() == -1 )    
         return -1 ;    // エラーが起きたら直ちに終了

    // 描画先を裏画面にする
    SetDrawScreen( DX_SCREEN_BACK ) ;

    // テクスチャの読み込み
    GrHandle = LoadGraph( "mydat/img/kabe.png" ) ; 

    // Z値の初期化
    Z = 0.0F ;

    // Z値の加算値を初期化(最初は近づける)
    ZAdd = -1.0F ;

    // 何かキーが押されるまでループ
    while( CheckHitKeyAll() == 0 )
    {
        // メッセージ処理
        if( ProcessMessage() != 0 ) break ;

        // 画面の初期化
        ClearDrawScreen() ;

        // Z値の処理
        Z += ZAdd ;

        // 一定のラインを越えていたら進行方向を反転する
        if( Z < -300.0F || Z > 300.0F ) ZAdd = -ZAdd ;

        // 頂点情報のセット
        {
            // 画面の中央に幅・高さ100で描画
            Vertex[0].pos.x = 320.0F - 50.0F ;    Vertex[0].pos.y = 240.0F + 50.0F ;    Vertex[0].pos.z = Z ;
            Vertex[0].u = 0.0F ;
            Vertex[0].v = 0.0F ;

            Vertex[1].pos.x = 320.0F + 50.0F ;    Vertex[1].pos.y = 240.0F + 50.0F ;    Vertex[1].pos.z = Z ;
            Vertex[1].u = 1.0F ;
            Vertex[1].v = 0.0F ;
    
            Vertex[2].pos.x = 320.0F - 50.0F ;    Vertex[2].pos.y = 240.0F - 50.0F ;    Vertex[2].pos.z = Z ;
            Vertex[2].u = 0.0F ;
            Vertex[2].v = 1.0F ;

            Vertex[3].pos.x = 320.0F + 50.0F ;    Vertex[3].pos.y = 240.0F - 50.0F ;    Vertex[3].pos.z = Z ;
            Vertex[3].u = 1.0F ;
            Vertex[3].v = 1.0F ;

            Vertex[4].pos.x = 320.0F - 50.0F ;    Vertex[4].pos.y = 240.0F - 50.0F ;    Vertex[4].pos.z = Z ;
            Vertex[4].u = 0.0F ;
            Vertex[4].v = 1.0F ;

            Vertex[5].pos.x = 320.0F + 50.0F ;    Vertex[5].pos.y = 240.0F + 50.0F ;    Vertex[5].pos.z = Z ;
            Vertex[5].u = 1.0F ;
            Vertex[5].v = 0.0F ;

            // 輝度は全要素100% 
            for(int i=0;i<6;i++){
                Vertex[i].dif = GetColorU8(255,255,255,255) ;
                Vertex[i].norm = VGet(0.0f,0.0f,-1.0f) ;
                Vertex[i].spc = GetColorU8(0,0,0,0) ;
                Vertex[i].su=0.0f;
                Vertex[i].sv=0.0f;
            }
            
        }

        // ポリゴンを透過色無しで2枚描画
        DrawPolygon3D( Vertex, 2, GrHandle, TRUE ) ;

        // 裏画面の内容を表画面に反映
        ScreenFlip() ;
    }

    // DXライブラリ使用の終了処理
    DxLib_End() ;

    // ソフトの終了
    return 0 ;
}


さて、質問なのですが・・・
画像が暗いのです。そこで、いろいろといじっておりましたら・・・・
Vertex[i].norm = VGet(0.0f,0.0f,-1.0f) ; の最後のZ方向の法線ベクトル値を
例えば -2.0f にしたら明るくなります。
これは、なぜなのでしょうか?
法線ベクトルは単位ベクトルではないのでしょうか?
まだ、勉強を始めたばかりで、ライティングも理解できておりませんが、お助けを。


2倍のポイントを手に入れた! 1,898ポイント を手に入れた。


Name: Ma  ..熟練のプログラマー(51,060ポイント)   Date: 2010/02/16(火) 13:39   No:48129     
Title: Re:龍神録「3D背景を作ってみよう」    
古いのは、2010年ではなく2009年にかかれているためです。
法線ベクトルの件については、私はよく分かりません。
推測するなら、そのような仕様だということで(マテ


2倍のポイントを手に入れた! 34ポイント を手に入れた。

Name: non  ..比類無きプログラマー(93,747ポイント)   Date: 2010/02/16(火) 13:55   No:48130     
Title: Re:龍神録「3D背景を作ってみよう」    
アップされたのは、今年の2/6でなく、昨年の2/6でしたか・・・・
それは、失礼しました。


26ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(140,059ポイント)   Date: 2010/02/16(火) 14:20   No:48132     
Title: Re:龍神録「3D背景を作ってみよう」    
> 法線ベクトル

単位ベクトルは正確な結果を出すためのものであり、
内部計算においては計算自体に問題は無く、正規化されていないベクトルでもそのまま計算されます。

法線ベクトルは、ライトの方を向いている(鋭角)ほど明るくなり、逆を向く(鈍角)ほど暗くなります。
法線ベクトルは主にポリゴンの影に影響しますが、色が明るくなったのはこの法線ベクトルの値が単純に大きくなったためです。
今回のような例だと、ベクトルは二倍の大きさになっているので、通常の結果の二倍の値になったと考えられます。

正確に明るく(本来の画像の色に)したいのならば、ライト色・(頂点カラーを使用する設定になっている場合は)頂点カラー値を白にするか、
マテリアルのエミッシブカラー(自己発光色)を白にすると恐らく解消するはずです。

白く飛んでしまう・真っ白になってしまう場合は、他のカラー値を黒にするなどして試していくと良いと思います。

DXライブラリを試した結果ではありませんが、 DirectX を使用している限り、上記の方法でうまくいくはずです。



132ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(121,812ポイント)   Date: 2010/02/16(火) 14:46   No:48134     
Title: Re:龍神録「3D背景を作ってみよう」    
>法線ベクトルは単位ベクトルではないのでしょうか? 

わざわざライブラリで正規化していないです。時間の無駄ですから。
ってことで明るさが2倍になっただけだと推測されます。

DXLibのデフォルトライトはどうなっているか確認した方が良いと思います。デフォルトは、アンビエントライトだけって可能性もありますので。



139ポイント を落としてしまった。

Name: non  ..比類無きプログラマー(93,979ポイント)   Date: 2010/02/16(火) 15:00   No:48138     
Title: Re:龍神録「3D背景を作ってみよう」    
御津凪さん、softyaさん、回答ありがとうございます。

正規化していない件、了解しました。

頂点カラー(ディフューズカラー)は白にしているつもりです。
スペキュラは使用しないがデフォルトなので、ディフューズカラーと同じはずです。

エミッシブやアンビェントはもうちょっと調べないとわかりません。

さて、おふたりとも3Dには詳しそうですね。
ライブラリは何がお勧めですか?
御津凪さんはDirectX9ですか。

何をやろうってのはいまのところないです。
とりあえず、お勉強です。
ただ、将来はウェブカメラ画像と3D画像を組み合わせたいと朧気ながら考えています。
その前にAerobeatのように画像処理もやってみたいのですが・・・
そこで、平行してOpenCVも勉強してます。


232ポイント を手に入れた。

Name: non  ..比類無きプログラマー(94,055ポイント)   Date: 2010/02/16(火) 15:26   No:48142     
Title: Re:龍神録「3D背景を作ってみよう」    
ライティング計算処理を使用するかどうかを設定する関数がありましたので、
使用しないにしたら、元のプログラムと同程度の明るさになりました。

SetUseLighting( FALSE ) ;



76ポイント を手に入れた。

Name: non  ..比類無きプログラマー(94,065ポイント)   Date: 2010/02/16(火) 15:32   No:48144     
Title: Re:龍神録「3D背景を作ってみよう」    
間違いがありました。

>スペキュラは使用しないがデフォルトなので、

スペキュラカラー使用するがデフォルトでした。


10ポイント を手に入れた。

Name: 御津凪 [URL]  ..ハッカー(140,328ポイント)   Date: 2010/02/16(火) 15:33   No:48145     
Title: Re:龍神録「3D背景を作ってみよう」    
> 御津凪さんはDirectX9ですか。

今触っているのは DirectX 11 (と Direct2D & DirectWrite) ですが、
(DirectXに)慣れる為という意味では DirectX 9 → 10 or 11 が妥当だと思います。

3D 処理に関して薦めるライブラリは、今のところ薦めれるほど良いものは無いですね。
そのおかげでライブラリを自作してますから。


エフェクトに興味があるのでしたら、 DirectX のシェーダーを触ってみてはどうでしょうか。
慣れるまで少々難しいですが、DirectX 10 以降必須となっている言語です。

シェーダーでも画像処理が出来ますし、やろうと思えばカメラからキャプチャした画像やムービーもDirectX のテクスチャとして利用することが可能です。
これらを利用して Windows Media Player の視覚エフェクトのような効果も作れますよ。


> SetUseLighting( FALSE ) ;

ライトを無効にすると、遠近の要である明暗がなくなってしまいますが、問題は無いのでしょうか?
とあるポリゴンだけというのであれば、そのポリゴンを描画する時だけライティングを切る方法で出来ますが。


269ポイント を手に入れた。

Name: 通りすがり  ..上級者(20,765ポイント)   Date: 2010/02/16(火) 15:37   No:48146     
Title: Re:龍神録「3D背景を作ってみよう」    
過去ログからしてAerobeatはOpenCV使っていないようです。

22ポイント を落としてしまった。

Name: softya [URL]  ..ハッカー(121,568ポイント)   Date: 2010/02/16(火) 15:53   No:48148     
Title: Re:龍神録「3D背景を作ってみよう」    
私はPS1とか、あとごにょごにょ(守秘義務により伏せます)とかなら詳しんですけどね。
DirectXは、ちょっと遊んだだけで本格的には組んでません。

3Dを学習するのに、DXlibは悪い選択肢では無いとおもいます。
3Dの基本であるモデルの座標変換、カメラの透視変換、ライティングについては一通り関数が揃ってますから。ちゃんと細かい処理を理解したいなら、DirectXを少しづつやっていくのが良いでしょうね。

その他としては、C#+XNAも3Dを簡単に扱うことが出来ますし、HSPで良く使われているEasy3DのC/C++版も公開されているので試してみてはどうでしょうか?
http://www5d.biglobe.ne.jp/~ochikko/menuE3D.htm
※Easy3Dは試していないので、どのぐらいの事が出来るか分かりませんが。

DirectXの3D処理の概要です。
http://journal.mycom.co.jp/column/graphics/009/index.html


>ライティング計算処理を使用するかどうかを設定する関数がありましたので、
>使用しないにしたら、元のプログラムと同程度の明るさになりました。 

じゃぁ、デフォルトライトが裏側にあるとかじゃないでしょうか?
3Dの勉強のためには、とりあえずライトOFFはやめた方が良いと思います。
ライトをちゃんとした位置にするか、ライトだけOFFにしてアンビエントだけだとどうなるかとか試してみて下さい。


570ポイント を落としてしまった。

Name: non  ..比類無きプログラマー(94,193ポイント)   Date: 2010/02/16(火) 15:57   No:48149     
Title: Re:龍神録「3D背景を作ってみよう」    
>御津凪さん
DirectX のシェーダーですか、初めて聞きます。調べてみます。
>ライトを無効にすると、遠近の要である明暗がなくなってしまいますが、問題は無いのでしょうか?
もとのプログラムと同じだから良しとしましょう。

>通りすがりさん
OpenCVではなかったですか。じゃ、なんでしょ。ご存じですか?


128ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(121,694ポイント)   Date: 2010/02/16(火) 16:11   No:48151     
Title: Re:龍神録「3D背景を作ってみよう」    
No:48148の続きですが、DirectXとシェーダを詳しくなりたいなら「ゲームつくろー」の〜DirectX9〜のDirectX技術編とプログラマブルシェーダ編を読んでみると良いんじゃないでしょうか。
http://marupeke296.com/GameMain.html
ただ、いきなり読むと情報量に圧倒されると思います。


126ポイント を手に入れた。

Name: non  ..比類無きプログラマー(94,310ポイント)   Date: 2010/02/16(火) 16:37   No:48153     
Title: Re:龍神録「3D背景を作ってみよう」    
>softyaさん
まだ、専門用語についていけないので、ポチポチ進めていきます。
なんで、こんなにわからない用語が出てくるのだろう・・・
もうすこし、お二方が言われている意味がわかってきたら、また尋ねますね。
そのときはよろしく。



117ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(500,867ポイント)   Date: 2010/02/17(水) 00:28   No:48164     
Title: Re:龍神録「3D背景を作ってみよう」    
>OpenCVではなかったですか。じゃ、なんでしょ。ご存じですか
 普通に DirectShowだと思いますよ。


51ポイント を手に入れた。

Name: Dixq (管理人)  ..ウィザード(1,148,630ポイント)   Date: 2010/02/17(水) 12:42   No:48172     
Title: Re:龍神録「3D背景を作ってみよう」    
私は特に難しい事してませんよ、Justyさんのおっしゃる通り、ただDirectShowを使っただけです。形を覚えたりするわけじゃないので、自力で計算しても色検知位ならすぐ出来ました。

86ポイント を手に入れた。

Name: non  ..比類無きプログラマー(94,318ポイント)   Date: 2010/02/17(水) 12:48   No:48173 解決!     
Title: Re:龍神録「3D背景を作ってみよう」    
DirectShowですか、わかりました。

8ポイント を手に入れた。



Name: waniwani  ..ぴよぴよ(20ポイント)   Date: 2010/02/17(水) 00:17   No:48163       
Title: ゲームプログラミングについての質問ですが    
私は今C++を勉強しているのですが、プログラミングするに当たって、覚えておいた方が良い標準ライブラリや逆に必要の無い物やライブラリ等を教えて頂けませんか?お願いします

20ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(160,606ポイント)   Date: 2010/02/17(水) 12:08   No:48170     
Title: Re:ゲームプログラミングについての質問ですが    
標準ライブラリに関しては、覚えておいて無駄になる知識はありません。
一般には不要とされるgetsなんかにしても、それがなぜダメといわれているのかを理解しておけば、自分で関数を設計する際に同じ失敗をしなくてもすみます。

あと、標準C++ライブラリやBoost C++ Librariesをしっかり習得しましょう。


30ポイント を手に入れた。

Name: waniwani  ..ぴよぴよ(28ポイント)   Date: 2010/02/17(水) 12:19   No:48171 解決!     
Title: Re:ゲームプログラミングについての質問ですが    
ありがとうございました

8ポイント を手に入れた。



Name: 通りすがり  ..上級者(20,598ポイント)   Date: 2010/02/09(火) 12:33   No:47835       
Title: 困っています(大至急お願いします)    

卒業課題でガンシューティングを作成しているんですがエラーが二つほどあり プロンプトでType mismatch in〜というエラーが出るんです

ちなみに作成中のゲームですが単発・連射などがあるんですが、そのうち
連射・狙撃の文字に灰色(Gray)を色づけたいんですが
なかなかできません どなたかエラーを取り除いてくださいお願いします

注意 エラーだけ取れればいいです

#include<stdio.h>
#include<graphics.h>
#include<conio.h>

void ginit(void);
void DispGamen( void );
void Game( void );

int     stage,                    // プレイ中のステージ数
        tm,                        // ゲーム中の残り時間
        score,                    // スコア
        gun,                    // 選んでいる武器の種類
                                // 0-単発 1-連射 2-散弾 3-狙撃
        mg[4] = {0};            // 各武器のマガジン数



void main()
{
    ginit();

    Game();

    closegraph();
}

void Game()
{

    stage = 2;
    tm = 9999;
    score = 1234;
    gun = 2;
    mg[0] = -1;
    mg[1] = 1;
    mg[2] = 2;
    mg[3] = 3;

    DispGamen();


    (void)getchar();

}

void DispGamen()
{
    char mes[81];
    void Gray(void);
    cleardevice();                        // 画面消去

    setfillstyle( SOLID_FILL, GREEN );    // 上下のステータス欄の色
    bar( 0,0, 639, 4*16-1);
    bar( 0,24*16, 639,479 );

    setcolor( YELLOW );
    settextstyle(DEFAULT_FONT,HORIZ_DIR,2);    // 2倍角
    outtextxy( 10,16,"THE SHOT");            // タイトル表示

    sprintf( mes, "STAGE %2d", stage );
    outtextxy( 150,16, mes );                // 表示

    sprintf( mes, "TIME%4d", tm );
    outtextxy( 300,16, mes );                // 表示

    sprintf( mes, "SCORE%5d", score );
    outtextxy( 450,16, mes );                // 表示

    setcolor( WHITE );
    settextstyle(DEFAULT_FONT,HORIZ_DIR,1);        // 1倍角

    outtextxy( 16, 24*16, "TARGET" );            // 表示
    
    outtextxy( 40, 29*14, "w" );                // 表示
    
    outtextxy( 10, 27*16, "A" );
    
    outtextxy( 70, 27*16, "D" );                // 表示
    
    outtextxy( 40, 33*14, "S" );        
    
    outtextxy( 105, 28*16, "Q" );
    
    outtextxy( 180, 28*16, "E" );
    
    outtextxy( 105, 24*16, "SHOT" );                
    
    outtextxy( 120, 25*16, "SPACEKEY" );
    
    outtextxy( 105, 27*16, "GUN CHANGE" );
    
    outtextxy( 250, 26*16, "GUN" );
    
    outtextxy( 390, 24*16, "MAGAZINE" );                // 表示
    
    outtextxy( 380, 26*16, "単発" );    
    
    outtextxy( 444, 26*16, "連射" );
    
    outtextxy( 500, 26*16, "散弾" );
    
    outtextxy( 564, 26*16, "狙撃" );

    outtextxy( 391, 27*16, "∞" );            //単発
    
    setcolor( Gray );
    settextstyle(DEFAULT_FONT,HORIZ_DIR,2);        // 2倍角
    outtextxy( 430, 26*16, "使用不可");            //連射    
    
    setcolor( Gray );
    settextstyle(DEFAULT_FONT,HORIZ_DIR,2);        // 2倍角
    outtextxy( 551, 26*16, "使用不可");            //狙撃
    
    outtextxy( 37, 30*14, "↑" );                // 表示
    
    outtextxy( 37, 32*14, "↓" );
    
    outtextxy( 17, 27*16, "←" );                // 表示
    
    outtextxy( 55, 27*16, "→" );        
    
    outtextxy( 117, 28*16, "←" );                // 表示
    
    outtextxy( 162, 28*16, "→" );        
    
}
void ginit()
{
    int drv=0,mod;
    initgraph(&drv,&mod,"");
}


1,261ポイント を手に入れた。


Name: 通りすがり  ..上級者(20,566ポイント)   Date: 2010/02/09(火) 12:36   No:47836     
Title: Re:困っています(大至急お願いします)    
追加ですみません

自分はc言語の知識は結構弱いほうです(ほとんどできません)


32ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(159,806ポイント)   Date: 2010/02/09(火) 12:40   No:47837     
Title: Re:困っています(大至急お願いします)    
処理系不明ではどうすることもできません。
急ぐのであればなおのこと、利用規約を熟読した上で質問することをお勧めします。


54ポイント を手に入れた。

Name: やそ  ..比類無きプログラマー(99,840ポイント)   Date: 2010/02/09(火) 13:45   No:47845     
Title: Re:困っています(大至急お願いします)    
とりあえず、

(void)getchar(); 

は間違いでは?
intで受け取る変数が必要でしょう。

やたらとvoidが目立つね^^;


66ポイント を手に入れた。

Name: non  ..比類無きプログラマー(91,224ポイント)   Date: 2010/02/09(火) 13:57   No:47846     
Title: Re:困っています(大至急お願いします)    
>(void)getchar();  
>は間違いでは? 

キー入力にして、動作を止めたいだけでしょう。


何のライブラリなんでしょうか?
void Gray(void);  ってのが気になりますが・・・



64ポイント を手に入れた。

Name: 通りすがり  ..上級者(20,689ポイント)   Date: 2010/02/09(火) 18:35   No:47861     
Title: Re:困っています(大至急お願いします)    
皆さん、ご指摘などありがとうございます。(処理系なくてごめんなさい<ОО>)明日学校から投稿します

文章書くのが下手ですみません、ええと、void Gray(void);ってのはGrayが宣言されてません的なメッセージが

表示されたので書いてしまいました、後Type mismatch in〜ってなんですか?


123ポイント を手に入れた。

Name: non  ..比類無きプログラマー(91,372ポイント)   Date: 2010/02/09(火) 18:50   No:47863     
Title: Re:困っています(大至急お願いします)    
>void Gray(void);ってのはGrayが宣言されてません的なメッセージが 表示されたので書いてしまいました

そんな、あほな・・・・
WHITEでエラーが出ていないなら、GRAYかもね。
graphics.h の中を見たらわかるのではないの?

>後Type mismatch in〜ってなんですか?
エラーが出たらな、何行目って出るでしょ。その行か、その前の行に、なにか間違いがあるのでは?
エラーを省略せずに、貼り付けてね。


148ポイント を手に入れた。

Name: 通りすがり  ..上級者(20,749ポイント)   Date: 2010/02/09(火) 21:10   No:47866     
Title: Re:困っています(大至急お願いします)    
とりあえず、皆さん有難うございました。明日、学校で見て見ます。またこのサイトに来るかもしれません

そのときはよろしくお願いします。<ОО>


60ポイント を手に入れた。

Name: 通りすがり  ..上級者(20,707ポイント)   Date: 2010/02/17(水) 10:43   No:48168 解決!     
Title: Re:困っています(大至急お願いします)    
コメントしてくださった たかぎさん、やそさん、 nonさん 何とかなりましたありがとうございます。

またこの掲示板を利用する際利用規約を熟読するよう心がけます、たかぎさん、すみませんでした。


58ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(160,576ポイント)   Date: 2010/02/17(水) 11:34   No:48169     
Title: Re:困っています(大至急お願いします)    
> たかぎさん、すみませんでした。

怒っているわけではないので誤解のないように。
遅かれ早かれ必要な情報は出さないといけませんので、要求されるたびに小出しにするより、最初から規約を熟読して、一気に提示した方が解決への近道であるとアドバイスしているのです。


74ポイント を手に入れた。



Name: St  ..ぴよぴよ(763ポイント)   Date: 2010/02/14(日) 22:43   No:48090       
Title: 選択画面の拡張で・・・    
はじめまして、DXライブラリでVC++EE2008でシューティングゲームをつくっているのですが、どうしてもうまくいかないもので質問します

選択画面の拡張で右キーを押したらメニュー更新するプログラムなんですが、キーを押したら選択できるメニューの最大値までいってしまうので困っています
左キーによる戻りは一個ずつ戻るので正常なのですが(もちろんキーをかえてみてもメニューの最大値まで行ってしまうのでキーには問題なさそうに思えるのですが)

以下がそのソースです
void SelectDraw( int x , int y , char title[] , const char **str , int &select )
{
    int num=0;
    int dx=0,len=0;
    const char **str2 = str;

    //タイトル表示
    dx =  x - GetDrawFormatStringWidthToHandle( font[1], title ) / 2;
    DrawFormatStringToHandle( dx, y, color[0], font[1], "%s", title );
    y += 30;    //改行

    //情報の取得
    while ( strcmp( *str2, "NULL" ) != 0 )
    {
        if( len < GetDrawFormatStringWidthToHandle( font[0] , *str2 ) )
        {
            len = GetDrawFormatStringWidthToHandle( font[0] , *str2 );
        }
        ++num;
        *str2++;
    }
    dx =  x - len / 2;

    //選択制御
    if( CheckStatePad(configpad.up)   == 1 && select > 0 )
        --select;
    else if( CheckStatePad(configpad.up)   == 1 )
        select = num-1;
    if( CheckStatePad(configpad.down) == 1 && select < num-1 )
        ++select;
    else if( CheckStatePad(configpad.down) == 1 )
        select = 0;
  if ( CheckStatePad(configpad.left)   == 1 && selectmenu.menu > 0 )
        --selectmenu.menu, select=0;
  if ( CheckStatePad(configpad.right)  == 1 && selectmenu.menu < 2 )
        ++selectmenu.menu, select=0;
    

    y += select * 20;
    SetDrawBlendMode( DX_BLENDMODE_ALPHA , 100 ) ;
    DrawBox( dx-10 , y , dx+10 + len , y + 18 , color[5] , TRUE ) ;    //選択位置の表示
    SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
    y -= select * 20;

    //項目の表示
    while ( strcmp( *str, "NULL" ) != 0 )
    {
        dx = x - GetDrawFormatStringWidthToHandle( font[0] , *str ) / 2;
        DrawFormatStringToHandle( dx, y, color[0], font[0], "%s", *str++);
        y += 20;
    }
    // キャプチャした画像の開放
    if( CheckStatePad(configpad.shot) == 1 )
        DeleteGraph( img_screen );
}


763ポイント を手に入れた。


Name: Ma  ..熟練のプログラマー(51,004ポイント)   Date: 2010/02/15(月) 01:59   No:48099     
Title: Re:選択画面の拡張で・・・    
>選択できるメニューの最大値までいってしまう
質問の意味がよくわかりません・・・


30ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(134,758ポイント)   Date: 2010/02/15(月) 05:58   No:48101     
Title: Re:選択画面の拡張で・・・    
提示したプログラムを見ますと、
CheckStatePad(configpad.right)  == 1 && selectmenu.menu < 2
のとき
++selectmenu.menu, select=0;
をする
ぐらいしかわかりません。

一番大切な
「selectmenu.menuをインクリメントしたらどの様にメニューを更新しているか」
が分かりません。
プログラムを全部掲載するか、プロジェクトごとUPすれば、
よりよい回答が得られるかと思います。


26ポイント を手に入れた。

Name: St  ..かけだし(1,476ポイント)   Date: 2010/02/15(月) 07:04   No:48103     
Title: Re:選択画面の拡張で・・・    
いろいろと説明不足ですみません
えーとですね、selectmenu.menuで列を、selectで行の場所を扱っています
以下がメニュー更新のソースです
問題なのが右キーを押しただけでselectmenu.menuが2まで行ってしまうことです

 const char *str[] =
    {
        {"A"},
        {"B"},
        {"NULL"}
    };

    const char *str3[] =
    {
        {"G"},
        {"H"},
        {"NULL"}
    };

    const char *str4[] =
    {
        {"M"},
        {"N"},
        {"NULL"}
    };

    static int select;
    int x = FIELD_X+FIELD_MAX_X/5, y = FIELD_Y+FIELD_MAX_Y/3;
    int n = selectmenu.menu+1;

    //背景
    DrawGraph(0,0,img_title[6],FALSE);
    //画像(文字描画)
    DrawRectGraph( FIELD_MAX_X/2, FIELD_MAX_Y/20, 205, 0, 80, 32, img_title[7], TRUE, FALSE ) ;
    DrawRectGraph( FIELD_MAX_X/2+80, FIELD_MAX_Y/20, 32*n, 64, 32, 32, img_title[7], TRUE, FALSE ) ;
    DrawRectGraph( FIELD_MAX_X/2, FIELD_MAX_Y*255/256, 212, 240, 224, 16, img_title[7], TRUE, FALSE ) ;

    if(selectmenu.menu==0){
        SelectDraw( x , y , "どの弾幕をみる?" , str , select);
    }
    if(selectmenu.menu==1){
        SelectDraw( x , y , "どの弾幕をみる?" , str3 , select);
    }
    if(selectmenu.menu==2){
        SelectDraw( x , y , "どの弾幕をみる?" , str4 , select);
    }

    if( CheckStatePad(configpad.shot) == 1 )
    {
        if(selectmenu.menu>0)
            select+=selectmenu.menu*10;
        switch(select)
        {
        case 0:
            selectmenu.level = 0;    //弾幕選択
                    func_state = 99;    //ゲームメイン
            break;
        case 1:
            selectmenu.level = 1;
            func_state = 99;    //ゲームメイン
           break;
    case 10:
            selectmenu.level = 7;    //弾幕選択
                     func_state = 99;    //ゲームメイン
            break;
        case 11:
            selectmenu.level = 1;
            func_state = 99;    //ゲームメイン
           break;
    case 20:
            selectmenu.level = 12;    //弾幕選択
                    func_state = 99;    //ゲームメイン
            break;
        case 21:
            selectmenu.level = 1;
            func_state = 99;    //ゲームメイン
           break;

        default:
           printfDx("不明なメニューが選択されました\n");
           break;
        }
        select=0;
        area.bgm.flag=2;
    }
}


713ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(135,144ポイント)   Date: 2010/02/16(火) 14:57   No:48136     
Title: Re:選択画面の拡張で・・・    
返信が遅れました。。

> 問題なのが右キーを押しただけでselectmenu.menuが2まで行ってしまうことです
正直、じっくりコードを見ていないので、見当外れかもしれませんが・・・
if(selectmenu.menu==0){ 
    SelectDraw( x , y , "どの弾幕をみる?" , str , select); // 1
} 
if(selectmenu.menu==1){ 
    SelectDraw( x , y , "どの弾幕をみる?" , str3 , select); // 2
} 
if(selectmenu.menu==2){ 
    SelectDraw( x , y , "どの弾幕をみる?" , str4 , select); //3
}

でselectmenu.menu==0のとき1を実行し、
もし右パッドが押されていたら.menuをインクリメントします。
if文なので、すぐ下の.menu==1に合致し、2に入ります。
パッド情報の更新がmain関数1ループに一回だとしたらright==1のままなので、
さらにメニューを更新します。
これが原因ではないでしょうか?
具体的にな解決方法は、

if(.menu==0)
else if(.menu==1)
...

としてみてください。
お門違いでしたらすみません。。

#あれ?この掲示板って二回プレタグを登場させると、一回にみなされるんでしたっけ?^^;
<プレ></プレ>
text
<プレ></プレ>

textまでプレタグに囲まれてしまう・・・?


341ポイント を手に入れた。

Name: St  ..かけだし(1,530ポイント)   Date: 2010/02/16(火) 21:00   No:48157 解決!     
Title: Re:選択画面の拡張で・・・    
kazuoniさんありがとうございます
やっと解決できました

なんとも厄介ものをかいたんだorz

ついでにswitch文でやってみたらうまい具合に動作しました



54ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(51,131ポイント)   Date: 2010/02/16(火) 21:53   No:48159     
Title: Re:選択画面の拡張で・・・    
>#あれ?この掲示板って二回プレタグを登場させると、一回にみなされるんでしたっけ?^^; 
プレタグは廃止されましたよー。たしか。
今は、<pre>やらなくても自動的にタブされたりします。


71ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(135,396ポイント)   Date: 2010/02/17(水) 00:17   No:48162     
Title: Re:選択画面の拡張で・・・    
> 今は、<pre>やらなくても自動的にタブされたりします。

そうでしたか^^;
今規約を見たら、プレタグの項目は消えてますね。

でもやっぱりタグで囲った方が、字間があって見やすいので、
個人的にはあった方がいいなぁなんて思ったりますが。。
方針が無しの方向なら、そちらに統一しようかと思います。


41ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(501,100ポイント)   Date: 2010/02/17(水) 01:05   No:48165     
Title: Re:選択画面の拡張で・・・    
>kazuoniさん
>#あれ?この掲示板って二回プレタグを登場させると、一回にみなされるんでしたっけ?^^; 

 preタグ2回くらいなら大丈夫だったと思いますけど、基本的にスペース(0x20)があると
ノーブレークスペース(0xa0)に変換されるので、<font color="xxx">とか <a href="...">のように
タグに属性があるのが混ざっていると、間のタグ内の区切りのスペースまで変換されてしまい、
おかしくなってしまうようです。

 <pre>~</pre>以外のタグも使おうとしませんでした? 編集済み


233ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(135,461ポイント)   Date: 2010/02/17(水) 04:51   No:48166     
Title: Re:選択画面の拡張で・・・    
> タグに属性があるのが混ざっていると、間のタグ内の区切りのスペースまで変換されてしまい、
> おかしくなってしまうようです。 
> <pre>〜</pre>以外のタグも使おうとしませんでした?

確かに<s>は用いました。
<pre>source 1</pre>
text1
<pre>source 2</pre>
text2<s>utext</s>text3

のようにしたところ、text1の改行がなくなり
1文になりました。


65ポイント を手に入れた。



Name: PEGASUS  ..ぴよぴよ(536ポイント)   Date: 2010/02/15(月) 22:14   No:48111       
Title: すいませんC言語じゃありませんが    
学校でMicrosoft Visual Basic6.0を使用しプログラミングの勉強をしているのですが家でもできたらいいと思い、同じようなものかとExcelのVisual Basic Editorで授業でやったことを実行してみましたが、
「メソッド、またはデータメンバが見つかりません」となってしまいます。
ずばり、Microsoft Visual Basic6.0とVisual Basic Editorは違うものですか(コードとか)
そのた共通のコードや同じ意味で違うコードなど教えていただけませんか


161ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(121,623ポイント)   Date: 2010/02/15(月) 22:50   No:48113     
Title: Re:すいませんC言語じゃありませんが    
両方ともちょっと触ったことはあるけど、語れるほど詳しくありません。
VB6とVBA(Excel)は兄弟ですが、色々と違いがあるので完全な互換はありません。
VB6にしかないメソッドもありますし、VBAにしか無いメソッドもあります。

探してみましたが両者の相互移植をしている人を見つけられませんでした。
最新のVB2008もVB6との違いが大きすぎて、互換性が無いですよね。
お役に立てませんでしたね。


176ポイント を手に入れた。

Name: PEGASUS  ..ぴよぴよ(603ポイント)   Date: 2010/02/15(月) 22:50   No:48114     
Title: Re:すいませんC言語じゃありませんが    
すいません。もう少し具体的にします。
まず、Visual Basic EditorでLabel1(じゃなくても)に線や円、文字を表示するにはどうしたらいいですか


67ポイント を手に入れた。

Name: PEGASUS  ..ぴよぴよ(630ポイント)   Date: 2010/02/15(月) 22:51   No:48115     
Title: Re:すいませんC言語じゃありませんが    
> 両方ともちょっと触ったことはあるけど、語れるほど詳しくありません。
> VB6とVBA(Excel)は兄弟ですが、色々と違いがあるので完全な互換はありません。
> VB6にしかないメソッドもありますし、VBAにしか無いメソッドもあります。

> 探してみましたが両者の相互移植をしている人を見つけられませんでした。
わざわざありがとうございます。
やっぱりあきらめて学校でやろうかな・・・・


27ポイント を手に入れた。

Name: non  ..比類無きプログラマー(91,823ポイント)   Date: 2010/02/16(火) 08:39   No:48119     
Title: Re:すいませんC言語じゃありませんが    
VBを勉強するのなら、VBAとはだいぶ違いますので、どうせなら、Visual Basic 2008 Express Edition に
した方がいいですよ。VB6とも少し違うところはありますがVBAでやるよりは、ましでしょう。





66ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(56,721ポイント)   Date: 2010/02/16(火) 09:01   No:48120     
Title: Re:すいませんC言語じゃありませんが    
Excelのメニューで[ツール]-[マクロ]-[新しいマクロの記録]を選ぶことで、
次のようなサンプルが簡単に作れますよ。

ラベルは文字を表示するためだけのものですので、図形の描画はできません。
文字を書くだけならば次のMacro1のように、ラベルではないけど図形を描くならば、
Macro2のような方法があります。

Sub Macro1()
    ActiveSheet.Shapes("Label 1").Select
    Selection.Characters.Text = "新しいテキスト"
End Sub

Sub Macro2()
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 175.5, 182.25, 105#, 69.75). _
        Select
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 13
    Selection.ShapeRange.Fill.Visible = msoTrue
    Selection.ShapeRange.Fill.Solid
    Range("F23").Select
    ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, 395.25, 108.75, 132.75, _
        120.75).Select
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 12
    Selection.ShapeRange.Line.Visible = msoTrue
End Sub


# 何をやりたいのか分かりませんが、VBAにこだわらないならば、
# nonさんのアドバイスに同意。


504ポイント を手に入れた。

Name: Mikan [URL]  ..中級者(11,208ポイント)   Date: 2010/02/16(火) 12:51   No:48126     
Title: Re:すいませんC言語じゃありませんが    
VB6.0にあったLineメソッドはVBAにはないみたいですね。

VBAはfor Applicationとあるように、かなり使うアプリに依存して作られています。
なので同じVBAでもかなりコーディングが変わってきます。

Excelであればセルメインのコーディングになりますし、
Accessであればデータベース、Wordは行とかカーソルとかですね。
なので、VB6.0の技術習得として使用するのは一概には良いとは言えません。

ExcelVBAで線を引くのであれば、たいちうさんの仰るように、シェイプを使って再現したり
APIなどを使えば出来るようです。
また、ユーザーフォームを使えばVB6.0のようなフォームが作れますよ。
※コントロールによってはコーディングが変わったような気がします。

作りたいものがあるならば、回答者の皆様もアドバイスがしやすいと思います。


233ポイント を手に入れた。

Name: PEGASUS  ..ぴよぴよ(646ポイント)   Date: 2010/02/16(火) 21:05   No:48158 解決!     
Title: Re:すいませんC言語じゃありませんが    
あいりがとうございました。

16ポイント を手に入れた。



Name: レッドリ  ..ぴよぴよ(287ポイント)   Date: 2010/02/14(日) 14:51   No:48052       
Title: 東方の3D背景の作り方    
はじめまして、DXライブラリでVC++EE2008を使って東方っぽい3Dの背景を作っています。

あれはDrawModiBillboard3DやDrawModiBillboard3Dを使えばできそうかと思い試してみましたが、
どうやらZバッファ(Zソート?)を使ったり、奥の部分をαブレンドしたり
しないとできなさそうだと思いました。

このサイトの3D背景を作ってみようというのを見て、
ポリゴンというもので奥行きや、αブレンドを表現していることを知りました。
ポリゴン系の関数を勉強した方がいいのでしょうか?

自分は以前、ここの掲示板で
管理人さんが「3D背景を作ってみようの項目は内容が古いので公式リファレンスを見て下さい」
と書かれている記事を見たことがあるので、その点も気になります。
ポリゴン系の関数じゃなくても再現可能ということでしょうか?

DrawModiBillboard3Dで見た目がそれっぽくなるので、簡単かと思い、
使ってみたコードですが、DrawModiBillboard3Dでは限界に感じました。

#include "DxLib.h"

int G[3] ;
float a=0;
int Key[256];

int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
        else                            GetHitKeyStateAll_InputKey[i]=0;
    }
    return 0;
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
    G[0] = LoadGraph( "back/0/00.png" ) ;
    G[1] = LoadGraph( "board/board.png" ) ;
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない

    // 3D空間上に画像を描画
    DrawModiBillboard3D( VGet( 220.0f, a, a ),
        -60.0f,  200.0f,
         60.0f,  200.0f,
         460.0f, -280.0f,
        -460.0f, -280.0f, G[0], TRUE ) ;
    a++;
    DrawGraph( 0 , 0 , G[1] , TRUE ) ;
    DrawFormatString(0,0,GetColor(255,255,255)," %d",a);


        ScreenFlip();
    }

    DxLib_End();
    return 0;
}



 編集済み


287ポイント を手に入れた。


Name: Ma  ..熟練のプログラマー(49,616ポイント)   Date: 2010/02/14(日) 15:08   No:48056     
Title: Re:東方の3D背景の作り方    
最初に: 素人意見です。参考までに。

いろんな実装方法があるんじゃないかな?
ここの管理人さんがやっているように、一枚一枚計算していってもいいですし、
それこそ、mqoデータにしちゃってスクロールだけですむようにするとか、、、
他があまりおもいつきませんが・・・w

結局、一番楽なのはmqoデータでスクロールじゃないかな。
そうすれば、どんな形だろうが他のソフトで作ってしまえばいいだけだから、
この方法の長所はプログラム側がかなり楽になるところかな。
しいていえば、演出を増やすためにカメラを動的に動かすようなスクリプトとか作らないといけないかもしれないけれどね。

mqo読み込み、表示については、公式リファレンスを参照されたし。


164ポイント を手に入れた。

Name: レッドリ  ..ぴよぴよ(350ポイント)   Date: 2010/02/14(日) 17:32   No:48064     
Title: Re:東方の3D背景の作り方    
なるほど…
mqo読み込み、表示については分かりました。
プログラムもどれを使えばいいか分かりました。
それで、pngをmqoデータに変換ってできるのでしょうか?
検索で出てこなかったです。
やはりメタセコとかいうので作成していくのでしょうか?

地霊殿の1面っぽい岩の地面の1枚絵を作ったので
後はそれをスクロールさせたいので
これをmqoに変換できればいい感じになりそうなのですが…



63ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(50,974ポイント)   Date: 2010/02/15(月) 01:41   No:48098     
Title: Re:東方の3D背景の作り方    
単純に地面(画像の自由変形)を描画したいだけなら、mqoを使わずに、ここの講座にある3D背景の方法をとったほうがいいです。
私が推奨したmqoをつかう、というのは、マジな3D、つまり塔があったり、3Dな木があったり3Dな岩があったりした場合です。


>pngをmqoデータに変換ってできるのでしょうか? 
そもそもmqoとは何かを理解してください。
mqoは頂点情報が含まれている三次元のデータです。(詳しい人はもっと詳しく教えてくれるでしょうが)
三次元の空間を記録するデータです。

pngの画像をテクスチャとしてmqoのポリゴンに表示することはできますが、直接的な意味での変換は考えられません。
(ピクセル情報から3次元データを作るってのもできるでしょうが、目的にそぐわないので除外。)

mqoを作るには、メタセコイアを使うのをおすすめします。
mqoを作る方法の詳細は、メタセコイアの講座等を参照するといいとおもいますよ。 編集済み


322ポイント を手に入れた。

Name: レッドリ  ..ぴよぴよ(365ポイント)   Date: 2010/02/16(火) 16:23   No:48152 解決!     
Title: Re:東方の3D背景の作り方    
地霊殿っぽくできました!
ありがとうございます!


15ポイント を手に入れた。



Name: サンタクロース  ..入門者(4,046ポイント)   Date: 2010/02/14(日) 17:28   No:48063       
Title: 処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
こんばんわ。サンタクロースです。
自分は今PSPで東方の移植のようなものを作っているのですが、正直処理落ちに悩まされるのです。
そこで、思い切ってint→shortに置き換えてしまおうと考えているのですがどうなのでしょうか?
処理落ちの軽減は期待できるのでしょうか?
かなり、大規模な作業なので一度聞いておきたいと思います。

それともうひとつ質問です。
以前弾の描画順序を変えるにはどうすればいいかという質問がありましたが、
それは、発射される時間が違っても可能なのでしょうか?
例えば、先に撃たれた弾が後に打たれた弾に追い越され、
後に打たれる球が下に描画されるようにしたいのです。


260ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(120,902ポイント)   Date: 2010/02/14(日) 18:35   No:48068     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
>そこで、思い切ってint→shortに置き換えてしまおうと考えているのですがどうなのでしょうか? 
整数演算を変えても効果がない可能性が大きいです。構造体がコンパクトになるので多少はメモリアクセスは減りますが32768でオーバーフローするので、よほど気を付けないとバグだらけになります。
前のスレの時にも話題になっていますが、とりあえずテストプログラムで実測しましょう。
私が負荷だと思うのは、float→int、int→float変換です。多発していませんか?元の龍神録のプログラムだと大して気にしていないでプログラムしてると思います(パソコンの方が能力が高いので)。
とにかく処理落ちの原因を調べて、テストで間違いない事を確認し、実際に直すって工程を繰返さないとダメです。これもプログラマのデバッグの作業の一環ですよ。


>後に打たれる球が下に描画されるようにしたいのです。
それこそ弾が発射される度にソートするしか無いですね。
あるいは大きさで分けたリスト構造にするとか。今の龍神録の配列構造は捨てないといけないのと、リスト構造にすることで負荷が増えるのが問題ですが、ソートの負荷とどちらが良いかですね。


160ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(160,434ポイント)   Date: 2010/02/14(日) 19:31   No:48074     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
> そこで、思い切ってint→shortに置き換えてしまおうと考えているのですがどうなのでしょうか? 

どの部分を変更するのかにもよりますが、一般的にはintよりshortのほうが遅くなります。
PSPはMIPSなので、変数を評価する際の汎整数昇格は問題にはなりませんが、int型の演算結果をshort型にする際に、シフト演算が2回余計に必要になります。
ただし、int型の大きな配列をshort型の配列にするのであれば、キャッシュのヒット率を上げられますし、キャッシュラインに収まる可能性も上げられますので、結果的に速度を向上させられる可能性はあります。また、MIPSのアーキテクチャやABIでは、32Kバイト以上の配列を使ったり、関数に5個以上(浮動小数点数の場合は3個以上)の仮引数を持たせたりすると、効率が非常に悪くなります。
ソースを見れば、ある程度小手先で改善できる点は見いだせるかと思いますので、そこを直した上で、あとは実測でしょうね。

> それは、発射される時間が違っても可能なのでしょうか? 

可能かどうかが知りたいのであれば、可能です。


247ポイント を手に入れた。

Name: ft [URL]  ..中級者(13,696ポイント)   Date: 2010/02/14(日) 20:33   No:48078     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
こんにちは。
サンタクロースさんと同じくDXPで東方PSP劣化移植を試みている者です。
(ちなみにDXP掲示板では「zane」と名乗っています。掲示板毎に適当に押したキーをネームにしてますw)

本題ですが、処理落ちしてしまうということで、どのくらいの弾幕でどれだけ落ちてしまうのでしょうか?
DXPは安定性を重視して出来る限り高速に描画するように設計されているようで、やはり限界もあると思います。


115ポイント を手に入れた。

Name: 少年X  ..かけだし(1,852ポイント)   Date: 2010/02/15(月) 15:29   No:48106     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
こんにちは
僕もPSPで東方を移植しようとしているものです。

処理落ちが問題なら、やはりsin,cosのテーブル化をお勧めします。ftさんに指摘されて直してみたところ、すごく高速になりましたよ。でも、大幅なプログラムの書き換えが必要になるので大変でした。
*僕は初心者だからてこずっただけかも・・・


139ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(500,482ポイント)   Date: 2010/02/15(月) 22:27   No:48112     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
 概ね回答も出そろっているような気もしますが、(PSP持ってないのに)私からも少しだけ。
 
 もし、sizeof(double)!=sizeof(float)なら、int→shortよりも double→floatでしょう。
 前提条件が正しければ、計算途中も含めて全て floatにすることで結構大きく変わる可能性があります。

 sin/cosの方は VFPUに専用命令があったはずです。テーブルでもいいですが、これを使って計算しても
結構早くなるかと。

 最後にもし実はコード的に「東方の移植」ではなく「龍神録の移植」だったりするなら、
PSPのアーキテクチャ的に配列+フラグによる有効無効判定あたりは一工夫(アルゴリズムを見直す、
プリフェッチするなど)しないと激しい D$ミスを引き起こしそうな気がする(気がするだけですので、
実際には測定が必要ですが)ので、そのあたりも遅くなる要因になっているかもしれません。


272ポイント を手に入れた。

Name: サンタクロース  ..入門者(4,151ポイント)   Date: 2010/02/16(火) 00:22   No:48116 解決!     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
こんばんわ。皆さん回答ありがとうございました。
よくよく考えてみたのですがやはりintからshortはすごくわかりにくいですね。
ひとまずsin,cosのテーブル?という意見を参考にしてみたいと思います
描画順位については二者択一なところがあって少し悩みます;
とりあえず処理軽減の出来次第で決めたいと思います 編集済み


105ポイント を手に入れた。

Name: ft [URL]  ..中級者(13,799ポイント)   Date: 2010/02/16(火) 10:50   No:48123     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
以前Justyさんの仰るsin/cosのVFPU専用命令を使ったことがあるのですが、遅くなってしまった記憶があります。
でも確かテーブル以外のsinf/cosfとしていた箇所を全てVFPU命令にした場合の結果でしたので、
細かく見て使い分けすればもしかしたら変わるかもしれません。。。


103ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(121,841ポイント)   Date: 2010/02/16(火) 11:19   No:48124     
Title: Re:処理落ちの軽減についてと、発射に時間差のある弾の描画順位について    
サンタクロースさんへ。
実測や問題点の洗い出しをせずに、とりあえず高速化に有効な手を打ってみると言うのは問題の解決を遅らせるだけですよ。

高速化は、
1.色々なポイントの速度を実測
2.問題点の絞り込み
3.問題点をテストプログラムで実測
4.テストプログラムで改良手段をテスト
5.改善されるまで3から4を繰り返す。
6.本物に反映。
7.実際に高速化されているか、本物を実測でテスト。
と地道にやりましょう。


218ポイント を手に入れた。



Name: シノニム  ..入門者(2,708ポイント)   Date: 2010/02/15(月) 14:56   No:48105       
Title: ホームページのソースを読み出すプログラム    
いつもお世話になっております
先日ネットワークプログラムの件で質問させていただき、みなさんにこころよく協力していただきました

とりあえずチャットプログラムを・・・と思ったんですが、チャット以前にネットワークの知識がないので、『猫でもわかるネットワークプログラミング』という参考書を購入し、読み進めているところです

が・・・早くも第2章でつまづきまして・・・
タイトルの通りのコンソールアプリを(ソースは参考書に載っていたのでそれを打ち込んだ)作ったんですが、実行はできるものの上手く動作していないようで、質問させていただきました

ソースは以下の通りです

#include <stdio.h>
#include <windows.h>
#include <wininet.h>

#pragma comment(lib, "wininet.lib"    )        // WinInet.Lib


int main()
{
    HINTERNET hInet, hUrl;
    char szBuf[128], szUrl[128], *lpszSrc;
    DWORD dwRead, dwTotal = 0;
    HGLOBAL hMem;

    // 目的のURLの入力
    printf("URL -> ");
    gets_s(szUrl);

    // インターネット(WinInet)開始
    hInet = InternetOpen((LPCWSTR)"test_winInet", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); // チェック1
    if (hInet == NULL)
    {
        perror("オープンエラー\n");
        return -2;
    }

    // HTTPセッションの開始、指定のURLオープン
    hUrl = InternetOpenUrl(hInet, (LPCWSTR)szUrl, NULL, 0, 0, 0); // チェック2
    if (hUrl == NULL)
    {
        perror("URLオープンエラー\n");
        InternetCloseHandle(hInet);
        return -3;
    }

    // lpszSrsに1バイトのみ確保
    hMem = GlobalAlloc(GHND, 1);
    lpszSrc = (char *)GlobalLock(hMem);

    // 読み出すものがなくなるまで読み出す
    while (1)
    {
        InternetReadFile(hUrl, szBuf, (DWORD)sizeof(szBuf) - 1, &dwRead);
        szBuf[dwRead] = '\0';

        // 読み出すものがなくなったのでループ脱出
        if (dwRead == 0)    break;

        // 必要バイト数の計算
        dwTotal += dwRead;

        // 確保領域の大きさ変更
        hMem = GlobalReAlloc(hMem, dwTotal + 1, GMEM_MOVEABLE);
        if (hMem == NULL)
        {
            perror("再アロケート失敗\n");
        }
        lpszSrc = (char *)GlobalLock(hMem);
        if (lpszSrc == NULL)
        {
            perror("メモリ確保に失敗\n");
            break;
        }

        strcat(lpszSrc, szBuf);

    }    // while (1)


    // ソースの表示
    printf("%s\n", lpszSrc);

    // メモリの解放
    GlobalUnlock(hMem);
    GlobalFree(hMem);

    // インターネットハンドルの解放
    InternetCloseHandle(hUrl);
    InternetCloseHandle(hInet);

    return 0;
}


チェック1の第1引数と、チェック2の第2引数はエラーが出たため自分なりにキャストしてみました

OS:windowsXP
C++

どなたかお力添えをお願いします


1,097ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(121,447ポイント)   Date: 2010/02/15(月) 16:15   No:48107     
Title: Re:ホームページのソースを読み出すプログラム    
その無理矢理なキャストが動かない原因です。
VisualStudioは2005からUNICODEで使うことがデフェルトになりました。
『猫でもわかるネットワークプログラミング』たぶんマルチバイト文字(SJIS)でのコーディング例になっていると思います。

UNICODEについてはこちら。
http://yy2.sakura.ne.jp/006_vccp_unicode/vcpp_unicode.html
で、真ん中辺りに出てくるプロパティに文字セットってのがあると思いますが、これをマルチバイト文字に切り替えることで元のままコンパイルがとおり動くようになると思います。
まぁ、今後のためにはUNICODEでのプログラミングを覚えた方が良いので、UNICODEにも挑戦してみて欲しいですが、そちらはまぁまず動いてからと言うことで。


235ポイント を手に入れた。

Name: シノニム  ..入門者(2,793ポイント)   Date: 2010/02/15(月) 17:22   No:48108 解決!     
Title: Re:ホームページのソースを読み出すプログラム    
softyaさんありがとうございます!
おかげでちゃんと動作するようになりました

UNICODEでのプログラミングですか・・・とりあえずこのようなミスをすることがなくなって、時間があるときにでも少し触ってみようと思います。ご意見と指摘、ありがとうございました


85ポイント を手に入れた。

Name: dic  ..熟練のプログラマー(51,342ポイント)   Date: 2010/02/16(火) 10:09   No:48122     
Title: Re:ホームページのソースを読み出すプログラム    
その本アルゴリズム自体に問題あったよ

チェックしてみましたが、きちんと動くようですね
修正してるようですね 編集済み


17ポイント を手に入れた。



Name: 入門者以下  ..かけだし(1,784ポイント)   Date: 2010/02/15(月) 20:38   No:48109       
Title: スタティックテキストのサイズ変更    
スタティックテキストのサイズ変更について。

スタティックテキストの横幅サイズが、格納された文字列により
自動でサイズが変わるようにしたいのですが、なかなか上手くいきません。
どなたかご教示ください。
よろしくお願い致します。

環境:VC++、MFC

/*表示*/
CString test;

test.Format("【%5s:%6s,%s%s%s】",test1,test2,test3,test4,test5) ;

//CWindowDC dc(this);
//CSize sizesize = dc.GetTextExtent(m_ddx_v_com_info);
//CEdit* editedit = (CEdit*)GetDlgItem(IDC_STATIC_COM_INFO);
//editedit->SetWindowPos(editedit,0,0,sizesize.cx-96,12,SWP_NOMOVE|SWP_NOZORDER);
//editedit->MoveWindow(89,402,sizesize.cx,sizesize.cy,true);
 編集済み


94ポイント を手に入れた。


Name: 入門者  ..ぴよぴよ(811ポイント)   Date: 2010/02/15(月) 21:18   No:48110 解決!     
Title: Re:スタティックテキストのサイズ変更    
解決しました。
お騒がせしました。


16ポイント を手に入れた。



Name: 章の移動  ..ぴよぴよ(75ポイント)   Date: 2010/02/15(月) 03:32   No:48100       
Title: 無題    
先日プログラミングの館で1章のプログラムを書いたのですが
次に2章のプログラムを書いた場合1章→2章への移動の仕方は
どうすればよいのでしょうか?



分かる方教えてください。よろしくお願いします。


75ポイント を手に入れた。


Name: kazuoni [URL]  ..ハッカー(134,803ポイント)   Date: 2010/02/15(月) 06:02   No:48102     
Title: Re:無題    
龍神録プログラミングの館もゲームプログラミングの館
のどちらも一章は導入だけのはずなんですが・・・

とりあえず、コピぺでいいと思いますよ。


45ポイント を手に入れた。



Name: とく  ..かけだし(2,048ポイント)   Date: 2010/02/14(日) 18:28   No:48067       
Title: 物理の問題が解けません・・・。    
40cmのゴムを片方固定して100gの重りをつるしたら9.8cm下がった。
ゴムの両端を固定して真ん中にある重りをつるしたら15cm下がった
重りの質量をもとめなさい。

という問題があって、がんばって解こうとしたのですが答えは「122g」
何ですが、102gになってしまいます。

教えてください。


108ポイント を手に入れた。


Name: Tororo  ..入門者(3,191ポイント)   Date: 2010/02/14(日) 18:37   No:48069     
Title: Re:物理の問題が解けません・・・。    
プログラムとの関係は?
ないならyahoo等に行きましょー。


15ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(121,212ポイント)   Date: 2010/02/14(日) 18:38   No:48070     
Title: Re:物理の問題が解けません・・・。    
質問に答えるために幾つかお願いがあります。スムーズに回答するために必要な事柄ですのでぜひお願いします。
 ・ 使用している環境やコンパイラ(VisualC++2008ExpressEdition等)、自分が習っている言語の規格(CにもC89やC99など幾つか規格があります)を教えて下さい。
 ・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にして下さい。特に使って良い関数の制限などが分かると答えやすいです。無制限なら無制限と書いて下さいね。
 ・ 自分で書いたソースプログラムがあるなら提示をお願いします。
 ・ ソースが有る場合は、自分が書いたソースプログラムはどこからどこまでなのか教えて下さい。
 詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html


310ポイント を手に入れた。

Name: conio [URL]  ..比類無きプログラマー(78,552ポイント)   Date: 2010/02/14(日) 18:48   No:48071     
Title: Re:物理の問題が解けません・・・。    
>>Tororoさん
>>プログラムとの関係は? 
>>ないならyahoo等に行きましょー。

-----------------------------------------------------------------------------------
●投稿する内容について
「C言語で何かわからない事についての質問」を、主としていますが、規制はありません。
C言語関連以外でも自由に何でも質問してください。
-----------------------------------------------------------------------------------
("規約と注意事項"より)



主体はプログラミング関連ですが、
一応 プログラム以外の質問もOKになっています。 編集済み


188ポイント を手に入れた。

Name: Tororo  ..入門者(3,234ポイント)   Date: 2010/02/14(日) 18:56   No:48072     
Title: Re:物理の問題が解けません・・・。    
>>conio
お〜 そうだったんですか。
でしゃばり過ぎました^^;
失礼しましたm(_ _)m


43ポイント を手に入れた。

Name: Tororo  ..入門者(3,199ポイント)   Date: 2010/02/14(日) 18:57   No:48073     
Title: Re:物理の問題が解けません・・・。    
>>conioさま
上の所、様が抜けていました、度々失礼しました。


35ポイント を落としてしまった。

Name: Tatu  ..プログラマー(26,474ポイント)   Date: 2010/02/14(日) 20:00   No:48076     
Title: Re:物理の問題が解けません・・・。    
>>とく さん
半分になったゴムのばね定数と
ゴムの弾性力の向きを考えなおしてください。


35ポイント を手に入れた。

Name: とく  ..かけだし(2,215ポイント)   Date: 2010/02/14(日) 20:13   No:48077     
Title: Re:物理の問題が解けません・・・。    
ゴムのバネ定数は自分なりに計算したら「20」になったんですが。
その後に、
      20*0.05
 m = ---------- *2
        2g

       1
   = ------
      9.8

   =0.1020408・・・


単位がグラムなので1000をかけて「102」になりました。

最初の後ろにある*2は20cmのゴムが25cmに伸びて、それが2本みたいな意味で*2をつけています。
友達とも計算したのですが(ほかのやり方で。)みんな同じ答えになります。


167ポイント を手に入れた。

Name: non  ..比類無きプログラマー(91,757ポイント)   Date: 2010/02/14(日) 20:35   No:48079     
Title: Re:物理の問題が解けません・・・。    
>ゴムのバネ定数は自分なりに計算したら「20」になったんですが

どういう計算ですか?

>最初の後ろにある*2は20cmのゴムが25cmに伸びて
25cmに伸びたってのは、問題のどこを読めばわかりますか?


88ポイント を手に入れた。

Name: ぽこ  ..初心者(6,543ポイント)   Date: 2010/02/14(日) 20:48   No:48080     
Title: Re:物理の問題が解けません・・・。    
重力加速度は何でしょうか?

訂正。重力加速度不要ですね。 編集済み


10ポイント を手に入れた。

Name: ぽこ  ..初心者(6,664ポイント)   Date: 2010/02/14(日) 21:04   No:48081     
Title: Re:物理の問題が解けません・・・。    
> 40cmのゴムを片方固定して100gの重りをつるしたら9.8cm下がった。

フックの法則を利用。
重力加速度をg、ばね定数をkとすると、
 F=-kx
 100(グラム)×g+k×9.8(センチ)=0

 これより、

 k=100g/9.8

> ゴムの両端を固定して真ん中にある重りをつるしたら15cm下がった

ゴムの伸びは5センチが2つ。
求める質量をmとすると、

mg=2(つ)×k×(5センチ)×0.6(垂直方向成分のみ)
mg=2×100g/9.8×5×0.6
m=2×100/9.8×5×0.6
m=600/9.8=61.22

あれ?半分になちゃった><
でも方向性はこれで間違ってないと思います。
 編集済み


121ポイント を手に入れた。

Name: とく  ..かけだし(2,349ポイント)   Date: 2010/02/14(日) 21:04   No:48082     
Title: Re:物理の問題が解けません・・・。    
25cmに伸びたというのは、ゴムの真ん中につるしたというので、20cmのゴム。
そして15cm下に下がったので、

20cmの辺と15cmの辺があり、斜辺がxとすると、

3:4:5=15:20:x
x=25

みたいな感じで25cmと出しました。
それで、5cm伸びたと考えています。


あと、重力加速度はg=9.8となっています。


134ポイント を手に入れた。

Name: とく  ..かけだし(2,360ポイント)   Date: 2010/02/14(日) 21:10   No:48083     
Title: Re:物理の問題が解けません・・・。    
>>ぽこさん
> mg=2(つ)×k×(5センチ)×0.6(垂直方向成分のみ)

の0.6の部分がよくわからないのですが教えていただけませんか?


11ポイント を手に入れた。

Name: ぽこ  ..初心者(6,785ポイント)   Date: 2010/02/14(日) 21:16   No:48084     
Title: Re:物理の問題が解けません・・・。    
> の0.6の部分がよくわからないのですが教えていただけませんか?

言い方が悪いですが、ゴムの力の向きは斜めですよね?
おもりとの釣り合いの式を作成するために、
ゴムの力を水平成分と、垂直成分に分解する必要があります。

ゴムの力をF、ゴムの力の向きと垂直方向がなす角度をθとすると、
水平成分:F×sinθ
垂直成分:F×cosθ
となります。三角形の辺の比が3:4:5なので、
cosθ=3/5=0.6
つまり、ゴムの力の垂直成分は0.6Fとなります。 編集済み


121ポイント を手に入れた。

Name: とく  ..かけだし(2,398ポイント)   Date: 2010/02/14(日) 21:25   No:48085     
Title: Re:物理の問題が解けません・・・。    
>>ぽこさん

なっとくです!!

ですが、なぜ半分になっちゃったんでしょうね・・・。


38ポイント を手に入れた。

Name: Tatu  ..プログラマー(26,578ポイント)   Date: 2010/02/14(日) 21:41   No:48086     
Title: Re:物理の問題が解けません・・・。    
>>ぽこ さん
ゴムの長さを半分にした時、ばね定数がどうなるのかを考えていないようですね。
あなたの考えではある長さを持つゴムがある力で5cm伸びるとすると
それをどんなに短くしたゴムでも同じ力で5cm伸びることになります。


104ポイント を手に入れた。

Name: とく  ..かけだし(2,428ポイント)   Date: 2010/02/14(日) 21:48   No:48087     
Title: Re:物理の問題が解けません・・・。    
>>Tatuさん

ということは、半分になったゴムは、バネ定数が2倍になるということですか??


30ポイント を手に入れた。

Name: ぽこ  ..初心者(6,811ポイント)   Date: 2010/02/14(日) 22:07   No:48089     
Title: Re:物理の問題が解けません・・・。    

>Tatuさん

> >>ぽこ さん
> ゴムの長さを半分にした時、ばね定数がどうなるのかを考えていないようですね。

仰る通り、考えていません。
参考までに、どういう原理からばね定数を求めるべきか教えていただけないでしょうか?


26ポイント を手に入れた。

Name: ぽこ  ..初心者(6,851ポイント)   Date: 2010/02/14(日) 22:55   No:48091     
Title: Re:物理の問題が解けません・・・。    

> ということは、半分になったゴムは、バネ定数が2倍になるということですか??

そのようですね。
下に参考にしたURLを貼っておきます(※PDF)。
http://tachiro.client.jp/theorem/theorem-007-springconstant2.pdf


40ポイント を手に入れた。

Name: とく  ..かけだし(2,488ポイント)   Date: 2010/02/14(日) 23:11   No:48092 解決!     
Title: Re:物理の問題が解けません・・・。    
答えにたどり着きました。
ありがとうございました!!


2倍のポイントを手に入れた! 60ポイント を手に入れた。

Name: Tatu  ..プログラマー(26,682ポイント)   Date: 2010/02/14(日) 23:33   No:48093     
Title: Re:物理の問題が解けません・・・。    
ばね定数(N/mの場合)がばねを1m伸ばすのに必要な力(N)を
表わすというのはわかっていますね。

まず、ばね定数がkのばねを考えましょう。
これをF[N]の力で引っ張った時、
フックの法則よりばねの伸びと力の大きさの関係は
F=kxなのでx=F/kになります。

では、次に同じばね定数kの二本のばねを考えましょう。
そしてこの二本をまっすぐつなげ、片方の端を固定しましょう。

このとき先ほどのFの力で引っ張った時、二本のばねはどうなるでしょうか?
それぞれのばねはFの力で引っ張られますね?
すると両方ともF/kだけのびるので伸びは合計で2F/kになります。

さて、ここで二本のばね全体でのばね定数をk'とおくと
フックの法則より次の式が得られます。

F=k'(2F/k)
これよりk'=k/2と求められます。

ばねの長さを2倍にするということは
同じばね定数の二本のばねをつなげたことと同じで
ばね定数は元の半分になります。

ということは逆にばねの長さを半分にすれば
ばね定数は元の2倍になりますね。

そして、n本のばね定数が同じばねをつなげたときを考えると
k'=k/nと書けます。

なお、二本のばねのばね定数が異なった場合と
ばねを並列に並べたらどうなるのかは
自分で考えてください。


50ポイント を手に入れた。

Name: ぽこ  ..初心者(6,901ポイント)   Date: 2010/02/14(日) 23:39   No:48094     
Title: Re:物理の問題が解けません・・・。    

>Tatuさん

> ばねの長さを2倍にするということは
> 同じばね定数の二本のばねをつなげたことと同じで
> ばね定数は元の半分になります。

> ということは逆にばねの長さを半分にすれば
> ばね定数は元の2倍になりますね。

これが汎用的な原理であれば、半分にした後のバネ定数を
わざわざとくさんに質問していたのは、なぜでしょうか?



50ポイント を手に入れた。

Name: Tatu  ..プログラマー(26,813ポイント)   Date: 2010/02/15(月) 00:12   No:48095     
Title: Re:物理の問題が解けません・・・。    
>>ぽこさん
このレスのことですか?

>>とく さん 
半分になったゴムのばね定数と 
ゴムの弾性力の向きを考えなおしてください。

このレスのことなら理由は
自分で解いてみた後に
ばね定数の変化と
ゴムの弾性力の成分の分解を
考えないで計算したらでると思われる値と
とくさんが出した答えが一致したため、
これらが間違いの原因だと思ったからです。



131ポイント を手に入れた。

Name: ぽこ  ..初心者(6,921ポイント)   Date: 2010/02/15(月) 00:24   No:48096     
Title: Re:物理の問題が解けません・・・。    
>Tatuさん

分かりました。
ありがとうございました。


20ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(50,652ポイント)   Date: 2010/02/15(月) 01:13   No:48097     
Title: Re:物理の問題が解けません・・・。    
自分も復習のために、やらせていただきました。
解決しちゃった後みたいですが、まだ全員の意見をひとつにまとめてなかったみたいなので、
一通り通してみます。


>40cmのゴムを片方固定して100gの重りをつるしたら9.8cm下がった。 
>ゴムの両端を固定して真ん中にある重りをつるしたら15cm下がった 
>重りの質量をもとめなさい。 

実際には
F=-kx+C
ですが、C=0 と仮定します。

k = -F/x
k = -(0.1*(-9.8)/0.098)      //(重力は下向きだから -9.8)

ばね定数が、
k = 10 [N/m]
であることがわかります。

   0.4m
-----------
\    /
 \      /
  \  / 0.25m
   \ /
    \/

↑を、垂直三角形ふたつと考えると、
0.15m,0.2mの辺を持つことから、0.25m の斜辺を持つことがわかる。
よって、0.25*2-0.4より伸びは、0.1m である。
ふたつで0.1mのびたから、それぞれ0.05m (5cm)のびたことがわかった。

さらに、3:4:5 の三角形なので
伸びによって生じた力の垂直成分は、ゴムの伸びの力全体の3/5 = 0.6
ただし、並列つなぎ(二倍)になり、長さも半分(二倍)なので、全体としてのばね定数は四倍となる。

ゴムが↑にひっぱる力
F(1) = 2*2(-kx)*0.6  //2(ゴムふたつ)*2(長さ半分)*-kx*0.6(垂直成分) 


おもりが↓にひっぱる力
F(2) = mg

F(1)+F(2) = 0
4*(-kx)*0.6 + mg = 0
m = 4*kx*0.6/g
m = (4*(10)*(-0.05)*0.6)/(-9.8)     //(x = -0.05 なのは、↓方向にのびているため。g=-9.8 は重力が下向きだから。)

m= 0.12244....

よって122g



(分かりやすくするためにちょっと補足しました。) 編集済み


2倍のポイントを手に入れた! 1,036ポイント を手に入れた。



Name: こばち  ..ぴよぴよ(519ポイント)   Date: 2010/02/13(土) 20:55   No:48021       
Title: 横スクロールSTGゲーム    
初心者です。今本を見ながら、STGゲームをプログラムしています。それで詰まってしまって、質問です。
解らないところのプログラムは以下↓で

#include "spgame.h"
#include "stdio.h"
 ・
 ・
 ・
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
1    ChangeWindowMode(TRUE);                //ウィンドウモードで起動
2    if(DxLib_Init() == -1) return(-1);    //DXライブラリ初期化

4    gametitlejpg = LoadGraph("media\\gametitle.jpg");
5    JicharaLoad();
6    TekiLoad();
7    int stagenum = 1;
8    if(MapLoad(ssprintf("media\\map0%d.dat" ,stagenum),"media\\map01.bmp")==0) return(0);
9    if(ZakoLoad("media\\zako01.pat", "media\\zako01.bmp")==0) return(0);
10    backjpg = LoadGraph("media\\back01.jpg");

     
    ・・・        
    ・・・
    ・・・


マップをステージクリアするたびに読み込もうとおもって、7行目でstagenumという変数をつくって、8行目でテキストでつくったデータを読み込もうとしたんですがエラーとなりました。エラー文は、

エラー E2268 C:\MyC\smp_yokogame01c\yokogame01.cpp 30: 未定義の関数 'ssprintf' を呼び出した(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2034 C:\MyC\smp_yokogame01c\yokogame01.cpp 30: 'int' 型は 'char *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2340 C:\MyC\smp_yokogame01c\yokogame01.cpp 30: 1 番目のパラメータは char * 型として定義されているので int 型は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
*** 3 errors in Compile ***


とでます。どう改善すればいいでしょうか?


519ポイント を手に入れた。


Name: non  ..比類無きプログラマー(91,669ポイント)   Date: 2010/02/13(土) 21:14   No:48022     
Title: Re:横スクロールSTGゲーム    
>・・・未定義の関数 'ssprintf' を呼び出した・・・

って言ってますからssprintfが未定義なのでしょう。
ところで、この関数は何?組み込み関数?見たことないです。




56ポイント を手に入れた。

Name: こばち  ..ぴよぴよ(680ポイント)   Date: 2010/02/13(土) 21:41   No:48025     
Title: Re:横スクロールSTGゲーム    
ssprintf はヘッダーファイルを見たところなかったので、組み込み関数ではないようです。本の誤記載かもしれません。通常ステージをクリアするたびにmap01.dat , map02.dat , map03.dat ・・・と次々に読み込んでいく場合は 

 if(MapLoad("media\\map01.dat","media\\map01.bmp")==0) return(0); 

をどのように変えるとよいのでしょうか?  


161ポイント を手に入れた。

Name: こばち  ..かけだし(1,052ポイント)   Date: 2010/02/13(土) 21:49   No:48027     
Title: Re:横スクロールSTGゲーム    
情報追加です。MapLoad関数は

int MapLoad(char *datname, char *bmpname){
    int f;    //f=ファイルハンドル
    
    //画像読み込み
    LoadDivGraph(bmpname,32,8,4,32,32,mapbmp);

    //ファイルを開く
    f = FileRead_open(datname);
    if(f == 0) {
        printfDx("map.dat読み込みエラー");
        return(0);
    }
    //マップ長さを読み込み
    char buf[10];
    if(FileRead_gets(buf,10,f)==-1) return(0);
    worldmax = atoi(buf);
    if(worldmax>=1020) worldmax=1020;
    
    //マップ文字列読み込み
    for(int i=0; i<15; i=i+1){
        if(FileRead_gets(mapdat[i], worldmax + 3, f) == -1) {
            return(0);
        }
    }
    //ファイルを閉じる    
    FileRead_close(f); 
    return(worldmax);
}

となっています。


372ポイント を手に入れた。

Name: Ma  ..熟練のプログラマー(49,296ポイント)   Date: 2010/02/14(日) 14:43   No:48051     
Title: Re:横スクロールSTGゲーム    
> if(MapLoad("media\\map01.dat","media\\map01.bmp")==0) return(0);  
>をどのように変えるとよいのでしょうか?   

結局 spintf の間違いの可能性が高いのでは?


for(int i = 1; i < 10; i ++){
 char temp[100];
 sprintf(temp,"media\\map%02d.dat",i);
 printf("%s",temp);
}

たぶんこれで、
media\\map01.dat
media\\map02.dat
media\\map03.dat

になるとおもいます。


91ポイント を手に入れた。

Name: こばち  ..かけだし(1,178ポイント)   Date: 2010/02/14(日) 16:30   No:48060 解決!     
Title: Re:横スクロールSTGゲーム    
sprintfでできました。
どうもありがとうございます。
これを参考に頑張ります。

アドバイスを参考に改善したのが↓です。

 int i = 1;
 char temp[100]; 
 sprintf(temp,"media\\map%02d.dat",i); 
 if(MapLoad(("%s",temp),"media\\map01.bmp")==0) return(0);

これで読み込めるようになりました。あとはクリアするたびにiを変更していくように頑張ります。
どうも。   


126ポイント を手に入れた。




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +