C言語何でも質問掲示板


Total hit  今日  昨日  

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

 
   RyuJin.slnが実行でき ....   
     ・[45538] SooA 
     ・[45542] KAO 
   26. シューティング基 ....   
     ・[45237] kazuoni 
     ・[45238] たこ 
     ・[45240] 紅葉 
     ・[45243] kazuoni 
     ・[45244] たこ 
     ・[45252] kazuoni 
     ・[45280] たこ 
     ・[45284] kazuoni 
     ・[45537] たこ 
   どうして?   
     ・[45506] softya 
     ・[45508] 上杉謙信 
     ・[45509] たかぎ 
     ・[45510] MNS 
     ・[45512] 上杉謙信 
   ホーミング弾の角度に ....   
     ・[45500] Justy 
     ・[45504] ft 
   カレントディレクトリ ....   
     ・[45452] MNS 
     ・[45453] dic 
     ・[45457] qwerty 
     ・[45459] 天和 
     ・[45462] qwerty 
     ・[45490] 天和 
     ・[45491] 天和 
   アルファブレンディン ....   
     ・[45467] たかぎ 
     ・[45473] Justy 
     ・[45489] dic 
   ボス出現時にオプショ ....   
     ・[45346] Justy 
     ・[45392] ft 
     ・[45403] Justy 
     ・[45404] ft 
     ・[45405] Justy 
     ・[45407] ft 
     ・[45410] ft 
     ・[45411] Justy 
     ・[45412] ft 
     ・[45482] Naohiro19 
     ・[45483] ひよこ 
   【雑談】常時行われる ....   
     ・[45364] Ma 
     ・[45367] ぽこ 
     ・[45378] dic 
     ・[45426] Ma 
     ・[45439] softya 
     ・[45464] とおり 
     ・[45481] Ma 
   レーザーの連続照射に ....   
     ・[45414] あ〜る 
     ・[45423] yrao 
     ・[45432] あ〜る 
     ・[45433] あ〜る 
     ・[45450] Justy 
     ・[45454] あ〜る 
     ・[45456] Justy 
     ・[45475] yrao 
     ・[45477] あ〜る 
     ・[45478] あ〜る 
     ・[45480] yrao 
   無題   
     ・[45302] バグ 
     ・[45303] 428 
     ・[45304] kazuoni 
     ・[45305] 428 
     ・[45306] 428 
     ・[45307] SooA 
     ・[45309] 428 
     ・[45310] DVDM 
     ・[45311] SooA 
     ・[45312] 428 
     ・[45313] 428 
     ・[45314] DVDM 
     ・[45318] SooA 
     ・[45329] kazuoni 
     ・[45331] kazuoni 
     ・[45344] SooA 
     ・[45345] Justy 
     ・[45348] kazuoni 
     ・[45349] Justy 
     ・[45351] kazuoni 
     ・[45352] Justy 
     ・[45374] 428 
     ・[45376] 428 
     ・[45388] kazuoni 
     ・[45458] Justy 
     ・[45479] kazuoni 
   音楽ファイルの取得に ....   
     ・[45328] MNS 
     ・[45330] ti 
     ・[45334] MNS 
     ・[45340] ti 
     ・[45361] MNS 
     ・[45474] ti 
   自己参照型とソートに ....   
     ・[45438] MNS 
     ・[45442] box 
     ・[45443] マングース 
     ・[45448] non 
     ・[45461] マングース 
     ・[45472] non 
     ・[454371263307231] マングース 
     ・[454371264475204] マングース 
   カレントディレクトリ ....   
     ・[45428] MNS 
     ・[45429] 天和 
     ・[45430] 天和 
     ・[45434] MNS 
     ・[45435] 天和 
     ・[45436] MNS 
     ・[45444] 天和 
     ・[45445] MNS 
     ・[45446] 天和 
   DirectXで頂点情報を回 ....   
     ・[45420] Justy 
     ・[45421] DVDM 
     ・[45424] miya 
     ・[45425] miya 
   ダンジョンゲームプロ ....   
     ・[45394] Justy 
     ・[45395] デラ初心者 
     ・[45396] softya 
     ・[45397] kazuoni 
     ・[45398] softya 
     ・[45399] Justy 
     ・[45400] デラ初心者 
     ・[45401] softya 
     ・[45416] バグ 
   作成中のボス弾幕の不 ....   
     ・[45354] yrao 
     ・[45358] あ〜る 
     ・[45365] あ〜る 
     ・[45389] yrao 
   ロゴの綺麗な透過処理 ....   
     ・[45372] SooA 
     ・[45373] 428 
     ・[45377] MNS 
     ・[45381] 428 
     ・[45382] あ〜る 
     ・[45383] 428 
     ・[45384] MNS 
     ・[45386] 428 
     ・[45387] MNS 
   独自のデータ構造の重 ....   
     ・[45336] MNS 
     ・[45359] dic 
     ・[45362] MNS 
     ・[45379] dic 
     ・[45380] dic 
   ソースの一部分を隠し ....   
     ・[45327] Justy 
     ・[45335] dic 
     ・[45370] 3T 
   導入のサンプルプログ ....   
     ・[45317] non 
     ・[45323] おおさか 
     ・[45326] non 
     ・[45337] lbfuvab 
     ・[45338] kazuoni 
     ・[45339] Justy 
     ・[45360] おおさか 
   fgetsとsscanfが使いこ ....   
     ・[45320] box 
     ・[45321] Justy 
     ・[45341] シノニム 
     ・[45342] Justy 
     ・[45355] シノニム 
     ・[45357] Justy 
   ランダムエンカウント   
     ・[45294] バグ 
     ・[45295] DVDM 
     ・[45296] Justy 
     ・[45297] kms 
     ・[45298] Justy 
     ・[45299] kms 
   malloc realloc ポイン ....   
     ・[45231] フリオ 
     ・[45234] non 
     ・[45251] ruce 
     ・[45253] box 
     ・[45254] non 
     ・[45255] non 
     ・[45256] non 
     ・[45273] ruce 
     ・[45292] non 
   就職のことについて相 ....   
     ・[44957] mnkr 
     ・[44963] softya 
     ・[44973] shilfia 
     ・[44974] sizuma 
     ・[44978] shilfia 
     ・[44979] sizuma 
     ・[44999] tk 
     ・[45003] Dixq (管理人) 
     ・[45008] たかぎ 
     ・[45009] softya 
     ・[45052] shilfia 
     ・[45197] ちゃお 
     ・[45198] ちゃお 
     ・[45227] shilfia 
     ・[45233] たかぎ 
     ・[45272] shilfia 
     ・[45277] たかぎ 
     ・[45279] shilfia 
   ZeroMemoryが使えない ....   
     ・[45246] たかぎ 
     ・[45247] 山口 
     ・[45248] たかぎ 
     ・[45249] 山口 
     ・[45250] たかぎ 
     ・[45258] DVDM 
   VC++.netでcheckedLis ....   
     ・[45222] バグ 
     ・[45224] バグ 
     ・[45225] .net初心者 
     ・[45232] バグ 
     ・[45241] .net初心者  
     ・[45242] .net初心者  
   エラーが出たのですが   
     ・[45193] fatens 
     ・[45195] ZIKITETRY 
     ・[45196] softya 
     ・[45204] ZIKITETRY 
     ・[45221] softya 
     ・[45239] ZIKITETRY 
   ウイルス対策ソフトで ....   
     ・[45228] YuO 
     ・[45230] Lbfuvab 
     ・[45236] Justy 
   謎の白い縦線が出る   
     ・[45212] Justy 
     ・[45214] おむすび 
     ・[45215] おむすび 
     ・[45218] Justy 
     ・[45220] おむすび 
   VisualStadio2005の設 ....   
     ・[45211] SooA 
     ・[45219] wing 
   VC++.netでディレクト ....   
     ・[45141] .net初心者  
     ・[45150] バグ 
     ・[45151] pooka 
     ・[45156] .net初心者 
     ・[45203] .net初心者 
     ・[45216] net初心者 
   ホワイトフェード   
     ・[45166] SooA 
     ・[45189] Dixq (管理人) 
     ・[45210] mat 
     ・[45213] おむすび 
   無題   
     ・[45209] softya 
   音楽再生関数について   
     ・[45202] SooA 
     ・[45206] kms 
   3Dでのカメラの実装 ....   
     ・[45177] Justy 
     ・[45184] あ〜る 
     ・[45199] Justy 
     ・[45201] あ〜る 
   龍神録のサウンドノベ ....   
     ・[45142] kazuoni 
     ・[45147] Justy 
     ・[45161] 房州 
     ・[45162] SooA 
     ・[45164] SooA 
     ・[45168] 房州 
     ・[45178] SooA 
     ・[45194] 房州 
   ソースファイルの分割 ....   
     ・[45097] たかぎ 
     ・[45113] カイン 
     ・[45114] ねこ 
     ・[45115] たかぎ 
     ・[45116] たかぎ 
     ・[45140] カイン 
     ・[45159] たかぎ 
     ・[45191] カイン 
   プログラミングのエラ ....   
     ・[45175] たかぎ 
     ・[45181] トントン 
     ・[45183] 初級者 
     ・[45190] シノニム 
   AerobeatPlusのタイト ....   
     ・[45182] Justy 
     ・[45188] Dixq (管理人) 
   FPSを60に固定   
     ・[45090] kazuoni 
     ・[45093] PG 
     ・[45099] kazuoni 
     ・[45101] PG 
     ・[45105] kazuoni 
     ・[45106] PG 
     ・[45109] kazuoni 
     ・[45111] PG 
     ・[45118] kazuoni 
     ・[45122] PG 
     ・[45124] PG 
     ・[45187] Dixq (管理人) 

Name: KAO  ..ぴよぴよ(416ポイント)   Date: 2010/01/04(月) 23:42   No:45536       
Title: RyuJin.slnが実行できない    
初歩的な質問で申し訳ありません。
 
龍神録プログラミングの館の第1章で、オブジェクトをダウンロードし、1章のフォルダの中にあるRyuJin.slnを実行してみたのですが、その際に、Visual Studio 変換ウィザードと書かれたウインドウが開き、以下のメッセージが表示されました。

「現在開いているソリューションまたはプロジェクトは旧バージョンのVisual Studioで作成されたものです。このバージョンで使用される形式に変換してください。」

「次へ」のボタンを押すと「変換準備完了」と表示されたのですが、「完了」のボタンを押すと、さらに以下のメッセージが表示され、結局RyuJin.slnは実行できませんでした。

「ソリューションファイル
 'C:\Users\kaoru\AppData\Local\Temp\Temp1_project.zip\project\1章\Ryujin.slh'は変更できないため、このファイルを変換できません。このソリューションを変換するためには、ソリューションファイルのアクセス許可を変更して、ファイルを変更したり開いたりできるようにしてください。」
    


どのようにすれば、RyuJin.slnが実行できるようになるのか教えてもらえると大変助かります。

      
 環境  
  OS : Windows7
  コンパイラ名 : VC++ 2008Express Edition




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


Name: SooA [URL]  ..上級者(22,526ポイント)   Date: 2010/01/04(月) 23:53   No:45538     
Title: Re:RyuJin.slnが実行できない    
>Temp1_project.zip
zipファイルは圧縮されたファイルですので
解凍してから使用しましょう。


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

Name: KAO  ..ぴよぴよ(448ポイント)   Date: 2010/01/05(火) 00:46   No:45542 解決!     
Title: Re:RyuJin.slnが実行できない    
解凍したら実行できました。
本当ありがとうございます。


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



Name: たこ  ..ぴよぴよ(288ポイント)   Date: 2009/12/31(木) 13:50   No:45235       
Title: 26. シューティング基本について    
カウンターと言う語句が出てきておりますが、このカウンターが
どのような意味をするのかがよくわかりません。
回答をお願いします。 編集済み


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


Name: kazuoni [URL]  ..ハッカー(122,475ポイント)   Date: 2009/12/31(木) 14:04   No:45237     
Title: Re:26. シューティング基本について    
wiki -カウンター-
http://ja.wikipedia.org/wiki/%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC

このページでもカウンターは使われてますよね。
訪問者の数をカウント(数え上げ)してます。

26章で使われているcounterは初期状態もしくは、
エンターキーが押された次ループ状態から
5ループ間は何があっても新たな弾の出現はしないという意味合いかと思います。


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

Name: たこ  ..ぴよぴよ(298ポイント)   Date: 2009/12/31(木) 15:17   No:45238     
Title: Re:26. シューティング基本について    
玉と玉の間が5空間と言うことですか?


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

Name: 紅葉  ..中級者(11,820ポイント)   Date: 2009/12/31(木) 15:34   No:45240     
Title: Re:26. シューティング基本について    
大体のゲームは1秒60フレームという間隔で構成されております。
つまり毎フレーム1増えると1秒でカウンターは60溜まります。

5ループ間というのは環境によって違いますが5フレーム回ったら
つまり1/12秒たったら時だけ処理を行うということです。

60フレームと書かせていただきましたがこちらは環境依存ですので気をつけて下さい。


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

Name: kazuoni [URL]  ..ハッカー(122,533ポイント)   Date: 2009/12/31(木) 15:54   No:45243     
Title: Re:26. シューティング基本について    
> 玉と玉の間が5空間

「最低でも」5空間のが正しいですね。
if文では、エンターキーの判定の前にcounterが5に達しているかどうか
の判定を行っていますので。


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

Name: たこ  ..ぴよぴよ(232ポイント)   Date: 2009/12/31(木) 15:56   No:45244     
Title: Re:26. シューティング基本について    
う〜ん^^; すみません。よくわからいです…
if(counter<5)
counter++;
このインクリメントはいくつまで増加するってことですか???(?_?)



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

Name: kazuoni  ..ハッカー(122,800ポイント)   Date: 2009/12/31(木) 17:17   No:45252     
Title: Re:26. シューティング基本について    
if...elseの動作を理解していますか?

if(条件A) {文a} else if(条件B) {文b} else {文c}

条件A    true :    文a処理
    false:    条件Bへ

条件B    true:    文b処理
    false:    文cへ


なのでまず、counter<5がtrueかどうか判定します。
counterが(0)〜4のときはこの条件に合致するので、++counterです。
counterが5のときはこの条件に合致しないので、else ifの条件の判定を行います。
ここで、エンターキーが押されているかどうかを判定します。
押されていれば、弾の登録をしています。

なので、カウンターは最大5です。


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

Name: たこ  ..ぴよぴよ(0ポイント)   Date: 2010/01/01(金) 02:12   No:45280     
Title: Re:26. シューティング基本について    
そっか!  counterの値が5だったら 
 else if( Key[ KEY_INPUT_RETURN ]  == 1 )こっちの条件に行くんですね。
で、その後に、またcounterの値0にしてループして、counterの値は1になって、
if(counter<5)    の条件は成立して、
else if( Key[ KEY_INPUT_RETURN ]  == 1 )の処理は行われない。
で次に、
 for(i=0;i<10;i++){
〜以下省略〜
の文を次は処理するってことですよね???
counter=5になったら、
else if( Key[ KEY_INPUT_RETURN ]  == 1 )の処理にを行うですよね?
う〜ん… でもやっぱりcounterがどういう処理をするのかがいまいちピンと来ないなぁ…
やばいwwなんかかなりこんがらかってきた…
「エンターを押したときに連続で発射してしまわないようにする処置です。」
と書いてあって確かに連続で発射されなくなってるんですけど…


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

Name: kazuoni [URL]  ..ハッカー(123,083ポイント)   Date: 2010/01/01(金) 09:01   No:45284     
Title: Re:26. シューティング基本について    
文章からは理解しているように感じますが^^;

うまいかどうかわからないですが、
例えばレースゲームを思い出してください。(○ッジレーサー等)
ゲームだと「レディー・・・」の段階はどれだけアクセルを押してもスタートできないですよね。
(現実だとフライングがありますが・・・)
いつまでスタートできないかというとシグナル(信号)が赤から青になるまでです。
大体信号は2つですけど、今回はcounterがそれを勤めます。
なので、シグナルは5つです。その間は何を押してもスタートできません。
また、スタート可能状態になっても、アクセルを踏まなければスタートしません。
前レースがスタートしたら、再びシグナルは待ち状態になります。
(シグナルのカウントが0になる)

このようにすれば、前レースと次レースの間隔は最低でも5空きますよね。
これがシューティングでいう連射機能を抑える役目を担っているわけです。


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

Name: たこ  ..ぴよぴよ(69ポイント)   Date: 2010/01/04(月) 23:44   No:45537 解決!     
Title: Re:26. シューティング基本について    
すみません>< 返事が遅れてしまいました…
なるほど…レースのシグナルと考えるとわかりやすいですね^^
皆さんの回答のおかげ理解することができました。
ありがとうございます!


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



Name: 上杉謙信  ..ぴよぴよ(113ポイント)   Date: 2010/01/04(月) 18:51   No:45499       
Title: どうして?    
なぜ、DXライブラリーを導入する必要があるんですか?
コンパイルするだけでは、作れないのですか?
C言語で、石取りゲームなどを作るには、どうやって作るのですか?、コンパイラだけでは数字や文字を表示することしかできないですよね?。


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


Name: softya  ..比類無きプログラマー(81,448ポイント)   Date: 2010/01/04(月) 19:15   No:45506     
Title: Re:どうして?    
>なぜ、DXライブラリーを導入する必要があるんですか?
簡単にグラフィックを表示したいからですね。
※ 簡単にが重要ですよ。

>コンパイルするだけでは、作れないのですか?
C言語の標準関数だけではグラフィックを表示出来ないからです。
※ただし、WindowsOSなどの環境に限ってはの話で、昔のパソコンやマイコンではC言語だけでグラフィックを表示することが出来る物もあります。

>C言語で、石取りゲームなどを作るには、どうやって作るのですか?、コンパイラだけでは数字や文字を表示することしかできないですよね?。
石取りゲームの場合は、数さえ表示できれば良いので数字や文字だけ表示できれば十分では? 編集済み


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

Name: 上杉謙信  ..ぴよぴよ(194ポイント)   Date: 2010/01/04(月) 19:21   No:45508     
Title: Re:    
DXライブラリは、グラフィックを簡単にするためってことは、なくてもグラフィックを作ることは、可能なの
ですか?


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

Name: たかぎ [URL]  ..ハッカー(146,978ポイント)   Date: 2010/01/04(月) 19:23   No:45509     
Title: Re:    
> なくてもグラフィックを作ることは、可能なの 
ですか?

可能です。
そもそも、Windows以外ではDXライブラリは使い物になりません。


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

Name: MNS  ..プログラマー(28,341ポイント)   Date: 2010/01/04(月) 19:25   No:45510     
Title: Re:    
softyaさんが言うように、一部を除いて、標準のC言語のみではグラフィックを表示することは出来ませんが、
グラフィックを表示するだけなら、Win32APIや、DirectXなど、無数の方法があります。


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

Name: 上杉謙信  ..ぴよぴよ(200ポイント)   Date: 2010/01/04(月) 19:31   No:45512 解決!     
Title: Re:    
たいへんわかりやすい、解答ありがとうございます。

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



Name: ft  ..中級者(9,687ポイント)   Date: 2010/01/04(月) 18:36   No:45497       
Title: ホーミング弾の角度について    
こんばんは。
ホーミング弾の動作ですが、
サンプルのままですと敵を見つけた瞬間、自機ショットは敵に向かって行きますよね?
これを数カウント掛けて敵へ向くことで、なだらかな弧を描きながら角度を変えたいのですが、
どのようにしたらいいでしょうか?
if(cshot[k].angle!=atan2f(y,x))
cshot[k].angle+=atan2f(y,x)/20;

のような感じにして、20ループかけて敵へ向かうという方法が思い付いたのですが、
弾はクルクル回ったりして変な動きをし始めます。
恐らくatan2f(y,x)/20としているので、
cshot[k].angle==atan2f(y,x)にならないためだと思っているのですが…
何か上手く処理する方法はないでしょうか?


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


Name: Justy  ..伝説なるハッカー(491,007ポイント)   Date: 2010/01/04(月) 18:55   No:45500     
Title: Re:ホーミング弾の角度について    
 毎フレーム弾から敵方向の角度と弾の進行方向の角度との差を出して、
それを等分割するなり係数を掛けた角度を現在の角度に足せば少しずつ敵に向くと思います。


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

Name: ft  ..中級者(9,706ポイント)   Date: 2010/01/04(月) 19:11   No:45504 解決!     
Title: Re:ホーミング弾の角度について    
できました、ありがとうございます!

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



Name: 天和  ..中級者(12,856ポイント)   Date: 2010/01/03(日) 14:02   No:45449       
Title: カレントディレクトリ内にある.cファイルの検索    
カレントディレクトリ内にある.cファイルのすべてを大将にしてその次に検索したい言葉を入力して
ファイル名と検索したい言葉がある行の文章そしてその行の行数を出力するプログラムを作りたいのですが。
できれば前回のプログラムソース(http://www.play21.jp/board/formz.cgi?action=res&resno=45427&page=&id=dixq&rln=45446
をもとに作るようなソースコードがいいです。
#include<stdio.h>
int main(void)
{
char ch;
FILE *fp;
char fname[99]; /*検索したいファイル名*/
char word[99]; /*検索したい文字列*/
char string[1024];
int i, j, n, s, count;
int count2 = 0;/*行の文字数*/
int count3 = 0;/*forループ用*/
int flag = 0;

i = 0;/*行数用の数字*/
j = 0;/*j番目の文字列*/
n = 0;/*検索したい文字列が何文字あっているか?*/
s = 0;/*検索したい文字列の文字数*/
count = 0;
printf("FILEname?\n");
scanf("%s", fname);
printf("検索したい文字は?");
scanf("%s", word);
while(1){    /*検索したい文字列は何文字か判定する*/
if(word[j] == '\0')/*ヌル文字があったら測定終了*/
break;
s++;
j++;
}
j = 0;/*また1文字目からやり直すためにいったんリセット*/

if((fp = fopen(fname, "r")) == NULL)/*検索したいファイル名は存在しますか?*/
printf("ERROR");
else{
/*最初の行数*/
i++;

while((ch = fgetc(fp)) != EOF){
string[count2] = ch;
count2++;

if(count == 0){/*1文字前の判定1文字前が検索したい文字列の中の1文字でないなら検索したい文字列の1文字目からやり直し*/
j = 0;
n = 0;
}
if(ch == word[j])/*検索したい言葉のj番目とおなじもじですか?*/
{
n++;/*同じ文字かの正解数を1つあげる*/
count++;/*現在の文字が正解か否かの判定*/
j++;/*検索したい次の文字にチャレンジする*/
}
else{
count = 0;/*不合格なので検索したい最初の文字からやり直し*/
}

if(s == n){/*もし検索したい文字数と正解数が一緒ならその行を出力しなさい*/
printf("%d:", i);
flag = 1;
j = 0;
n = 0;
}
if(ch == '\n'){/*もし改行なら行番号をあげなさい*/
i++;
string[count2] = '\0';
if(flag == 1){
count3 = 0;/*forループにしよう*/

for(; count3 < count2 + 1; ++count3)
{
printf("%c", string[count3]);
}
}
count2 = 0;
flag = 0;
}
}
fclose(fp);
}
return 0;
}

まずはファイルを一つではなく全対象にする方法をお願いします
コンパイラはGCC
技術レベルはfopenが使える程度です。



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


Name: MNS  ..プログラマー(28,292ポイント)   Date: 2010/01/03(日) 14:30   No:45452     
Title: Re:カレントディレクトリ内にある.cファイルの検索    
このままだと、いわゆる"丸投げ"になってしまうので、
ある程度のところまでは自身でやる必要があります。
FindFirstFile()、 FindNextFile()、FindClose()あたりを調べてみてください。

必要なことは、適当な変数をグローバル変数にすることと、

if((fp = fopen(fname, "r")) == NULL)/*検索したいファイル名は存在しますか?*/

これ以降を関数化することです。


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

Name: dic  ..熟練のプログラマー(47,072ポイント)   Date: 2010/01/03(日) 14:37   No:45453     
Title: Re:カレントディレクトリ内にある.cファイルの検索    
見やすいように
ペタリ
#include<stdio.h>
int main(void)
{
    char ch;
    FILE *fp;
    char fname[99]; /*検索したいファイル名*/
    char word[99]; /*検索したい文字列*/
    char string[1024];
    int i, j, n, s, count;
    int count2 = 0;/*行の文字数*/
    int count3 = 0;/*forループ用*/
    int flag = 0;

    i = 0;/*行数用の数字*/
    j = 0;/*j番目の文字列*/
    n = 0;/*検索したい文字列が何文字あっているか?*/
    s = 0;/*検索したい文字列の文字数*/
    count = 0;
    printf("FILEname?\n");
    scanf("%s", fname);
    printf("検索したい文字は?");
    scanf("%s", word);
    while(1){    /*検索したい文字列は何文字か判定する*/
        if(word[j] == '\0')/*ヌル文字があったら測定終了*/
            break;
        s++;
        j++;
    }
    j = 0;/*また1文字目からやり直すためにいったんリセット*/

    if((fp = fopen(fname, "r")) == NULL)/*検索したいファイル名は存在しますか?*/
        printf("ERROR");
    else{
        /*最初の行数*/
        i++;

        while((ch = fgetc(fp)) != EOF){
            string[count2] = ch;
            count2++;

            if(count == 0){/*1文字前の判定1文字前が検索したい文字列の中の1文字でないなら検索したい文字列の1文字目からやり直し*/
                j = 0;
                n = 0;
            }
            if(ch == word[j])/*検索したい言葉のj番目とおなじもじですか?*/
            {
                n++;/*同じ文字かの正解数を1つあげる*/
                count++;/*現在の文字が正解か否かの判定*/
                j++;/*検索したい次の文字にチャレンジする*/
            }
            else{
                count = 0;/*不合格なので検索したい最初の文字からやり直し*/
            }

            if(s == n){/*もし検索したい文字数と正解数が一緒ならその行を出力しなさい*/
                printf("%d:", i);
                flag = 1;
                j = 0;
                n = 0;
            }
            if(ch == '\n'){/*もし改行なら行番号をあげなさい*/
                i++;
                string[count2] = '\0';
                if(flag == 1){
                    count3 = 0;/*forループにしよう*/
                    for(; count3 < count2 + 1; ++count3)
                    {
                        printf("%c", string[count3]);
                    }
                }
                count2 = 0;
                flag = 0;
            }
        }
        fclose(fp);
    }
    return 0;
}

>まずはファイルを一つではなく全対象にする方法をお願いします
#define    DEF_NUM    10
    char    filename[DEF_NUM][99];
    int    i;
    for( i=0; i<DEF_NUM; i++ )
    {
        printf( "検索したファイル名は?:" );
        scanf( "%s", filename[i] );
    }

でいいかと思います


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

Name: qwerty  ..ぴよぴよ(796ポイント)   Date: 2010/01/03(日) 15:49   No:45457     
Title: Re:カレントディレクトリ内にある.cファイルの検索    
思うのですが、質問者はもう少し(本来ならば回答者以上に)自分の書いた文章を推敲するべきです。
なにも完璧に仕上げる必要はありませんし、不可能でしょうが、ある程度はやるべきです。
見ていると、一度見直せばすぐ気付くような誤字が多かったり、表現の統一性がありません。
これは技術レベル云々よりも、センスの問題です。


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

Name: 天和  ..中級者(12,881ポイント)   Date: 2010/01/03(日) 16:00   No:45459     
Title: Re:カレントディレクトリ内にある.cファイルの検索    
>qwertyさん
すいません以後気をつけます


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

Name: qwerty  ..ぴよぴよ(901ポイント)   Date: 2010/01/03(日) 16:55   No:45462     
Title: Re:カレントディレクトリ内にある.cファイルの検索    
カレントディレクトリにあるファイル一覧を取得する方法ですが、
FindFirstFile()などのAPIを用いても良いと思いますが、
windows.hというヘッダを別にインクルードしなければなりません。

system関数を利用して環境にあった方法で、
カレントディレクトリにあるファイル一覧をテキストファイル形式で出力させ、
それを読み込むこともできます。
多くの場合は[ファイル一覧表示コマンド] > [出力ファイル名]でファイルをはいてくれます。


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

Name: 天和  ..中級者(12,948ポイント)   Date: 2010/01/04(月) 17:07   No:45490     
Title: Re:カレントディレクトリ内にある.cファイルの検索    
>qwertyさん
おおーありがとうございます
system(ls > ファイル名);
とやったらそこにファイル内にファイル名の一覧が載ってました
おかげで何とかなりそうですありがとうございましたー。


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

Name: 天和  ..中級者(12,970ポイント)   Date: 2010/01/04(月) 17:07   No:45491 解決!     
Title: Re:カレントディレクトリ内にある.cファイルの検索    
連レスすいません
解決しました。


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



Name: dic  ..熟練のプログラマー(46,402ポイント)   Date: 2010/01/03(日) 14:17   No:45451       
Title: アルファブレンディング(フェードイン・フェードアウト)    
DxLibは使ってないのですが、自作のライブラリで
アルファブレンディング(フェードイン・フェードアウト)を
行いたいのです
本を参考に下のソースまではできたのですが、付属のCD-ROMをなくしてしまい
かんじんなところがわからない状態です

サーフェイスをロックして、書き込むのですが、反映されません
どうやれば、反映されるのでしょうか?


////////////////////////////////////////////////////////////////////////////////////////////////////////
void    DXDRAW3::Test( LPDIRECTDRAWSURFACE7 *pSurface, int i )
{
    UINT    pPixel;
    DDSURFACEDESC2    ddsd;
    
    ZeroMemory( &ddsd, sizeof(ddsd) );
    ddsd.dwSize = sizeof(ddsd);
    if( (*pSurface)->Lock( NULL, &ddsd, DDLOCK_WAIT, NULL ) == DD_OK )
    {
        char    hoge[80];
        int    x = 50;
        int    y = 50;
        for( x=0; x<50; x++ )
        {
            for( y=0; y<50; y++ )
            {
                pPixel = (UINT)ddsd.lpSurface + y * ddsd.lPitch + x;

                pPixel += 1;    //    反映されない
            }
        }

        (*pSurface)->Unlock(NULL);
    }
}




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


Name: たかぎ [URL]  ..ハッカー(146,822ポイント)   Date: 2010/01/03(日) 18:37   No:45467     
Title: Re:アルファブレンディング(フェードイン・フェードアウト)    
> 自作のライブラリで

では、自作のライブラリそのもの(できればソースも)とドキュメントを補足しないと、誰も適切な回答ができないと思います。


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

Name: Justy  ..伝説なるハッカー(490,878ポイント)   Date: 2010/01/03(日) 19:50   No:45473     
Title: Re:アルファブレンディング(フェードイン・フェードアウト)    
 せめて環境くらい書きましょう。

 DirectDrawを使って自作ライブラリを作っている、といったところでしょうか。


> どうやれば、反映されるのでしょうか? 


    pPixel = (UINT)ddsd.lpSurface + y * ddsd.lPitch + x;
    pPixel += 1;    //  反映されない


 pPixelに期待する役割はなんとなく想像できますが、pPixelの型が Windows環境でよく使われる
UINT……unsigned intだとするならば、このコードでは pPixelは期待通りに機能していないでしょう。

 なぜなら整数型である pPixelに対して代入したり +1をしても、ただローカル変数の値が変わるだけで、
(ループ内では)サーフェースに対するアクセスは一切行われないからです。

 それどころか最適化してコンパイルしたら2重ループごとさくっと消えて無くなってしまいそうです。


 “まずは” pPixelをポインタにするべきでしょう。

DirectDrawメモ (10、ロック、アンロックによるドット描画)
http://m-niwa.hp.infoseek.co.jp/DirectX/directdraw.html

Microsoft DirectX 開発者 FAQ (サーフェスに対して 1 つのピクセルをどのように書きますか)
http://msdn.microsoft.com/ja-jp/library/cc973416.aspx


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

Name: dic  ..熟練のプログラマー(47,290ポイント)   Date: 2010/01/04(月) 16:58   No:45489 解決!     
Title: Re:アルファブレンディング(フェードイン・フェードアウト)    
>たかぎさん、Justyさん
回答ありがとうございます
環境が今回は、必要でしたね すいません
LPDIRECTDRAWSURFAcE7 ってあるんで、分かると思ったのですが

DirectX 7 の環境です

ライブラリといいましたが、必要な部分のみ掲載しました


>リンク先
とてもわかりやすいサイトをありがとございます

そうですね、ローカル変数にいくら変更を加えても意味ないですね
なかなかロックという概念が理解できていないのです

リンク先を参考に改良します
また、つまづいたら質問します


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



Name: ft  ..初心者(8,849ポイント)   Date: 2009/12/30(水) 23:58   No:45223       
Title: ボス出現時にオプションショットが描かれない状態    
こんばんは。
オプションショットの挙動がおかしいので質問させていただきます。

自機弾の画像を、
@通常弾・・・img_cshot[0]としてload
Aオプションからのホーミング弾・・・img_cshot[1]としてload
Bオプションからの低速移動時のホーミング弾・・・img_cshot[2]としてload
の3種類を用意して新たにAとBをオプションショットとして実装してみたのですが、
ボス出現と同時にBの弾が表示されなくなってしまいます。
img_cshot[2]だけでなく、img_cshot[3]img_cshot[4]…以降のハンドルで読み込んだ画像も
ボス出現と同時に表示されなくなってしまいます。
オプションショットは第49章のような方法の実装ではなく、
第17章に画像と発射座標をオプションに変えたショットを追加しただけです。
弾が消えてもダメージは通るので一応計算はされているようです。

また自機ショットの構造体以外にオプションショットの構造体を別個用意して、
別々に計算させたところ正常に描画され、ボス出現時に消えるということはありませんでした。
ただこれですと当たり判定にオプションショット用の関数を用意しないといけないため、
処理的に良くありません。


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


Name: Justy  ..伝説なるハッカー(489,180ポイント)   Date: 2010/01/02(土) 00:59   No:45346     
Title: Re:ボス出現時にオプションショットが描かれない状態    

> 弾が表示されなくなってしまいます

 いろいろ可能性があるので、ソース一式を見ないとよく判らないのですが。
 
 とりあえず、画面の隅の方にでも常に位置固定で img_cshot[2]や img_cshot[3]を表示してみて
ボスが登場したときにその画像がどうなるか見てください。

 もし、ボス登場と同時にその画像が消えたら、何らかの原因でimg_cshot[2]や img_cshot[3]の値が
変化しているか、イメージが破棄されてしまっている可能性があります。

 変化しなかった場合は、ボスが登場して表示されなくなった段階で img_cshot[2]や img_cshot[3]の弾を
描画しようとしているところで処理をデバッガで止めて、描画に絡みんでいる座標などの変数に異常がないかを
確認してください。

 まずはそんなところでしょうか。


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

Name: ft  ..初心者(8,992ポイント)   Date: 2010/01/02(土) 19:44   No:45392     
Title: Re:ボス出現時にオプションショットが描かれない状態    
まずイメージの破棄はされていない様でした。
そこでimg_cshot[2]で描画しているショットの座標を表示させていたところ、
ボス出現とともに最後に表示された座標でピタっと止まってしまいました。
またショットボタンを押し直すと発射点と思われる座標に更新されます。
オプションショットだけでなく通常ショットもimg_cshot[2]で描画すると同様の状態になりました。


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

Name: Justy  ..伝説なるハッカー(490,122ポイント)   Date: 2010/01/02(土) 22:20   No:45403     
Title: Re:ボス出現時にオプションショットが描かれない状態    

> ボス出現とともに最後に表示された座標でピタっと止まってしまいました

 そのとき、弾の出現フラグ(.flag)はどうなっていますか?


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

Name: ft  ..中級者(9,019ポイント)   Date: 2010/01/02(土) 22:46   No:45404     
Title: Re:ボス出現時にオプションショットが描かれない状態    
ボス出現でフラグは0のままとなってしまいます.
ん,なんでだろう…


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

Name: Justy  ..伝説なるハッカー(490,161ポイント)   Date: 2010/01/02(土) 22:51   No:45405     
Title: Re:ボス出現時にオプションショットが描かれない状態    
 ボスが出現した瞬間に誰か(何か)によって、オフにされてしまったんでしょうね。
 それを突き止めれば解決しそうな予感がします。


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

Name: ft  ..中級者(9,054ポイント)   Date: 2010/01/02(土) 23:04   No:45407     
Title: Re:ボス出現時にオプションショットが描かれない状態    
試しにimg_cshot[1]を描画した場合のパラメータは正常動作をしました。
各所見直してみます。


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

Name: ft  ..中級者(9,293ポイント)   Date: 2010/01/02(土) 23:45   No:45410     
Title: Re:ボス出現時にオプションショットが描かれない状態    
問題解決ではありませんが、試しに
グラフィックはocshotという構造体で、フラグや座標計算その他はcshot構造体のまま
という感じで構造体を新たに用意して担当分けすることで、
ボス出現時にimg_cshot[2]の自機ショットが消えるという症状はなくなりました。
各所のcshot[k].kndをocshot[k].kndと変えただけで各パラメータは正常動作するようになりました。
グラフィックを制御する構造体を変えただけなので描画関数や当たり判定を新たに用意する必要がないのですが、
cshotが不安なので引き続き見直してみたいと思います。


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

Name: Justy  ..伝説なるハッカー(490,290ポイント)   Date: 2010/01/02(土) 23:57   No:45411     
Title: Re:ボス出現時にオプションショットが描かれない状態    
 
 現象だけを見ると、なんかメモリを壊しているような感じもしますね。
 

> 引き続き見直してみたいと思います

 そうですね。ここで直しておかないと、後でまた再発するかもしれませんから。
 頑張って下さい。


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

Name: ft  ..中級者(9,380ポイント)   Date: 2010/01/03(日) 00:14   No:45412     
Title: Re:ボス出現時にオプションショットが描かれない状態    
PSPという環境ですので、もしかしたらハード側やライブラリに何らかの問題があるのかもしれません。
ですが、恐らくその可能性は低いと思うのでまずは自分のコードを疑って掛かることにします。
ありがとうございました!


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

Name: Naohiro19  ..入門者(2,729ポイント)   Date: 2010/01/04(月) 08:25   No:45482     
Title: Re:ボス出現時にオプションショットが描かれない状態    
ftさん>
解決ボタンの押し忘れです。


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

Name: ひよこ  ..比類無きプログラマー(77,411ポイント)   Date: 2010/01/04(月) 12:10   No:45483     
Title: Re:ボス出現時にオプションショットが描かれない状態    
img_cshot[3];ってそのままだと宣言されているので
img_cshot[3]img_cshot[4]…はそのままだとメモリが破壊されると思います。


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



Name: Ma  ..プログラマー(25,924ポイント)   Date: 2010/01/02(土) 10:15   No:45363       
Title: 【雑談】常時行われるデータの送受信    
ちらっと思った疑問です。
C言語関係ありません、すいません。

ネット接続のステータスを見ると常になんらかのデータのやりとりが行われているようですが、
どのようなデータを、またどこと送信や受信をしているのでしょか?

Windows のネット接続ステータスを見る限り、
私の環境で今の状態では大体、役10秒毎に100バイト程度送り、毎秒500バイト程度受信をしているようです。
(数値はかなりおおまかです。)

ブラウザ、P2P系、メッセンジャー、メール、等、思いつく限りのネット接続してそうなアプリは終了しています。

私の予想は、受信側はアプリではないなんらかの常住ソフトやwindowsがアップデートを常に確認しているのではないかな、と思ってます。
送信側は、、、なんでしょうね・・・。

ネット関連はぜんぜん詳しくない身なので、あまり専門的でなく簡単に説明していただけるだけでも十分です。
(用途、通信先等だけでも) 編集済み


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


Name: Ma  ..プログラマー(25,947ポイント)   Date: 2010/01/02(土) 10:17   No:45364     
Title: 追記    
書き忘れましたが、環境は
Windwos 7 Home Premium です。


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

Name: ぽこ  ..入門者(3,355ポイント)   Date: 2010/01/02(土) 11:18   No:45367     
Title: Re:【雑談】常時行われるデータの送受信    
私も専門家ではありませんが、まずはWireShark等、パケットキャプチャソフトで
確認されてみてはいかがでしょうか?
少なくとも、プロトコルくらいは分かると思います。


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

Name: dic  ..熟練のプログラマー(45,872ポイント)   Date: 2010/01/02(土) 14:21   No:45378     
Title: Re:【雑談】常時行われるデータの送受信    
svchost.exeってWindows7でもまだあるんでしょうかね
システム権限で送受信してるものもあったと
昔色々調べてたら出てきた記憶が・・・

ちょっとあいまいなので、はっきりしませんが


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

Name: Ma  ..プログラマー(26,035ポイント)   Date: 2010/01/03(日) 06:09   No:45426     
Title: Re:【雑談】常時行われるデータの送受信    
>WireShark等
さっそくやってみます。
ありがとうございます。結果が分かり次第報告しにきます。

>svchost.exeってWindows7でもまだあるんでしょうかね 
なくなってますねー。
少なくとも私の環境で今の状態では表示されていませんでした。 編集済み


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

Name: softya  ..比類無きプログラマー(80,051ポイント)   Date: 2010/01/03(日) 12:55   No:45439     
Title: Re:【雑談】常時行われるデータの送受信    
私の知る限りでは、常に他にどんなコンピュータがLAN上にいるかブロードキャスト通信が行われています。
これは定期的に行われていますので、結構な頻度だと思います。

「NetBIOS over TCP/IP」
http://www.atmarkit.co.jp/fwin2k/network/baswinlan018/baswinlan018_01.html


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

Name: とおり  ..ぴよぴよ(290ポイント)   Date: 2010/01/03(日) 18:29   No:45464     
Title: Re:【雑談】常時行われるデータの送受信    
タスクマネージャを起動すると、プロセスタブに、「すべてのユーザーのプロセスを表示」ボタンがあります。これをクリックするすると、svchost.exeが確認できます。svchost.exeというのはWindowsのサービスを実行するのに必要なものです。

またWindows7では、タスクマネージャーのパフォーマンスタブに、リソースモニターというボタンがあります。
これで、リソースモニターを起動して、ネットワークタブを選択すると、どのプログラムがネットワークを使っているかわかります。

たとえば、svchost.exe(LocalServicePeerNet)というのがあったら、以下のようにサービスが実行されています。

C:\Windows\System32\svchost.exe -k LocalServicePeerNet

私も詳しくは知りませんが、このsvchost.exe(LocalServicePeerNet)は、Peer Networking Groupingなどのサービスで、受信処理を行っていました。

また、私の環境ではリソースモニターで確認すると、家庭用ルータからのブロードキャストなども確認できました。他にもSystemプロセスや、svchost.exe(xxx)という名称で動いているので、xxxに書かれている言葉をGoogle検索などで調べていけば、何のサービスが通信を行っているかわかると思います。


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

Name: Ma  ..プログラマー(26,138ポイント)   Date: 2010/01/04(月) 06:00   No:45481 解決!     
Title: Re:【雑談】常時行われるデータの送受信    
>WireShark等 
わからないIPだらけで結局よくわかりませんでした。


softya と とおり  さん
返信ありがとうございます!


とおりさんの方法でかなり分かりました。
System

hasplms.exe 
が動いていたようでした。
詳細はグーぐる先生に聞きたいと思います。
解決しました。


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



Name: yrao  ..上級者(15,195ポイント)   Date: 2010/01/02(土) 19:39   No:45391       
Title: レーザーの連続照射について    
あけましておめでとうございます。
 
またもボス弾幕関連の質問なのですが・・・ 
 
今回はレーザーを次々に撃たせる方法について知りたくて質問させてもらいまいた。
 
 
図のように、

前に撃ったレーザーがまだ残っている間に次のレーザーを撃つ, 

ということをしたいのです。例えば、
 

//レーザー発射関数です
int lazer_way( double x , double y , int way , double wayangle , double angle , int length , int haba , int hantei  , int col , int flag , int state){
int i,k;
 for(i=0;i<way;i++){
        if((k=search_boss_shot())!=-1){
            if((k=search_lazer())!=-1){

                lazer[k].startpt.x = x;
                lazer[k].startpt.y = y;
                lazer[k].length    = length;
                lazer[k].haba      = haba;
                lazer[k].hantei    = hantei;
                lazer[k].col       = col;
                lazer[k].flag      = flag;
                lazer[k].angle       = angle-wayangle*(way/2)+wayangle*i;
                lazer[k].state     = state;
                lazer[k].knd       = 0;
                lazer[k].cnt       = 0;
            }
}
}
return k;
}    

void boss_shot_bulletH025(){
    int i,k,t=boss_shot.cnt%120;

    if(t==0)lazer_way(0+100  ,100,8,PI2/8 ,PI/2+rang(PI2/16),400,1,0,0,1,0);
    if(t==40)lazer_way(FMX-100,100,8,PI2/8,PI/2+rang(PI2/16),400,1,0,1,1,1);

    for(i=0;i<LAZER_MAX;i++){
        if(lazer[i].state==0){
            if(t==20){
                lazer[i].haba=20;
                lazer[i].hantei=0.8;
            }
            if(t>30 && t<=70)lazer[i].haba-=0.5;
            if(t==70)lazer[i].flag=0;
        }
    }
    for(k=0;k<LAZER_MAX;k++){
        if(lazer[k].state==1){
            if(t==60){
                lazer[k].haba=20;
                lazer[k].hantei=0.8;
            }
            if(t>70 && t<=110)lazer[k].haba-=0.5;
            if(t==110)lazer[k].flag=0;
        }
    }



}

のような感じです。 しかし、 この弾幕は問題なく動作するのですが、次のような弾幕を作ったときに、 明らかに自機はレーザーに触れていないのにもかかわらず、自機が被弾する、 という現象が起きてしまい困っています・・ 被弾しないときもあるのですが、大抵の場合被弾します(レーザーの方向がまちまちになる時はほとんどといってもいい程です) それと、わざわざ引数を複数使ってレーザーを撃つのも効率が悪い気がします・・・ ほかに良い方法はないでしょうか? 昨日から考えているのですが、自分ではどうにも解決できなさそうです・・・ アドバイスよろしくお願いしますm()m

void boss_shot_bulletH026(){
     int k,l,t=boss_shot.cnt%800;
    
    if(t==130 || t==200 || t==270 || t==340 || t==410)input_phy_pos(ch.x,FMY/2+rang(FMY/4),60);
    if(t==500)input_phy_pos(FMX/2,100,80);

    if(t==190)lazer_way(boss.x,boss.y,1,PI2/10,bossatan2(),600,1,0,1,1,0);
    if(t==260)lazer_way(boss.x,boss.y,1,PI2/10,bossatan2(),600,1,0,0,1,1);
    if(t==330)lazer_way(boss.x,boss.y,1,PI2/10,bossatan2(),600,1,0,1,1,2);
    if(t==400)lazer_way(boss.x,boss.y,1,PI2/10,bossatan2(),600,1,0,0,1,3);
    if(t==470)lazer_way(boss.x,boss.y,1,PI2/10,bossatan2(),600,1,0,1,1,4);

    
    for(k=0;k<LAZER_MAX;k++){
        if(lazer[k].state==0){
            if(t==700){
                lazer[k].haba=20;
                lazer[k].hantei=0.8;
            }
            if(t>700 && t<=710)lazer[k].haba-=2;
            if(t==711)lazer[k].flag=0;
        }
    }
    for(l=0;l<LAZER_MAX;l++){
        if(lazer[l].state==1){
            if(t==707){
                lazer[l].haba=20;
                lazer[l].hantei=0.8;
            }
            if(t>707 && t<=717)lazer[l].haba-=2;
            if(t==718)lazer[l].flag=0;
        }
    }
    for(k=0;k<LAZER_MAX;k++){
        if(lazer[k].state==2){
            if(t==714){
                lazer[k].haba=20;
                lazer[k].hantei=0.8;
            }
            if(t>714 && t<=724)lazer[k].haba-=2;
            if(t==725)lazer[k].flag=0;
        }
    }
    for(l=0;l<LAZER_MAX;l++){
        if(lazer[l].state==3){
            if(t==721){
                lazer[l].haba=20;
                lazer[l].hantei=0.8;
            }
            if(t>721 && t<=731)lazer[l].haba-=2;
            if(t==732)lazer[l].flag=0;
        }
    }
    for(k=0;k<LAZER_MAX;k++){
        if(lazer[k].state==4){
            if(t==728){
                lazer[k].haba=20;
                lazer[k].hantei=0.8;
            }
            if(t>728 && t<=738)lazer[k].haba-=2;
            if(t==739)lazer[k].flag=0;
        }
    }    


}

     編集済み


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


Name: あ〜る  ..上級者(16,048ポイント)   Date: 2010/01/03(日) 00:25   No:45414     
Title: Re:レーザーの連続照射について    
やってみたら普通に動きましたよ…?
当たり判定を表示してみたりしたらどうなりますか?

というか面白いレーザーの使い方ですね、多分パクります(笑)


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

Name: yrao  ..上級者(15,425ポイント)   Date: 2010/01/03(日) 02:08   No:45423     
Title: Re:レーザーの連続照射について    
あ〜るさん、再びどうもです。

設置→起爆 のイメージのレーザーを作りたくて、その簡易版として試作してみたのがこの弾幕です。
こんなのでよければ、どうぞパクってください(笑)



被弾しませんか・・・
おかしいですね(-_-;
確かに、被弾しないときもあるのですが・・・



画像は、このバグ(?)で被弾したときの様子です。
レーザーにも弾にも当たってはいないと思います・・・
 
あと、被弾のタイミングですが、その時によって違うようです。
最後のレーザーの時もあれば、2本めと3本目の間の時もあります。


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

Name: あ〜る  ..上級者(16,117ポイント)   Date: 2010/01/03(日) 11:11   No:45432     
Title: Re:レーザーの連続照射について    
おはようございます

とりあえずレーザー当たり判定計算が3つありますよね?
それを一つずつコメントアウトしたりして判定しないようにして、どこが誤判定になってるか調べてみて下さい


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

Name: あ〜る  ..上級者(16,012ポイント)   Date: 2010/01/03(日) 11:30   No:45433     
Title: Re:レーザーの連続照射について    
多分僕が考えてる理由と同じなら、
get_sita関数内の

theta=atan2(s,t)

の前に

if(s!=0 && t!=0)

っていう条件を入れれば直ると思います
違ったらすいません、すいませんというかわかりません、申し訳ないです


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

Name: Justy  ..伝説なるハッカー(490,755ポイント)   Date: 2010/01/03(日) 14:15   No:45450     
Title: Re:レーザーの連続照射について    

> 条件を入れれば直ると思います

 あんまりよくわかっていないんですが、それだと戻り値 thetaが不定になるような。

 ひょっとしたら out_lazer関数の判定で、レーザーの幅が 0以下だったら判定しないようにすれば
改善されるかもしれません。


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

Name: あ〜る  ..上級者(15,916ポイント)   Date: 2010/01/03(日) 14:49   No:45454     
Title: Re:レーザーの連続照射について    

>>Justyさん

前に同じ様なバグが僕にも起こって、それで質問したらこうするように言われたんで、もしかしたら同じかなぁ?と思いました

細かい経緯は忘れてしまったので過去ログみないとわからないです……
でも確かに両方0の時はどうなってんでしょうね、これ…(-.-;)


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

Name: Justy  ..伝説なるハッカー(490,809ポイント)   Date: 2010/01/03(日) 15:20   No:45456     
Title: Re:レーザーの連続照射について    

> もしかしたら同じかなぁ

 直接的な原因としては多分そのあたりだと思います。
 
 atan2の引数両方が 0の場合は定義域エラーですので、対処としては部分的にあっているのるのですが、
処理できなかったことを get_sita関数の戻り先に通知しない&戻り値 thetaが未初期化のままなのが
問題になります。



> 両方0の時はどうなってんでしょうね

 両方が0になるということは、レーザーの幅が0のときでこの場合角度を求めるのに必要な3点のうち2点が
同じ位置にあるなので角度が出せない状態の時だと思われます。

 なので、幅が0ならレーザーは存在しないものとしてあたり判定から外してしまえばいいかと
考えたのですが、私はあまり龍神録には明るくないのでこれでいいのかどうかはレーザーシステムの
設計者に訊かないと判りません。


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

Name: yrao  ..上級者(15,542ポイント)   Date: 2010/01/03(日) 20:44   No:45475     
Title: Re:レーザーの連続照射について    
あ〜るさん、Justyさん、どうもありがとうございますm(__)m
 
なんか…質問者なのに話し合いに参加できなくてすみません(+_+)
 
 
エラーの方ですが、
最終的に、out_lazer()で1を返す直前に、(lazer[i].haba<0)の条件を入れたところ、解消されたようです。

ありがとうございました<(__)>



…エラーの原因はなんだったのでしょうかね……
 
既に消したはずのレーザーが、再び、撃たれたことになっていた
…ということでしょうか?


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

Name: あ〜る  ..上級者(16,122ポイント)   Date: 2010/01/03(日) 20:56   No:45477     
Title: Re:レーザーの連続照射について    
今過去ログみてみたら全く関係なかったです、すいません…
で、間違ったこと教えて申し訳無かったんで過去ログ調べまくった結果
hitjudge_square_and_circle関数内の長方形の中に物体が入り込んでいるかどうかを判定の部分の

if(0<=theta && theta<=PI/2 && 0<=theta2 && theta2<=PI/2)



if(0<theta && theta<=PI/2 && 0<theta2 && theta2<=PI/2)

にすれば直るようです
結構みんななってるようです
というか僕もなったんですけど当たり判定自体をしないようにしただけでした(-.-;)

変な事いって申し訳ないです…



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

Name: あ〜る  ..上級者(16,123ポイント)   Date: 2010/01/03(日) 21:25   No:45478     
Title: Re:レーザーの連続照射について    
あう、すれ違っとる…
まぁ直ったんなら良かったです(^-^)


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

Name: yrao  ..上級者(15,611ポイント)   Date: 2010/01/03(日) 23:43   No:45480     
Title: Re:レーザーの連続照射について    
過去ログまで調べていただいて…
なんだか逆に申し訳ないです('_';
 
 
 
さっき、

lazer[i].haba<0
の分岐で解決した

と言ったのですが、解決してませんでした…

これでは、逆にレーザーに自機当たらなくなってしまいますね…
エラーで被弾しなくなったのをいいことに、普通に表示されるレーザーでは被弾するのかを確認し忘れていました(-.-;
やるとしたら、
lazer[i].haba>0ですね…
 
 
 
あ〜るさんのおっしゃった通り、長方形の当たり判定の部分を変更したところ、無事、エラーは無くなりました。
どうもありがとうございましたm(__)m 編集済み


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



Name: 428  ..ぴよぴよ(42ポイント)   Date: 2010/01/01(金) 14:05   No:45300       
Title: 無題    
あけましておめでとうごさいます。
以前質問したんですが名前は忘れてしまったので新たにしました。

[1]ソースファイルのscoreとういうすべての変数をsave.scoreになおしたいのですが
この操作を簡単にできるエディタを教えてください。これができると例えば漢字の間違いなどが
起こったとき非常に便利なので知りたくなりました。

[2]DXライブラリである部分をぼかしたいです。どのようにすればいいのですか?もし、よろしければ関数が
あれば示してくださるとうれしいです。

[3]透過処理についてです。私はttp://homepage2.nifty.com/pyonpyonpyopyon/でロゴを作成していますが
透過処理すると文字の周りが白抜きにされて非常にいやです。今まで(今でも)拡大して文字の淵を塗って直しています。白抜きにならない簡単な方法はありますか? 知ってたら教えてください。

以上の3点です。どれでもよいのでお願いします。


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


Name: バグ  ..ハッカー(182,913ポイント)   Date: 2010/01/01(金) 14:32   No:45302     
Title: Re:無題    
とりあえず1の質問についてですが、VisualStudioで可能です。
あとは置換機能のあるテキストエディタなら可能ですね。
私はEmEditorの有料版を使用していますが、フリー版でも充分便利なのでオススメです。


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

Name: 428  ..ぴよぴよ(51ポイント)   Date: 2010/01/01(金) 14:40   No:45303     
Title: Re:無題    
すいません。本当にわからないで、どうやってやるか
記述してほしいです・・・。


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

Name: kazuoni [URL]  ..ハッカー(123,214ポイント)   Date: 2010/01/01(金) 14:44   No:45304     
Title: Re:無題    
> [1]
メモ帳でもありますが、「編集」「置換」で変更前の文字列と変更後の文字列を指定できます。

> [2]
どうぼかしたいのかがわかりませんが、
画像をメモリに読み込んで特定部分に線形フィルタをかけることでぼかすことができるかと思います。
確か関数はなかったかと。

> [3]
それは仕方がないように思います。。


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

Name: 428  ..ぴよぴよ(105ポイント)   Date: 2010/01/01(金) 14:47   No:45305     
Title: Re:無題    
回答ありがとうございます。
2Dのある画像をぼかしたいのです。ぼかすのは
初めてなんでなんでも試してみますので、サルでもわかるように詳しくお願いします。


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

Name: 428  ..ぴよぴよ(195ポイント)   Date: 2010/01/01(金) 14:50   No:45306     
Title: Re:無題    
すいません。間違いました。
ある画像をぼかしたいのではなく
ある区間にある画像をぼかしたいです。
なんでも試してみますので知ってたらお願いします。
あまり、難しいのは無理ですが・・・。


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

Name: SooA [URL]  ..上級者(21,474ポイント)   Date: 2010/01/01(金) 15:14   No:45307     
Title: Re:無題    
>3
ご使用のツールがアルファチャンネルに対応していないのでしょうか?
背景が全て白塗りになっいて白を透化で抜くと崩れるって事かな?

どこまでできるツールなのか分からないのですが
予め黒色で縁取ったロゴを作成するなどして、
あとで修正しやすいような状態にしておくとか、
同じ形の真っ黒なロゴを作ってペイントソフトで
マスク合成してみるとかで多少は作業が
楽になるのではないかと思います。


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

Name: 428  ..ぴよぴよ(384ポイント)   Date: 2010/01/01(金) 15:51   No:45309     
Title: Re:無題    
>背景が全て白塗りになっいて白を透化で抜くと崩れるって事かな?
いや違います。ロゴを作ると周りを灰色や黒で少しずつ淵をとっていて、結果的にその画像を白で
透過処理してもその灰色や黒が残り、目立ってるんですよ。だからいちいちその画像の灰色の淵を
拡大して白で処理してるんです。

ロゴ作るとを縁取りを毎回やってるんですけど、
きれいなロゴで、縁取りしなくていい方法があれば教えてほしいですね。
みんなどうやって作ってるんですかね?


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

Name: DVDM [URL]  ..熟練のプログラマー(47,353ポイント)   Date: 2010/01/01(金) 15:57   No:45310     
Title: Re:無題    
>>428さん
私はPhotoShopで作ることになるので縁が汚くなる現象は(基本的に)ないですね。
極端に拡大縮小すると、さすがに目立ちますけど・・・。

その問題となっている画像を添付することは可能でしょうか?


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

Name: SooA [URL]  ..上級者(21,491ポイント)   Date: 2010/01/01(金) 16:04   No:45311     
Title: Re:無題    
>いや違います。
こういう事ではないんですか?


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

Name: 428  ..ぴよぴよ(456ポイント)   Date: 2010/01/01(金) 16:05   No:45312     
Title: Re:無題    
PhotoShopはもってないです。
画像はこれでいいですかね?
gifなのですが、拡大すると微妙に灰色などで縁取りされています。私はこれが要らないんですよ。

一番知りたいのは2のぼかし処理なのですがここを見て知ってる人がいたら是非お願いします。


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

Name: 428  ..ぴよぴよ(484ポイント)   Date: 2010/01/01(金) 16:09   No:45313     
Title: Re:無題    
> SooAさん
そうです、そんな感じです。
その微妙な白がいらないんです。みんなこうなるんですかね?


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

Name: DVDM [URL]  ..熟練のプログラマー(47,386ポイント)   Date: 2010/01/01(金) 16:26   No:45314     
Title: Re:無題    
>>428さん
そのロゴツールを使って周りの白いのが出るんですよね?
そのツールは使ったことがないので何とも言えないのですが、他のツールでは駄目なのでしょうか?
例えば、GIMPやPIXIAなどフリーのソフトは他にもありますし。


ぼかし処理はプログラム側でやるのか、画像編集という形でやるのかで
説明するところが変わってきます。
画像編集でいいのであればGIMPなど、ぼかし機能が付いたツールを使えば宜しいかと思います。


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

Name: SooA [URL]  ..上級者(21,511ポイント)   Date: 2010/01/01(金) 17:32   No:45318     
Title: Re:無題    
3のツールですが画像保存(台紙を透過)でpng出力できますね。

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

Name: kazuoni [URL]  ..ハッカー(123,472ポイント)   Date: 2010/01/01(金) 21:15   No:45329     
Title: Re:無題    
[2]をとりあえず作ってみました。

http://www1.axfc.net/uploader/Sc/so/69565
Key : kazuoni

back.jpgを用意し(640*480推奨).exeと同じ場所に入れてください。

が、関数公開の前に、質問をさせてください。。
現在、線形フィルタのかけ方は、
1、画像をLoadSoftImageで読み込む
2、線形フィルタを指定範囲に適応
3、SoftImageからグラフィックハンドルを取得
のようにしています。
キー入力があったらグラフィックハンドルを消して、
線形フィルタ適応範囲を移動させて、再度1からはじめていますが、
まずこれではFPSを出すことはできません。

これを修正するにはどうしたらよいでしょうか?
まず線形フィルタを適応するにはイメージハンドルが必須だとは思いますが、
グラフィックハンドルからイメージハンドルを生成できればもう少し高速化できるのかな
と思うのですが・・・やり方がわかりません。

#追記
3の後は、イメージハンドルを消去し、グラフィックハンドルを保持・描写に使っています。
何か変化が出たら再度やり直しってことでした。
これよりは、SetDrawScreenで描写先に指定したものから指定範囲のピクセルを
取得・変更したほうが早いかもしれない・・・。
が、広範囲にはかなり厳しい気がします・・・。

ご教授よろしくお願いします。。

質問者以外がここで質問することが不適切でしたら、新スレを立てようと思います。 編集済み


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

Name: kazuoni [URL]  ..ハッカー(123,563ポイント)   Date: 2010/01/01(金) 21:33   No:45331     
Title: Re:無題    
質問者さんの質問を読み直したら、「描写した一部」っとありますね。
やはり、SetDrawScreenで描写先を変え、その描写先からピクセルを取るってわけですか・・・。
かなり厳しい気がします。。
うまいこと、描写したものをイメージハンドルに変えることができればいいのですが。

ここも含めてご教授お願いします。

#追記
ある区間にある画像=描写した一部と勝手に認識してます^^;
追記続きで申し訳ありません。。 編集済み


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

Name: SooA [URL]  ..上級者(22,333ポイント)   Date: 2010/01/02(土) 00:20   No:45344     
Title: Re:無題    
サンプル画像
http://www42.tok2.com/home/tuk2nd/bbs/img/28.png
※サンプル画像は龍神禄のフェイス画像を使わせて頂きました。

>ぼかし
それっぽく見えるだけで良いのでしたら
アルファブレンドで左右にぶれさせて描画すれば
雰囲気は出ると思います。

添付画像はキャラ全体でぶれさせていますが、
マスク処理とあわせれば部分的に行うこともできます。
※サンプル画像は左右と上方向にぶれさせています。

    int hHaikei,hCharface;
    hHaikei = LoadGraph( "背景.jpg" ) ;
    hCharface = LoadGraph( "face.png" ) ;


    /* ////////////////////////////////////////////////////////////////
        メインループ
    */ ////////////////////////////////////////////////////////////////

    while( ProcessMessage() == 0 )
    {

        SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 255 ) ;

        //背景
        DrawGraph( 0, 0, hHaikei, FALSE ) ;
        //左キャラ通常
        DrawGraph( -50, 80, hCharface, TRUE ) ;

        //右キャラ通常
        DrawGraph( 250, 80, hCharface, TRUE ) ;

        SetDrawBlendMode( DX_BLENDMODE_ALPHA , 100 ) ;

        //右キャラ ブレンド
        DrawGraph( 250, 80-3, hCharface, TRUE ) ;
        DrawGraph( 250-3, 80, hCharface, TRUE ) ;
        DrawGraph( 250+3, 80, hCharface, TRUE ) ;


        // スクリーンに反映
        ScreenFlip() ;

    } /* // while 閉じ // */


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

Name: Justy  ..伝説なるハッカー(488,787ポイント)   Date: 2010/01/02(土) 00:23   No:45345     
Title: Re:無題    
□ 428さん
> [2]DXライブラリである部分をぼかしたいです
> ある区間にある画像をぼかしたいです

 区間、ということはレンダリング済みの画像の一部分をぼかしたい、ということでしょうか。

1 空のテクスチャに対しレンダリングを行う。
2 ぼかしたい部分の区間座標(影響範囲)を計算し、その部分だけをくりぬいたテクスチャを作る
3 1を普通に表示した後、半透明で薄くした2のテクスチャを少しずつ表示位置をずらしながら何度も描く

という方法はどうでしょうか?

# おっと、かぶってしまった



□ kazuoniさん
 空間フィルタ的なそういう処理を高速でやりたいなら DirectXとかで GPUを使ってやるのが
いいかと思うのですが、1点だけ。

「3 SoftImageからグラフィックハンドルを取得」はどの関数を使っていますか?
 編集済み


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

Name: kazuoni  ..ハッカー(123,734ポイント)   Date: 2010/01/02(土) 01:10   No:45348     
Title: Re:無題    
> Justyさん

> 空間フィルタ的なそういう処理を高速でやりたいなら DirectXとかで GPUを使ってやる
やはりそうですよね。。
どうしてもDirectXを敬遠してしまいがちで。。
(うーん。年も変わったことだし、DirectXのプログラミングに移ろうかなぁ。)

とりあえず、フィルタのアルゴリズムを見直したら、多少は早くなりましたが、
それでもFPS30ぐらい・・・ですね。。

> 「3 SoftImageからグラフィックハンドルを取得」
CreateGraphFromSoftImage関数で行っています。


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

Name: Justy  ..伝説なるハッカー(489,264ポイント)   Date: 2010/01/02(土) 01:38   No:45349     
Title: Re:無題    

> CreateGraphFromSoftImage関数で行っています

 2回目は ReCreateGraphFromSoftImageを使ってみるというのはどうでしょう?
 ハンドルの生成・破棄回数が減るので、少しは早くなるかもしれません。



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

Name: kazuoni [URL]  ..ハッカー(123,940ポイント)   Date: 2010/01/02(土) 02:26   No:45351     
Title: Re:無題    
うーん。あまりがっつり改善はされませんでした。
自分の場合、出力画面ではなく、LoadSotImageで読み込んできたファイルのみ
有効なんで、そもそも質問者さんには必要のないものですね。。orz

45331にも書いたのですが、
MakeScreenで作成した描写先にいろいろと描写した後、
それをSoftImage系に変換することは可能なのでしょうか?
できないとしたら、やはり、そのままPixel操作するしかないのでしょうか?
確か、GetPixel系はものすごく処理が遅かったような記憶が・・・。


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

Name: Justy  ..伝説なるハッカー(489,370ポイント)   Date: 2010/01/02(土) 02:31   No:45352     
Title: Re:無題    
 なるほど、大差なかったですか。

 ピクセル操作の方は一応 GraphLock / GraphUnLockでカラー値の読み出し・変更ができたはずです。
 ただ、レンダリングしたテクスチャでも使えるかどうかは試してみないとわかりません。


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

Name: 428  ..ぴよぴよ(965ポイント)   Date: 2010/01/02(土) 13:58   No:45374     
Title: Re:無題    
なかなか高度な話で私が入りこめるかどうかわかりませんが

ある区間に入った画像をぼかしたいということです。もちろんその画像は変化します。
霧の中に人が入ったり出たりして、その人がぼやけるイメージです。


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

Name: 428  ..かけだし(1,042ポイント)   Date: 2010/01/02(土) 14:19   No:45376     
Title: Re:無題    
いい忘れましたがみなんさんありがとうございます。
ある場所に張るフィルターみたいなのがあって、それを張ればその場所に入った画像をぼかしてくれる
と思いましたが、そんな単純ではないですね。


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

Name: kazuoni [URL]  ..ハッカー(124,177ポイント)   Date: 2010/01/02(土) 16:38   No:45388     
Title: Re:無題    
ちょっと考えましたが、
やはり、フィルタはDXライブラリのごり押しでは厳しかったかもしれないですorz

それっぽく見せるのはSooAさん、Justyさんがおっしゃっている
方法を強くお勧めします。
っというか、ゲームのぼかしならばそれぐらいで十分かと^^;
(フィルタはノイズ処理とか、エッジ抽出が主な目的ですしね。。)

混乱させてすみません。
自分でこれと決めたらそれをやろうとして、柔軟に考えれてませんでした。。

とりあえず、自分の作ったやつUPしておきます。
AveragingFilter.h , AveragingFilter.cpp
をプロジェクトに通し、AveragingFilter.hをインクルードしてください。
詳しくはread meを見てください。

使い物にならないですが・・・orz

なにかアドバイスがありましたら、よろしくお願いします・・・。


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

Name: Justy  ..伝説なるハッカー(490,563ポイント)   Date: 2010/01/03(日) 15:58   No:45458     
Title: Re:無題    

> なにかアドバイスがありましたら

1 画像ファイルを読み出し(普通の)イメージハンドルを作るのと同時に、
 メモリに RGBイメージを保持しておきます。
2 MakeGraphでフィルタの適用範囲サイズ分の空のイメージハンドルを作ります。
3 2と同じサイズ分のメモリバッファを別に用意し、そこにフィルタをかけた BMPイメージを作って、
 ReCreateGraphFromBmp関数で2のイメージハンドルの中身を入れ替えます。
4 1を表示したあと、3を表示します。

 これなら処理はフィルタの適用範囲だけで収まりますので、処理としては大分軽くなるかと
思いますがどうでしょう?


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

Name: kazuoni [URL]  ..ハッカー(124,594ポイント)   Date: 2010/01/03(日) 22:24   No:45479     
Title: Re:無題    
返信が遅れました。。持ち上げすいません。

おっしゃるとおり、猛烈に軽い処理になりましたw
相変わらず頭が固いです・・・。

Justyさんの方法を応用すれば、
フィルタをかける可能性のある画像は、
独自のクラス(RGBイメージ保持)
で画像を取得し、そのスーパークラスで描写を管理すれば、
IsDrawFilter(TRUE);
SetFilter(Fx,Fy,Fwidth,Fheight,Flevel);
DrawFGraph(...);

なんて結構楽にかつ軽い処理で実現できそうです。
ほかにもフィルタの形(円も含めて)をユーザー指定できるようにしたり、
フィルタの種類を増やして機能を追加したりなど、
結構いろいろなことができそうな気がします。

が、いかんせん、時間も需要もなさそうなので、余力があれば作成することにします^^;

> 428さん
私的なことでレスが長くなってしまってすみませんでした。


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



Name: ti  ..かけだし(1,552ポイント)   Date: 2010/01/01(金) 20:22   No:45324       
Title: 音楽ファイルの取得に関する質問    
いつもお世話になります

音楽ファイルの読み込みに関する質問です

RPG製作中なのですが必要になったらファイルをメモリに読み込む処理をしていたのですが

プログラム開始時に一括で画像から音楽ファイルを読み込むように変更しようとおもっています

make●●.cpp(例)
extern int Sound_Cas = LoadSoundMem( "音楽ファイル名" );

//再生場所
int CHANGEMAP_Castl_1F(int CR_i,int CR_j){
         //再生位置
    PlaySoundMem( Sound_Cas , DX_PLAYTYPE_LOOP ) ;

}


ソースすべて載せると見難いので肝心と思うところだけを載せました
使用関数の外で宣言をしてmp3ファイルなどをメモリに終了間際まで持たせるにはどう宣言すればいいのか教えてください



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


Name: MNS  ..プログラマー(25,464ポイント)   Date: 2010/01/01(金) 21:05   No:45328     
Title: Re:音楽ファイルの取得に関する質問    
提示されたコードの通り、グローバル変数で管理すればよいと思いますが、

extern int Sound_Cas = LoadSoundMem( "音楽ファイル名" );

これだと、DXライブラリの初期化(DxLib_Init関数)が行われる前に
LoadSoundMem関数が使用されてしまうと思うので、
初期化が終わった段階で、音楽などをロード擦る必要があるでしょう。


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

Name: ti  ..入門者(2,858ポイント)   Date: 2010/01/01(金) 21:31   No:45330     
Title: Re:音楽ファイルの取得に関する質問    
MNSさん書き込みありがとうございます
ソース詳しく書いてみます

main.cpp↓
#include "DxLib.h"
#include "make town.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        
    
    // 画面モードの変更
    SetGraphMode( 640 , 640 , 16 ) ;
    if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理

    SetDrawScreen( DX_SCREEN_BACK ) ;  //描画先を裏画面に設定

    MAKE_ARIAHAN_TOWN();
    

 
    DxLib_End();
    return 0;
}
make●●.cpp(MAKE_ARIAHAN_TOWN();)などがあるところです↓
#include "make town.h"
#include "DxLib.h"
char Key[256];
static int cmdwindow;
bool CmdFlg;
int image = LoadGraph( "BMP/1138--.bmp" ) ;
int image1 = LoadGraph( "BMP/1138-.bmp" ) ;
int cr1 = LoadGraph( "BMP/cr.bmp" );
int StairsFlg =0;//MAP移動直後が階段になる場合1 それ以外は0
int cmd_x=68,cmd_y=70;

//音楽関連のメモリ取得
int Sound_Cas = LoadSoundMem( "BGM/DQ3城.mp3" );
int Sound_Town = LoadSoundMem( "BGM/Dragon_Quest_3_-_街.mp3" );

void MAKE_ARIAHAN_TOWN(void)
{

//一部非表示で
PlaySoundMem( Sound_Town , DX_PLAYTYPE_LOOP ) ;
}


ソースファイルはこんな感じになってます

DxLib_Init() の使用は一番最初のwinmain関数でのみ使用しています

みにくくて申し訳ありませんがよろしくお願いします


2倍のポイントを手に入れた! 1,306ポイント を手に入れた。

Name: MNS  ..プログラマー(25,905ポイント)   Date: 2010/01/01(金) 21:53   No:45334     
Title: Re:音楽ファイルの取得に関する質問    
int Sound_Cas = LoadSoundMem( "BGM/DQ3城.mp3" );

例えば、このSound_Cas変数はグローバル変数ですね。
(環境によって異なると思うのですが)グローバル変数の初期化は、プログラムが起動してすぐ行われます。
提示されたコードにせよ、DxLib_Init() の前にSound_Cas変数の初期化が行われてしまうため、
DXライブラリ初期化前に、LoadSoundMem関数が使用されてしまいます。
よって、Sound_Cas変数の初期化に、LoadSoundMem関数を使用することは出来ませんし、プログラムも動きません。

なので、Sound_Cas変数など、画像,音楽ハンドルを保持するグローバル変数は、値を定めないで、宣言・定義をしておいて、
DXライブラリの初期化が終わった後に、その値を定める必要があります。
---何か.cpp--
int Sound_Cas; //初期化段階で読み込みはしない

---main.coo--
int WINAPI WinMain〜〜
{
    // 画面モードの変更
    SetGraphMode( 640 , 640 , 16 ) ;
    if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;

    〜〜ここで音楽・画像の読み込み〜〜
    
    SetDrawScreen( DX_SCREEN_BACK ) ;  //描画先を裏画面に設定
    MAKE_ARIAHAN_TOWN();

    〜
}

イメージは伝わるでしょうか?


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

Name: ti  ..入門者(3,026ポイント)   Date: 2010/01/01(金) 23:17   No:45340     
Title: Re:音楽ファイルの取得に関する質問    
MNSさん丁寧な解説ありがとうございます

グローバル変数のことはスコープのことしかわかってませんでした
C言語ってやっぱり奥がとても深いですね

完全に理解しているかは正直自信ないです

main.cppからはじまって

---何か.cpp--で画像等の読み込みをする場合
どう宣言をすればいいのかわかりません

専用のヘッダファイルなどを作るべきなのでしょうか?






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

Name: MNS  ..プログラマー(26,686ポイント)   Date: 2010/01/02(土) 09:18   No:45361     
Title: Re:音楽ファイルの取得に関する質問    
うーん、これはC言語というよりは、DXライブラリ特有の問題とも言えるでしょうか、

DxLib_Init()でDXライブラリを初期化する前に、LoadGraph関数などを使用してはいけないことはお分かりでしょうか?
(あまり詳しくはしりませんが、ChangeWindowMode関数など、一部の関数は大丈夫です。)
グローバル変数の初期化は、プログラム開始直後に行われるはずなので、
WinMain関数内の処理が始まる前に、グローバル変数の初期化が行われます。
そうすると、DXライブラリの初期化が行われる前に、グローバル変数の初期化が行われるので、
その初期化において、LoadGraph関数などを使用することはできないのです。

グローバル変数をほとんど使わないので若干怪しいですが、
例えば
-----Global.h-----
extern int GraphHandle; //グローバル変数の一例
------------------

----Global.cpp----
int GraphHandle; //初期化なし(0が代入されるかも?)

//読み込み用の関数を作っておく
void Load()
{
    GraphHandle = LoadGraph("ほにゃらら.bmp");
}
-------------------

----main.cpp----
int WINAPI WinMain〜〜
{
    // 画面モードの変更
    SetGraphMode( 640 , 640 , 16 ) ;
    if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;

    Load(); //!ここで読み込み用の関数を呼び出す    

    SetDrawScreen( DX_SCREEN_BACK ) ;  //描画先を裏画面に設定
    MAKE_ARIAHAN_TOWN();

    〜
}
-----------------

あくまで一例ですが、上のような作りであれば、
ほぼプログラム開始すぐに画像・音楽のロードが行われ、プログラム終了までその値が保持されます。


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

Name: ti  ..入門者(3,066ポイント)   Date: 2010/01/03(日) 20:06   No:45474 解決!     
Title: Re:音楽ファイルの取得に関する質問    
MNSさんいつもありがとうございます
おかげで音楽ファイルのグローバルとしての読み込みができました

続き頑張ります
またよろしくお願いします

 編集済み


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



Name: マングース  ..ぴよぴよ(847ポイント)   Date: 2010/01/03(日) 12:28   No:45437       
Title: 自己参照型とソートについて    
[1] 質問文
 [1.1] 確保した領域にno,nameをリスト構造を使用し登録する。
    領域に登録したデータは、昇順に置き換えられファイルとして出力する。
 [1.2] 一通り自分なりに調べソースコードを領域確保→入力まで作成しました。
 [1.4] 確保した領域にデータを入れてソートをかけようとしたが、
    ソートをせず、同じ出力結果が出てしまう。
      
[2] 環境  
 [2.1] OS : WindowsXP ProfessionalSP3
 [2.2] コンパイラ名 : VC++ 2008EE
[3] その他 
 ・C言語は、初心者です。標準出力、構造体、配列系までは普通にできます。
 ・#include <stdlib.h> #include <stdio.h>

[4] 求める出力結果
 入力内容
  no = 3 name = kitarou
  no = 2 name = mangusu
  no = 1 name = ikarosu

  結果(ソートの置き換え結果)
  no = 1 name = ikarosu
  no = 2 name = mangusu
  no = 3 name = kitarou

*ソースコード
#include <stdio.h>
#include <stdlib.h>

struct order{
  int no;
  char name[10];
  struct order *new;
};

int main(){
  struct order *main,*on=NULL;

  while(i < 3){

    /* 領域確保 */
    if((main = (struct order *)malloc(sizeof(struct order)) == NULL){
        exit(EXIT FAILURE);
    }

    /* 入力処理 */
    printf("no:");
    scanf("%d",main->no);
    printf("name:");
    scanf("%s",main->name);

    main->new= on;
    on = main;
    i++;

  }
  /* 昇順にソートを行う */
  sample sort(on);

    
}

int sample_sort(struct order_print *on2){
  struct order_print *on3;
  int  menber_no;
  char menber_name[10];

  /* メモリー確保 */
  if((y = (struct order*)malloc(sizeof(struct order))) == NULL) {
    exit(EXIT_FAILURE);
  }
  on3 = on2->new;

  while(on2!=NULL)
  {
        /* ここからがよく分からないです ↓は自分なりに考えてみました。 */
        /*  no を基準にソートを行う */
    if (on2->no > on3->no)
    {
        menber_no = on->no3;
        printf("%d\n",menber_no);
        on2->no = on3->no;
        on3->no = menber_no;
    }
  }
}





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


Name: MNS  ..プログラマー(27,987ポイント)   Date: 2010/01/03(日) 12:46   No:45438     
Title: Re:自己参照型とソートについて    
ソースコード内に、多くの打ち間違いや定義のない変数等が見られます。
そちらではビルドが出来ているようなので、間違いのない正しいコードを提示してください。 編集済み


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

Name: box  ..ハッカー(148,200ポイント)   Date: 2010/01/03(日) 13:15   No:45442     
Title: Re:自己参照型とソートについて    
リスト構造をソートするときは、
リストに格納してからソートするよりも、
ソートしながら格納していく方が楽だと思います。


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

Name: マングース  ..かけだし(1,419ポイント)   Date: 2010/01/03(日) 13:26   No:45443     
Title: Re:自己参照型とソートについて    
すみません。
以下にコンパイル済みのソースを記載いたします。

以上、宜しくお願い致します。

#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable : 4996)

int sample_sort();

struct order{
  int no;
  char name[10];
  struct order *new;
};

int main(){
  struct order *main,*on=NULL;
  int i = 0;

  while(i < 3){

    /* 領域確保 */
    if((main = (struct order*)malloc(sizeof(struct order))) == NULL){
        exit(EXIT_FAILURE);
    }

    /* 入力処理 */
    printf("no:");
    scanf("%d",main->no);
    printf("name:");
    scanf("%s",main->name);

    main->new= on;
    on = main;
    i++;

  }
  /* 昇順にソートを行う */
  sample_sort(on);

    
}

int sample_sort(struct order *on2){
  struct order *on3;
  int  menber_no;
  char menber_name[10];

  /* メモリー確保 */
  if((on3 = (struct order*)malloc(sizeof(struct order))) == NULL) {
    exit(EXIT_FAILURE);
  }
  on3 = on2->new;

  while(on2!=NULL)
  {
        /* ここからがよく分からないです ↓は自分なりに考えてみました。 */
        /*  no を基準にソートを行う */
    if (on2->no > on3->no)
    {
        menber_no = on3->no;
        printf("%d\n",menber_no);
        on2->no = on3->no;
        on3->no = menber_no;
    }
  }
  return 0;
}



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

Name: non  ..比類無きプログラマー(85,596ポイント)   Date: 2010/01/03(日) 13:59   No:45448     
Title: Re:自己参照型とソートについて    
boxさんが仰るとおり、リスト構造を繋ぐときに並び替えた方が楽ですし、普通です。
でも、どうしても、後でやりたいなら不可能ではありません。
ただ、マングースさんがやろうとしている方法は理解できません。
学校の課題で、なんらかの指示があるのでしょうか?
なぜ、そう思うのかと言いますと、
sample_sortでメモリを確保してありますが、目的がわからず、
>ここからがよく分からないです
と書かれてありますので、メモリ確保部分は課題として与えられているのかと
思う次第です。
1 作成する条件が何もないなら、リスト構造を繋ぐときに並び替える
2 どうしても後で並び替えをしなければいけないのなら、いろんな方法が
あるので、並び替えの方法を指定する。
3 どんな方法でも良いのなら、その旨を記する。



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

Name: マングース  ..かけだし(1,586ポイント)   Date: 2010/01/03(日) 16:21   No:45461     
Title: Re:自己参照型とソートについて    
  課題内容はこのような指示を受けています。

 1.order(no,name)を入力し、noで昇順にソート後、CSVファイルを作成する。
  2.CSVファイルはExcelに入力して確認するものとする。
 3.orderは構造体とし、領域は動的に確保/解放する
 4.ソートはそれのみを行う関数を作成し、その関数をCallすることで実現する.
 5.orderは最低10件は登録を行うこと

 上記の指示どおりに作成するにも勉強不足なのでよく分からないです。
 以上、宜しくお願いします。
 編集済み


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

Name: non  ..比類無きプログラマー(85,719ポイント)   Date: 2010/01/03(日) 19:36   No:45472     
Title: Re:自己参照型とソートについて    
>4.ソートはそれのみを行う関数を作成し、その関数をCallすることで実現する.
この条件からすると、後でソートしなければいけないのですね。

ソートの方法は大きく分けると2つに分類できるかな。
1 繋ぎ換えは変えずに、メンバーの値を交換する。
2 ノードの繋ぎ換えを行う。

さて、どっち?



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

Name: マングース   Date: 2010/01/12(火) 23:40   No:454371263307231     
Title: Re:自己参照型とソートについて    
返信が送れて申し訳ないです。

>ソートの方法は大きく分けると2つに分類できるかな。 
>1 繋ぎ換えは変えずに、メンバーの値を交換する。 
>2 ノードの繋ぎ換えを行う。 
>
>さて、どっち?

「2 ノードの繋ぎ換えを行う。」で行いたいです。

上記のような事ができるのであればご教授お願いいたします。

以上、宜しくお願いします。


Name: マングース   Date: 2010/01/26(火) 12:06   No:454371264475204 解決!     
Title: Re:自己参照型とソートについて    
回答がないようなので「解決」ということで閉めます。
ご教授ありがとうございました。




Name: 天和  ..中級者(12,506ポイント)   Date: 2010/01/03(日) 08:56   No:45427       
Title: カレントディレクトリ内の検索    
カレントディレクトリ内の一つの.cファイルを選びそしてその次に検索したい言葉を入力しその言葉がある
行の行数とその行の文章を出力するプログラムを作りたいのですが。
例)homework.cファイルに
#include<stdio.h>
int main(void)
{
printf("hello work");
return 0;
}
とあって filename?(これはprintf関数で書かれた質問) homework.c 検索したい言葉は?(同上) printf と入力すると 4:printf("hello work"); と出れば正解です そして自分が作ったソースコードは
#include<stdio.h>
int main(void)
{
int ch;
FILE *fp;
char fname[99]; /*検索したいファイル名*/
char word[99]; /*検索したい文字列*/
int i, j, n, s, count;

i = 1;/*行数用の数字*/
j = 0;/*j番目の文字列*/
n = 0;/*検索したい文字列が何文字あっているか?*/
s = 0;/*検索したい文字列の文字数*/
count = 0;
printf("FILEname?\n");
scanf("%s", fname);
printf("検索したい文字は?");
scanf("%s", word);
while(1){    /*検索したい文字列は何文字か判定する*/
if(word[j] == '\0')/*ヌル文字があったら測定終了*/
break;
s++;
j++;
}
j = 0;/*また1文字目からやり直すためにいったんリセット*/

if((fp = fopen(fname, "r")) == NULL)/*検索したいファイル名は存在しますか?*/
printf("ERROR");
else{
printf("%d:",i);/*最初の行数*/
i++;

while((ch = fgetc(fp)) != EOF){
if(count == 0){/*1文字前の判定1文字前が検索したい文字列の中の1文字でないなら検索したい文字列の1文字目からやり直し*/
j = 0;
n = 0;
}
if(ch == word[j])/*検索したい言葉のj番目とおなじもじですか?*/
{
n++;/*同じ文字かの正解数を1つあげる*/
count++;/*現在の文字が正解か否かの判定*/
j++;/*検索したい次の文字にチャレンジする*/
}
else{
count = 0;/*不合格なので検索したい最初の文字からやり直し*/
}
if(ch == '\n'){/*もし改行なら行番号をあげなさい*/
i++;
}
if(s == n){/*もし検索したい文字数と正解数が一緒ならその行を出力しなさい*/
printf("%d:", i);
fputs(ch);
j = 0;
n = 0;
}
}
fclose(fp);
}
return 0;
}

とかいたのですがエラーが出て動きません
エラー内容
fopen.c:7: error: stray ‘\227’ in program
fopen.c:7: error: stray ‘\128’ in program
fopen.c:7: error: stray ‘\128’ in program
fopen.c:52: warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast
fopen.c:52: error: too few arguments to function ‘fputs’
まずはこのエラーのとりかたを教えてくださいお願いします。
ちなみにいまじぶんが使っているコンパイラはGCCで
技術レベルはfopen関数が使えるぐらいです 編集済み


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


Name: MNS  ..プログラマー(27,441ポイント)   Date: 2010/01/03(日) 09:14   No:45428     
Title: Re:カレントディレクトリ内の検索    
>fopen.c:7: error: stray ‘\227’ in program 
>fopen.c:7: error: stray ‘\128’ in program 
>fopen.c:7: error: stray ‘\128’ in program 
このエラーは、おそらく7行目に全角スペースがあるために発生しています。

>fopen.c:52: warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast 
>fopen.c:52: error: too few arguments to function ‘fputs’ 
fputsの書式は、

int fputs(const char *s, FILE *fp);

ですが、提示されたコードでは、

fputs(ch);

と記載されています。

第一に、引数の数が足りません。
第二に、chはint型なので、型が合いません。

よって、そのようなエラーが発生しています。


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

Name: 天和  ..中級者(13,253ポイント)   Date: 2010/01/03(日) 10:26   No:45429     
Title: Re:カレントディレクトリ内の検索    
>MNSさん
#include<stdio.h>
int main(void)
{
const char ch;
FILE *fp;
char fname[99]; /*検索したいファイル名*/
char word[99]; /*検索したい文字列*/
int i, j, n, s, count;

i = 1;/*行数用の数字*/
j = 0;/*j番目の文字列*/
n = 0;/*検索したい文字列が何文字あっているか?*/
s = 0;/*検索したい文字列の文字数*/
count = 0;
printf("FILEname?\n");
scanf("%s", fname);
printf("検索したい文字は?");
scanf("%s", word);
while(1){    /*検索したい文字列は何文字か判定する*/
if(word[j] == '\0')/*ヌル文字があったら測定終了*/
break;
s++;
j++;
}
j = 0;/*また1文字目からやり直すためにいったんリセット*/

if((fp = fopen(fname, "r")) == NULL)/*検索したいファイル名は存在しますか?*/
printf("ERROR");
else{
printf("%d:",i);/*最初の行数*/
i++;

while((ch = fgetc(fp)) != EOF){
if(count == 0){/*1文字前の判定1文字前が検索したい文字列の中の1文字でないなら検索したい文字列の1文字目からやり直し*/
j = 0;
n = 0;
}
if(ch == word[j])/*検索したい言葉のj番目とおなじもじですか?*/
{
n++;/*同じ文字かの正解数を1つあげる*/
count++;/*現在の文字が正解か否かの判定*/
j++;/*検索したい次の文字にチャレンジする*/
}
else{
count = 0;/*不合格なので検索したい最初の文字からやり直し*/
}
if(ch == '\n'){/*もし改行なら行番号をあげなさい*/
i++;
}
if(s == n){/*もし検索したい文字数と正解数が一緒ならその行を出力しなさい*/
printf("%d:", i);
fputs(ch , fp);
j = 0;
n = 0;
}
}
fclose(fp);
}
return 0;
}

と変えましたがやっぱりエラーがでます。
fopen.c:7: error: stray ‘\227’ in program 
fopen.c:7: error: stray ‘\128’ in program 
fopen.c:7: error: stray ‘\128’ in program 
fopen.c:33: error: assignment of read-only variable 'ch'(この変数は読み取り専用ですといっている?)
fopen.c:52: warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast 


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

Name: 天和  ..中級者(13,326ポイント)   Date: 2010/01/03(日) 10:32   No:45430     
Title: Re:カレントディレクトリ内の検索    
すいません
const char ch;を
char ch;
に変えたらfopen.c:33: error: assignment of read-only variable 'ch'(この変数は読み取り専用ですといっている?) 
が消えました


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

Name: MNS  ..プログラマー(27,585ポイント)   Date: 2010/01/03(日) 11:35   No:45434     
Title: Re:カレントディレクトリ内の検索    
>fopen.c:7: error: stray ‘\227’ in program 
>fopen.c:7: error: stray ‘\128’ in program 
>fopen.c:7: error: stray ‘\128’ in program 

もう一度良いますが、7行目の全角スペースを消してください。

char word[99]; /*検索したい文字列*/
    ↓
char word[99]; /*検索したい文字列*/


char ch で正しいとは思いますが、
そもそものところ、fputsで表示したいのは、該当語句が含まれる行ですよね?
chはあくまで検索に用いる'一文字'だと思うのですが。


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

Name: 天和  ..中級者(13,445ポイント)   Date: 2010/01/03(日) 11:45   No:45435     
Title: Re:カレントディレクトリ内の検索    
>MNSさん
>もう一度良いますが、7行目の全角スペースを消してください。 
てっきりcharとwordの間のほうかと思ってましたorz
>char ch で正しいとは思いますが、 
そもそものところ、fputsで表示したいのは、該当語句が含まれる行ですよね? 
chはあくまで検索に用いる'一文字'だと思うのですが。

やっぱり1文字ずつ調べるfgetcと1行表示させるfputsじゃあだめですか・・・・
でも1行の部分的なことを探るなんてできませんし・・・・


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

Name: MNS  ..プログラマー(27,947ポイント)   Date: 2010/01/03(日) 12:28   No:45436     
Title: Re:カレントディレクトリ内の検索    
ちょっと、複雑になるかもしれませんが、行を記録していけば問題ありません。
まず、行を記録する文字列と、行の文字数を表すカウンタを用意します。
また、その行を出力するか否かの、フラグも用意しておくことにします。


char word[99];/*検索したい文字列*/
char string[1024]; /*行を記録*/
int count2 = 0; /*行の文字数*/
int Flag = 0; /*行を表示するか(0=しない, 1=する)*/



そして、一文字ごとに記録していきます。


while((ch = fgetc(fp)) != EOF){
string[count2] = ch;
count2++;



こんな感じにです。
次に、フラグを立てる処理を加えます。


if(s == n){/*もし検索したい文字数と正解数が一緒ならその行を出力しなさい*/
printf("%d:", i);
Flag = 1;
j = 0;
n = 0;
}


最後に、行を表示する処理を加えます。
(count3という変数を、用意しておいてください。forループに使います)


if(ch == '\n'){/*もし改行なら行番号をあげなさい*/
i++;
string[count2] = '\0';
if(Flag == 1)
{
    count3 = 0; /*forループに使用*/
    for(; count3 < count2+1; ++count3)
    {
        printf("%c", string[count3]);
    }
}
count2 = 0;
Flag = 0;

}


ご自分で、場所を探して入れてみてください。
適当なところに入れれば、多分動くと思います。


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

Name: 天和  ..中級者(13,502ポイント)   Date: 2010/01/03(日) 13:36   No:45444     
Title: Re:カレントディレクトリ内の検索    
おおーできましたーありがとうございます!
おかげで解決しました・・・・といいたいんですが実はもうひとつ課題があるのですが(これの上位版のような)
引き続きここで書いてもよろしいでしょうか?
それとも新規投稿するべきですか?
よろしくお願いします。


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

Name: MNS  ..プログラマー(28,188ポイント)   Date: 2010/01/03(日) 13:46   No:45445     
Title: Re:カレントディレクトリ内の検索    
この課題と密接に関係する話題であれば、ここで質問すべきですが、
上位版と言えど、この課題と関係がない(この課題をしらなくても問題がない)のであれば、
別にどちらでも良いと思いますし、厳密な決まりもないと思います。

ただ、記事数の多いスレッドは、最初からそのスレッドを読んでいない回答者さんからは敬遠されやすいかもしれませんので、
さきのようなことがなければ、新たにスレッドを立てたほうが良いのではないか、と個人的には思います。

追記:
コードはきちんとインデントを使いましょう。
ひどく見にくいと思う回答者さんもいるかもしれませんから。
 編集済み


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

Name: 天和  ..中級者(13,522ポイント)   Date: 2010/01/03(日) 13:50   No:45446 解決!     
Title: Re:カレントディレクトリ内の検索    
わかりました念のため新規投稿します

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



Name: miya  ..ぴよぴよ(83ポイント)   Date: 2010/01/02(土) 19:06   No:45390       
Title: DirectXで頂点情報を回転させた際のテクスチャについて    
あけましておめでとうございます。

現在、DirectX9を用いて2Dのゲームを制作しているのですが、
描画の際に少し困っているので、こちらで質問させて頂きます。

現在、XYZRHWの情報を持った構造体(トランスフォーム済みの頂点フォーマット?)を使い、
DrawPrimitiveUPする際に第一引数にD3DPT_TRIANGLELISTとしているので、6頂点の情報を持った
4角形ポリゴンにテクスチャを貼り付けて描画しています。

このポリゴンの頂点情報を三角関数を利用し回転させた後、テクスチャを貼り付けると
綺麗に表示されず、ジャギーのようなものが発生してしまう事で悩んでいます。
(□のような物が書かれたテクスチャを回転させたポリゴンに貼り付け◇のようにすると
 斜めの部分がギザギザになってしまう)
また、このジャギの影響で背景のような大きなものを徐々にゆっくりと回転させていった際には、
テクスチャの画像が波打ったように描画されてしまい気持ちの悪い状態となってしまいます。

テクスチャを少しだけぼかすなどして、この目立つジャギーを少しでも目立たなくしたいと思った
のですが、方法が分からず困っています。

どうかよろしくお願いします。


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


Name: Justy  ..伝説なるハッカー(490,661ポイント)   Date: 2010/01/03(日) 01:20   No:45420     
Title: Re:DirectXで頂点情報を回転させた際のテクスチャについて    

> 方法が分からず困っています

 ポリゴンエッジとテクスチャパターン両方のエイリアシングが出てるということでしょうか。
 サンプラーステートは最近点サンプリング (D3DTEXF_POINT)ではないですよね?

 GIMPや Photoshopなどのグラフィックソフトを使って、イメージに軽くぼかしを入れれば
それなりに緩和されると思います。

 って、ひょっとしてそのやり方がわからないとかでしょうか?


 あと、エッジの方はマルチサンプリングを試してみてはどうでしょうか?


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

Name: DVDM [URL]  ..熟練のプログラマー(48,018ポイント)   Date: 2010/01/03(日) 01:27   No:45421     
Title: Re:DirectXで頂点情報を回転させた際のテクスチャについて    
>>miyaさん
画像がぼやけてしまう現象は私も以前起こったので、その時の対応を書いておきます。

[対応1]
テクスチャを読み込むときに以前はD3DXCreateTextureFromFile関数を使用していたのですが
D3DXCreateTextureFromFileEx関数に変更したら直りました。


[対応2]
MSDNライブラリに、以下のような記述があります。

Direct3D では、次の計算を実行して、浮動小数点テクスチャ座標をテクセル アドレスにマッピングする。
Tx = (u*Mx) - 0.5
Ty = (v*Mx) - 0.5




要するに、描画するポリゴンの座標を0.5引いておきましょうということです。
例えば、幅100、高さ100、XY座標を(0, 0)の位置に描画したいなら
頂点はそれぞれ、(-0.5, -0.5), (99.5, -0.5), (-0.5, 99.5), (99.5, 99.5)となります。

詳しくはこちらに記述されております。
http://msdn.microsoft.com/ja-jp/library/cc373047.aspx


[対応3]
レンダリングステートの、サンプラーステートを変更して、線型補完にしてみる


pDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
pDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
pDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);

(pDeviceは LPDIRECT3DDEVICE9型です)


一応、私はこのような対応で直りました。


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

Name: miya  ..ぴよぴよ(52ポイント)   Date: 2010/01/03(日) 02:15   No:45424 解決!     
Title: Re:DirectXで頂点情報を回転させた際のテクスチャについて    
> DVDM様

サンプラーステートについて調べて、テストしている間の事で見落としてしまいました。すいません。
詳細にご教授頂きありがとうございます。



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

Name: miya  ..ぴよぴよ(434ポイント)   Date: 2010/01/03(日) 02:18   No:45425 解決!     
Title: Re:DirectXで頂点情報を回転させた際のテクスチャについて    
コメントが投稿されたと思ったらプレビュー画面でした…。編集パスも設定忘れてしました…。
コメントが前後してしまいますが、投稿されているはずだったコメントを記載しておきます。

> サンプラーステートは最近点サンプリング (D3DTEXF_POINT)ではないですよね?

自分の勉強不足でした…。
「サンプラーステート」と言われるまで、SetSamplerStateメソッドがあり、
テクスチャフィルタをかけられる、ということに事態に気づいていませんでした。
下記のようにした結果、問題を解決することが出来ました。

g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

DirectXに慣れるのには、まだまだ時間が掛かりそうです。
とは言え今回の件でまたひとつ、出来ることが増えたように感じます。
教えていただきありがとうございました。 


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



Name: デラ初心者  ..入門者(3,466ポイント)   Date: 2010/01/02(土) 20:40   No:45393       
Title: ダンジョンゲームプログラミング本    
いつもお世話になっております。

amazonでダンジョンゲームプログラミング
という本を見つけたのですがこれはC言語で
書かれているのでしょうか?
初心者には向いていますか?

http://www.amazon.co.jp/gp/product/4797346280/ref=s9_simi_gw_s0_p14_i1?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-1&pf_rd_r=0ZG8TXDV88C12E1NNG62&pf_rd_t=101&pf_rd_p=463376736&pf_rd_i=489986
↑がその本です。

レビューが書かれていなかったので
もし読んだ方が居たら感想など、教えてください


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


Name: Justy  ..伝説なるハッカー(489,678ポイント)   Date: 2010/01/02(土) 21:07   No:45394     
Title: Re:ダンジョンゲームプログラミング本    

> これはC言語で書かれているのでしょうか? 

六本木Web | [買い物] 義務と、みんごる
http://ropo.jp/sb.cgi?eid=182

によると C++だそうです。


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

Name: デラ初心者  ..入門者(3,498ポイント)   Date: 2010/01/02(土) 21:11   No:45395     
Title: Re:ダンジョンゲームプログラミング本    
そうですか〜
残念です。

他にRPGを作るのに参考になる
本はありますか?


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

Name: softya  ..比類無きプログラマー(79,157ポイント)   Date: 2010/01/02(土) 21:22   No:45396     
Title: Re:ダンジョンゲームプログラミング本    
本は、存在しないですね。
ドラクエ1程度でも本で解説するには膨大すぎるんでしょうね。

私の知っているRPGの開発サイトを紹介します。
未完成か不完全な物が多いことをお断りしておきます。

RPGとして未完成ですが、最初の部分だけでどんなに大変か分かると思います。
http://inu.harisen.jp/top.html

解説サイトではありませんが、DXライブラリを使用したRPGのソースコードがあります。
http://rpg.nengu.jp/game/dl/

こっちは、C言語とWindowsAPIで作られています。
http://www.sm.rim.or.jp/~shishido/rpgp.html
結構シンプルですが、WindowsAPIが理解できていないと話になりません。


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

Name: kazuoni [URL]  ..ハッカー(124,352ポイント)   Date: 2010/01/02(土) 21:33   No:45397     
Title: Re:ダンジョンゲームプログラミング本    
> ドラクエ1程度でも本で解説するには膨大すぎるんでしょうね。

まさにそうですね^^;
自分も初代ドラクエ風(戦闘はFFでしたが・・・)RPGをDXライブラリで作成しましたが、
最高に大変で、最終的に、町は三つ、中ボス一匹で製作中断しましたww

思ったことは、リロード環境を整えるために、スクリプト言語があるといいなと思いました。
(御津凪さんから教えてもらったんですが・・・w)
特にマップ生成や、キャラAIを記述するときはかなり必須な気がしました。

個人的には、RPGツクール系で開発することをお勧めします。
どんなものか買ってみましたが、慣れれば、時間はかかりますが、
効率よく開発が進められるのではと思いました。


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

Name: softya  ..比類無きプログラマー(79,355ポイント)   Date: 2010/01/02(土) 21:49   No:45398     
Title: Re:ダンジョンゲームプログラミング本    
>思ったことは、リロード環境を整えるために、スクリプト言語があるといいなと思いました。
シナリオ・スクリプト言語は必須だと私は思いますね。
今流行のLuaでも良いですし、独自開発のものでもかまいません。

>特にマップ生成や、キャラAIを記述するときはかなり必須な気がしました。 
マップ生成 ← ローグタイプ(俗に言うシレンやトルネコタイプ)の事でしょうか?
これはシステムで良いと私は思いますが、スクリプトにするメリットはなんでしょう?
キャラAIは、スクリプトで記述出来ると調整が便利かも知れません。

>個人的には、RPGツクール系で開発することをお勧めします。

無料使える『WOLF RPGエディター』ってのもありますので参考にして下さい。
http://www.silversecond.com/WolfRPGEditor/
RPG製作時の参考にもなると思います。


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

Name: Justy  ..伝説なるハッカー(490,057ポイント)   Date: 2010/01/02(土) 21:50   No:45399     
Title: Re:ダンジョンゲームプログラミング本    
 そういえば、シンプルなものとしては Dixqさん作のRPGのサンプルがありますね。
http://dixq.net/sm/d10.html

 個人的な意見ですが強いて書籍で挙げるなら、様々な(良書な)プログラミングの本全般を
読むのがいいかと。

 ある程度までスキルが上がると、よほど専門的な知識を要求されるゲームでもない限り
ACTだろうが STGだろうが RPGだろうが、自分に合った形でなんとなく作れるようになりますよ。



> 解説するには膨大すぎるんでしょうね

 ですね。
 RPGは作らなければならない要素が多すぎますよね。


> スクリプト言語があるといいなと

 言語かどうかはともかく、サンプル以上のものを作ろうとしたら
複数の用途別のツール、スクリプト化は必須でしょうね。


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

Name: デラ初心者  ..入門者(3,560ポイント)   Date: 2010/01/02(土) 21:56   No:45400 解決!     
Title: Re:ダンジョンゲームプログラミング本    
RPGはレベルが高いようですね〜

とりあえず龍神録が終わったら
考えてみます

ありがとございました。


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

Name: softya  ..比類無きプログラマー(79,389ポイント)   Date: 2010/01/02(土) 22:04   No:45401     
Title: Re:ダンジョンゲームプログラミング本    
>RPGはレベルが高いようですね〜 

私なりの考えですが、少なくともアクション、シューティング、アドベンチャーなど全てを参考サイトが無くても作れる実力は欲しいですね。


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

Name: バグ  ..ハッカー(183,097ポイント)   Date: 2010/01/03(日) 00:47   No:45416     
Title: Re:ダンジョンゲームプログラミング本    
この本、持ってます(^_^;)

開発言語はC++ですね。対象読者はC++の基礎を習得済みな人です。こういう類の書籍はゲームのアルゴリズムの解説本であって、プログラミングの入門書ではないのは当然ですね。

内容はローグライクなダンジョンゲームの仕組みやアルゴリズムを丁寧に解説してあり、一通り読めば最低限の機能を実装したローグライクゲームの完成までは辿り着けるんじゃないかな?


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



Name: yrao  ..中級者(12,537ポイント)   Date: 2009/12/31(木) 21:31   No:45257       
Title: 作成中のボス弾幕の不具合について    
お世話になってます。
 
 
現在ボス弾幕を作っている最中なのですが、思い通りに動いてくれない弾幕があり困っています。

その弾幕(2つあります)のソースとどこが思い通りに動いてくれないのかを、以下に載せておきます。

また、弾幕作成には、支館様の弾幕簡略化関数を使用しているのですが、新しい引数を最後に加えています。
これは、boss_shot.bullet.eff_detailです。

年末年始でいそがしい所申し訳ないのですが、不具合の原因が分かる方がいましたら、アドバイスよろしくお願いします。


 
 
・一つ目
 

void boss_shot_bulletH017(){
     int i,k,t = boss_shot.cnt; 
  double LX=FMX/2-boss.x+FMX/2;
 
  
      if(t>20&&t%200==100){
    move_boss_pos(40,90,FMX-40,110,80, 100);
 }
  
  
      if(t>140 && t%2 ==0)
            bullet_way(boss.x,boss.y,2 ,(0.03+rang(0.002))*t,PI   ,3,4,4,0,0);//←この弾幕です
      if(t>100 && t%15==0)
            bullet_way(boss.x,boss.y,25,PI2/25+PI2/50       ,PI2/25,5,8,0,1,0);

 for(i=0 ; i < BOSS_BULLET_MAX; i++){
   if(boss_shot.bullet[i].flag>0){
    if(boss_shot.bullet[i].state==1){
    if(boss_shot.bullet[i].cnt>=0 && boss_shot.bullet[i].cnt<21){
     boss_shot.bullet[i].spd-=0.15;
     }
    }
    }
   }


}
  少しばらけ気味の2way弾を撃たせようと思い、角度を (0.03+rang(0.002))*t と設定したのですが、これがどうもいけないらしく、徐々にばらけ方が大きくなり、最終的にはばらまき弾 になってしまいます。 どのように角度を設定してやれば、一定のばらけ方のまま2way弾を撃たせられるのでしょうか。 ・二つ目  

void boss_shot_bulletH024(){
 int i,k,t=boss_shot.cnt;
 
 if(t%200==100)input_phy_pos(ch.x,40+rang(30),60);
 if(t%200==160)bullet_way(boss.x,boss.y,1,PI/2,0,2,4,3,0,1);
 

 

     for(i=0 ; i < BOSS_BULLET_MAX; i++){
     if(boss_shot.bullet[i].flag>0){
  
     if(boss_shot.bullet[i].state==0){
      boss_shot.bullet[i].eff_detail2=1;//前スレで質問させていただいた弾の残像エフェクトです。
              if(t%200==180){
         bullet_way(boss_shot.bullet[i].x,boss_shot.bullet[i].y,35,bossatan2(),PI2/35,8,1,4,1,1);//この弾幕をかべにあたったら反射するようにしたいと思っているのですが・・・
        boss_shot.bullet[i].reb_flag=0;
                              }
       if(boss_shot.bullet[i].cnt>0)
      boss_shot.bullet[i].spd+=0.3;           
    }
        if(boss_shot.bullet[i].state==1){
       if(boss_shot.bullet[i].cnt<40){
    boss_shot.bullet[i].spd-=0.15;
       }
       if(boss_shot.bullet[i].reb_flag==0){
              if(boss_shot.bullet[i].x<3 || boss_shot.bullet[i].x >FMX-3 ){
     boss_shot.bullet[i].angle=PI-boss_shot.bullet[i].angle;
     boss_shot.bullet[i].reb_flag=1;//反射するかどうかのフラグ。
    }
      if(boss_shot.bullet[i].y<3 ){
     boss_shot.bullet[i].angle=PI2-boss_shot.bullet[i].angle;
     boss_shot.bullet[i].reb_flag=1;
      }
      
      
     }
    }
  
  
  }
  }


}



円形に発射された弾が一度だけ反射するようにしたいのですが、
2回目の円形発射では一部が反射せず、
3回目からは弾が反射しません
 
どこが問題なのでしょうか・・
 
 
 



 編集済み


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


Name: yrao  ..中級者(12,725ポイント)   Date: 2010/01/02(土) 02:50   No:45354     
Title: Re:作成中のボス弾幕の不具合について    
 
 
え…と
 
お手数をおかけする質問で申し訳ないです…

ソース、エラーの状態などで、説明不足のことが多いかもしれません。
不明な点がありましたら聞いて下さい…


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

Name: あ〜る  ..上級者(15,910ポイント)   Date: 2010/01/02(土) 07:55   No:45358     
Title: Re:作成中のボス弾幕の不具合について    
弾幕簡略化関数の仕様がわからないので間違ってるかもしれませんが…

二個目の方は

if(t%200==180){
        bullet_way(boss_shot.bullet[i].x,boss_shot.bullet[i].y,35,bossatan2(),PI2/35,8,1,4,1,1);//この弾幕をかべにあたったら反射するようにしたいと思っているのですが・・・
 boss_shot.bullet[i].reb_flag=0;
 }

の部分で、最初に撃っておいた残像の弾から反射する弾が出るようにしていんですよね?(違ってたらすいません)
ここでのboss_shot.bullet[i]は、最初の残像の弾なので、reb_flagの初期化も、発射された反射弾ではなく最初の残像の弾にしか行われてない気がします
おそらく、構造体初期化の時に全部の変数には0が代入されてる(のかは知りませんが多分)ので一回目の弾は全部反射し、二回目三回目は一回目の弾と同じのが使われたりして、既にreb_flagの値が1になり初期化されていないので反射しないのでしょう

なので、reb_flag=0にする条件を
(boss_shot.bullet[i].state==1&&boss_shot.bullet[i].cnt==0)

とかにすればちゃんと反射してくれると思います^^
見にくかったら申し訳ないです(-.-;)
お布団からなかなか抜け出せずに携帯から書いてるので(笑)



一個目はどんな弾幕にしたいのかよくわかりませんでした……(-.-;)
ばらけ気味の2way弾ていうのはどんな感じに?

 編集済み


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

Name: あ〜る  ..上級者(16,028ポイント)   Date: 2010/01/02(土) 10:28   No:45365     
Title: Re:作成中のボス弾幕の不具合について    
布団から出てきました、あ〜るです
とりあえず一個目のばらける理由だけ書いときます

0.03+0.002*t

とありますが、例えばtが1の時は
最大値  0.032
最小値  0.030

ですが、tが1000の時は
最大値  32.000
最小値  0.030

みたいになっちゃうのでバラけます
 編集済み


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

Name: yrao  ..中級者(12,997ポイント)   Date: 2010/01/02(土) 18:43   No:45389     
Title: Re:作成中のボス弾幕の不具合について    
あ〜るさんありがとうございます。あけおめです。
 
 



まず最初に、おかげさまで二つとも思っていた通りに動作させることができました。
どうもありがとうございます。
 
 
・一つ目


> ばらけ気味の2way弾ていうのはどんな感じに?

説明不足すみません;
添付した画像のような感じなのですが・・質問時に図を載せるべきでしたね・・・
次回からはそうするようにしたいと思います。
 

> 0.03+0.002*t

> とありますが、例えばtが1の時は
> 最大値  0.032
> 最小値  0.030

> ですが、tが1000の時は
> 最大値  32.000
> 最小値  0.030

> みたいになっちゃうのでバラけます
 
・・・そういうことでしたか・・・
気づきませんでした(-.-;)

0.03*t+rang(0.3)

のように設定したところ、一定のばらけ方になってくれました。
 


・二つ目

> おそらく、構造体初期化の時に全部の変数には0が代入されてる(のかは知りませんが多分)ので一回目の弾は全部反射し、二回目三回目は一回目の弾と同じのが使われたりして、既にreb_flagの値が1になり初期化されていないので反射しないのでしょう

> なので、reb_flag=0にする条件を
> (boss_shot.bullet[i].state==1&&boss_shot.bullet[i].cnt==0)

> とかにすればちゃんと反射してくれると思います^^
 
なるほど・・・
上記の条件にしたところ、正常に反射させることができました!

_________________________________

> 見にくかったら申し訳ないです(-.-;)
> お布団からなかなか抜け出せずに携帯から書いてるので(笑)
 
全然大丈夫でしたよ(^_^;
分かりやすい説明ありがとうございました。
 
私も閲覧は携帯ですることが多いですね・・・
普段はパソコンがオフラインなので;


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



Name: 428  ..ぴよぴよ(679ポイント)   Date: 2010/01/02(土) 13:20   No:45371       
Title: ロゴの綺麗な透過処理について    
昨日質問しましたが、テーマがたくさんあり一方に答えが集中したことと
無題だったため再度質問させていただきました。

画像のように透過処理すると淵が白くなったり、非常に見た目が悪いです。複雑な文字だとさらに
これが顕著になります。かっこいいゲームを作る人はこうなってませんよね?
透過処理したとき、淵が綺麗になる簡単な方法はありませんか?
是非知っておきたいことなどで、アドバイスや指導よろしくお願いします。


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


Name: SooA [URL]  ..上級者(22,342ポイント)   Date: 2010/01/02(土) 13:26   No:45372     
Title: Re:ロゴの綺麗な透過処理について    
前のスレのレス読んでますか?

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

Name: 428  ..ぴよぴよ(777ポイント)   Date: 2010/01/02(土) 13:50   No:45373     
Title: Re:ロゴの綺麗な透過処理について    
読んでますよ。向こうはぼかしで進んでるんでこちらに質問させてもらってます。
仮に上の画像の白い部分がなくなる処理をするにはどうすればいいんですか?
普通に透過処理したらこんな上の画像のようになります。gimpで透過処理してます。


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

Name: MNS  ..プログラマー(27,163ポイント)   Date: 2010/01/02(土) 14:20   No:45377     
Title: Re:ロゴの綺麗な透過処理について    
SooAさんは、該当のスレッドにて
>3のツールですが画像保存(台紙を透過)でpng出力できますね。
とおっしゃられていますが、これではダメなのでしょうか?


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

Name: 428  ..かけだし(1,096ポイント)   Date: 2010/01/02(土) 14:33   No:45381     
Title: Re:ロゴの綺麗な透過処理について    
透過させたい画像(ロゴ)は動くんですけど、その処理で可能ですか?
無理だと思っていました。できるならgimpでその操作はできますか?


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

Name: あ〜る  ..上級者(15,996ポイント)   Date: 2010/01/02(土) 14:54   No:45382     
Title: Re:ロゴの綺麗な透過処理について    
これは普通に画像自体の淵が白いんじゃないかな?
背景は透明にしてますか?


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

Name: 428  ..かけだし(1,109ポイント)   Date: 2010/01/02(土) 15:05   No:45383     
Title: Re:ロゴの綺麗な透過処理について    
>あ〜るさん
すいません、これは僕の画像じゃないです。こうなっちゃうよって参考としてだしただけです。

話がこじれましたが、要するに周りを影とかでレンタリングしてないロゴ作成ツールを
教えてくだされば最高です。
先ほどgimpのコミック文字でロゴを作成しましたが、これは良さそうですね。それほど知識は
ないんで間違ってても許してください。


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

Name: MNS  ..プログラマー(27,178ポイント)   Date: 2010/01/02(土) 15:19   No:45384     
Title: Re:ロゴの綺麗な透過処理について    
ファイル→画像を保存(台紙を透過)...
これでpng形式の透過された画像が出力されると思います。

画像が動く、というのはよくわかりませんが、試されてはどうですか?


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

Name: 428  ..かけだし(1,347ポイント)   Date: 2010/01/02(土) 15:38   No:45386     
Title: Re:ロゴの綺麗な透過処理について    
>ファイル→画像を保存(台紙を透過)... 
やろうとおもってるんですけど、これは何のアプリなんですか?
gimpのファイルのプルダウンメニューにはそんなのないですよ。
詳しく書いてくれないと分からないですよ・・・。
透過してますけど、文字のエッジの透過処理についてが気になるってことです。

>画像が動く、というのはよくわかりませんが
ロゴをフレームごとに動かしているということです。


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

Name: MNS  ..プログラマー(27,263ポイント)   Date: 2010/01/02(土) 16:04   No:45387     
Title: Re:ロゴの綺麗な透過処理について    
前スレッドにて、質問時に428さんが提示されたツールである"LogoShader"です。
SooAさんも「3のツールですが」と仰られているので、おそらく同じことを言いたかったのだと思います。
pngで出力されますから、エッジも透過処理が行われると思いますが、
とりあえず、提示した手法に基づいて画像を出力し、それをフレームごとに動かしながら描画してみてください。


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



Name: dic  ..熟練のプログラマー(45,636ポイント)   Date: 2010/01/01(金) 21:48   No:45332       
Title: 独自のデータ構造の重複した要素の削除    
あけましておめでとうございます

独自のデータ構造の重複した要素を削除しようと思い
下のコードを書きましたがコンパイルエラーがでて
コンパイルできません

STL内でエラーが起きてるようで手が出ません
どう対処すればいいでしょうか?

#include    <iostream>
#include    <vector>
#include    <algorithm>
using namespace std;

typedef    struct
{
    char    name[12];
    int        left;
    int        right;
} tLeaf;

int    main()
{
    vector<tLeaf>    vLeaf;
    tLeaf    leaf;

    int    i;
    for( i=0; i<10; i++ )
    {
        strcpy( leaf.name, "leaf" );
        leaf.left = -1;
        leaf.right = -1;
        vLeaf.push_back( leaf );
    }

    vector<tLeaf>::iterator p;
    p = unique( vLeaf.begin(), vLeaf.end() );

    return 0;
}



コンパイルエラーの内容です

c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2784: 'bool __cdecl std::operator ==(const class std::istream_iterator<_U,_E,_Tr> &,const class std::istream_iterator<_U,_E,_Tr> &)' : 'const class std::istream_iterator<_U
,_E,_Tr> & 用のテンプレート引数を 'tLeaf' から減少できませんでした。
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2784: 'bool __cdecl std::operator ==(const class std::reverse_bidirectional_iterator<_BI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_bidirectional_iterator<_BI,_Ty,_Rt,_Pt,_
D> &)' : 'const class std::reverse_bidirectional_iterator<_BI,_Ty,_Rt,_Pt,_D> & 用のテンプレート引数を 'tLeaf' から減少できませんでした。
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2784: 'bool __cdecl std::operator ==(const class std::vector<_Ty,_A> &,const class std::vector<_Ty,_A> &)' : 'const class std::vector<_Ty,_A> & 用のテンプレート引数を 'tLeaf' か
ら減少できませんでした。
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2784: 'bool __cdecl std::operator ==(const class std::allocator<_Ty> &,const class std::allocator<_U> &)' : 'const class std::allocator<_Ty> & 用のテンプレート引数を 'tLeaf' から
減少できませんでした。
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2784: 'bool __cdecl std::operator ==(const class std::istreambuf_iterator<_E,_Tr> &,const class std::istreambuf_iterator<_E,_Tr> &)' : 'const class std::istreambuf_iterator
<_E,_Tr> & 用のテンプレート引数を 'tLeaf' から減少できませんでした。
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2784: 'bool __cdecl std::operator ==(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : 'const class std::r
everse_iterator<_RI,_Ty,_Rt,_Pt,_D> & 用のテンプレート引数を 'tLeaf' から減少できませんでした。
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2784: 'bool __cdecl std::operator ==(const struct std::pair<_T1,_T2> &,const struct std::pair<_T1,_T2> &)' : 'const struct std::pair<_T1,_T2> & 用のテンプレート引数を 'tLeaf' か
ら減少できませんでした。
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\algorithm(57) : error C2676: 二項演算子 '==' : 'tLeaf' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。 (新しい動作; ヘルプを参照)
        c:\program files\microsoft visual studio\vc98\include\algorithm(322) : コンパイルされたクラスのテンプレートのインスタンス化 'tLeaf *__cdecl std::adjacent_find(tLeaf *,tLeaf *)' の参照を確認してください
cl.exe の実行エラー


使用コンパイラ:VC++6.0
OS:WindowsXP


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


Name: MNS  ..プログラマー(25,948ポイント)   Date: 2010/01/01(金) 22:01   No:45336     
Title: Re:独自のデータ構造の重複した要素の削除    
std::uniqueにおいて、重複した要素を削除するには、==演算子の定義が必要です。
tLeaf構造体の==演算子を定義してください。


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

Name: dic  ..熟練のプログラマー(45,738ポイント)   Date: 2010/01/02(土) 09:04   No:45359     
Title: Re:独自のデータ構造の重複した要素の削除    
ちょっと難しいですね・・・
やってみます


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

Name: MNS  ..プログラマー(27,081ポイント)   Date: 2010/01/02(土) 09:27   No:45362     
Title: Re:独自のデータ構造の重複した要素の削除    
いわゆる演算子のオーバーロードですが、同じとみなす条件を自由に設定できます。

たとえば、left変数が重複しているものを除きたければ、
typedef    struct
{
    char    name[12];
    int        left;
    int        right;
    
    bool operator==(const tLeaf& rhs)
    {
        if(rhs.left == this->left)
            return true;
        return false;
    }
} tLeaf;
(このような構造体の定義の仕方での演算子のオーバーロードをしたことがないので、  動くかどうかはわかりませんが) こんなのでいいと思います。 それとも、メンバ変数すべてが一致しているときを重複していると見なす場合は、
typedef    struct
{
    char    name[12];
    int        left;
    int        right;
    
    bool operator==(const tLeaf& rhs)
    {
        if(rhs.left == this->left
           && rhs.right == this->right
           && strcmp(rhs.name, this->name)==0)
            return true;
        return false;
    }
} tLeaf;

こうなりますかね


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

Name: dic  ..熟練のプログラマー(45,896ポイント)   Date: 2010/01/02(土) 14:28   No:45379     
Title: Re:独自のデータ構造の重複した要素の削除    
>MNSさん
解決しました
ありがとうございました


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

Name: dic  ..熟練のプログラマー(45,905ポイント)   Date: 2010/01/02(土) 14:29   No:45380 解決!     
Title: Re:独自のデータ構造の重複した要素の削除    
解決ボタン押し忘れです

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



Name: 3T  ..入門者(2,549ポイント)   Date: 2010/01/01(金) 20:25   No:45325       
Title: ソースの一部分を隠したまま共同作業できるか    
あけましておめでとうございます。
また、お世話になります。

visual C++を用いて複数人でプログラムの作業をする場合についてのことです。
ある人が書いたソースを、他の人に見せないようにすることは可能でしょうか。
例えばSTGを作るなら、ステージの部分だけ(敵の出現パターン、弾幕の出し方・種類など)を別の人が記述し、また別の人がそれ以外の部分を書きます。
その状態で、“ステージ以外を担当してる人”は全てのソースを見ることができ、“ステージ担当の人”にはステージ以外のソースは見えない状態にできないか――ということです。
もちろん、“ステージ担当の人”はそのままステージ作りの作業を進めることができるようにしたいです。


よろしくお願いします。 編集済み


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


Name: Justy  ..伝説なるハッカー(487,825ポイント)   Date: 2010/01/01(金) 20:49   No:45327     
Title: Re:ソースの一部分を隠したまま共同作業できるか    
 普通そういう場合は該当部分を外部データ(スクリプト)化します。
 何ステージあるのか、ステージ間のイベント、ステージ内で使われるリソースデータ、
各種出現移動アルゴリズム、エフェクトの指定、アイテム配置などなど全て。

 この方式ならステージ担当者には実行ファイルと付随する画像・サウンドなどのデータを
渡して作業してもらうことになりますので、コードを見せる必要は全くなくなります。


 そうではなくどうしても C/C++のソースで同じことをする必要があるのであれば見せたくない部分を
ライブラリ化するのがいいでしょう。

 ヘッダファイル(.h / .hpp)とライブラリファイル(.lib)とそれをリンクする設定になっている
ソリューション・プロジェクトファイルを渡して作業してもらう、という形ですね。


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

Name: dic  ..熟練のプログラマー(45,722ポイント)   Date: 2010/01/01(金) 21:55   No:45335     
Title: Re:ソースの一部分を隠したまま共同作業できるか    
他の手としてはプロセス間通信もあります
難しそうなので、まだやったことないですが


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

Name: 3T  ..入門者(2,744ポイント)   Date: 2010/01/02(土) 11:29   No:45370     
Title: Re:ソースの一部分を隠したまま共同作業できるか    
>Justyさん
確かに、外部データにしてしまえば実行ファイルだけで大丈夫ですね。
(私は今回は外部データにできなさそうですが。)

ライブラリ化もありですね。。。
丁度ライブラリ化にも興味があったので、調べてやってみようと思います。


>dicさん
これは知りませんでした。。。
何だか楽しそうですね。
調べてみたいと思います。







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


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



Name: おおさか  ..ぴよぴよ(34ポイント)   Date: 2010/01/01(金) 14:08   No:45301       
Title: 導入のサンプルプログラムについて    
あけましておめでとうございます。新年早々すごく初歩的な質問すいません。
BorlandC++ Compiler 5.5によるDXライブラリの使い方の7.プログラムを組むついてなんですが
サンプルプログラムを貼ってメイクをやろうとしたんですがメイクが灰色の文字で選択できません。
これはどうしてなんでしょうか?
 編集済み


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


Name: non  ..比類無きプログラマー(85,155ポイント)   Date: 2010/01/01(金) 17:16   No:45317     
Title: Re:導入のサンプルプログラムについて    
BCC Developerのことでしょうか?
プロジェクトがないと、恐らくメークは灰色ではないかと・・・

>サンプルプログラムを貼って・・・
貼る?
とりあえず「ファイル」-「開く」で
サンプルプログラム実行用フォルダの
sample.bdp を読み込んでみてください。
メークはできませんか?


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

Name: おおさか  ..ぴよぴよ(106ポイント)   Date: 2010/01/01(金) 20:12   No:45323     
Title: Re:導入のサンプルプログラムについて    
nonさんありがとうございます。
メイクはできるようになりました。
しかしsample.bdpをメイクするとエラー F1009 c:\users\ohzeki\documents\c\dxlib_bcc\フンプルプロバラム実行用フドルダ\test.cpp: 入力ファイル 'c:\users\ohzeki\documents\c\dxlib_bcc\フンプルプロバラム実行用フドルダ\test.cpp' をオープンできないとでてしまい実行が選択できません。
これは何が原因何でしょうか?(分かりにくくてすいません。)


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

Name: non  ..比類無きプログラマー(85,277ポイント)   Date: 2010/01/01(金) 20:35   No:45326     
Title: Re:導入のサンプルプログラムについて    
ソースファイルをオープンできない(見つからない)というエラーですが・・・

>フンプルプロバラム実行用フドルダ

字化けしているのが気になります。
もし、ちゃんと、test.cppが存在するのなら、このフォルダの中身を全部別の場所に
コピーして試してみてください。


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

Name: lbfuvab  ..上級者(24,278ポイント)   Date: 2010/01/01(金) 22:46   No:45337     
Title: Re:導入のサンプルプログラムについて    
また面白い文字化けですねw

Name: kazuoni [URL]  ..ハッカー(123,618ポイント)   Date: 2010/01/01(金) 22:56   No:45338     
Title: Re:導入のサンプルプログラムについて    
あーNo:45323に個人情報が載ってしまってますね。修正したほうがいいかもです。

> また面白い文字化けですねw
質問者さん、ごめんなさい。。自分も見るたびにニヤニヤしてしまいます・・・w


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

Name: Justy  ..伝説なるハッカー(487,890ポイント)   Date: 2010/01/01(金) 23:02   No:45339     
Title: Re:導入のサンプルプログラムについて    
 フリー版の bccは日本語などの英数字や一部の記号以外の文字が含まれていると
正常に動作しない(文字化ける)ことがあります。

 有名なデベハトップ現象ですね。

 なので日本語を含まないパスに移動した方がいいですね。


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

Name: おおさか  ..ぴよぴよ(190ポイント)   Date: 2010/01/02(土) 09:04   No:45360     
Title: Re:導入のサンプルプログラムについて    
皆さん回答ありがとうございました。
場所変えて名前を英数字にしてできました。
文字化けは自分でも吹いてしまいましたwww
またお世話になると思いますがその時はまたよろしくお願いします。
本当にありがとうございました。


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



Name: シノニム  ..ぴよぴよ(661ポイント)   Date: 2010/01/01(金) 17:36   No:45319       
Title: fgetsとsscanfが使いこなせません    
いつもお世話になりっぱなしですいませんシノニムです

現在コンソールアプリでこのようなプログラムを作ってみたんですが
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <d3d9.h>
#include <d3dx9.h>

// グローバル変数の定義
FILE *fp;                // 譜面読み込み用のファイルポインタ
int MaxCombo = -1;        // コンボ数
int LastCnt = 0;        // 最終カウント

// モード用
enum
{
    ON,
    OFF
};

// 読み込みの際の構造体
typedef struct CHECK_NOTE
{
    char text[2];
    char code[7];
    int s1;
    int s2;
    int s3;
    int s4;
    int s5;
    int s6;

    // コンストラクタ
    CHECK_NOTE(){
        strcpy(text, "NULL");
        strcpy(code, "NULL");
        s1 = OFF;
        s2 = OFF;
        s3 = OFF;
        s4 = OFF;
        s5 = OFF;
        s6 = OFF;
    }
}CHECK_NOTE;

void main(void)
{

    fp = fopen("NORMAL.txt","r");

    int m = 0;
    CHECK_NOTE Checker;
    while(MaxCombo < 0)
    {
        
        // 構造体変数郡の一部初期化
        CHECK_NOTE();

        // ファイルから1行分読み込む
        fgets(Checker.text, 30, fp);

        // 構造体の各変数に数値を出力
        sscanf(Checker.text, "%s:%d:%d,%d,%d,%d,%d", 
                                        Checker.code, 
                                        &Checker.s1, 
                                        &Checker.s2, 
                                        &Checker.s3, 
                                        &Checker.s4,
                                        &Checker.s5,
                                        &Checker.s6);


        // 終了のカウントと最大コンボ数の出力
        if( (strcmp(Checker.code, "FINISH") == 0) )            LastCnt = Checker.s1;
        else if( (strcmp(Checker.code, "COMBO" ) == 0) )    MaxCombo = Checker.s1;
        // コードがNULLなら
        else if( (strcmp(Checker.code, "NULL" ) == 0) )        ++ m;

        printf("%s\n", Checker.text);

    }
    printf("%d", m);
    fclose(fp);

};


うまく一行ずつ表示してくれません
OSはWindowsXP
言語はC++です

どなたかアドバイスお願いします


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


Name: box  ..ハッカー(148,116ポイント)   Date: 2010/01/01(金) 18:31   No:45320     
Title: Re:fgetsとsscanfが使いこなせません    
>    char text[2];

題意を満たすには明らかにサイズが不足しています。
設計を見直す必要があります。


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

Name: Justy  ..伝説なるハッカー(487,600ポイント)   Date: 2010/01/01(金) 18:49   No:45321     
Title: Re:fgetsとsscanfが使いこなせません    
 どこから突っ込めばいいのか迷うところですが、boxさんの指摘に加えて sscanfのフォーマット指定にも
問題があります。

 %sが使用されていますが、これでは ':'を越えて Checker.codeに格納しようとしますし
なにより Checker.codeで確保された文字列バッファを越えて格納してしまう危険があります。


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

Name: シノニム  ..ぴよぴよ(767ポイント)   Date: 2010/01/01(金) 23:24   No:45341     
Title: Re:fgetsとsscanfが使いこなせません    
ご指摘ありがとうございます

>> boxさん
確かに・・・完全に見落としてました

char text[30];
char code[10];

に修正しました。ありがとうございます



>> Justyさん
Googleでググってみたところこのような使い方をしていたので、それを使わせてもらったたんですが、間違ってましたか?



上記修正したところ、COMBOの一行を読み込んでループから抜けませんでした。これから直してみようと思います




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

Name: Justy  ..伝説なるハッカー(488,466ポイント)   Date: 2010/01/02(土) 00:20   No:45342     
Title: Re:fgetsとsscanfが使いこなせません    

> 間違ってましたか?

 間違っているかどうかは、デバッガなどで確認してみるとわかると思います。
 コードを見た限りでは今の指定ですと Checker.codeに入れられる文字数分だけ、その行が入ることになります。
 %s指定は空白類になるまでを文字列と見なして取り込むので、テキストの1行目が

NULL:408:0,1,1,1,1

で、code[10]なのだとしたら 10文字分の "NULL:408:0"(終端なし)が codeに入ります。

 これは意図した通りではないですよね?


 解決方法としてはとりあえず2つほど紹介しておきます。

1 .textで受けた文字列を : で分解してから、それぞれを解析

 文字列を1文字ずつ調べて解析します。
 
 一例を挙げると、最初の : で区切り
 ・ NULL
 ・ 408:0,1,1,1,1
 の2つの文字列に分解し、前者はそのまま codeに、後者は sscanfにかけて解析する、とか。


2 フォーマット指定を "%9[^:]:%d:%d,%d,%d,%d,%d"とする。
 %[^:]で ':'が現れるまでの文字列を codeに格納します。
 また、9と長さの指定もありますので、codeには最大 9文字までが格納されます。


 どちらの方法をとるにしても、scanf/sscanfを実行した際には必ず戻り値を確認して、
全てのフォーマット指定が機能したかどうを、きちんと確認するようにしてください。


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

Name: シノニム  ..ぴよぴよ(882ポイント)   Date: 2010/01/02(土) 02:59   No:45355 解決!     
Title: Re:fgetsとsscanfが使いこなせません    
>> Justyさん

とても親切かつ丁寧な説明ありがとうございます!

%sが空白で区切られるのは初めて知りました。またひとつ勉強になりました

2の方が簡単そうだったので2の方法を使いましたが、1の方法も時間があるときに試してみたいと思います。

無事解決しました。boxさん、Justyさん、ありがとうございました!


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

Name: Justy  ..伝説なるハッカー(489,466ポイント)   Date: 2010/01/02(土) 03:15   No:45357     
Title: Re:fgetsとsscanfが使いこなせません    

> %sが空白で区切られるのは

 テキストファイルの方を

NULL:408:0,1,1,1,1 
から

NULL 408:0,1,1,1,1 

にできるのであれば、"%s%d:%d,%d,%d,%d,%d"というフォーマットにしても
大丈夫ですね。


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



Name: kms  ..初心者(8,163ポイント)   Date: 2010/01/01(金) 12:12   No:45291       
Title: ランダムエンカウント    
kmsです。皆様、あけましておめでとうございます。

新年早々の質問、恐縮なのですが、
「ランダムエンカウント」の処理の仕方がいまいちわかりません。
softya様のご教授もあり、画面の遷移については勉強させて頂いたのですが、
フィールド画面を歩いていると、敵と遭遇する、というランダムエンカウント方式を
GetRand()関数を用いて色々と試したのですが、
歩いてもいないのにバトル画面になったり、逆にバトル画面が呼び出されなかったりと、
四苦八苦の状態です。
ランダムエンカウント方式は、WinMain関数のメインループ内に存在する、
列挙型〜switch文では実現不可能なのでしょうか?
switch( function_status ) {
        case STATE_FIELD:
            //    フィールド
            Field();
            if( Key[KEY_INPUT_B]==1 ) { //Bキーが押されたら、
                function_status = STATE_BATTLE;    //Battleへ移行。

この箇所のif文を変えたりもしたのですが、うまく実働しません。
もしよろしければ、アドバイス等頂けないでしょうか? 編集済み


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


Name: バグ  ..ハッカー(182,815ポイント)   Date: 2010/01/01(金) 13:07   No:45294     
Title: Re:ランダムエンカウント    
歩いた(移動が成立した)場合にのみ、カウンタ値を生成した乱数分だけ増やし、一定値に達していたらバトルへ移行する…みたいな流れでよいのではないかと思います。

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

Name: DVDM [URL]  ..熟練のプログラマー(47,213ポイント)   Date: 2010/01/01(金) 13:18   No:45295     
Title: Re:ランダムエンカウント    
>>kmsさん
ソースを全部見たわけではないので間違っていたら非常に申し訳ないのですが
歩くキーを入力した時、ランダムな数を発生させる関数を呼んでみてはいかがでしょうか。

そのまま書くとこんな感じですか・・・。
        if((Key[KEY_INPUT_UP] == 1) || (Key[KEY_INPUT_DOWN] == 1) || (Key[KEY_INPUT_LEFT] == 1) || (Key[KEY_INPUT_RIGHT] == 1))
        {
            if(GetRand(100) == 1)
                function_status = STATE_BATTLE;
        }



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

Name: Justy  ..伝説なるハッカー(487,445ポイント)   Date: 2010/01/01(金) 13:43   No:45296     
Title: Re:ランダムエンカウント    
 歩きが成立したかどうかは ch.walking_flagで判定できますね。

 よくあるゲームのランダムエンカウントは地形だったり持っているアイテムやプレイヤーのレベルなどの
影響を受けて常に確率が変動していることがありますが、このサンプルならそこまでやる必要はないので、
バグさんの方法で十分だと思います。

 もういっそのこと「一定歩数歩いたらエンカウント」でもいいかもしれませんね。
 一定歩数と言っても値はランダムで決めて、バトルが終わる度にランダムで初期化しなおせば、
毎回異なる歩数でエンカウントすることになりますから。


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

Name: kms  ..初心者(8,050ポイント)   Date: 2010/01/01(金) 13:55   No:45297     
Title: Re:ランダムエンカウント    
バグ様、DVDM様、Justy様、
ご丁寧なお返事、誠にありがとうございます。

>「一定歩数歩いたらエンカウント」
歩数を記録するのに、専用の変数を新たに定義したほうが良いのでしょうか?

皆様のアドバイスでなんとかランダムエンカウントの処理が出来ました。
本当に助かりました。ありがとうございます。


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

Name: Justy  ..伝説なるハッカー(487,502ポイント)   Date: 2010/01/01(金) 13:58   No:45298     
Title: Re:ランダムエンカウント    

> 専用の変数を新たに定義したほうが良いのでしょうか

 そうですね。
 定義するなら ch_t構造体の中が望ましいかと。


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

Name: kms  ..初心者(8,086ポイント)   Date: 2010/01/01(金) 14:03   No:45299 解決!     
Title: Re:ランダムエンカウント    
>定義するなら ch_t構造体の中が望ましいかと。

わかりました。
ありがとうございます!


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



Name: ruce  ..ぴよぴよ(213ポイント)   Date: 2009/12/31(木) 03:06   No:45229       
Title: malloc realloc ポインタの参照渡しについて    
はじめまして、C言語の勉強をしている者です。
ポインタの参照渡しを行い、2日ほど足踏みしている状態で
もうどうにもわからないので、質問します。

以下にサンプルコードを書きます。

===================================================
1. 普通に動くもの
===================================================

---------------------------------------------------
main
[概要] aの配列を hoge関数に参照渡しを行い
       aの配列に値を代入する。
       要素は「5」個とする。
---------------------------------------------------
int main(void) {
  int a[5];

  hoge(a);
  return 0;
}

---------------------------------------------------
hoge
---------------------------------------------------
void hoge(int *a) {
  int i;

  for (i = 0; i < 5; i++) {
    a[i] = i;
  }
}

/// ends


===================================================
2. 質問(動かないもの)
===================================================

---------------------------------------------------
main
[概要] aの配列を hoge関数に参照渡しを行い
       aの配列に値を代入する。
       要素は決まっていない。
---------------------------------------------------
int main(void) {
  int a[1];

  hoge(a);
  return 0;
}


---------------------------------------------------
hoge
---------------------------------------------------
void hoge(int *a) {
  int i;
  int *buf;
  int total = 0;

  // 要素生成
  a = (int *)malloc(sizeof(int) * 1);

  // 999 になるまで繰り返す
  for (i = 0; total <= 999; i++) {

    // 実際は「i」ではなく、キーボードからの入力値になります。
    a[i] = i

    // 合計に加算
    total += tensuu[i];
    if (total <= 999) {
      // 要素生成
      buf = (int *)realloc(a,sizeof(int) * i + 2);
      if (buf == NULL) {
        exit(0);
      }
      a = buf;
    }
  }
}

/// ends

かなり醜くて申し訳ありません。。。

参照渡しを行い、値を設定し戻してくれるものだと思っていたのですが
「malloc」, 「realloc」を使用すると、どうもうまくいきません。

使い方がダメなのでしょうか。。
すみません。どなたか。。。どなたかご教授いただけないでしょうか。 編集済み


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


Name: フリオ  ..プログラマー(30,424ポイント)   Date: 2009/12/31(木) 05:00   No:45231     
Title: Re:malloc realloc ポインタの参照渡しについて    
 
 main の int a[1]; はint型の配列として宣言されているので、
a の値を変更できません。int *a; としましょう。
 
 
 参照渡し(ポインタの値渡し)は、値を変更したい変数へのポインタを渡します。

この場合は、int型へのポインタ型の変数 a の値を変更したいので、
a へのポインタ、つまりint型へのポインタ型へのポインタ型を渡さなければなりません。
したがって、void hoge(int *a) ではなく void hoge(int **a) です。
 
 realloc だけでなく、malloc のエラーチェックもすべきです。
 tensuu[i]は a[i] の間違いでしょうか。
 
 編集済み


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

Name: non  ..比類無きプログラマー(84,832ポイント)   Date: 2009/12/31(木) 09:25   No:45234     
Title: Re:malloc realloc ポインタの参照渡しについて    
>buf = (int *)realloc(a,sizeof(int) * i + 2);
最後の+2は、何でしょう?


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

Name: ruce  ..ぴよぴよ(581ポイント)   Date: 2009/12/31(木) 16:49   No:45251     
Title: Re:malloc realloc ポインタの参照渡しについて    
>> フリオさん
ありがとうございます!

> realloc だけでなく、malloc のエラーチェックもすべきです。
すみません。そうします!

> tensuu[i]は a[i] の間違いでしょうか。
間違いです。すみません。。。

ポインタのポインタを引数にして
早速昼からガリガリやっているのです
が、できません。。。なぜ

以下にサンプルコードを書きます。(main)は省きます。
==========================================
hoge
  [変更点]
  ・ 引数を「int *」 → 「int **」に変更。
  ・ malloc, realloc のキャストを
    「int *」 → 「int **」に変更。
==========================================
void hoge(int **a) {
  int i;
  int total = 0;

  a = (int **)malloc(sizeof(int) * 1);
  if (a == NULL) {
    exit(0);
  }

  for (i = 0; total <= 999; i++) {
    // ここでエラー
    a[i] = i
    total += a[i];
    if (total <= 999) {
      a = (int **)realloc(tensuu,sizeof(int) * i+2);
      if (a == NULL) {
        free(a);
        exit(0)
      }
    }
  }
}


ずばり聞きます。
何を勉強すれば、ここの関数を綺麗に通すことができますか!
もう3日もこの問題に。。。悲しいです。
どうかもう少しだけお付き合いをお願いします。。。

>> nonさん

> 最後の+2は、何でしょう? 
最初に malloc で要素を「1」取得し、
次に「2, 3, 4 …」と前の値を
保持したまま要素を取得したかったから「i + 2」にしました!

…あれ?もしかしておかしいですか。。。?


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

Name: box  ..ハッカー(148,087ポイント)   Date: 2009/12/31(木) 17:34   No:45253     
Title: Re:malloc realloc ポインタの参照渡しについて    
せめて、コンパイルエラーくらいは自分で除去しましょう。
tensuuという未定義変数を使っていたり、文末を示すセミコロンがなかったり…。


>   // ここでエラー

何というエラーですか?


現時点でのソースを「そっくりそのまま」さらしてみてはどうでしょう。
main関数も、省略せずに。 編集済み


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

Name: non  ..比類無きプログラマー(84,938ポイント)   Date: 2009/12/31(木) 17:41   No:45254     
Title: Re:malloc realloc ポインタの参照渡しについて    
>> 最後の+2は、何でしょう? 
>最初に malloc で要素を「1」取得し、 
>次に「2, 3, 4 …」と前の値を 
>保持したまま要素を取得したかったから「i + 2」にしました! 

ということは、intは2バイトだと決め打ちをしたことになりますね。
何のために,sizeof(int)を使っているのか意味がなくなります。




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

Name: non  ..比類無きプログラマー(85,106ポイント)   Date: 2009/12/31(木) 18:26   No:45255     
Title: Re:malloc realloc ポインタの参照渡しについて    
>a = (int **)realloc(tensuu,sizeof(int) * i+2);
ああ、もしかしたら、

a = (int **)realloc(tensuu,sizeof(int) * (i+2));
括弧がないのか。



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

Name: non  ..比類無きプログラマー(85,123ポイント)   Date: 2009/12/31(木) 19:06   No:45256     
Title: Re:malloc realloc ポインタの参照渡しについて    
>a[i] = i;
*(*a+i)=i;


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

Name: ruce  ..かけだし(1,146ポイント)   Date: 2010/01/01(金) 01:26   No:45273     
Title: Re:malloc realloc ポインタの参照渡しについて    
> nonさん
と・・とれてる・・・!?
とれてる!
な。。。なんで。。。!?

できました…とうとう!ありがとうございます!

で、でも中身が見たい・・・どうなっているんだろう。
VC++ 2008 で配列の中身をずらーっとみれる方法がないものか。。。。

ありがとうございます!


> boxさん
ソースコードをさらします!
変なところがあればどうかご教授をお願い致します。。。

---------------------------------------------------
main
[問題] 点数を 999 になるまで入力させる。

今回、動的に配列を拡張させる方法を学びたく
malloc, realloc を使用しました。
結果、3日も。。。
---------------------------------------------------
int main(void) {
  int *tensuu = 0;
  int tensuuLen;

  tensuuLen = pGetTensuu(&tensuu);
  return 0;
}

---------------------------------------------------
pGetTensuu
---------------------------------------------------
int pGetTensuu(int **tensuu) {
  int i;
  int total = 0;

    // 指定した引数の数値分
    // 要素を取得し、アドレスを戻す関数
  *tensuu = PMallocIntegerArgument(1);
  for (i = 0; total <= 999; i++) {
    // 指定した文言を表示し
    // 指定した長さ以内の   (TENSUU_LENGTH : 3)
    // 指定した最大値から   (TENSUU_MAX    : 999)
    // 指定した最小値までの (TENSUU_MIN    : 0)
  // 値を入力させ、戻す関数
    *(*tensuu + i) = PGetInteger("点数を入力してください", TENSUU_LENGTH, TENSUU_MAX, TENSUU_MIN);
    total += *(*tensuu + i);
    if (total <= 999) {
      // 指定した前ポインタの情報を保持し
      // 指定した要素数分
      // 要素を取得し、アドレスを戻す関数
      *tensuu = PReallocIntegerArgument(*tensuu, (i + 2));
    }
  }
  return i;
}


すみません。汚いかもしれないですが、ご指摘を…!


====================================================
たびたびすみません。
実は別の問題にも手を出していまして…

かなり虫のいい話なんですが
そちらの質問も少しだけ、少しだけヒントをいただければと

内容は以下の通りです。(自分で考えた内容, 方法なのですが…)
・ ファイルの中身を二次元配列に格納する

このとき、二次元配列を malloc, realloc で動的に
(ファイルの行数分の要素, ファイルの一行の文字列分の要素)
要素を取得できないものかと。。。

すみません。もう少しだけお付き合いお願いいただければ…!

甘えるな!ということで無理であれば放置していただいてOKです。。!
もしどなたか見ていただければソースコードをさらします。
====================================================


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

Name: non  ..比類無きプログラマー(85,252ポイント)   Date: 2010/01/01(金) 12:39   No:45292     
Title: Re:malloc realloc ポインタの参照渡しについて    
>このとき、二次元配列を malloc, realloc で動的に 
(ファイルの行数分の要素, ファイルの一行の文字列分の要素) 
要素を取得できないものかと。。。 

もちろんできます。
ただ、2次元配列の必要があるのかよく考えてください。
1次元配列にする
ポインタ配列にする
構造体にする
など・・・

前のプログラムも勉強としては、これでいいのですが、
確保したメモリのアドレスをreturnした方が簡単だと思う。
ソースに問題がないかどうかは、自作関数部分も添付してくれなきゃわからない。


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



Name: shilfia  ..ぴよぴよ(595ポイント)   Date: 2009/12/27(日) 21:21   No:44954       
Title: 就職のことについて相談です    
こんにちは。
初の投稿がプログラミング自体の質問ではないので恐縮なのですが・・・。
ゲーム業界に憧れて情報系大学に進学し、ある程度の種類のプログラミングを経験しました。
(実際、学校でできることは少ししかないですから、独学で覚えないと身につきませんね;)
現在はC++をより深く理解しようと勉強しています。
規約には就職に関する記事を書いてはいけないという記述が無かったので、質問させていただきます。


/*ここから本題*/

ゲーム業界って企業によっては作品提出があるじゃないですか。
今それに向けてゲームを作ろうと思っているのですが、作品提出があることに気付いたのが遅すぎてちょっと焦っています。
ゲーム業界志望の人はおそらく一年くらい前から少しずつ準備していたでしょうから、彼らに対抗するだけの作品が作れるかどうか分かりません。
実際にゲーム(もどき)を作ったのはOpenGLで作った3Dシューティング(ゲームとして成り立っていないですが)のみです。
流石にこれを企業側に提出するわけにはいきませんので、C++で新しいものを作ろうと思っているのです。
ただ・・・プログラミング技術を磨きつつゲームを作ることは今からでは現実的に不可能だと知り合いからもネット越しに相談した方からも言われまして。


・不可能を前提にプログラミングをする(この場合、他企業に対する活動をメインにする)
・とにかくゲームを完成させることを優先する(就活に大きな影響を及ぼさない範囲内で)
・ゲームを作ることは諦め、別のことに時間を使う

この中のどの選択が正しいのか分からなくなりました。
自分なりの答えは一応あるのですが、何か参考になるアドバイスも欲しいと思い質問した次第です。
よろしくお願いします。

ちなみに経験したことあるプログラミング言語は OpenGL、Java、Java3D、C、C++ です。
C++のスキルは「やさしいC++」「猫でもわかる〜」(参考書名)シリーズを理解している程度です。

もし不適切な質問であった場合はすぐに削除します。


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


Name: mnkr  ..入門者(3,190ポイント)   Date: 2009/12/27(日) 21:50   No:44957     
Title: Re:就職のことについて相談です    
ゲーム業界のことはあまりわかりませんが。。。

新入社員にそこまで技術を求めている企業はあまりないと思います。
入社後に研修とか、先輩と一緒に実務をしながらの勉強になるかと。

例えば面接で、
自分はシューティングゲームを作ろうとして、
・自機を動かす
・敵を出現させる
・自機から弾を出して、敵との当たり判定を計算して消滅させる
までしか実装できずに、未完成な状態です。
と否定的な発言をしないで、

自分はシューティングゲームを作ろうとして、
・自機を動かす
・敵を出現させる
・自機から弾を出して、敵との当たり判定を計算して消滅させる
まで実装することができました。
残りのボスの出現や音楽再生機能については勉強中です。
と前向きな感じで、未完成なところは勉強中です、と答えてやる気と向上心をアピールするのが良いかと。

面接で上手に喋るのもスキルです(笑)

私の意見はこんな感じです。
他の方の意見も聞いてみたいですね。。。


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

Name: softya  ..比類無きプログラマー(75,004ポイント)   Date: 2009/12/27(日) 22:39   No:44963     
Title: Re:就職のことについて相談です    
ゲーム会社が示して欲しいのは、どれだけの期間でこれだけの物を作ったのかとか。自力でこれだけ考えました!って自力で解決出来る力があるかです。
大手は育ててくれますが、中小だといきなりお仕事に放り込まれます。その中でもまれて育って貰うって感じでしょうか。
中小でも倍率10倍(就職難の昨今だと更に厳しいかも)とか平気であるのがこの業界ですので、その倍率を勝ち抜ける何かを示すと良いと思います。
とりあえず言語力よりも、ゲームのセンス(操作性やアルゴリズムの面白さなど)や専門分野で強みがあるなら、それに関係したプログラムでアピールするのも手ですよ。

こちらもお読み下さいね。
http://www.purplemoon.jp/game/

 編集済み


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

Name: shilfia  ..かけだし(1,051ポイント)   Date: 2009/12/27(日) 23:46   No:44973     
Title: Re:就職のことについて相談です    
>mnkrさん

返信ありがとうございます。
できない、と言うよりもここまでできる、と言った方が確かに良い雰囲気を感じられますね。
面接は運も絡んでくるようですから、そのような言い方ができるように頑張ります。
面接官にどれだけ印象付けられるかが勝負ですね。

大手ゲーム業界含む大企業は主に人柄を見ているらしいですね。
ゲーム業界やSEの中小企業は特に、ある程度の技術が無いとつらいところが多いとよく聞きます。
やはり若手を育てる余裕がある企業に就職できることが一番ですね。


>softyaさん

返信ありがとうございます。
やはりゲーム業界を志望するには少なくとも自力でゲームが作れるくらいのスキルが欲しいのですね。
問題解決やアルゴリズムの考慮をするためにも、何か一つ完成したプログラムが必要ですね・・・。
中小企業は即戦力になるような人材を求めていると聞きますが、つまりそれは大企業並みに就職が難しいということですよね。
今はどの企業も倍率が高いので、できる限りちゃんと準備して採用選考に臨みたいと思います。

リンクされているサイト、参考になります。
ゲーム業界就職は厳しい道のようです・・・。


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

Name: sizuma [URL]  ..上級者(21,508ポイント)   Date: 2009/12/28(月) 00:05   No:44974     
Title: Re:就職のことについて相談です    
来年就職で、ゲーム会社も何社か受ける予定です。

作品提出は僕も完成してる作品が大事だと思います。
あとは、先生に
「どうせたいした技術なんてないんだから、ゲームとしておもしろい作品を作れ」
って言われましたね。
僕もそのとおりだと思いました。(もちろん悔しくはありますけど)

ちなみに僕は提出作品は作ってないので、提出が必要な会社は受けられないです。
特にゲーム会社に絶対就職したいわけでもありませんし、絶対どこかに滑り込める業界でもないでしょう。

shilfiaさんも、ゲーム制作をこれから始めるとのことですが、2011年卒業ということですよね?
それならば、ゲーム業界はもちろん他の業種のエントリーや説明会にも参加しなくてはいけません。
すでに満席の説明会や(東京開催の任天堂)、プログラマーのセミナー(カプコン)がちょっと前にあったものもあります。
というわけで2011年卒ならば、すぐにでも希望の会社へのエントリーを始めることです。
飛行機とるにしても、一ヶ月前に予約しておいた方が格段にやすいですし。
地方は大変です・・・
企業がみんなこっちにくればいいのに(笑

それとともに、他の業種の企業の研究もするべきだと。
ゲームがだめだった後から他のところを受けるって言うのは、売れ残りから探す、ってのとほぼ一緒でしょうからね。

大手なら作品提出がないところもあるので、それも視野にいれてみるのはいかがでしょうか?
(倍率はめっちゃ高いですけどね。100倍とか)

では、がんばりましょう^^


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

Name: shilfia  ..かけだし(1,336ポイント)   Date: 2009/12/28(月) 01:14   No:44978     
Title: Re:就職のことについて相談です    
>sizumaさん

返信ありがとうございます。
はい、2011年卒です。
任天堂の説明会は大阪会場の方で予約しました。
ゲーム会社で今のところ説明会に行ったのはカプコンだけです。
エントリーは結構やっています、食品とかメーカーとかバラバラですけどね(笑)
私の学部の場合、先輩の就職先を見ても一番内定をもらいやすいのはSE業界なので、大企業から中小企業まで狙ってます。

作品制作は昔からプログラムを組んでいる人の足下にも及ばないので、なんとか自分だけのアピールポイントを持ったものを作りたいです。
それを考えるのも楽しいんですが難しいです・・・。
第一志望は任天堂ですが(まさに100倍の世界)、エントリーシートの段階で蹴られる可能性もあるので選考を受ける企業は20社は確保しておきたいです。
就職浪人は絶対避けたいですから・・・。

1月から一気に忙しくなると思うので、お互い頑張って行きたいところに就職しましょう!


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

Name: sizuma [URL]  ..上級者(21,655ポイント)   Date: 2009/12/28(月) 01:23   No:44979     
Title: Re:就職のことについて相談です    
僕も任天堂は大阪行きますよ。
東京だと丁度他の説明会の間にいけたんでよかったんだけど、連絡メール来るのが遅い。
受付開始してから10日以上たってたと。
めったに更新しないから毎日チェックなんてしねーよ・・・
と思ってイメージダウンです。
とりあえずひやかしに来る人は帰って欲しいですよね^^;

ではでは。


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

Name: tk  ..かけだし(1,606ポイント)   Date: 2009/12/28(月) 11:32   No:44999     
Title: Re:就職のことについて相談です    
ゲーム業界のことは無知で、
ちょっと皆さんの意見とは違うものですが・・・
(ちなみに自分はパッケージソフトを作っています。)

僕なら、作品提出がない会社を選んで、入社前まで言語の知識を増やします。

理由として(体験談なので本当かどうかの判断はまかせます)
@ 入社前から技術を求める会社は、人を育てることをあまりしません。
A ゲームを作ることを目標にすると、言語の知識が不完全になるので、いざ就職したところで
  業務内容についていけない場合があります。
B とりあえず会社に入社して、3〜4年、技術を学びます。
  学んだ後に転職で、大手に行きます。
  (知識もあり、経験も積んでいるということで、会社は評価してくれます。ただし1〜2年では新卒と同じ扱いなので、反対にマイナス評価になりやすいです)

以上の点で、僕は
> ・ゲームを作ることは諦め、別のことに時間を使う
を選びます。

今からなら、しっかり勉強すれば、入社前までには結構な知識が身につきます。
もし知識がつく前に面接などがある場合は、「勉強してますよ」を十分にアピールすれば大丈夫です。



例え話をします。

凹凸がいっぱいある基盤(自分の知識)があります。
そこに家を建てようとすると、その凸凹にあう家(会社で学ぶ知識)を作らないと簡単に倒壊してしまいます。
家を建てる職人さん(会社)たちは、凸凹に会うように家を建てなければなりません。
これでは、手間もお金もかかってしまいます。
職人さんたちは、匙を投げることでしょう。(つまりは・・・)

では、どうすればいいでしょうか。
簡単なことです。
基盤を綺麗に慣らせばいいだけです。
凹凸がない綺麗な基盤(洗練された自分の知識)にはその上に家を乗せればいいだけです。
職人さんたちは、よろこぶでしょう。



と、極端なたとえ話をしましたが、
要は中途半端な知識でゲーム作って、それで大手入っても凹凸を増やすだけです。
ならば、中間にステップをひとつ置き、凸凹にあうもうひとつの基盤を
今の凸凹の上に置いてしっかりとした基盤を作ればいいのです。



長々と書きましたが、あくまで意見のひとつです。
頭の隅にでも置いてくだされば幸いです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,126,255ポイント)   Date: 2009/12/28(月) 11:59   No:45003     
Title: Re:就職のことについて相談です    
> shilfiaさん

こんにちは。
就活お疲れさまです^^

私も2年前に就活をした人間です。
(ただしゲームとは全く関係ない会社で働いています)

ゲーム会社ってゲーム提出必須なんですか?望ましいとかじゃなく?
任天堂は確か無いですよね?

今からのシーズンドンドン忙しくなると思うので、今からしっかりしたゲームを一本作るのは結構大変なんじゃないかと思います。
忙しくなる前に確保できる時間の限界としては1月末位でしょうか。
2月に入ると本格的に忙しくなるので、頑張っても後1ヶ月でしょう。

なので、短期間で作れるよう、
もしDXライブラリに興味があればうちの龍神録プログラミングの館とかを参考にSTG作ってみてはいかがでしょう?
私の少ない経験上、素材がすべて揃っている環境でゲームを作るのと素材を1から用意しないといけない環境でゲームを作るのじゃ制作効率が全く違います。
また、プログラムも一から作るのではなく、改造ということであれば、
万一の時、「にっちもさっちもいかなくなった」という事態は避けられると思います。

また、就活が終われば時間も出来ます。
3月まで10ヶ月位あると思います。
卒論のシーズンに入ることはあるでしょうが、10ヶ月ずっと趣味も出来ないほど忙しいことは無いと思います。
そこで面接では「今回提出したゲームは現在作りかけで、3月までに完成させる予定です」のような事を言えばよいのではないかと思います。


しかし、私は何か作品提出必須のところは受けたことが無いので知りませんが、
面接官がみたいのは今の技術力ではないと思います。
それを作れるだけのガッツがあるか、自分で困難に立ち向かえる力があるか、そういうところだと思います。
ある程度の規模があるのに即戦力を求める企業があったとしたら、その会社は入ると苦労すると思います。

即戦力を求める事はなく、人間をみる企業の方が入ってからの事を考えると、良いと思います。
私は社風や会社としての考え方を大事にしました。
新人の事をよく考えてくれて、社員を大事にしてくれる会社がいいなと思い、現在の会社に入りました。
入ってみて、それは正解だったなと思っています。
(((自分がしたい仕事だったとしても、劣悪な環境で一生の大半を過ごすのはかなりキツイ事だと思います

> 選考を受ける企業は20社は確保しておきたいです。 

う〜ん、これについては私は違う考え方を持っていて、
就職説明会とかでは「30社も内定もらった」とか言う人が講演やったりしていますが、
果たしてその方がいいんだろうか・・と私は疑問に思います。
就活やってみて、30社も会社のことよく調べてしっかり対策して受けるなんて出来ないと思いました。

30社の中には本命以外のどうでもいい企業もあったんでしょうが、
難しい一流企業などはしっかり対策していかないと困難だと思います。
会社の経営理念だとか、歴史だとか、どんな業務を行っているのかとか、その中で自分はどう活躍したいのかとか言えるようにしておく必要があるでしょうが、あまりに多いとそれが難しくなりそうです。

なので、私はこれだと決めた企業以外はほとんど受けませんでした。
その代わり受ける企業に対してはしっかりと対策をしていきました。
二頭追う者は一頭をも得ず というように、沢山受けるより、
「ここだ!」と思うところにしっかり集中した方が良さそうな気がします。

> エントリーは結構やっています、食品とかメーカーとかバラバラですけどね

これも統一してみてはどうでしょう?
自分にやりたいことの信念を貫く姿勢が自然に表れてくると思います。
また、エントリーシートは結構使い回せる文章があり、
私は「どこの会社あてにも出せるエントリーシート」なるものを先に作っておき、
各それぞれの会社にはそれを元にふくらませる形で書きました。

各会社ごとに言うことが変わってしまっては、書いた内容を勘違いしてしまって、
面接でふとした瞬間に書いたことと違う事を言ってしまう可能性もありますし、
何より、エントリーシートを書く時間の時間短縮になります。

また、文章構成や文章の内容を神経質に確認しなくても、一度しっかりしたものを作っておけば安心して
それに頼れるというメリットもあります。

shilfiaさんは食品とかも受けていると言うことですが、
ゲーム会社でなく、食品とかでもいいのでしょうか?
ゲーム会社が駄目なら何かグラフィカルな分野のプログラマーだとか、
近い分野は沢山あると思います。
また、どうしてもゲーム会社ではないと嫌なのなら、
しばらく近い分野で修行しておいて中途で入るという手もあると思います。

中途で入る場合、全く関係ない会社で働いていると難しいと思います。


・・とまぁ纏まらない話をしましたが何かの参考になれば


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

Name: たかぎ [URL]  ..ハッカー(145,713ポイント)   Date: 2009/12/28(月) 12:32   No:45008     
Title: Re:就職のことについて相談です    
> shilfiaさん
多少は相談に乗れることもあるような気がしますが、掲示板で書くのはちょっと抵抗があります。
気が向いたらメールでもください。


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

Name: softya  ..比類無きプログラマー(78,306ポイント)   Date: 2009/12/28(月) 12:33   No:45009     
Title: Re:就職のことについて相談です    
元ゲーム会社(小)にいたので、補足しますね。
今では変わっているかも知れませんが、そのころの印象をもとに書いてます。

>ゲーム会社ってゲーム提出必須なんですか?望ましいとかじゃなく? 

まったく作品提出が不要な会社もあります。新卒で提出不要なら研修期間の間に教育してくるって会社ですね。大手だと、そんな感じが多いです。
ただ、その間に学習についていけないと違う部署に回される可能性がありますけどね。
セガや任天堂、スクウェア・エニックスなどはそんな感じです。
コナミは、プログラマーは不要ですがデザイナー職、サウンドクリエイター職は作品提出が必要みたいですね。

作品提出を求める会社は、中小だとほとんどだと思います。
例えば有名なレイトン教授で有名なレベルファイブですが、
http://job.rikunabi.com/2011/company/employ/r166010008/

◆プログラマー
・C、C++が理解できる方
・3Dプログラミングの自信のある方
・趣味でゲームプログラムを組んだことがあり、作品を提出することが可能な方 

と成っています。
まぁ、会社次第なんですけどね。
いっぱい応募があるので、とりあえず技術力で面接するか決めてるってのが現状じゃないでしょか。
チュンソフトに至っては、新卒募集がありませんね。転職のみ募集中です。

>もしDXに興味があればうちの龍神録プログラミングの館とかを参考にSTG作ってみてはいかがでしょう? 
これも会社によってはマイナス要素の可能性がありますね。
DXライブラリに頼らないとゲームを作れないのかって事になりますので、能力的に低く見られる可能性が出てきます。その他の部分の完成度が高ければ別ですけど。
ちなみに、作品提出を求める会社は、ソースコードも一緒に提出を求めてくる可能性が高いです。それと完成度と言っても作品の完成度ではなくてアルゴリズムの出来具合だったり、ソースコードの出来の良さだったり、1ステージ、1ボスのシューティングでもうまく出きている&作品を仕上げる能力があるってところがアピールのポイントだったりします。


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

Name: shilfia  ..かけだし(1,418ポイント)   Date: 2009/12/28(月) 21:18   No:45052     
Title: Re:就職のことについて相談です    
>sizumaさん

任天堂は基本的にメールで告知をしない気がしますね。
うちに入りたければ、こまめに企業情報をチェックする程度は当たり前と考えているのかもしれません。
冷やかしの人というか、興味が無くて選考は受けないけどなんとなく説明会に行くというような人はちょっと控えてほしいかなと思います;
説明会に行って、もしかしたら志望企業に入るかも!って人は行くべきだと思います。



>tkさん

返信ありがとうございます。
たとえ話も分かりやすくて非常に参考になりました。
作品提出を求める企業はやはり余裕が無い、ということなんですね。
まずは言語の知識を増やすことを目標にしようかと思います。
ゲーム制作の方は龍神録を参考に、改造STGから入ろうかなと・・・。
言語知識があれば、ゲーム業界に入れなかったとしてもSEやシステム方面で役に立ちますからね。
面接でも言語知識のアピールをしてプラスに見られるよう頑張ります。
独習Cあたりを完璧に理解できるくらいの知識習得を目標にしようかと思います。



>Dixq (管理人)さん

返信ありがとうございます。
大手のゲーム会社は提出不要のところが多いです。
説明会でも人柄を重視してると言っていました。
プログラマー以外の職種は大手でも課題提出があるみたいですが・・・。

やはり忙しくなる時期までに一からゲームを制作するのは難しいですね。
龍神録の作り方を参考に、空いた時間で改造STGを少し作ってみようと思います。
課題提出のあるゲーム企業は完成していること前提で課題を要求してくるので、もし提出するなら一応完成(スタート画面からEDまで)はさせておきたいです。
ステージは下手したら1面まで・・・とかになりそうですが;
今はゲーム制作よりは言語知識を増やそうかな、という方向に傾いています。

選考を受ける企業数ですが、主にメインのところ(PG,SEやシステム系)以外は面接の練習として受けようかなと思っています。
食品業界でも志望職種は情報システムだったりします。
ただ、味の○や○ッテにほんとに行きたいかと言われれば、悩んでしまいますね。
周りの人たちはエントリーだけで100社超えてたりしてちょっと焦っていたのですが、行きたいところに的を絞るのもやり方の1つですよね。
落ちたらどうするんだと聞かれれば、絶対落ちないと自信を持って答えられるくらいに企業対策するべきですね。

ゲーム会社に就職できなかった時は中途採用も視野に入れると思います。
SE系だとプログラミングに関する知識も仕事によってはたくさん得られると思うので、そこで数年勉強して中途採用に応募するのもアリかなと。

エントリーシートの対策はあまり進んでないので、そろそろ本腰入れてやっておかないとまずいですね・・・。
使いまわしできる文章を早めに考えておこうと思います。



>たかぎさん

返信ありがとうございます。
メールさせていただきます。



>softyaさん

うーん、やはり課題提出のある企業は即戦力を求めているんでしょうね。
それだと応募者も技術力の高い人が多い気がします。

アルゴリズムやソースコードの出来を主に見られるとなると、技術力の面でも厳しいものがあります・・・。
今は言語能力の向上を目指した方が結局は良い方向に行くのかも、と思いました。


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

Name: ちゃお  ..かけだし(2,252ポイント)   Date: 2009/12/30(水) 18:12   No:45197     
Title: Re:就職のことについて相談です    
去年、就職活動でゲーム会社受けました。
大手ばかりですが。

大手は、人柄採用ですね。

ソニーコンピュータエンタテイメントは、提出課題ありました。
友人は、ゲームではなく、研究プログラム提出で内定もらってましたが、断った。
私は、提出できるようなプログラムなかったので、やめました。

バンダイナムコゲームス、カプコンは、
バンナムはES通過後に試験
カプコンは、会場でES提出して、そのまま試験
ハッキリいって難しいです。よっぽどの情熱と努力がなければ点数8割超えられません。氷河期だったからかな?かなり人の質を求めたのかも
試験内容は
・ビット演算
・C/C++のプログラムのバグ修正や穴埋め問題(近年は、Cではなく主にC++の問題が主流になりつつあるのでクラスやオブジェクトを引数に扱った場合などの問題がわかるかとか)
・コンピュータアーキテクチャの知識を問う問題(メモリとかハードディスク、スター型、ハブとか)
・コンピュータグラフィックスの知識を問う問題(大学の講義レベルじゃわからないぐらいハード、研究者の知識レベル、CG検定がわかればいけると思います)
・ネットワークの知識(pingコマンドやipconfigコマンドを扱ったときの問題、全体的にはドットコムマスターシングルスターぐらいかな、IPアドレス、サブネットマスクとかいろいろ)
・高校物理では、垂直落下、斜方投射の問題や質量保存の法則・力学的エネルギーを扱う問題
・高校数学では、2次関数や円の面積、級数、極限、定義式を使った微分の計算

CG、ネットワークは、用語をしっかり覚えてるいるかという問題が多かったです。

任天堂は、もっと簡単ですね。CがメインでC++が少し、後はネットワークで言えば、DNSサーバーについてやコンパイル・リンクについての説明しろ程度の問題
あとは、思考特性を見るような記述問題やアイディア力を問う記述問題
マリオについての問題なんかも 笑
面接重視なんでしょう。

面接では、技術面接(技術力)・人柄面接(思考特性)・最終面接(意欲)を判断するような感じですかね。
プログラミングの関して得意かどうか聞かれたら、プログラミングは得意だと言い張ることだと思います。
少しでも、苦手や得意じゃないと言うなら、ほぼ落ちます。
内定もらった後に勉強すればいいんです。Cプログラミングがわからないなら、多少キツイですね。

他には質問で、具体的にオブジェクト指向の良い点・悪い点を質問されたり、過去に作ったアプリケーション(ゲームでもゲーム以外でもok)の話、どんなゲーム作りたいか、あなたの好きなゲーム、最近の研究ではゲームに活かせることを教えてくださいなど。あなたにとって幸せってなんですか?など突拍子も無い質問も。
あとは、基本的なことですが、自己PR、研究PRなど、丁寧に分かりやすく言えることが大前提。
特に研究の話は、難しいと思われるので、文系の友人に聞いてもらって理解できる説明ぐらい必要かと。



かなり具体的にアドバイスしたつもりですが、掲示板でこのようは発言は良いのでしょうか?
ネチケットがなっていない場合、管理人さん消してください。
ゲーム会社を受けるための就職参考書ってのは、他の企業に比べると無いといっても過言でないぐらいありません。


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

Name: ちゃお  ..かけだし(2,299ポイント)   Date: 2009/12/30(水) 18:21   No:45198     
Title: Re:就職のことについて相談です    
誤字脱字多いですね。日本語もおかしいところが多いですが、流れで書きました。

がんばってください。


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

Name: shilfia  ..かけだし(1,844ポイント)   Date: 2009/12/31(木) 02:17   No:45227     
Title: Re:就職のことについて相談です    
>ちゃおさん

返信ありがとうございます。
すごく具体的な話が聞けて嬉しいです。


コンピュータアーキテクチャに関しては勉強が必要ですね・・・。
コンピュータ自体に関する知識は一応一通り学んだのですが、独学で勉強していないのでちょっと不安です。
基本情報技術者試験の問題集などをやってみようかなと。
CGの方はクリエイター検定2級を取れるくらいの知識しかありません。
もしクリエイターでもエンジニアでも、1級レベルの知識を要求されるのであれば、分かる人なんて相当少ないのではないかと・・・。
採用する人をかなり絞るための問題みたいですね。
力学や数学も事前対策必須ですね・・・、物理なんて受験期以来さわってません。
一通り大手も受ける予定なので、ばっちり準備していきたいです。


面接の方は予想外の質問がとんできた時の対策までちゃんとやっておきたいところです。
いきなり「幸せとは」と漠然と聞かれたりとか、そういうのは除いて。
なんか個人幸せの定義を問うって面白いですね。面接側からみると。
オブジェクト指向のメリットデメリットとかも、面接の場でいきなり聞かれて言葉に詰まらないようにしないと・・・。
頭が真っ白になるという事態だけは避けたいです。
研究の説明も、できるだけ分かりやすく相手に伝えられるように文章を作っておきたいと思います。


とても参考になりました。
ありがとうございます。


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

Name: たかぎ [URL]  ..ハッカー(146,194ポイント)   Date: 2009/12/31(木) 09:21   No:45233     
Title: Re:就職のことについて相談です    
> なんか個人幸せの定義を問うって面白いですね。面接側からみると。

面接する側としては質問したい理由も分かりますが、思想信条や宗教を尋ねているのとほぼ同じですので、このような質問は禁止されていますね。



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

Name: shilfia  ..かけだし(1,924ポイント)   Date: 2010/01/01(金) 01:15   No:45272     
Title: Re:就職のことについて相談です    
>たかぎさん

面接にも禁止されていることがあるんですね。
調べてみると、けっこうたくさん項目がありました。
それぞれの説明を見てるいと、なるほどと思います。


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

Name: たかぎ [URL]  ..ハッカー(146,609ポイント)   Date: 2010/01/01(金) 02:07   No:45277     
Title: Re:就職のことについて相談です    
> 面接にも禁止されていることがあるんですね。 

法律上はそうです。
一応補足しておくと、面接官も人間ですので、ついうっかりファールを犯してしまうことはあり得ます。
ですので、ちょっとぐらい違反があっても、悪徳企業だブラックだと騒がないでくださいね。


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

Name: shilfia  ..かけだし(1,970ポイント)   Date: 2010/01/01(金) 02:09   No:45279     
Title: Re:就職のことについて相談です    
>たかぎさん

はい、心得ておきます。


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



Name: 山口  ..ぴよぴよ(268ポイント)   Date: 2009/12/31(木) 16:16   No:45245       
Title: ZeroMemoryが使えない?    
DXライブラリでプログラミングしております。
ただ構造体で作ったものを初期化しようと思っているのですが
初期化されません・

// メッセージ用
typedef struct{
    int MessCnt;        // 表示速度
    int StrNum;            // 文字の切り取り位置
}MESSAGE;
MESSAGE Mess;

Mess.Str = 2;

//Mess.StrNum = 0;
ZeroMemory( &Mess, sizeof(&Mess) );

この後Mess.strを表示すると2が入っております。

//Mess.StrNum = 0;
のコメントを外さないとStrNumが0になりません。
使い方が間違えているのでしょうか?


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


Name: たかぎ [URL]  ..ハッカー(146,244ポイント)   Date: 2009/12/31(木) 16:21   No:45246     
Title: Re:ZeroMemoryが使えない?    
> Mess.Str = 2; 
> この後Mess.strを表示すると2が入っております。

Strおよびstrとは?
DXライブラリとのことですが、C++ではなく別の言語にバインディングしているのでしょうか?


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

Name: 山口  ..ぴよぴよ(325ポイント)   Date: 2009/12/31(木) 16:24   No:45247     
Title: Re:ZeroMemoryが使えない?    
すみません。
Mess.StrNumのことです。

DXライブラリというよりはC言語の予約語でしたね。
使い方が違うのでしょうか。


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

Name: たかぎ [URL]  ..ハッカー(146,326ポイント)   Date: 2009/12/31(木) 16:30   No:45248     
Title: Re:ZeroMemoryが使えない?    
> DXライブラリというよりはC言語の予約語でしたね。 

意味がわかりません。

> Mess.StrNumのことです。 

だとすると...

> ZeroMemory( &Mess, sizeof(&Mess) ); 

↑上の部分が間違っています。
sizeof(&Mess)ですので、ポインタのサイズ分しかゼロクリアされません。
この部分も転記ミスがなければの話ですが...


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

Name: 山口  ..ぴよぴよ(348ポイント)   Date: 2009/12/31(木) 16:43   No:45249     
Title: Re:ZeroMemoryが使えない?    
下記で出来たのですがあっているのでしょうか?
    ZeroMemory( &Mess, sizeof(MESSAGE) );


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

Name: たかぎ [URL]  ..ハッカー(146,364ポイント)   Date: 2009/12/31(木) 16:46   No:45250     
Title: Re:ZeroMemoryが使えない?    
> あっているのでしょうか? 

あっているかどうかを判断するには、何をやりたいのかと正確な文脈に関する情報が不可欠です。


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

Name: DVDM [URL]  ..熟練のプログラマー(46,883ポイント)   Date: 2009/12/31(木) 21:32   No:45258     
Title: Re:ZeroMemoryが使えない?    
>>山口さん
>下記で出来たのですがあっているのでしょうか?
正しい動作になっているかどうかは、簡単なサンプルを作って出力してみればすぐに解ると思います。
あるいはデバッガをお使いになるとかですね。


>ただ構造体で作ったものを初期化しようと思っているのですが
ただ単にStrNumを初期化したいのであれば、Mess.StrNum = 0; でも構わないと思いますが
構造体の中身全部を言っているのであれば
ZeroMemory(&Mess, sizeof(Mess));
あるいは、ZeroMemory(&Mess, sizeof(MESSAGE));
で大丈夫だと思います。
ZeroMemoryの正体はmemset関数なので、解らなければそちらも調べてみてください。


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



Name: .net初心者  ..ぴよぴよ(149ポイント)   Date: 2009/12/30(水) 22:43   No:45217       
Title: VC++.netでcheckedListBoxで選択されている項目を取得する。    
ディレクトリの取得      
 何度もお尋ねしてすみません。 
foreachを使ってcheckedListBoxで選択されているアイテム名を全て取得したいです。 
とりあえず配列に入れテキストボックスに表示しようと頑張ってみました。 
しかしいくらやってもforeachでエラーが返ってきてしまいます。 

どの様にすれば取得できるでしょうか? 

this->checkedListBoxItem->
 
 


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


Name: バグ  ..ハッカー(182,482ポイント)   Date: 2009/12/30(水) 23:50   No:45222     
Title: Re:VC++.netでcheckedListBoxで選択されている項目を取得する。    
CheckedItemsプロパティの中身を取り出していけばOKです。
この際、ListBox内のアイテムに関してはObject型になってますので、登録した際と同じ型にキャストして使用しなければなりません。

下記のサンプルでは、String型のアイテムが格納されてあるCheckedListBox内の選択されているアイテムをメッセージボックスで順次表示していっています。

for each (System::Object^ obj in this->checkedListBox->CheckedItems)
{
    System::Windows::Forms::MessageBox::Show(((System::String^)obj));
}


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

Name: バグ  ..ハッカー(182,593ポイント)   Date: 2009/12/31(木) 00:16   No:45224     
Title: Re:VC++.netでcheckedListBoxで選択されている項目を取得する。    
ちなみにforeachを使用せずに、forで記述すると下記のような感じです。

for (int i = 0; i < checkedListBox1->CheckedItems->Count; ++i)
{
    MessageBox::Show((String^)(checkedListBox1->CheckedItems[i]));
}



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

Name: .net初心者  ..ぴよぴよ(102ポイント)   Date: 2009/12/31(木) 01:03   No:45225     
Title: Re:VC++.netでcheckedListBoxで選択されている項目を取得する。    
ご回答ありがとうございます。
別のやり方も教えて頂きありがとうございました。

foreachはあまりつかったことがないので(PHPで使った程度)
取っ付きにくいですが頑張ります。


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

Name: バグ  ..ハッカー(182,709ポイント)   Date: 2009/12/31(木) 08:45   No:45232     
Title: Re:VC++.netでcheckedListBoxで選択されている項目を取得する。    
foreachの使用法、もちろん、知っておいて損はありませんが…。

もし、forループの方が分かりやすかったり、馴染み深いのであれば無理に拘って使う必要はないかと思います。

実際、foreachでなければいけないという局面はほとんど無く、大抵の場合はforループで同等の処理を行えますしね。

ArrayクラスならLengthプロパティ、ListクラスならCountプロパティで要素数を取得できますから、インデックスの作成も容易ですしね。


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

Name: .net初心者  ..ぴよぴよ(30ポイント)   Date: 2009/12/31(木) 15:36   No:45241 解決!     
Title: Re:VC++.netでcheckedListBoxで選択されている項目を取得する。    
ご回答ありがとうございました。
for文を使わせていただきます。
助かりました。


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

Name: .net初心者  ..ぴよぴよ(61ポイント)   Date: 2009/12/31(木) 15:36   No:45242 解決!     
Title: Re:VC++.netでcheckedListBoxで選択されている項目を取得する。    
ご回答ありがとうございました。
for文を使わせていただきます。
助かりました。


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



Name: ZIKITETRY  ..ぴよぴよ(103ポイント)   Date: 2009/12/30(水) 16:25   No:45192       
Title: エラーが出たのですが    
まいどすみません。
ボードを表示しよう
まで、全て完璧にやったつもりだったのですが、ボードが出ません。
デバックで、エラーが出たのですが、どこがダメかも分かりません。
ファイルに入れるので、できれば何処がどう悪いのか、教えてください。
迷惑かもしれませんが、どうかよろしくお願いします。




 編集済み


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


Name: fatens  ..入門者(3,523ポイント)   Date: 2009/12/30(水) 16:52   No:45193     
Title: Re:エラーが出たのですが    
デバック → デバッグです。

添付されたテキストを見ましたが私には分かりませんでした。
デバッグでエラーが出たとのことですが、どのようなエラーなのでしょうか?


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

Name: ZIKITETRY  ..ぴよぴよ(203ポイント)   Date: 2009/12/30(水) 17:56   No:45195     
Title: Re:エラーが出たのですが    
ビルドエラーがでました。
とありました。

「宣言の仕方を工夫しよう」ぐらいからエラーが出始めたので、
たぶん関係のあるファイルをメモしておきます。

長いです。

見てくれるだけで本当にありがたいです。
もしも、見てくれる人がいたら、お願いします。


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

Name: softya  ..比類無きプログラマー(78,715ポイント)   Date: 2009/12/30(水) 18:06   No:45196     
Title: Re:エラーが出たのですが    
全部のソースコードのzipとビルドエラーのメッセージ全てを貼って貰うのが手っ取り早いですよ。

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

Name: ZIKITETRY  ..ぴよぴよ(221ポイント)   Date: 2009/12/30(水) 21:33   No:45204     
Title: Re:エラーが出たのですが    
これでよろしいでしょうか?
解凍してくれるだけでも嬉しいです


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

Name: softya  ..比類無きプログラマー(78,882ポイント)   Date: 2009/12/30(水) 23:14   No:45221     
Title: Re:エラーが出たのですが    
graph_main()関数が閉じていない様です。ソースコードを確認してみて下さい。
※ エラーコードを見たらすぐ分かるエラーなので、今回の場合コンパイルのエラーメッセージを貼って貰った方が早いですね。次回は、ちゃんとエラーメッセージを貼って下さいね。


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

Name: ZIKITETRY  ..ぴよぴよ(269ポイント)   Date: 2009/12/31(木) 15:31   No:45239 解決!     
Title: Re:エラーが出たのですが    
ありがとうございます。
これからは、できる限り気をつけていきたいのですが、
もしまたエラーがでたら、エラーコードをメモします。
本当に、ありがとうございました。 編集済み


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



Name: lbfuvab  ..上級者(24,278ポイント)   Date: 2009/12/31(木) 02:02   No:45226       
Title: ウイルス対策ソフトでの判定    
自分で作った時限付きのソフトで読み込むDLLを書き換えて解除する実験をしていたのですが、
kernel32.dll を 自作のlernel32.dllを書き換えたのですが、
メッセージボックスを出すだけのプログラムがウイルス判定を受けました。
使用しているのはESET スマートセキュリティーです。
もちろんlernel32.dllはウイルス的な物は含んでいません。

どうしてなのでしょう。。。


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


Name: YuO  ..熟練のプログラマー(42,136ポイント)   Date: 2009/12/31(木) 02:41   No:45228     
Title: Re:ウイルス対策ソフトでの判定    
kernel32.dllというシステムDLLを書き換えようとしたからではないでしょうか。
システムDLLを書き換えようとするプログラムをマルウェア判定するのは正常な判断だと思います。


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

Name: Lbfuvab  ..初心者(6,608ポイント)   Date: 2009/12/31(木) 04:48   No:45230     
Title: Re:ウイルス対策ソフトでの判定    
いえ、書き換える作業はバイナリエディタでするのであって
ウイルス判定を喰らったのは書き換えられたプログラムの方です。


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

Name: Justy  ..伝説なるハッカー(487,484ポイント)   Date: 2009/12/31(木) 13:57   No:45236     
Title: Re:ウイルス対策ソフトでの判定    
 細かい状況が今ひとつつかみにくいのですが、つまりこういうことですか?
 
「GetSystemTime関数などの時間関連を改変した lernel32.dllを、自作のアプリの実行ファイルで
kernel32.dllに代わって読み込ませるようバイナリエディタを使って実行ファイルの中の dllのファイル名を
書き換えたところ、セキュリティアラートが発生した」



> どうしてなのでしょう

 本当にウィルスに汚染されていないのであれば、アンチウィルスソフトが誤爆しているのでしょう。

 試しに lenerl32以外の名前に変えてみては?


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



Name: おむすび  ..入門者(4,268ポイント)   Date: 2009/12/30(水) 21:43   No:45207       
Title: 謎の白い縦線が出る    
等間隔に謎の縦線が入ります。
なぜなのでしょうか・・・。

デスクのXPでは出なかったと思うのですがVistaのノートで出てしまいます。
家ではないので確認ができません。
もし不味い所がありましたらご指摘いただけないでしょうか。



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


Name: Justy  ..伝説なるハッカー(487,237ポイント)   Date: 2009/12/30(水) 22:34   No:45212     
Title: Re:謎の白い縦線が出る    
 SetDrawScreen()と SetWaitVSyncFlag()の実行を DxLib_Init()の後に持ってきたらどうなりますか?


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

Name: おむすび  ..入門者(4,455ポイント)   Date: 2009/12/30(水) 22:40   No:45214     
Title: Re:謎の白い縦線が出る    
ご回答ありがとうございます。
変更してみたのですが出てしまいます。
なぜなのでしょうか・・・。


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

Name: おむすび  ..入門者(4,530ポイント)   Date: 2009/12/30(水) 22:42   No:45215     
Title: Re:謎の白い縦線が出る    
すみません。
ここでDLしたAeroBeatPlusでも出てしまいます。
表示位置がおかしいです。
使っているPCが原因かと思います。

VAIO VGN-SZ73B を使っております。


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

Name: Justy  ..伝説なるハッカー(487,355ポイント)   Date: 2009/12/30(水) 23:05   No:45218     
Title: Re:謎の白い縦線が出る    
 あー、となると環境の問題ですね。

 使っているDXライブラリとグラフィックスドライバーが最新がどうか調べ、
最新でなければアップデートすると直るかもしれません。

 それでもダメなようなら、DXライブラリ本家で訊いてみてください。


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

Name: おむすび  ..入門者(4,600ポイント)   Date: 2009/12/30(水) 23:10   No:45220     
Title: Re:謎の白い縦線が出る    
下記の文を付けたしたら直りました。
環境の問題かと思われます。
ご丁寧に対応ありがとうございました。

    SetUse3DFlag(FALSE);

    // DXライブラリ初期化処理
    if( DxLib_Init() == -1 ){
         return -1;                // エラーが起きたら直ちに終了
    }


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



Name: PG  ..ぴよぴよ(114ポイント)   Date: 2009/12/30(水) 21:34   No:45205       
Title: VisualStadio2005の設定    
ファイル→新規作成→プロジェクトを選ぶたびに
決められたフォルダ(マイドキュメントの中)に
作るか聞かれるのですがこれの場所をずらすことはできないでしょうか?


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


Name: SooA [URL]  ..上級者(21,344ポイント)   Date: 2009/12/30(水) 22:29   No:45211     
Title: Re:VisualStadio2005の設定    
2005はわからないのですが、
2008ですとツール→オプションを開いて
プロジェクトおよびソリューションの全般に
プロジェクトフォルダを設定できる項目があります。


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

Name: wing  ..入門者(3,352ポイント)   Date: 2009/12/30(水) 23:07   No:45219     
Title: Re:VisualStadio2005の設定    
私も2008ですが、
プロジェクト名を入力した後、
場所のところで、参照ボタンを押して好きなところを
選べばいいんじゃないでしょうか。

私は自分で作ったものはほとんどすべてマイドキュメントに保存しています。


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



Name: .net初心者  ..ぴよぴよ(44ポイント)   Date: 2009/12/29(火) 20:21   No:45137       
Title: VC++.netでディレクトリの取得    
こちらで聞くことではないのはわかっております。
現在VC++.netについて勉強しております。
今まで組み込み系のCの経験はあったのでfor文など基本的な使い方はわかります。

VC++.netで特定のディレクトリにあるファイル名の取得を行いたいです。
ただし全く見当がつきません・・・。

例えば
dir.exe
┠aaa.txt
┠bbb.txt
┠ccc.txt
┠ddd.txt
┗フォルダ
   ┗eee.txt

この様な構成があったらaaa〜ddd.txtまで取ってきたいです。
どのようにすればよいのでしょうか。

また今後のためにフォルダ以下にあるeee.txt等も取ってこれるのでしたら
両方教えていただけますと助かります。


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


Name: .net初心者  ..ぴよぴよ(209ポイント)   Date: 2009/12/29(火) 21:12   No:45141     
Title: Re:VC++.netでディレクトリの取得    
すみません。
しばらく検索してましたら出来ました。
しかし取得したものをforeachで取得するやり方がわかりません。
下記のソースだとコメントを消してしまうとエラーが出てしまいます。
filesの分だけ回したいです。

//  ディレクトリのサーチ
             array<String^>^ files = System::IO::Directory::GetFiles(path);
//             for each(array<String^>^ files in files){
//  ここに処理
//                this->comboBoxItem->Items->Add(files[i]);
//             }


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

Name: バグ  ..ハッカー(182,289ポイント)   Date: 2009/12/29(火) 22:11   No:45150     
Title: Re:VC++.netでディレクトリの取得    
// for each(array<String^>^ files in files){

この部分、おかしくないですか?

filesという同じ変数名が使用されていますし、コピーされる側まで配列にしてしまっては駄目です。



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

Name: pooka [URL]  ..上級者(20,891ポイント)   Date: 2009/12/29(火) 22:15   No:45151     
Title: Re:VC++.netでディレクトリの取得    
>for each(array<String^>^ files in files){
これは
for each(String^ file in files){
ですね。

>フォルダ以下にあるeee.txt
array<String^>^ files = System::IO::Directory::GetFiles(path, "*", System::IO::SearchOption::AllDirectories);
このように引数を指定することでサブフォルダのファイルも取得できます。
テキストファイルのみ取得するのであれば、"*" を "*.txt" にすればできます。


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

Name: .net初心者  ..ぴよぴよ(90ポイント)   Date: 2009/12/29(火) 22:44   No:45156     
Title: Re:VC++.netでディレクトリの取得    
ありがとうございます。
使い方が何となく理解できました。
問題なく表示もできました。


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

Name: .net初心者  ..ぴよぴよ(159ポイント)   Date: 2009/12/30(水) 21:32   No:45203     
Title: Re:VC++.netでディレクトリの取得    
何度もお尋ねしてすみません。
foreachを使ってcheckedListBoxで選択されているアイテムを取得したいです。
とりあえずテキストボックスに表示しようと頑張ってみました。
しかしいくらやってもforeachでエラーが返ってきてしまいます。

どの様にすれば取得できるでしょうか?

this->checkedListBoxItem->


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

Name: net初心者  ..ぴよぴよ(10ポイント)   Date: 2009/12/30(水) 22:42   No:45216 解決!     
Title: Re:VC++.netでディレクトリの取得    
一回締めさせてください。

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



Name: mat  ..ぴよぴよ(276ポイント)   Date: 2009/12/29(火) 23:26   No:45163       
Title: ホワイトフェード    
こんにちは
このサイトの「ゲームプログラミングの館」を見て普通のフェードインの方法はわかったのですが,
ホワイトフェードインの仕方が分かりません
どのようにすればよいでしょうか


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


Name: SooA [URL]  ..上級者(20,991ポイント)   Date: 2009/12/30(水) 00:05   No:45166     
Title: Re:ホワイトフェード    
白い画像(グラフィックハンドル)を用意して
上にかぶせて、徐々に透明にしていくとか


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,128,727ポイント)   Date: 2009/12/30(水) 14:12   No:45189     
Title: Re:ホワイトフェード    
サンプルを書いてみました。
やっていることはSooAさんの仰るとおり、白をかぶせているだけです。
SetDrawBlendModeでアルファ値を設定しておき、その上に白の四角形を描画しています。

#include <DxLib.h>

void DrawWhiteFade(int Bright){
    SetDrawBlendMode(DX_BLENDMODE_ALPHA, Bright);
    DrawBox(0,0,640,480,0xFFFFFF,TRUE);
    SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    int Count=0;
    ChangeWindowMode(TRUE);
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;
 
    while(!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen() && !CheckHitKey(KEY_INPUT_ESCAPE)){
        DrawString(0,0,"Hello World",0xFFFFFF);
        DrawString(200,(Count*4)%480,"Hello World",0xFFFFFF);
        DrawWhiteFade( Count%255 );
        Count++;
    }
 
    DxLib_End();
    return 0;
}

 


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

Name: mat  ..ぴよぴよ(295ポイント)   Date: 2009/12/30(水) 22:20   No:45210 解決!     
Title: Re:ホワイトフェード    
丁寧な回答どうもありがとうございました
解決しました


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

Name: おむすび  ..入門者(4,403ポイント)   Date: 2009/12/30(水) 22:37   No:45213     
Title: Re:ホワイトフェード    
以前、作ったものです。
よかったら使ってください。
フェードインとフェードアウトがあります。
戻り値がフェードが終わったか?
引数がカラー 白なら 0xFFFFFF スピードが速さです。



//  フェードイン
bool FadeIn(int Color ,int Speed){
    static int Air = 255;

    // 描画ブレンドモードをαブレンドにする
    SetDrawBlendMode(DX_BLENDMODE_ALPHA,Air);
    // グラフィックの描画 
    DrawBox(0,0,WIN_W,WIN_H,Color,true);
    // 描画ブレンドモードをノーブレンドにする
    SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;

    Air -= Speed;
    if(Air <= 0){
        Air = 0;
        return true;
    }else{
        return false;
    }
}

//  フェードアウト
bool FadeOut(int Color ,int Speed){
    static int Air = 0;

    // 描画ブレンドモードをαブレンドにする
    SetDrawBlendMode(DX_BLENDMODE_ALPHA,Air);
    // グラフィックの描画 
    DrawBox(0,0,WIN_W,WIN_H,Color,true);
    // 描画ブレンドモードをノーブレンドにする
    SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
    
    Air += Speed;
    if(Air >= 255){
        Air = 255;
        return true;
    }else{
        return false;
    }
}




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



Name: 初心にゃ  ..ぴよぴよ(352ポイント)   Date: 2009/12/30(水) 21:43   No:45208       
Title: 無題    

はじめまして。
じつは超初心者です。


#define GLOBAL_INSTANCE 


#include "DxLib.h"
 // プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        LPSTR lpCmdLine, int nCmdShow )
{
    if( DxLib_Init() == -1 )        // DXライブラリ初期化処理
    {
        return -1 ;            // エラーが起きたら直ちに終了
    }

    DrawPixel( 320 , 240 , 0xffff ) ;    // 点を打つ

    WaitKey() ;                // キー入力待ち

    DxLib_End() ;                // DXライブラリ使用の終了処理

    return 0 ;                // ソフトの終了 
}




        WaitKey() ;             // キーの入力待ち(『WaitKey』を使用) 
        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了



先ほどDXライブラリをどおにゅうして上のように入力してデバっグしていたら
 
コンパイルしています...
cl : コマンド ライン warning D9035 : オプション 'Wp64' の使用は現在推奨されていません。今後のバージョンからは削除されます。
main.cpp
c:\documents and settings\日向颯涼\my documents\visual studio 2008\projects\project\1章\mydat\source\main.cpp(5) : fatal error C1083: include ファイルを開けません。'DxLib.h': No such file or directory
ビルドログは "file://c:\Documents and Settings\日向颯涼\My Documents\Visual Studio 2008\Projects\project\1章\Debug\BuildLog.htm" に保存されました。
RyuJin - エラー 1、警告 1

とでます。
なぜファイルが開けないのでしょうか。
どうしたらかいけつできま
すか。


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


Name: softya  ..比類無きプログラマー(78,809ポイント)   Date: 2009/12/30(水) 22:13   No:45209     
Title: Re:無題    
エラーの前に、個人名(ユーザー名)らしきものが表示されてますが大丈夫ですか?

エラーの原因は、ちゃんとDXライブラリが設定されていない為だと思いますので、下記サイトを参考に設定を見直して下さい。
http://homepage2.nifty.com/natupaji/DxLib/dxuse.html


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



Name: kms  ..初心者(7,782ポイント)   Date: 2009/12/30(水) 20:45   No:45200       
Title: 音楽再生関数について    
度々、質問させて頂きます。

「フィールド画面」と「バトル画面」で音楽を使い分けたいのですが、
添付したソースコードでは、バトル時の音楽(test_2.mp3)がうまく再生されません。

おそらく、While関数が関係しているように思えるのですが、
何度、ソースを書き換えてもうまくいかないので、
ご教授頂きたいです。


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


Name: SooA [URL]  ..上級者(21,262ポイント)   Date: 2009/12/30(水) 21:18   No:45202     
Title: Re:音楽再生関数について    
STATE_BATTLEの時にBattle()が実行され続けているため
読み込みと再生(データの最初から)が
延々と繰り返されているためだと思います。

初回だけ、またはtest_2.mp3が再生中ではない時だけ
読み込み&再生を行うような処理に変更してみてください。


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

Name: kms  ..初心者(7,825ポイント)   Date: 2009/12/30(水) 21:42   No:45206 解決!     
Title: Re:音楽再生関数について    
SooA様、お返事ありがとうございます。

解決致しました。

助かりました。本当にありがとうございます。 編集済み


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



Name: あ〜る  ..上級者(15,345ポイント)   Date: 2009/12/30(水) 00:16   No:45169       
Title: 3Dでのカメラの実装について    
http://www.play21.jp/board/formz.cgi?action=res&resno=35985&page=&lognum=110&id=dixq&rln=36229

↑のURLを見て、3Dでのカメラを実装しようと思い、とりあえず書いてあるプログラムをコピペしたのですが、エラーは出ないのですが変な動作をします。
最初は普通に描画されるのですが、スペースキーを押した瞬間にカメラのアングルがかわってしまいます。(画像上・期待通りのアングル、画像下・変わってしまったアングル)
また、スペースキーを一回でも押した後は、r.xやr.yを変えてもアングルが変わらなくなってしまいました・・・
自分で色々コメントアウトしたりして調べた結果、SetTransformToView()関数がどうも原因になっている(?)様なのですが、これがないとカメラのアングルを変えたい時に変えることが出来ないようです。
この関数を調べてみても、この掲示板のこの質問が出てくるだけで関数の詳細が出てこないので困ってしまいました・・・
どうすればこの誤作動は直るのでしょうか?

環境はコンパイラがBCCDeveroperで、WindowsXP、龍神録プログラミングの館のコードをつかっています。勿論DXライブラリを使ってます。
よろしくお願いします。
足りない情報などがあったらすいません。


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


Name: Justy  ..伝説なるハッカー(487,379ポイント)   Date: 2009/12/30(水) 01:41   No:45177     
Title: Re:3Dでのカメラの実装について    
 オリジナルゲームっぽいのでどういうコードになっているのか詳細はわかりませんが、
3D処理部分がリンク先のコードと同等であるなら、真っ先に考えられる可能性としては
スペースキーをトリガーにして、何かがメモリバッファを破壊していることが挙げられます。

 あまりお行儀はよくないのですが、試しに Camera構造体のメンバの一番先頭に

    char padding[0x10000];
    
を追加してみて下さい。

 これでもし現象が収まったとしたら、何かがこのカメラの情報を上書き・破壊しているので、
どこから破壊されているのかを調べて下さい。


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

Name: あ〜る  ..上級者(15,375ポイント)   Date: 2009/12/30(水) 10:17   No:45184     
Title: Re:3Dでのカメラの実装について    
返信ありがとうございます!
言われた通りにしたら直ってしまったので、調べてみたら破壊してる場所がありました…
ほんと初歩的なミスでお手を煩わせて申し訳ないです…

ただ、何故破壊してるのかよくわかりません…
おそらくスペースキーを押した事によってオプションが一つ増えたのが問題だろうと思いGV.hでの

option_bb[2]



option_bb[3]

にしたところ直ったのですが、オプションが増えると言っても3個までしか増えないので
option_bb[0]
option_bb[1]
option_bb[2]
で3つあるので足りてるんじゃないかなぁ?と思ってました
もしかしてたまたま直っただけで、違う場所が原因なのでしょうか?
配列について勘違いしてたら怖いので、聞かせて頂きました
引き続きよろしくお願いします


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

Name: Justy  ..伝説なるハッカー(487,205ポイント)   Date: 2009/12/30(水) 20:42   No:45199     
Title: Re:3Dでのカメラの実装について    

> にしたところ直ったのですが、オプションが増えると言っても3個までしか増えないので 

 3個までつかうなら定義が option_bb[2]では足らないですよ。
 option_bb[3]とすれば option_bb[0]〜 option_bb[2]までの3つが使えます。


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

Name: あ〜る  ..上級者(15,485ポイント)   Date: 2009/12/30(水) 20:59   No:45201 解決!     
Title: Re:3Dでのカメラの実装について    
そうゆう風になっていたのですか、知りませんでした…
もしかしたら他にも間違えてるかも…(-.-;)

Justyさんのおかげで無事エラーが無くなりました
ありがとうございました!

解決は後でパソコンの方で押しときます 編集済み


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



Name: 房州  ..ぴよぴよ(300ポイント)   Date: 2009/12/29(火) 19:47   No:45134       
Title: 龍神録のサウンドノベルシステムについて    
こんにちは、今私はこの龍神録で勉強させてもらってます
リンクの「龍神録プログラミングの支館」にある
19章「サウンドノベルシステム」の項目で
下のようなエラーが出てきました
1>------ ビルド開始: プロジェクト: RyuJin, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.cpp
1>c:\documents and settings\user\my documents\project\50章\mydat\source\main.cpp(61) : error C3861: 'calc_option_bb': 識別子が見つかりませんでした
1>ビルドログは "file://c:\Documents and Settings\USER\My Documents\project\50章\Debug\BuildLog.htm" に保存されました。
1>RyuJin - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

どのようにすれば解決できるのか誰か教えてください


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


Name: kazuoni [URL]  ..ハッカー(121,830ポイント)   Date: 2009/12/29(火) 21:16   No:45142     
Title: Re:龍神録のサウンドノベルシステムについて    
arrayさんのページを見るだけでは赤字が加えるコードのようですが、
http://sinkai.net/rp/19.php#FUAN
calc_option_bb関数の定義がありませんね。

本家(arrayさんのページ)で質問されてはいかがでしょうか?


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

Name: Justy  ..伝説なるハッカー(486,898ポイント)   Date: 2009/12/29(火) 22:02   No:45147     
Title: Re:龍神録のサウンドノベルシステムについて    

> どのようにすれば解決できるのか誰か教えてください

 エラーが出ている行をコメントアウトしてみてはどうですか?


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

Name: 房州  ..ぴよぴよ(325ポイント)   Date: 2009/12/29(火) 23:12   No:45161     
Title: Re:龍神録のサウンドノベルシステムについて    
kazuoniさん
プログラムの支館にも掲示板があったのですが、
トピックが管理人さんが作成した記事がひとつしかなかったので
メンテナンスでもしてるのかと思ってここで質問しました。

Justyさん
コメントアウトすればエラーは出ないのですが
実行中に会話が出てきません


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

Name: SooA [URL]  ..上級者(20,892ポイント)   Date: 2009/12/29(火) 23:25   No:45162     
Title: Re:龍神録のサウンドノベルシステムについて    
>実行中に会話が出てきません
コメントが入っている
32-2.csvファイルはありますか?
↑全て半角文字

私の環境でテストしてみましたら
calc_option_bb();のコメントアウトで動きました。


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

Name: SooA [URL]  ..上級者(20,951ポイント)   Date: 2009/12/29(火) 23:37   No:45164     
Title: Re:龍神録のサウンドノベルシステムについて    
×コメントが入っている
○会話が入っている
でした。

ゲーム自体は進行しているのなら32-2.csvが
読み込めていない可能性が高いです。


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

Name: 房州  ..ぴよぴよ(397ポイント)   Date: 2009/12/30(水) 00:16   No:45168 解決!     
Title: Re:龍神録のサウンドノベルシステムについて    
SooA さん
ありがとうございます!ちゃんと文章が出てきました!

しかしcalc_option_bbの識別子がなくても
動くのはいったいどういうことなんでしょう?


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

Name: SooA [URL]  ..上級者(21,006ポイント)   Date: 2009/12/30(水) 01:50   No:45178     
Title: Re:龍神録のサウンドノベルシステムについて    
>動くのはいったいどういうことなんでしょう?
調べてみましたら●●オプションの表示計算を行ってますね
コメントアウトするとオプションを初期位置に置いたまま
移動してしまいます。

function.h の //cshot.cpp の下の一行追加してみて下さい。

//cshot.cpp
    GLOBAL void calc_option_bb();
    GLOBAL void cshot_main();



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

Name: 房州  ..ぴよぴよ(423ポイント)   Date: 2009/12/30(水) 17:36   No:45194     
Title: Re:龍神録のサウンドノベルシステムについて    
なるほど!なぞが解けました
ありがとうございます。


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



Name: カイン  ..ぴよぴよ(769ポイント)   Date: 2009/12/29(火) 15:59   No:45095       
Title: ソースファイルの分割について    
初めまして、こちらの掲示板を始めて利用させていただきますカインといいます。
よろしくお願いします。

早速ですがタイトルにもあるソースファイルの分割について質問させていただきます。

私は今、「source」というフォルダ内のソースファイルをさらに複数のフォルダにわけたいと思っています。
しかし、うまくインクルードを通す事ができません。

「sourceフォルダ内」に作ったフォルダの中のソースファイルから「sourceフォルダ内」のヘッダーファイルにアクセスしたり、「sourceフォルダ内」に作ったフォルダの中同士のヘッダーファイルへのアクセス等はできないのでしょうか?

どなたかアドバイスをいたただけないでしょうか?よろしくお願いします。


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


Name: たかぎ [URL]  ..ハッカー(145,688ポイント)   Date: 2009/12/29(火) 16:05   No:45097     
Title: Re:ソースファイルの分割について    
> しかし、うまくインクルードを通す事ができません。

#include指令がソースファイルを検索する方法は完全に処理系に依存します。


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

Name: カイン  ..ぴよぴよ(864ポイント)   Date: 2009/12/29(火) 17:58   No:45113     
Title: Re:ソースファイルの分割について    
たかぎさん返信ありがとうございます。
ですが・・
> #include指令がソースファイルを検索する方法は完全に処理系に依存します。

これの説明をもう少し詳しくしていただけないでしょうか?全然わからないので・・。
よろしくお願いします。


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

Name: ねこ  ..熟練のプログラマー(52,057ポイント)   Date: 2009/12/29(火) 18:07   No:45114     
Title: Re:ソースファイルの分割について    
簡単に言うとコンパイルする実行環境を教えてくれないとわかりませんよ、ってことです。

基本的にどんなに階層分けしても問題はないですが
例えば元々AフォルダにあるA.cppとA.hがある場合A.cppでは
#include "A.h"
となりますが、
A.hがAフォルダにあるAAフォルダの下にある場合
#include "AA\\A.h"
のようにフォルダ階層を意識した書き方になります。


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

Name: たかぎ [URL]  ..ハッカー(145,839ポイント)   Date: 2009/12/29(火) 18:08   No:45115     
Title: Re:ソースファイルの分割について    
> これの説明をもう少し詳しくしていただけないでしょうか?全然わからないので・・。 

要するにこういうことです。


どんな開発ツールを使っているのかを特定していただかないと、抽象的な回答しかできません。


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

Name: たかぎ [URL]  ..ハッカー(145,870ポイント)   Date: 2009/12/29(火) 18:09   No:45116     
Title: Re:ソースファイルの分割について    
> #include "AA\\A.h" 

#include指令のヘッダ名に逆斜線が含まれている場合は未定義の動作になります。


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

Name: カイン  ..ぴよぴよ(916ポイント)   Date: 2009/12/29(火) 20:55   No:45140     
Title: Re:ソースファイルの分割について    
> どんな開発ツールを使っているのかを特定していただかないと、抽象的な回答しかできません。 
確かにそのとおりですね。すいません。

開発ツールはMicrosoft Visual C++ 2008 Express Editionを使っています。


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

Name: たかぎ [URL]  ..ハッカー(145,994ポイント)   Date: 2009/12/29(火) 23:08   No:45159     
Title: Re:ソースファイルの分割について    
> 開発ツールはMicrosoft Visual C++ 2008 Express Editionを使っています。

下記を参考に、インクルードディレクトリを設定するとよいでしょう。
http://msdn.microsoft.com/ja-jp/library/73f9s62w(VS.80).aspx


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

Name: カイン  ..ぴよぴよ(969ポイント)   Date: 2009/12/30(水) 14:56   No:45191 解決!     
Title: Re:ソースファイルの分割について    
なんとか解決することができました!本当にありがとうございます!

たかぎさん長々とありがとうございました!






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



Name: シノニム  ..ぴよぴよ(64ポイント)   Date: 2009/12/30(水) 01:18   No:45173       
Title: プログラミングのエラーについて    
いつもお世話になってます

今回はVisual C++でつくったプログラムのバグについて質問したいと思います

OSはWindows XPで、言語は言った通りC++なんですが
なんと言ったらいいか・・・デバッグなしで実行するとエラーが出るんですが、デバッグ実行するとエラーが出ないんです

こういうケースは初めて経験するんですが、原因などが検討つきません
このエラーはどういった原因で発生するんでしょうか?

ちなみにエラーは、
Microsoft VisualC++ Debug Library
Debug Assertion Failed!
・・・

このようなMBが実行中に出るエラーです

どなたかお力添えをお願いします

知識は、C++を初めて1年程度です(クラス程度なら。テンプレートなどは使っていません)


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


Name: たかぎ [URL]  ..ハッカー(146,136ポイント)   Date: 2009/12/30(水) 01:39   No:45175     
Title: Re:プログラミングのエラーについて    
> このエラーはどういった原因で発生するんでしょうか? 

ASSERTでエラーが検出されているのでしょう。
まずは、ソースコード上のどこでエラーになっているのかを見つけることです。
それがわかれば、修正すべき内容が見えてくると思います。


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

Name: トントン  ..ぴよぴよ(908ポイント)   Date: 2009/12/30(水) 02:37   No:45181     
Title: Re:プログラミングのエラーについて    
>デバッグなしで実行するとエラーが出るんですが、デバッグ実行するとエラーが出ないんです 
デバッグなしで実行の場合にエラーですか? あれ?

Debug Assertion Failed!は、 たかぎさんが言っている通り
ASSERTでエラーが検出されています。
詳しくはググッてほしいのですが、僕が知っている限りでは
有るべきモノが無かったり、ある値がおかしい場合に出る場合があります。


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

Name: 初級者  ..初心者(7,219ポイント)   Date: 2009/12/30(水) 07:50   No:45183     
Title: Re:プログラミングのエラーについて    
ちなみに

(誤)検討つきません
(正)見当がつきません


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

Name: シノニム  ..ぴよぴよ(179ポイント)   Date: 2009/12/30(水) 14:40   No:45190 解決!     
Title: Re:プログラミングのエラーについて    
>> たかぎさん
>> トントンさん

見直してみたところ、ありました。
毎ループNewを使いながらdeleteしてなかったという初歩中の初歩のミスでした・・・

なんとかやっていけそうです。ありがとうございました!


>> 初級者さん

気付きませんでした。今度から気をつけますね^ ^


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



Name: 風丸  ..ぴよぴよ(35ポイント)   Date: 2009/12/30(水) 01:40   No:45176       
Title: AerobeatPlusのタイトルのエフェクトについて    
AerobeatPlusのタイトルで文字が白く光る?のですが
どのように行うのでしょうか?
文字を切り抜いた白い線が左から右に流れるやつです。

説明が下手で申し訳ございません。
見当もつかないので出来ればサンプルソースを頂けないでしょうか?


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


Name: Justy  ..伝説なるハッカー(487,340ポイント)   Date: 2009/12/30(水) 03:41   No:45182     
Title: Re:AerobeatPlusのタイトルのエフェクトについて    
 以前に Dixqさんが作ってましたよ。

http://www.play21.jp/board/formz.cgi?action=res&resno=38794&page=&lognum=119&id=dixq&rln=39128#38952


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,128,279ポイント)   Date: 2009/12/30(水) 13:55   No:45188     
Title: Re:AerobeatPlusのタイトルのエフェクトについて    
Justyさんが仰っているリンク先で紹介しているプログラムの中に出てくる

> 龍神録プログラミングの館の漢字弾幕データ生成ツールで作りました。 

というのは龍神録の館51〜52章で
http://dixq.net/rp/
紹介しているツールの事です。


あまり人に見せるようなコードではなくて申し訳ないですが・・。


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



Name: PG  ..ぴよぴよ(111ポイント)   Date: 2009/12/29(火) 15:26   No:45087       
Title: FPSを60に固定    
こちらでDXライブラリについて勉強させていただいております。
こちらのサンプルをみてFPSを固定するということまで出来ました。

ただし毎回62.5で回ってしまうのですが
これを60にしたいです。

どのようにすればよいのでしょうか。


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


Name: kazuoni [URL]  ..ハッカー(121,161ポイント)   Date: 2009/12/29(火) 15:45   No:45090     
Title: Re:FPSを60に固定    
ソースコードを見てみないとなんともいえないと思うので、
FPS制御の全ソースコードと、FPS制御関数(?)の使用している前後を
アップすればよい回答が返ってくるかもしれません。
(この掲示板は容量制限がありますが、添付機能があります。) 編集済み


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

Name: PG  ..ぴよぴよ(135ポイント)   Date: 2009/12/29(火) 15:49   No:45093     
Title: Re:FPSを60に固定    
意見ありがとうございます。
http://dixq.net/g/52.html
上記のソースを使っております。


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

Name: kazuoni [URL]  ..ハッカー(121,436ポイント)   Date: 2009/12/29(火) 16:15   No:45099     
Title: Re:FPSを60に固定    
原因は
http://dixq.net/rp/43.html
に書いてあります。

そして回答もそちらに載ってます。
(管理人さんの書かれた方のが詳しく、わかりやすく載ってますので割合します^^;)


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

Name: PG  ..ぴよぴよ(83ポイント)   Date: 2009/12/29(火) 16:43   No:45101     
Title: Re:FPSを60に固定    
ご回答ありがとうございます。

閲覧させていただきました。
上手くいかないというよりはFILE fpがどこで宣言されているかがわかりません・・・。

また自分なりに変数の名前をかえてしまっております。


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

Name: kazuoni [URL]  ..ハッカー(121,686ポイント)   Date: 2009/12/29(火) 16:56   No:45105     
Title: Re:FPSを60に固定    
> FILE fp

提示してくださったソースコード内にも、
管理人さんの書かれたhttp://dixq.net/rp/43.htmlにも
そのワードは出てきていませんが・・・?


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

Name: PG  ..ぴよぴよ(151ポイント)   Date: 2009/12/29(火) 17:03   No:45106     
Title: Re:FPSを60に固定    
下記のことです、
これはいらないのでしょうか?

 fprintf(fp,"%d:%d\n",fps_count,term);
 if(fps_count==600)    fclose(fp);


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

Name: kazuoni [URL]  ..ハッカー(121,720ポイント)   Date: 2009/12/29(火) 17:11   No:45109     
Title: Re:FPSを60に固定    
申し訳ありません。完全に見落としていました。
fprintfを管理人さんは使っていたのですね。。

必要ないと思いますよ。


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

Name: PG  ..ぴよぴよ(0ポイント)   Date: 2009/12/29(火) 17:33   No:45111     
Title: Re:FPSを60に固定    
消させて頂き動かせました。

ただ修正したのですが62.5になってしまいます。
定義は60です・・・。

void FPS(){

    int term,i,gnt;
    static int t=0;
    if(System.fpsCnt==0){//60フレームの1回目なら
        if(t==0)//完全に最初ならまたない
            term=0;
        else//前回記録した時間を元に計算
            term=System.fpsTime+1000-GetNowCount();
    }
    else    //待つべき時間=現在あるべき時刻-現在の時刻
        term = (int)(System.fpsTime+System.fpsCnt*(1000.0/FLAME))-GetNowCount();

    if(term>0)//待つべき時間だけ待つ
        Sleep(term);
    gnt=GetNowCount();
    if(System.fpsCnt==0)//60フレームに1度基準を作る
        System.fpsTime=gnt;
    System.fpsAdd[System.fpsCnt]=gnt-t;//1周した時間を記録
    t=gnt;
    //平均計算
    if(System.fpsCnt==FLAME-1){
        System.fpsAve=0;
        for(i=0;i<FLAME;i++)
            System.fpsAve+=System.fpsAdd[i];
        System.fpsAve/=FLAME;
    }
   System.fpsCnt = (++System.fpsCnt)%FLAME ;
}



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

Name: kazuoni [URL]  ..ハッカー(121,728ポイント)   Date: 2009/12/29(火) 18:25   No:45118     
Title: Re:FPSを60に固定    
fpsAveをintからdoubleに変えてみてください。

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

Name: PG  ..ぴよぴよ(36ポイント)   Date: 2009/12/29(火) 18:32   No:45122     
Title: Re:FPSを60に固定    
出来ました><
ありがとうございます。
intだったのが原因だったのですね・・・。


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

Name: PG  ..ぴよぴよ(44ポイント)   Date: 2009/12/29(火) 18:38   No:45124 解決!     
Title: Re:FPSを60に固定    
すみませn。
解決マーク付けさせていただきます。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,128,133ポイント)   Date: 2009/12/30(水) 13:41   No:45187     
Title: Re:FPSを60に固定    
fprintf(fp,"%d:%d\n",fps_count,term); 
if(fps_count==600) fclose(fp); 

↑これはデバッグ用にかいたコードで、消し忘れでした;
修正しました。ありがとうございます。


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +