C言語何でも質問掲示板


Total hit  今日  昨日  

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

 
   文字にグラデーション ....   
     ・[48039] Ma 
     ・[48059] きつね 
   POCKET BITの圧縮プロ ....   
     ・[48053] Ma 
     ・[48054] Ma 
   ゲームを作りました b ....   
     ・[47775] kerotan0820 
     ・[47776] Ma 
     ・[47943] ひよこ 
     ・[47979] kerotan0820 
     ・[47981] 宮 
     ・[47982] Tatu 
     ・[48041] Tatu 
   .exeファイルの作り方 ....   
     ・[48000] array 
     ・[48001] Ma 
     ・[48002] softya 
     ・[48003] Ma 
     ・[48004] Tororo 
     ・[48037] 今角 
   プログラムの館のこと ....   
     ・[48014] Tatu 
     ・[48015] non 
     ・[48016] non 
     ・[48024] Dixq (管理人) 
     ・[48030] ムンバ 
     ・[48033] キノ♪ 
     ・[48034] ムンバ 
   24. 行けない所を作る ....   
     ・[48007] Tatu 
     ・[48008] HIT 
     ・[48009] ムンバ 
   main関数の書き方につ ....   
     ・[47993] hazard 
     ・[47994] kazuoni 
     ・[47995] Tatu 
     ・[47996] hazard 
     ・[47997] hazard 
     ・[47998] hazard 
   Visual C++ のライセ ....   
     ・[47989] softya 
     ・[47990] DG 
     ・[47991] DG 
   C言語習得の期間   
     ・[47972] array 
     ・[47976] nayo 
     ・[47980] Ma 
     ・[47987] dic 
   無題   
     ・[47985] fatens 
     ・[47986] non 
   高速ソートについて   
     ・[47951] Ma 
     ・[47952] Dixq (管理人) 
     ・[47957] ft 
     ・[47978] SCI 
     ・[47983] ft 
   大至急お願いします!   
     ・[47970] Mist 
     ・[47971] 通りすがり 
     ・[47973] hit 
     ・[47974] Mist 
     ・[47977] hit 
    シングルトンクラスの ....   
     ・[47938] kazuoni 
     ・[47941] Justy 
     ・[47948] ぽこ 
     ・[47975] kazuoni 
   初心者です   
     ・[47750] たかぎ 
     ・[47751] mnkr 
     ・[47754] dic 
     ・[47765] softya 
     ・[47772] Ma 
     ・[47774] kerotan0820 
     ・[47783] Tororo 
     ・[47940] エビパン 
     ・[47953] Dixq (管理人) 
     ・[47967] エビパン 
   代入できないのですが ....   
     ・[47959] Blue 
     ・[47960] ひよこ 
     ・[47961] array 
     ・[47962] Dixq (管理人) 
     ・[47963] Blue 
     ・[47964] Dixq (管理人) 
     ・[47965] ひよこ 
     ・[47966] ひよこ 
   太いレーザーに関して   
     ・[47855] HK 
     ・[47856] Dixq (管理人) 
     ・[47860] y 
     ・[47864] HK 
     ・[47865] Ma 
     ・[47873] y 
     ・[47878] HK 
     ・[47950] HK 
   構造体のポインタと構 ....   
     ・[47935] たかぎ 
     ・[47942] Justy 
     ・[47944] 大学1年(初心者) 
     ・[47946] Justy 
     ・[47949] box 
   boss_shot_calc()とgr ....   
     ・[47894] fatens 
     ・[47897] Tatu 
     ・[47945] ft 
   C++の難しさ   
     ・[47798] たかぎ 
     ・[47800] softya 
     ・[47804] MNS 
     ・[47806] デラ初心者 
     ・[47828] たいちう 
     ・[47829] たかぎ 
     ・[47859] デラ初心者 
     ・[47869] Ma 
     ・[47932] デラ初心者 
     ・[47933] たいちう 
     ・[47939] デラ初心者 
   VS2008について   
     ・[47908] fatens 
     ・[47909] あー 
     ・[47910] fatens 
     ・[47911] softya 
     ・[47912] あー 
     ・[47913] たかぎ 
     ・[47914] softya 
     ・[47915] あー 
     ・[47916] あー 
     ・[47917] softya 
     ・[47918] あー 
     ・[47919] softya 
     ・[47920] あー 
     ・[47921] softya 
     ・[47922] あー 
     ・[47923] softya 
     ・[47924] あー 
     ・[47925] softya 
     ・[47926] あー 
     ・[47928] softya 
     ・[47929] あー 
     ・[47930] softya 
     ・[47931] あー 
   splint での質問   
     ・[47906] たかぎ 
   無題   
     ・[47886] softya 
     ・[47887] つつ 
     ・[47888] つつ 
     ・[47889] つつ 
     ・[47890] softya 
     ・[47891] つつ 
     ・[47892] softya 
     ・[47895] つつ 
     ・[47896] softya 
     ・[47898] つつ 
     ・[47899] softya 
     ・[47900] つつ 
     ・[47901] たいちう 
     ・[47902] softya 
     ・[47903] つつ 
     ・[47905] つつ 
   龍神録18章 当たり判 ....   
     ・[47825] Justy 
     ・[47849] CORVETTE 
     ・[47876] Justy 
     ・[47884] CORVETTE 
   龍神録プログラミング ....   
     ・[47883] Ma 
   s5. 処理速度を一定に ....   
     ・[47877] MNS 
     ・[47879] Justy 
     ・[47880] KANITAMA 
     ・[47881] Dixq (管理人) 
   ネットワーク対戦機能 ....   
     ・[47817] たかぎ 
     ・[47821] array 
     ・[47822] softya 
     ・[47823] Mikan 
     ・[47824] シノニム 
     ・[47826] Dixq (管理人) 
     ・[47832] softya 
     ・[47834] Ma 
     ・[47867] Dixq (管理人) 
     ・[47871] Ma 
     ・[47875] softya 
   コンパイラを持ち歩く ....   
     ・[47813] たかぎ 
     ・[47815] P 
     ・[47816] たかぎ 
     ・[47818] PEGASUS 
     ・[47819] たかぎ 
     ・[47820] mnkr 
     ・[47827] non 
     ・[47852] PEGASUS 
     ・[47858] dic 
     ・[47862] PEGASUS 
     ・[47868] もぐりん 
     ・[47872] たかぎ 
   DXライブラリのことで   
     ・[47801] softya 
     ・[47802] 初心者ガーゴイル 
     ・[47803] 初心者ガーゴイル 
     ・[47870] Dixq (管理人) 
   原因不明のエラー   
     ・[47831] たかぎ 
     ・[47833] softya 
     ・[47840] dic 
     ・[47842] softya 
     ・[47850] dic 
     ・[47851] たかぎ 
     ・[47853] softya 
     ・[47857] dic 
   C言語エラーについて質 ....   
     ・[47839] Mist 
     ・[47841] ko 
     ・[47843] ko 
     ・[47844] Blue 
     ・[47847] ko 
     ・[47848] ko 
   シミュレーションツー ....   
     ・[47785] softya 
     ・[47787] Mist 
     ・[47789] たいちう 
     ・[47791] キャベツ太郎 
     ・[47792] バグ 
     ・[47793] softya 
     ・[47795] キャベツ太郎 
     ・[47799] softya 
     ・[47807] キャベツ太郎 
     ・[47808] kazuoni 
     ・[47810] softya 
     ・[47814] たかぎ 
   "export"キーワードに ....   
     ・[47788] たかぎ 
     ・[47790] MNS 
     ・[47797] たかぎ 
     ・[47805] MNS 
   cpp ファイルが長文に ....   
     ・[47732] たかぎ 
     ・[47733] Justy 
     ・[47735] Ma 
     ・[47736] たかぎ 
     ・[47737] 山崎 
     ・[47738] たかぎ 
     ・[47739] Ma 
     ・[47740] たかぎ 
     ・[47741] Ma 
     ・[47742] Justy 
     ・[47743] Ma 
     ・[47744] 山崎 
     ・[47745] バグ 
     ・[47746] Justy 
     ・[47747] Ma 
     ・[47748] たかぎ 
     ・[47752] Ma 
     ・[47753] たかぎ 
     ・[47756] ぽこ 
     ・[47761] Ma 
     ・[47762] Ma 
     ・[47764] たかぎ 
     ・[47766] ぽこ 
     ・[47767] Ma 
     ・[47768] softya 
     ・[47769] Ma 
     ・[47770] Ma 
     ・[47771] たかぎ 
     ・[47780] softya 
     ・[47781] たかぎ 
     ・[47782] Ma 
   オブジェクト指向の参 ....   
     ・[47666] 山崎 
     ・[47695] Mikan 
     ・[47703] sizuma 
     ・[47712] バグ 
     ・[47734] たかぎ 
     ・[47778] tk 
     ・[47779] たいちう 
   GroupBoxについて   
     ・[47694] 初心者以下 
     ・[47711] バグ 
     ・[47777] 初心者以下 
   教えてください   
     ・[47758] たかぎ 
     ・[47759] たかぎ 
     ・[47760] rugby_irukatachi 
     ・[47773] Mist 
   計算プログラム   
     ・[47700] sizuma 
     ・[47702] staff 
     ・[47706] sizuma 
     ・[47708] staff 
     ・[47709] sizuma 
     ・[47710] ただの通りすがり(二年生) 
     ・[47722] staff 
     ・[47723] ただの通りすがり(二年生) 
     ・[47763] staff 
   マウスカーソルの移動 ....   
     ・[47664] 御津凪 
     ・[47727] かなで 
     ・[47755] 御津凪 
   AeroBeatPlusのスタッ ....   
     ・[47676] Justy 
     ・[47689] Dixq (管理人) 
     ・[47726] 山口 
     ・[47728] Justy 
     ・[47729] 山口 

Name: きつね  ..ぴよぴよ(758ポイント)   Date: 2010/02/13(土) 22:48   No:48028       
Title: 文字にグラデーションをかける方法    
東方の会話シーンのように文字にグラデーションをかけて表示したいのですが、何か良い方法は無いでしょうか?
DXライブラリを使っています


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


Name: Ma  ..熟練のプログラマー(49,205ポイント)   Date: 2010/02/14(日) 03:15   No:48039     
Title: Re:文字にグラデーションをかける方法    
公式掲示板にて即出。
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1366

読んでみて、使い方が分からなかったらまた質問してみてください。


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

Name: きつね  ..ぴよぴよ(772ポイント)   Date: 2010/02/14(日) 16:29   No:48059 解決!     
Title: Re:文字にグラデーションをかける方法    
返答ありがとうございます!
既出でしたか、すいません
掲示板に乗っていたプログラムで上手くいきました!
後は自分で色々試してみます


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



Name: PEGASUS  ..ぴよぴよ(375ポイント)   Date: 2010/02/13(土) 19:23   No:48019       
Title: POCKET BITの圧縮プログラムについて    
僕はコンパイラ、ソースファイル、実行ファイルなどすべてUSBメモリに保存しています。
そのUSBメモリがPOCKET BITなのですが、その中にVirtualExpander_Jという自動圧縮ソフトが入っています。
容量節約のため使っているのですがコンパイルするとexeファイルが圧縮されていちいち解凍しなくてはならないので面倒です。
「自動で圧縮する」のチェックをはずしたのですが一度はずしてまたつけるとまたチェックが入っています。
どうすりゃいいの。
できるなら「exeのファイルを圧縮しないという設定にしたいのですが」


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


Name: Ma  ..熟練のプログラマー(49,365ポイント)   Date: 2010/02/14(日) 14:55   No:48053     
Title: Re:POCKET BITの圧縮プログラムについて    
ちょっと時間あるし変わりに調べてあげよう、と思ったが型番(どのUSBか)わからん。
一応、それっぽいものの取り扱い説明書をDLしてみてきてあげたけど、「使い方」のほうを参照


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

Name: Ma  ..熟練のプログラマー(49,452ポイント)   Date: 2010/02/14(日) 14:57   No:48054     
Title: Re:POCKET BITの圧縮プログラムについて    
↑途中で投稿しちまった。+パス設定してなかったぉ。
「使用方法」を参照しろとかかいてあった。

というか、この使用方法だとか説明書には目を通したのかね。
あと、これはここじゃなくて製作した方(SONY)に質問するべきだろう。

*追記
というか、前の書き込み質問したきりで新しい質問してますね。
返答放棄はしないようにしてください。
私以外の回答者にも失礼ですので、お礼の一言でもいって解決おしてきたらどうでしょうか? 編集済み


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



Name: Tatu  ..上級者(24,585ポイント)   Date: 2010/02/07(日) 10:21   No:47731       
Title: ゲームを作りました by Tatu    
またゲームを作ってみました。

名前は「緑三角の冒険」で、
洞窟の奥にいるボスを倒すのが目的です。

アップローダー http://www1.axfc.net/uploader/He/so/263951
パスワード MiDoRi

やられなければ、クリアまで5分もかかりません。
今まで公開した作品も同梱してあります。


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


Name: kerotan0820  ..上級者(24,018ポイント)   Date: 2010/02/08(月) 04:26   No:47775     
Title: Re:ゲームを作りました by Tatu    
キーワードが正しくありませんと表示されるのは私だけでしょうか

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

Name: Ma  ..熟練のプログラマー(47,490ポイント)   Date: 2010/02/08(月) 05:22   No:47776     
Title: Re:ゲームを作りました by Tatu    
DLできましたよ。
大文字小文字をお間違えになっているかもしれません。


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

Name: ひよこ  ..比類無きプログラマー(79,594ポイント)   Date: 2010/02/10(水) 22:23   No:47943     
Title: Re:ゲームを作りました by Tatu    
遊ばせていただきました。
簡単に行きそうでなかなかクリアできませんでした。(まだクリアしてませんが。
敵や自機が懐かしい動きをしていたと思いました。
制作お疲れ様でした。


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

Name: kerotan0820  ..上級者(24,085ポイント)   Date: 2010/02/12(金) 00:42   No:47979     
Title: Re:ゲームを作りました by Tatu    
>>Maさん
DLできました。
何故出来なかったのでしょうかね… Pwはコピペだったのに…

とりあえず、遊ばせていただきます〜^^


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

Name:  ..入門者(4,769ポイント)   Date: 2010/02/12(金) 04:41   No:47981     
Title: Re:ゲームを作りました by Tatu    
プレイしました。

ボスが強いですね。
3回やられてしまい、諦めてしまいました…

それと、ボス手前の敵の数に驚きでしたw


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

Name: Tatu  ..プログラマー(25,034ポイント)   Date: 2010/02/12(金) 09:06   No:47982     
Title: Re:ゲームを作りました by Tatu    
>>kerotan0820 さん

キーワードが正しくありませんと表示された理由は
パスワードをコピーするときにiの次の空白までコピーしたためだと思います。
今そのように試してみたら正しくないと表示されました。


>>ひよこ さん

労いの言葉ありがとうございます。

>>なかなかクリアできない

制作中はやられ判定が今よりも大きく、
緑三角の画像に触れてないように見えるのに当たるぐらいでしたが、
それだとイライラしたので小さくしておいてよかったようです。


>>宮 さん

>>ボス手前の敵
敵の種類が一種類だけなのでボス手前はわーっとだして驚かせたかったのですが
うまくいったようですね。

>>ボスが強い

強いと書いているということはダメージは与えられていると思います。がんばってください。

弾をたくさん撃たせようかと思いましたが、道中で意外とやられるのでそうはさせませんでした。




そういえば「ゼ○ダの伝説」風のゲームを作るつもりだとこの掲示板に書いていた方がいたような気がします。


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

Name: Tatu  ..プログラマー(25,616ポイント)   Date: 2010/02/14(日) 11:13   No:48041     
Title: Re:ゲームを作りました by Tatu    
前の作品を投稿してから
作り始めたアクションパズルゲームが遊べるようになったので
公開します。

名前は「パネル変化大作戦」です。
アップローダー http://www1.axfc.net/uploader/Sc/so/82882
パスワード PaneHen

「緑三角の冒険」のクリア報告も待っております。
なお、ボスは直接剣で攻撃しても
ダメージを受けるだけで倒せません。


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



Name: 今角  ..ぴよぴよ(382ポイント)   Date: 2010/02/13(土) 00:44   No:47999       
Title: .exeファイルの作り方【初投稿です】    
初めまして、今角と申します。


今回お聞きしたいのは、プロジェクトをコンパイルした後の実行ファイルの作り方です。

自分の試作したプログラムを実行ファイルにして、Skypeかメールで送って友人に見て貰おうと思っております。


http://www.play21.jp/board/formz.cgi?action=res&resno=47448&page=&lognum=146&id=dixq&rln=47494

↑のところで他の方が同じ旨の質問をしていたのを見ましたが、「デバッグ」や「リリースモード」など、自分にはよく分かりません。

それと「デバッグモードで作成したexeの配布は利用規約で禁止されています。」という解答も気になります。配布自体がいけないのでしょうか?


過去ログに同じような質問が無いか探してみましたが、自分では見つけることが出来ませんでした。もし何か良い検索方法があったら、それもあわせて教えて下さるとありがたいです。


また、プログラミングは全くの初心者です。

使っているソフト(?)は、ダウンロード版のVisual Stdio:Visual C++ Expless 2008です。


分かりにくかったらごめんなさい。


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


Name: array [URL]  ..熟練のプログラマー(64,188ポイント)   Date: 2010/02/13(土) 03:10   No:48000     
Title: Re:.exeファイルの作り方【初投稿です】    
フォルダ/○○.sln            ←開発プロジェクト
         ○○.vcproj
         ← この位置にみつけた .exe を持ってくると画像パスが通る
         Debug/○○.exe      ←これ
         Release/○○.exe    ←もしくはこれ


フォルダの階層位置の説明が難しいですが、ようするにDebugフォルダの中にある exeファイルが今角さんのいう .exeファイルになると思います。

Releaseフォルダがあれば、そっちを使ったほうがデバック情報が含まれないので容量も小さく好ましいと思いますが・・・友達に見せる程度なので先に見つけた exeファイルを使えば良いと思います。。


         


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

Name: Ma  ..熟練のプログラマー(48,739ポイント)   Date: 2010/02/13(土) 07:01   No:48001     
Title: Re:.exeファイルの作り方【初投稿です】    
厳密なことをいうと、デバッグの方はいろいろとよくないらしいです。
私も詳しくないし実験していないのでわかりませんが、何度か
「VC++の規約違反」だとか
開発環境がないと「正常に動作しない」だとか
ってうわさを聞いております。

ですので、リリースモードで渡すべきです。
もうしわけないですが、私は実際にはどうなのか詳しいところは知りません。


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

Name: softya [URL]  ..ハッカー(120,660ポイント)   Date: 2010/02/13(土) 09:43   No:48002     
Title: Re:.exeファイルの作り方【初投稿です】    
デバッグビルドのexe自体を渡す分にはライセンス違反は無いと思いますが、デバッグ用のランタイムライブラリを配布するとライセンス違反になります。
デバッグビルドは基本的に開発環境の無いPCでは動きませんし、exeファイルのサイズが数倍大きいですのでリリースビルドで配布すべきだと思います。

ここのサイトにDebugとReleaseの切り替え方法が書かれています。
http://www.elc.ees.saitama-u.ac.jp/ProgrammingI/VC2005Express/vc.html



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

Name: Ma  ..熟練のプログラマー(48,980ポイント)   Date: 2010/02/13(土) 09:56   No:48003     
Title: Re:.exeファイルの作り方【初投稿です】    
他の方の書き込みを引用して、自分では調べないってちょっと卑怯ですが、一応こちらが規約違反らしいという噂もとです。

>Name: Mist  ..比類無きプログラマー(83,348ポイント)   Date: 2010/02/01(月) 13:03   No:47494
>Title: Re:.exeファイルについて      
> デバッグモードで作成したexeの配布は利用規約で禁止されています。 

>VS2008がインストールされていないPCで実行する場合、Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)のインストールが必要な場合があります。 

>http://www.microsoft.com/downloads/details.aspx?DisplayLang=ja&FamilyID=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2 


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

Name: Tororo  ..入門者(2,521ポイント)   Date: 2010/02/13(土) 12:14   No:48004     
Title: Re:.exeファイルの作り方【初投稿です】    
簡単に言えば、Releaseで渡そうと
言うことです。


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

Name: 今角  ..ぴよぴよ(404ポイント)   Date: 2010/02/14(日) 02:30   No:48037 解決!     
Title: Re:.exeファイルの作り方【初投稿です】    
解答ありがとうございました。

Releaseモードのファイルを使います。


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



Name: キノ♪  ..ぴよぴよ(126ポイント)   Date: 2010/02/13(土) 17:07   No:48011       
Title: プログラムの館のことで質問です(C言語初心者です)    
プログラミングの館についていくつか質問があります。
(いたらぬ点がございましたら申し上げてください)

Q1.「14.メモリに画像を読み込んで表示する」(http://dixq.net/g/16.html)

の実行結果ですが、背景がオレンジ色になっているんですが実行してみたら背景がオレンジ色にならなかったんですが・・・。オレンジ色にならなかった場合は自分のプログラムがどこか間違っているってことですが?

Q2.「21.キャラを一区間歩かせる。」(http://dixq.net/g/23.html)
では、

ch.x=320
ch.y=240

でしたが
   「22. キャラを4方向に歩かせる。」(http://dixq.net/g/24.html)
では、

ch.x=320
ch.y=160

となっているのはなぜですか?

またこの320や160の意味ってなんですか?

つまらない質問ではございますが
よろしければご返答のほうをよろしくお願いします。
では、失礼します。


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


Name: Tatu  ..プログラマー(25,472ポイント)   Date: 2010/02/13(土) 17:40   No:48014     
Title: Re:プログラムの館のことで質問です(C言語初心者です)    
A1.14章のプログラムには背景を描画する処理が入ってないので
背景は描画されません。よって3章の結果と同様になれば大丈夫です。
前にも同じような質問がどこかにあったと思いますが、
Dixqさんが忙しいため、そのままなようです。

A2.
まず、ch.x,ch.yが何を表しているかわかりますか?
数値についてはプログラムの都合上、
22章ではch.yの値を32で割り切れる160にしているようです。
なぜそうでないと都合が悪いかわかりますか?


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

Name: non  ..比類無きプログラマー(91,613ポイント)   Date: 2010/02/13(土) 17:51   No:48015     
Title: Re:プログラムの館のことで質問です(C言語初心者です)    
Q1.「14.メモリに画像を読み込んで表示する」
 オレンジの背景画像は間違いです。黒が正しい。

Q2.「21.キャラを一区間歩かせる。」
この数値は画像の左上の座標です。ウィンドウの大きさは640×320です。
 最初は右に動くだけなので、ちょうど中心の座標を使ってありますが、
上下左右の場合は、1区画を32ピクセルで区切ってあるので、32の倍数になります。
240は32の倍数ではないので、160にしたのだと思われます。


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

Name: non  ..ぴよぴよ(439ポイント)   Date: 2010/02/13(土) 17:52   No:48016     
Title: Re:プログラムの館のことで質問です(C言語初心者です)    
ああ、だぶった。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,148,544ポイント)   Date: 2010/02/13(土) 21:34   No:48024     
Title: Re:プログラムの館のことで質問です(C言語初心者です)    
おぉ、キノさん、こんばんは^^

プログラム始めたんですね、頑張ってください♪

>ミス

あれ、すみません、修正しますね;


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

Name: ムンバ  ..プログラマー(28,356ポイント)   Date: 2010/02/13(土) 23:22   No:48030     
Title: Re:プログラムの館のことで質問です(C言語初心者です)    
すみません。以前から悩んでいるのです。

実は、誤字・脱字などの指摘について悩んでいるのですが
本当に、揚げ足を取るとかでは無くて、勉強させて頂いてます。
うまくお伝えできなければ、大変申し訳無いです。(謝

勉強させて頂いてるにも関わらず<(_ _)>

例えば

No.47630(No.47629への返信)
の、ご返信で

http://www.kijineko.co.jp/tech/sepcomp/part1
↑のページを参照させて頂いたとします。

こちらのページの、ご解説内の
「この方法でも、とりあえずソースファイルを分割することはできましたので、
二人で開発する場合あっても・・・(略)」

解釈違いであるなら、どうかご勘弁下さい。(謝

・二人で開発する場合であっても

など、だと思ってしまうのです。<(_ _)>

それと、DXライブラリの本家
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
の「通信関係」の

宣言 int ConnectNetWork( IPDATA IPData ) ;

概略 他マシンに接続する

次に相手のマシンは接続されるのを待つ状態にしなくてはなりません、接続を 待つ状態にするには PreparationListenNetWork関数を実行ます、この 関数は引数のないただ実行するだけの関数です。

↑「PreparationListenNetWork関数を実行ます」

実行します

だと思うのですが・・・。


本当に揚げ足を取ってるつもりとかでは無く
真剣に、自分なりに勉強して理解しようとしてます。

このような場合

・直接メールにて、ご連絡差し上げたら良いのか?
・こちらの掲示板で、指摘したら良いのか?
・誤字・脱字を発見したページの掲示板にて、報告したら良いのか?

間違いは私も含め、どなたでもあると思いますので
どうしたら良いか、ご意見お願い致します。<(_ _)>


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

Name: キノ♪  ..ぴよぴよ(338ポイント)   Date: 2010/02/14(日) 00:00   No:48033 解決!     
Title: Re:プログラムの館のことで質問です(C言語初心者です)    
ご返答ありがとうございました。
悩んでいて、もやもやしていましたが
皆さんの分かりやすい解答ですっきりしました!
疑問なく次のステップにいけます^^

また、分からないことがあれば質問するかもしれませんが
そのときもどうぞよろしくお願いします。

最後に管理人さんへ
この春休みからプログラミングの勉強とゲーム作成をするための準備として
ここのプログラミングの館を利用させていただいています
すごく分かりやすく初心者の僕でもサクサク進めれています。

また、ゲーム作成のことについていろいろ聞くかもしれませんが
その時はどうぞよろしくおねがいします。

では、失礼します。


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

Name: ムンバ  ..プログラマー(28,503ポイント)   Date: 2010/02/14(日) 00:05   No:48034     
Title: Re:プログラムの館のことで質問です(C言語初心者です)    
横レス、すみませんでした。
失礼します。<(_ _)>


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



Name: hit  ..初心者(5,331ポイント)   Date: 2010/02/13(土) 15:03   No:48005       
Title: 24. 行けない所を作る。〜2D〜 で    
ソースをコピーしてビルドしてみたんですが、いっぱいエラーがでました 初心者なので改善方法が全く
わかりません・・・ どうしたらいいですか?

1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __cexit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __amsg_exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __initterm_e は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(setlocal.obj) : error LNK2005: __configthreadlocale は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __encode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __decode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(sprintf.obj) : error LNK2005: _sprintf は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
1>LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(mlock.obj) : error LNK2005: __lock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(vsprintf.obj) : error LNK2005: _vsprintf は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(errmode.obj) : error LNK2005: ___set_app_type は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(typinfo.obj) : error LNK2005: "public: void __thiscall type_info::_type_info_dtor_internal_method(void)" (?_type_info_dtor_internal_method@type_info@@QAEXXZ) は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(typinfo.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は既に MSVCRTD.lib(ti_inst.obj) で定義されています。
1>LIBCMTD.lib(typinfo.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に MSVCRTD.lib(ti_inst.obj) で定義されています。
1>LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LIBCMTD.lib(abort.obj) : error LNK2005: _abort は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
1>LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
1>LINK : warning LNK4098: defaultlib 'LIBCMTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_execute_transformation が関数 _main で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jcopy_markers_execute が関数 _main で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_adjust_parameters が関数 _main で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_request_workspace が関数 _main で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jcopy_markers_setup が関数 _main で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _write_stdout が関数 _main で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _read_stdin が関数 _main で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _read_scan_script が関数 _parse_switches で参照されました。
1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _keymatch が関数 _parse_switches で参照されました。


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


Name: Tatu  ..プログラマー(25,290ポイント)   Date: 2010/02/13(土) 15:52   No:48007     
Title: Re:24. 行けない所を作る。〜2D〜 で    
プロジェクトのプロパティはきちんと設定されてますか?
設定を忘れているとこれらのエラーが発生します。

設定の仕方を忘れた場合はゲームプログラミングの館0章に
DXライブラリの設定について書かれたページへのリンクがあるので
その先を見てください。


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

Name: HIT  ..ぴよぴよ(352ポイント)   Date: 2010/02/13(土) 15:57   No:48008     
Title: Re:24. 行けない所を作る。〜2D〜 で    
ありがとうございます!

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

Name: ムンバ  ..プログラマー(27,653ポイント)   Date: 2010/02/13(土) 15:58   No:48009     
Title: Re:24. 行けない所を作る。〜2D〜 で    
こんにちは!お邪魔します。<_ _>

>hitさん
 ゲームプログラミングの館の23章まではやられてて
 24章で、その様なエラーが出たという事でしょうか?

---↓編集部位---

すみません。解決したんですね。
かぶってしまいました。<__> 編集済み


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



Name: hazard  ..ぴよぴよ(468ポイント)   Date: 2010/02/12(金) 20:37   No:47992       
Title: main関数の書き方について    
ゲームプログラミングの館に 34.main関数の書き方。 という項目がありますが、
この章の書き方だと

0の時は、オープニングに関する関数へ、
1の時は、メニュー画面に関する関数へ、
2の時は、キャラがダンジョンにいるときに処理する関数へ、
3の時は、戦闘シーンを処理する関数へ、
4の時は、エンディングを処理する関数へ、

というのは 0から順番にキーを押すしかないですよね?

0から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できる
ようには どうすれば良いのでしょうか?

以下がそのソースです


#include "DxLib.h"
 
int function_status=0,White;
char KeyBuf[ 256 ] ;
 
void Opening(){
        DrawString(100,100,"オープニング画面 (zをプッシュ)",White);
        if(KeyBuf[KEY_INPUT_Z]==1)
                function_status=1;
}
 
void Menu(){
        DrawString(100,140,"メニュー画面 (xをプッシュ)",White);
        if(KeyBuf[KEY_INPUT_X]==1)
                function_status=2;
}
 
void Danjon(){
        DrawString(100,180,"ダンジョン画面 (cをプッシュ)",White);
        if(KeyBuf[KEY_INPUT_C]==1)
                function_status=3;
}
 
void attack(){
        DrawString(100,220,"戦闘画面 (vをプッシュ)",White);
        if(KeyBuf[KEY_INPUT_V]==1)
                function_status=4;
}
 
void Ending(){
        DrawString(100,260,"エンディング画面 (bをプッシュ)",White);
        if(KeyBuf[KEY_INPUT_B]==1)
                function_status=5;
}
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ;                                   //ウィンドウモードに変更
        if( DxLib_Init() == -1 ) return -1;                      // DXライブラリ初期化処理 エラーが起きたら終了 
         
        White = GetColor( 255 , 255 , 255 ) ;                    //色の取得
          
        SetDrawScreen( DX_SCREEN_BACK ) ;                                // 描画先を裏画面に設定
           
        while( 1 ){
                ClearDrawScreen();                                                               // 裏画面のデータを全て削除
                GetHitKeyStateAll( KeyBuf ) ;                                    // すべてのキーの状態を得る
 
                switch(function_status){
                        case 0:
                                Opening();
                                break;
                        case 1:
                                Menu();
                                break;
                        case 2:
                                Danjon();
                                break;
                        case 3:
                                attack();
                                break;
                        case 4:
                                Ending();
                                break;
                        default:
                                DxLib_End() ;                                // DXライブラリ使用の終了処理
                                return 0;
                                break;
                }
 
                if( ProcessMessage() == -1 ) break ;                 //エラーが起きたら終了
                
                ScreenFlip() ;                                   // 裏画面データを表画面へ反映
        }
 
        DxLib_End() ;                                            // DXライブラリ使用の終了処理
        return 0 ;                                               // ソフトの終了
}




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


Name: hazard  ..ぴよぴよ(583ポイント)   Date: 2010/02/12(金) 20:40   No:47993     
Title: Re:main関数の書き方について    
訂正
 
   質問文に

    0から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できる 
ようには どうすれば良いのでしょうか?

と 書いてありましたが、 1から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できるようには どうすれば良いのでしょうか?

でした ごめんなさい


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

Name: kazuoni [URL]  ..ハッカー(134,732ポイント)   Date: 2010/02/12(金) 21:31   No:47994     
Title: Re:main関数の書き方について    
関数内に
ボタン判定→function_status
の制御を書かず、関数mainで制御を行えばよいと思います。


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

Name: Tatu  ..プログラマー(25,170ポイント)   Date: 2010/02/12(金) 21:32   No:47995     
Title: Re:main関数の書き方について    
では、以下の問題を考えてみてください。

(1) 処理を変更するために何を変更しているでしょうか?

(2) 34章のプログラムにおいて、以下の関数はいつ実行され、どのような処理をするか説明できますか?
void Menu(){ 
        DrawString(100,140,"メニュー画面 (xをプッシュ)",White); 
        if(KeyBuf[KEY_INPUT_X]==1) 
                function_status=2; 
}

(3) (2)の関数をどのように変更したら
Xキーを押したときダンジョン画面にし、
Cキーを押したとき戦闘画面にすることができるようになるでしょうか?


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

Name: hazard  ..ぴよぴよ(597ポイント)   Date: 2010/02/12(金) 22:15   No:47996     
Title: Re:main関数の書き方について    
ありがとうございます!

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

Name: hazard  ..ぴよぴよ(605ポイント)   Date: 2010/02/12(金) 22:21   No:47997     
Title: Re:main関数の書き方について    
解決をわすれてました

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

Name: hazard  ..ぴよぴよ(610ポイント)   Date: 2010/02/12(金) 22:21   No:47998 解決!     
Title: Re:main関数の書き方について    
1

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



Name: DG  ..ぴよぴよ(47ポイント)   Date: 2010/02/12(金) 18:38   No:47988       
Title: Visual C++ のライセンス登録について    
Visual C++ 2008 Express Edition のライセンス登録のページで、
Windows Live IDでサインインするとずっとロード中になって、登録できません。
日を置いて何度もサインインしてみたり、
新しくIDをつくってやってみても同じ結果になりました。
どうしたものでしょうか?


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


Name: softya [URL]  ..ハッカー(120,520ポイント)   Date: 2010/02/12(金) 19:06   No:47989     
Title: Re:Visual C++ のライセンス登録について    
ブラウザはIEをお使いですか?

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

Name: DG  ..ぴよぴよ(76ポイント)   Date: 2010/02/12(金) 19:25   No:47990     
Title: Re:Visual C++ のライセンス登録について    
Chromeでやってたんですが、IEでやるとできました!
本当に有り難い限りです。


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

Name: DG  ..ぴよぴよ(85ポイント)   Date: 2010/02/12(金) 19:27   No:47991 解決!     
Title: Re:Visual C++ のライセンス登録について    
解決マーク忘れてたんでいれときます

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



Name: PEGASUS  ..ぴよぴよ(196ポイント)   Date: 2010/02/11(木) 18:10   No:47968       
Title: C言語習得の期間    
みなさんはC言語をはじめてからゲームを作れるようになるまでどのくらいかかりましたか。
また、どのように学びましたか。


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


Name: array [URL]  ..熟練のプログラマー(63,981ポイント)   Date: 2010/02/11(木) 18:39   No:47972     
Title: Re:C言語習得の期間    
3〜6ヶ月でした。

C言語3〜4ヶ月、DXライブラリとC言語を平行して3ヶ月くらいでした。

自分の場合は学校で週1回、C言語の授業があったので、C言語の基本的な概要くらいは知ってました。

ただ、色々分かってなかったので(構造体とか)参考書と google を使って理解しながら少しずつ学んでいきました。

あと、PC画面をずっと見てると疲れてるので、このサイトを印刷して暇な時に寝そべりながらプログラムの流れを追っていったりしてました。
流れが追いにくい処理でも紙面だと、分かりやすくなったりするかもです。

---

あ、ゲームまともなの作った事なかったw
龍神録の館のプログラムの流れが大体分かるようになるまでにかかった期間ということで。 編集済み


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

Name: nayo  ..中級者(14,960ポイント)   Date: 2010/02/11(木) 21:12   No:47976     
Title: Re:C言語習得の期間    
C言語を学校で習い始めて1年経ったあたりから自分でゲーム作りたいなと思い色々やってました
ただ、当時はコンソール画面で計算を行うプログラムばかりやっててどうやって画像を表示したりするか分からなかった記憶があります
そのため作ってたのがオセロや軍艦ゲームといったコンソール画面でもできるようなのばかりでした

その後DXライブラリと出会ってこのサイトを見つけて、シューティングゲームを作って〜といった流れです
C言語を学び始めて1年と半年ほどでしょうか

勉強方法はC言語の教科書を読んだりこのサイトを見たり他の人のゲームのソースを見たり、といった感じ
昔は力技でゴリゴリ書いてたので今では読めないものばかりですが一度汚くても作っておくべきだと思います
C++を学んだり自分の作ったジャンルのゲームプログラミング本を買って読んだりすると
自分のプログラムの改善点がたくさん見つかったり…
こういう経験は一度作ったことがないとできないかな、と思います

しかし思えば売れるほどまともなゲームは未だに作ってないですね…w
少しゆとりができる春からまたゲーム作り再開したいと思います


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

Name: Ma  ..熟練のプログラマー(48,563ポイント)   Date: 2010/02/12(金) 02:37   No:47980     
Title: Re:C言語習得の期間    
Cを勉強したことはありません^^;C++だけ独学しましたが、C++はCを拡張したものだと思っているので、参考になれば。

どのようなゲーム次第かですが、私はC++言語入門のサイトを読み始めて3日ぐらいで、ゲーム制作を始めることができました。
だいたい、簡単な戦略シュミュレーションとかは作れるレベルでしたね。
ここのシューティングゲームの劣化版のようなものなら、C++勉強して数週間で始めました。

とはいっても、私はjavaを勉強していて、簡単なアルゴリズムも把握していましたし、軽くオブジェクト指向にもふれていたため、
C++言語の使い方をなんとなく把握するのは簡単でした。(ジャバは学校の授業で一年ほど)
ちょっと苦労したといえば、ジャバにはないポインターを理解することぐらい。
今でも深いところは理解してはいないと思いますが、C++を使ってゲームを作るだけなら十分でした。


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

Name: dic  ..熟練のプログラマー(51,258ポイント)   Date: 2010/02/12(金) 16:22   No:47987     
Title: Re:C言語習得の期間    
ゲーム作りを学びたくて、C言語勉強して
関数、ポインタでつまづいて
克服したらDirectXでつまづいて
克服したらWindowsに泣かされて
泣かずにすむようになったら何のゲームを作るのか悩まされて
色々ジャンルを調べていくうちにつくりたいものがあふれてきて
あれこれ悩んでいると、そのジャンル特有のアルゴリズムにつまづいて
アドベンチャーに決まったはいいけど、グラフィッカーが集まらなくて
次は、サウンドが集まらなくて
当時はネット環境もなくgoogleもなかったので
配布や体験版もCD−Rでバイト費はとんでいき
そうこうしているうちに、どんどん新しいゲームがでてきて
と、いろいろありまくりで2年ですかね


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



Name: デジキャメ  ..初心者(6,745ポイント)   Date: 2010/02/12(金) 13:08   No:47984       
Title: 無題    
15バツ15の数字が書かれたテキストファイルを読み込んで、連続して並んだ数を出力するtate.txtと、数字を
出力するtate.txtを作成しました。

#include "DxLib.h"
#define PI_HW    (15)
#pragma warning(disable:4996)

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
 
    int  SetFontThickness(int TinckPal),CheckHitKey(int KeyCode), i, j, MouseX, MouseY, num=0, k=0, n, p=0;    FILE *file;
    int  rn[PI_HW][PI_HW]={0},rc[PI_HW][PI_HW]={0},a[PI_HW][PI_HW]={0}, b[PI_HW]={0},WorkData[PI_HW][PI_HW]={0};
 
    ChangeWindowMode(TRUE);
    if(DxLib_Init() == -1){return -1;}    
    SetMouseDispFlag(TRUE);
    file=fopen("masu.txt","r");    
    for(i=0; i<PI_HW; i++){    
    for(j=0; j<PI_HW; j++){    
            fscanf(file,"%d", &WorkData[i][j]);            
    }
    }
    fclose(file);
    for (n = 0; n < PI_HW; n++){
        for (j = 0; j < PI_HW; j++){
        b[j] = a[j][n];
    }
    while (k < PI_HW){
        while (b[k] == 0 && k < PI_HW) k++;
        if (k >= PI_HW) break; 
        i = b[k];
        while (b[k] == i){       
            num++;
            k++;
        }
        rn[n][p] = num;
        rc[n][p] = i;
        p++;
        num = 0;
    }
    }
    file=fopen("tate-.txt","w"); 
    for (j=0; j<PI_HW; j++) {
    for (n=0; n<PI_HW; n++) {
        fprintf(file,"%2d",rn[n][j]);
    }
    fprintf(file,"\n"); 
    }
    file=fopen("tateiro-.txt","w"); 
    for (j=0; j<PI_HW; j++) {
    for (n=0; n<PI_HW; n++) {
        fprintf(file,"%2d",rc[n][j]);
    }
    fprintf(file,"\n"); 
    }
    return 0;
}


masu.txt
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

tate.txt

13  10
 1   3

tateiro.txt
 1 1
 1 1

上記のようにmasu.txtを読み込むと、上記のtate、tateiroになる

はずなのですが、tate tateiroともすべて「0」になりました。

どこか間違えているのでしょうか?


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


Name: fatens  ..初心者(7,682ポイント)   Date: 2010/02/12(金) 13:35   No:47985     
Title: Re:無題    
タイトルは無題ではなく適切なものにしてください。

>上記のようにmasu.txtを読み込むと、上記のtate、tateiroになるはずなのですが
プログラムはほぼ読んでないですが……
私には期待されている結果がどのように導き出されるのか分かりませんでした。
もう一度条件を整理して書き出してもらえないでしょうか。

>int  SetFontThickness(int TinckPal),CheckHitKey(int KeyCode)
それと、これは何を意図しているのでしょうか?


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

Name: non  ..比類無きプログラマー(91,426ポイント)   Date: 2010/02/12(金) 13:49   No:47986     
Title: Re:無題    
何をやりたいのかわかりません。
「ののぐらむ」だろうか?

さて、WorkDataをファイルから読み込んだ後、使っていないのだから
どういう結果が欲しいかわからないけど、全部0が出て当たり前。


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



Name: ft [URL]  ..中級者(13,409ポイント)   Date: 2010/02/11(木) 01:45   No:47947       
Title: 高速ソートについて    
こんばんは。
先日とある質問をしたところ、管理人様よりソートの存在を教えて頂きました。
数値の単純ソートと高速ソートはアプリの丁寧な解説により(恐らく)理解出来ました。
次に、龍神録では弾の大きさ順にソートしてから描画しているということですが、
例のように用意した数値ではなく「弾の大きさ順にソートしてから描画」という部分がイマイチ分かりません。
ひとまず今疑問に思っている事ですが、
@画像のソートは、グラフィックハンドルに渡した分割画像データサイズを元に行われるのでしょうか?
分割画像が渡された変数を数値化すると幾らかの数値が表示されると思うのですが、
この数値を分割画像のデータサイズとして、ソートすればいいということでしょうか?
Aデフォルトの龍神録ではどの部分でソートが行われているのでしょうか?
50章までパッとみたところ、ソートという単語が見当たりませんでした。


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


Name: Ma  ..熟練のプログラマー(48,406ポイント)   Date: 2010/02/11(木) 07:51   No:47951     
Title: Re:高速ソートについて    
グラフィックのサイズ(ピクセル)でソートという意味ではないんでしょうか?
大きいものから表示することによって、かさなったときに片方が消えて見えなくなるということがなくなるためです。

ま、私は正しいところは知りませんので、憶測にすぎませんが。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,147,021ポイント)   Date: 2010/02/11(木) 10:45   No:47952     
Title: Re:高速ソートについて    
前回誤解を招くことを言ってしまったかも知れません。
龍神録の館で紹介しているコードは四聖龍神録Plusのコードとは違うんです。
極力わかりにくい事は避けて紹介し、アルゴリズム自体も変えている部分があります。
そこで、弾の大きさ順に描画する処理も省いてあります。

なので、四聖龍神録Plusでは弾の大きさ準に描画されていますが、龍神録の館のコードにはそのような処理が入っていません。
ところで、画像サイズを取得することは出来ますが、わざわざ別の変数を用意しないといけないので、
あたり判定の大きさ順にソートしてもだいたい同じ事になるんじゃないでしょうか?
私は面倒だったので、あたり判定の大きさ順にソートしてます。



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

Name: ft [URL]  ..中級者(13,477ポイント)   Date: 2010/02/11(木) 15:13   No:47957     
Title: Re:高速ソートについて    
なるほど、そういうことでしたか。
現状あまり処理は増やしたくない状態ですし、
弾の重なり方は弾幕処理のほうで調整すれば何とかなるかな…
…ソートすることで自動的に弾の描画順が決まるわけですから、この面倒な調整の必要が無いと理解して宜しいでしょうか?


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

Name: SCI  ..上級者(23,189ポイント)   Date: 2010/02/12(金) 00:25   No:47978     
Title: Re:高速ソートについて    
ソートにもいろいろあり、目的によってどれが最適かというのもいろいろですね。

弾幕STGでは、意図した演出でない場合、大きい弾の下に小さい弾が隠れるのはある意味「禁じ手」ですね。
東方でも一部の演出を除いて、ちゃんと大きさ順になっていたかと思います。
CAVEシューなんかは、大きいオブジェクト弾が重なるときは半透明にするといった仕掛けもありますね。

さて本題ですが、バケットソートみたいな手法なんかどうでしょう。
これは階級(順序関係のある量)が少ない場合に効率的で簡単です。
つまり、弾の大きさがせいぜい数えるほどの種類しかないなら、その分のリストなり配列なりを用意してしまうのです。

話の本筋に合っているか不安ですが^^


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

Name: ft [URL]  ..中級者(13,581ポイント)   Date: 2010/02/12(金) 09:59   No:47983 解決!     
Title: Re:高速ソートについて    
確かに弾の種類は限られていますしバケットソートも効率的そうですね。
今後ソートを導入するかは未定ですが(いまのところ弾の重ななり順は地道に調整しています)、
処理に余裕があったり、演出の関係上必要と考えられる場合に出会ったら参考にしたいと思います。
ありがとうございました。 編集済み


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



Name: hit  ..ぴよぴよ(16ポイント)   Date: 2010/02/11(木) 18:20   No:47969       
Title: 大至急お願いします!    

コンパイラはborland c++ で DxLibを使って 画面中央に四角形が描画されるという物を作っ
てみたんですが、 Fatal: ファイル VORBISFILE_STATIC.LIB が開けません  と表示されて出来ません・・・

どこがいけないのでしょうか?


#include "DxLIb.h" 

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hp, LPSTR lpC, int nC){

 ChangeWindowMode(TRUE);
 
 if(DxLib_Init() == -1) return(-1);
 
 SetDrawScreen(DX_SCREEN_BACK);
 
 while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
 
    ClsDrawScreen();
    
    DrawBox(270,190,370,290, GetColor(255,0,0), TRUE);
    
    ScreenFlip();
    
    }
    
    DxLib_End();
    
    return(0);
    
    }



それとも 設定 が間違っているのでしょうか?

詳しく教えて下さい



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


Name: Mist  ..比類無きプログラマー(83,884ポイント)   Date: 2010/02/11(木) 18:24   No:47970     
Title: Re:大至急お願いします!    
VC用のDXライブラリを間違って使っているからだと思いますよ。

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

Name: 通りすがり  ..上級者(20,787ポイント)   Date: 2010/02/11(木) 18:25   No:47971     
Title: Re:大至急お願いします!    
何故そんなに大至急回答が必要なんですか?
何かの課題なの?


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

Name: hit  ..ぴよぴよ(74ポイント)   Date: 2010/02/11(木) 18:44   No:47973     
Title: Re:大至急お願いします!    
通りすがりさんへ はい、そうです

mistさんへ VC用のDXライブラリとはなんですか? 2種類あるのですか? DxLib_BCC というファイルに入っているものをつかっているのですが・・・


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

Name: Mist  ..比類無きプログラマー(83,818ポイント)   Date: 2010/02/11(木) 18:54   No:47974     
Title: Re:大至急お願いします!    
DXライブラリにはVC用とBCC用の2種類があります。

間違って使用していないのであれば、「プロジェクトに追加すべきファイル_BCC用」フォルダの中にあったファイルのコピーで、足りないものがあるんじゃ無いでしょうか。


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

Name: hit  ..ぴよぴよ(95ポイント)   Date: 2010/02/11(木) 22:35   No:47977 解決!     
Title: Re:大至急お願いします!    
ありがとうございます やってみます

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



Name: kazuoni [URL]  ..ハッカー(134,412ポイント)   Date: 2010/02/10(水) 19:54   No:47937       
Title: シングルトンクラスのテンプレート化 続    
お邪魔します。
前回の続きになってしまいますが。。前スレは以下のアドレスです

http://www.play21.jp/board/formz.cgi?action=res&resno=45148&page=&lognum=138&id=dixq&rln=45185#45185

前回解決と(決め打ち)し、今まで放置してましたが、
最近、このプロジェクトを見直ししていて、
確実にシングルトン化出来ていないことが判明し、
修正方向を教えていただきたいです。

やりたい事は前スレに書いてありますが、再度書きます。
今回添付したfirst.txtのシングルトンクラスの
GetInstance 
DeleteInstance 
Order
を何とかテンプレート化したく、あがいた結果、
ぽこさんや他の皆様の助言もあり、second.txtとなりました。
が、全く万事解決しておらず、子クラスのインスタンスが普通に生成出来てしまっています。
子クラスのコンストラクタをプライベートにしなければならないのですが、
そうすると、親クラスで動的生成が出来なくなってしまいます。
どう修正していったらよいでしょうか?

最終的には
子クラス::GetInstance()
子クラス::Order()->子クラス関数
子クラス::DeleteInstance()
のみ実行できるようにしたいです。()

よろしくお願いします。


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


Name: kazuoni [URL]  ..ハッカー(134,438ポイント)   Date: 2010/02/10(水) 20:01   No:47938     
Title: Re: シングルトンクラスのテンプレート化 続    
すでに質問に漏れが・・・

second.txt

×static bool GetInstance(int t=0)
○static bool GetInstance() 編集済み


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

Name: Justy  ..伝説なるハッカー(499,715ポイント)   Date: 2010/02/10(水) 21:43   No:47941     
Title: Re: シングルトンクラスのテンプレート化 続    
>子クラスのコンストラクタをプライベートにしなければならないのですが、 
>そうすると、親クラスで動的生成が出来なくなってしまいます

・ 子クラスのコンストラクタ・デストラクタを privateに。
・ superクラスに typedef super<T> super_type; を追加。
・ subA / subBクラスに friend super_type; を追加。

 とりあえずこれで動的生成はできるようになると思います。


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

Name: ぽこ  ..初心者(6,533ポイント)   Date: 2010/02/11(木) 01:53   No:47948     
Title: Re: シングルトンクラスのテンプレート化 続    
>子クラスのインスタンスが普通に生成出来てしまっています。 

こういう事を防ぐために、前回提示したソースではクラスsuperのコンストラクタに
アサーションが入っているのですが、これを外した理由は何でしょうか?


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

Name: kazuoni [URL]  ..ハッカー(134,696ポイント)   Date: 2010/02/11(木) 19:06   No:47975 解決!     
Title: Re: シングルトンクラスのテンプレート化 続    
返事が遅れて申し訳ありませんでした。

> Justyさん

すばらしいです。
friendの存在すら忘れていました。
やらないとすぐに忘れてしまいますね。
Justyさんのおっしゃる通りにすることで、実現できました。


> ぽこさん
> アサーションが入っているのですが、これを外した理由は何でしょうか?

ここは書いていなかったのですが、
自分の想定している範囲では、
インスタンス生成自体出来ない→コンパイルが通らず、errorが出る
でした。assertでは実現できてしまいます。(コンパイル自体可能)
また、正直、assertはプログラムに組み込んだ経験が少なく、
その効用を十分に把握しておらず、使う事に抵抗があったため、
勝手に削除していました。
ぽこさんのご回答を無視する形になってしまい、大変申し訳ありませんでした。
しかし、assertの用法の見直しになり、大変参考になりました。
ありがとうございました。


短かったですが、質問は解決しましたので、解決にさせていただきます。
ご回答ありがとうございました。
次回もよろしくお願いします。



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



Name: エビパン  ..ぴよぴよ(74ポイント)   Date: 2010/02/07(日) 17:39   No:47749       
Title: 初心者です    
はじめまして。

いま、C言語でいろいろとアプリなどをつくってみたいなとおもって
講座などをみて勉強しているのですが、
とても難しくてくじけそうです^^;
最初はたのしく学んでいたのですが、
つぎからつぎへと新しいことがでてきて覚えれません。

そこでみなさんはどうやってC言語を学んできたのかお聞きしたいです。
また、その学んだことを今でも全部おぼえているのかもしりたいです。


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


Name: たかぎ [URL]  ..ハッカー(159,065ポイント)   Date: 2010/02/07(日) 17:49   No:47750     
Title: Re:初心者です    
> そこでみなさんはどうやってC言語を学んできたのかお聞きしたいです。 

私の場合は、Cを学ぶ前に、BASICは普通に使っていましたし、アセンブリ言語も仕事で使っていました。
ですので、そんなに時間はかかりませんでした。慣れるまでに1ヶ月ぐらいかかったように覚えています。
手近にあった本を見ながら、あとは会社で近くの後輩を捕まえて聞きながら覚えました。

> また、その学んだことを今でも全部おぼえているのかもしりたいです。 

忘れます。それ以上に、間違って覚えていたことも多々あります。
だからこそ、日々、知識を補いながら、間違いは修正しながら使っています。


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

Name: mnkr  ..入門者(4,405ポイント)   Date: 2010/02/07(日) 17:51   No:47751     
Title: Re:初心者です    
プログラムは学校で勉強しました。

学んだことは全部覚えていません。
覚えているのは考え方、処理の流れ、というようなものです。
そういう基本的なものがわかっていれば、細かい仕様はリファレンスで調べれば良いので。。。


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

Name: dic  ..熟練のプログラマー(50,927ポイント)   Date: 2010/02/07(日) 19:55   No:47754     
Title: Re:初心者です    
情熱

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

Name: softya  ..ハッカー(115,447ポイント)   Date: 2010/02/08(月) 01:12   No:47765     
Title: Re:初心者です    
とりあえずC言語はC言語、ゲームプログラミングはゲームプログラミングで別に分けて考えてはどうでしょうか?
今はどちらの問題でつまずかれていますか?


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

Name: Ma  ..熟練のプログラマー(47,451ポイント)   Date: 2010/02/08(月) 01:56   No:47772     
Title: Re:初心者です    
>最初はたのしく学んでいたのですが、 
>つぎからつぎへと新しいことがでてきて覚えれません。 


一度覚えた知識ができたら、すぐに次のステップにいかず、現在できることを楽しむ。
ついでに、独自の考えから、そのソースをちょこっとだけいじるなどして、
楽しみながら、かつコード一行一行の役割の理解を深める。

あきてきたら、新しい知識をしいれる。

こんな方法でもいいかもしれませんよ。
私の場合、一度に読んでも、実際にいじってみないと理解できたとはいえないときがほとんどでした。


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

Name: kerotan0820  ..上級者(24,001ポイント)   Date: 2010/02/08(月) 04:23   No:47774     
Title: Re:初心者です    
C言語の初心者ですが、ほかの回答者様に共感できる点があったので初心者目線で回答させていただきます
分からないことがあればすぐさかのぼってその単元をつぶしていっています
Maさんが
>>一度覚えた知識ができたら、すぐに次のステップにいかず、現在できることを楽しむ。 
とおっしゃっていますが、現段階の初心者である僕でもこれは大事なのだなと実感しています
今僕が使える知識では、ユーザーからの入力を計算する、様々な機能がついた電卓みたいなものしか作れません
最初は入力した二つの整数を足したり書けたりするところから始まったんです
少しずつ拡張していって、今では中学校の期末、中間の成績を計算したり、様々な機能を選択できるようにしました。
今挑戦しているのは、一通りの結果が表示された後にまた最初のメニュー画面に戻るという作業です

エビパン様が僕より知識が無いのかすら分からないのでその先のことはいえないのですが、最初のうちは何も見ずにちょっとしたプログラムすらかけないのは当然ですし、こんなの出来るようになるんだろうか…と思っていても確実に少しずつ暗記していると思います

Hellow word.と表示するプログラムすら最初、私はかけませんでしたし…
それに比べて今は相当成長しました

このサイトの御蔭なのですがねw

分からないことがあればそれを質問して…
覚えた知識をすぐに応用したりして活用する。これを繰り返せば確実に覚えていけると思います

今の僕はこんな感じでがんばってますw

ポイントを見てくだされば分かりますが、相当ポイントがたまってますよね(質問ポイント)
自分は正直理解力無いので、必死に質問してきたんですw
ここのサイトの住人様は本当に親切に回答してくださるので、規約を守って利用できるのであればどんどん活用したらよいのではないかな、と思います。

僕はこんな回答しか出来ないので偉そうなこといえませんけどね…w

では、初心者同士がんばりましょう^^ 編集済み


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

Name: Tororo  ..入門者(2,510ポイント)   Date: 2010/02/08(月) 15:11   No:47783     
Title: Re:初心者です    
ども、小学生なTororoですw(もう卒業w)
自分は猫でも・・のサイト&14歳からの・・・シリーズの本で、勉強しました^^
半年くらいHSPという言語を使って勉強して、それからC++使ってます。
最初は覚えられない!とか思うかもしれませんが、簡単なものからやっていくと、以外にすんなり
覚えられますよ!

頑張ってください!
応援しています!。



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

Name: エビパン  ..ぴよぴよ(268ポイント)   Date: 2010/02/10(水) 21:41   No:47940     
Title: Re:初心者です    
すいません。質問したにもかかわらず
なかなか書き込みができませんでした。。

やっぱりそうですよね。

楽しみながら覚えるということが、一番の上達への道なのですよね。
ゲームとかつくりたいとかおもって必死におぼえていたら、
その楽しむという心をわすれていたようです。

また、いまはフリーで配布されてた講座のファイルをみて勉強しているので
機会があれば本屋にいってC言語の本をかってみたいとおもいます。

みなさん回答ありがとうございました。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,148,403ポイント)   Date: 2010/02/11(木) 11:02   No:47953     
Title: Re:初心者です    
>> エビパンさん

こんにちは^^
今エビパンさんは、どのあたりで「挫けそう」とお感じですか?
もしもある程度の知識が付いていて、そこまで難しい事を学ぶ必要が無いのに学ぼうとして挫けそうだと思ってしまっているとすえば、
それは勿体ないので、「勉強」は後回しにしてもいいんじゃないでしょうか?
例えばif、for、配列、自作関数位がわかればもう簡単なゲームはDXライブラリで作れると思いますし、どんなアプリが作りたいかわかりませんが、あまり複雑なものでなければ作っていけると思いますよ。
確かに効率的なプログラムを初めからかけるわけないでしょうけど、それは書きながら覚えていけばいいと思います。

私は「勉強」は嫌いですが、プログラムを学ぶことは億劫になりませんでした。
きっと楽しんでやっていたので、それは勉強では無かったのだと思います。
私は最初、細かく一字一句解説書の内容を理解していこうとなんてしませんでした。

ほとんど知識もないくせに見よう見まねでゲームを作っていました。
初めて作ったゲームなんて、途中までメイン関数に千行位書いてましたし、
キャラの画像とか、配列しらなかったので

int Image1,Image2,Image3,Image4,Image5,Image6,Image7, .... , Image100

とかって100個変数用意したりしてました。
計算も描画もぐっちゃぐちゃでバグが出たらどこで躓いているのかさっぱりわからないし、
キャラの移動計算は一度に一つしかできないなど、それはそれはひどいものでした。

しかし、こんなとんでもない非効率なプログラムを書き続けると、自然に「どうすれば効率的になるかな〜」と悩むんですよね。
そこで、色々効率的なことが出来ないか、調べたり考え出したりします。
調べているうちに

変数100個作るより、配列が便利だと知る、
個別に変数用意するより構造体が便利だと知る、
全部メイン関数に突っ込むなんてことするより、関数わけするべきだと知る・・

など段々知識も増えてきて、効率的なプログラムが書けるようになります。
また、具体的な書き方は自分で考えるわけですが、ここが結構試行錯誤の大事な所で、
「人に聞いたアルゴリズムはすぐに忘れる。でも、自分で考え出したアルゴリズムは忘れない」
んですよね。非効率なプログラムをあれこれ書いて無駄に思えるかもしれませんが、試行錯誤することはかなり大事なことだと思います。
また、楽しんでやっていれば、色々自分で考える事自体楽しめると思いますよ。

ということで

>また、その学んだことを今でも全部おぼえているのかもしりたいです。 

「勉強」だと思って学んだことは大半忘れたかも知れません。でも、自分で考え出した事は忘れたりしていません。
それに「全部覚えなきゃ」と思うこと自体億劫になりそうです。
趣味なんだから、もっと気軽に考えていいと思いますよ。
参考書に書いてあることなんて、プログラム書いているうちに覚えますし、
逆に言えばプログラム書かずに覚えられることなんてありません。

楽しんで色々プログラムを作ってみる事が一番だと思いますよ


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

Name: エビパン  ..ぴよぴよ(23ポイント)   Date: 2010/02/11(木) 17:43   No:47967     
Title: Re:初心者です    
Dixq (管理人)さん返答ありがとうございます。


自分は配列をなんとか理解し、そのあとにやったポインタのとこで
ごっちゃごちゃになりました。

if、for、配列、自作関数は理解できてたのですが、
これだけでなにがつくれるのかわからず、
プログラムをうってなにかつくろうとはおもっていませんでした^^;;

最初は趣味で楽しく学んでいたのにいつのまにか勉強というジャンルに
はいっていたようです。。

しばらくはポインタなどまだわからない所は後回しにして、
いまわかっていることで色々とつくれるものをつくってみたいとおもいます。


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



Name: ひよこ  ..比類無きプログラマー(79,925ポイント)   Date: 2010/02/11(木) 15:19   No:47958       
Title: 代入できないのですが、    
ただいま、ソースを実行していてたら、
for(int i=0;i<10;i++){
        bullet_t p;
        memset(&p,0,sizeof(bullet_t));
        p.x=234+i*10;
        p.y=i*50+25;
        p.flag=1;
        p.spd=3/5;
        p.angle=PI2/10*i;
で p.spdが0.6になると思ったのですが、 代入が終わっても0のままなのですがどうしてでしょうか?(0.2とか計算なしで代入するとできます。
構造体です。
//弾に関する構造体
struct bullet_t{
    //フラグ、種類、カウンタ、色、状態、少なくとも消さない時間、エフェクトの種類
    int flag,knd,cnt,col,state,till,eff,kaiten,eff_detail;
    int cnt_till,cnt_stt;
    //座標、角度、速度、ベースの角度、一時記憶スピード,一時的時間(設定時間)
    double x,y,vx,vy,angle,spd,base_angle[1],rem_spd[1],rem_time;
    int c_flag;
    double cx,cy;
    struct bullet_t* next;  //次の要素へのポインタ
};

環境はVC2005です。


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


Name: Blue  ..中級者(11,294ポイント)   Date: 2010/02/11(木) 15:25   No:47959     
Title: Re:代入できないのですが、    
>p.spd=3/5;
p.spd=3.0/5;
とするとどうなりますか?


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

Name: ひよこ  ..比類無きプログラマー(79,951ポイント)   Date: 2010/02/11(木) 15:28   No:47960     
Title: Re:代入できないのですが、    
あれ、なんでしょうか、3.0にしたら、上手くいきました。
どうして上手くいったのでしょうか?


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

Name: array [URL]  ..熟練のプログラマー(63,914ポイント)   Date: 2010/02/11(木) 15:32   No:47961     
Title: Re:代入できないのですが、    
私も同じことで悩んだ事があります。

int型で計算を行うので少数は切り捨てされるみたいです。

p.spd がdouble型だと、勝手に右の式も double型で計算してくれると勘違いしがちですよね^^;


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,148,590ポイント)   Date: 2010/02/11(木) 15:32   No:47962     
Title: Re:代入できないのですが、    
int型とint型の計算だからです。
整数÷整数の結果は整数になりますから、
3÷5は0になります。
しかし3.0と書くとdouble型を示しますので、
実数÷整数の結果は実数となり、少数が扱えるのです。

PI2/10*i

がうまくいくのはPI2の実態が恐らく実数だからですね。


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

Name: Blue  ..中級者(11,388ポイント)   Date: 2010/02/11(木) 15:34   No:47963     
Title: Re:代入できないのですが、    
3 → int型の数値
5 → int型の数値
3 / 5 → int型の数値 よって 0

int型の 0 を double型の変数に入れたら 0.0

3.0 → double型の数値
5 → int型の数値
3.0 / 5 → double型の数値 よって 0.6(に近い値)

double型の 0.6 を double型の変数に入れたら 0.6

ということで

3 / 5.0
でも
(double)3 / 5
同じことが言えます。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,148,632ポイント)   Date: 2010/02/11(木) 15:35   No:47964     
Title: Re:代入できないのですが、    
ちなみに、計算の順序も考慮して下さい。

1/2*3.0は0.0になります。

3.0*1/2は1.5になります。


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

Name: ひよこ  ..比類無きプログラマー(80,010ポイント)   Date: 2010/02/11(木) 15:45   No:47965     
Title: Re:代入できないのですが、    
そうなんですか。わかりました。わかりやすい説明ありがとうございます。
Blueさん、arrayさん、Dixqさん、ありがとうございました。


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

Name: ひよこ  ..比類無きプログラマー(80,026ポイント)   Date: 2010/02/11(木) 15:45   No:47966 解決!     
Title: Re:代入できないのですが、    
解決にします。

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



Name: HK  ..ぴよぴよ(192ポイント)   Date: 2010/02/09(火) 17:16   No:47854       
Title: 太いレーザーに関して    
初めて質問させていただきます。

簡単に自己紹介ですが、HKといいます。
理系大学生です(と言っても理学部なのでPCは触らずに理論ばかりやってます)
結構前からプログラミングをしており、このサイトの講座は一通り理解できるくらいです。
現在、ゼロから出発して本家「東方星連船」とそっくりなゲームが作れるかどうか試しているところです。

現在状況は、曲がるレーザーやボムなど、ほとんどの部分がそっくりに再現できたのですが、
先日よくわからないことが発生しました。

それは5面に登場する太いレーザー(グレイテストトレジャー)の再現です。(画像参照お願いします)
私の理解の範囲では、ブレンドモードをαブレンドにして、輝度を変更し、
青成分を強めて素材を描画すればOKだと考えていました。

しかし、輝度を色々変えてみても本家のような色を出すことができませんでした。

このような場合、どのような描画方法が最適なのでしょうか。(いまいちαブレンドについても理解が曖昧です)


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


Name: HK  ..ぴよぴよ(230ポイント)   Date: 2010/02/09(火) 17:19   No:47855     
Title: Re:太いレーザーに関して    
SetDrawBright  ( 80 , 80 , 255 )として、頑張って似せようとしたのがコチラです

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

Name: Dixq (管理人)  ..ウィザード(1,146,473ポイント)   Date: 2010/02/09(火) 17:46   No:47856     
Title: Re:太いレーザーに関して    
お〜楽しそうですね

携帯で見ただけなのでまとはずれかもしれませんが、青いレーザーの内側に白いレーザーを加算したらどうです?


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

Name: y  ..入門者(4,586ポイント)   Date: 2010/02/09(火) 18:24   No:47860     
Title: Re:太いレーザーに関して    
あの設置型レーザーは、3つほど画像を使ってます。
(本家の画像を使ってる辺り分かっていると思いますが)
まず一つが発射元の光。
もうひとつがレーザーの柄。
三つ目が普通のレーザー。

順番としては、普通のレーザー、その上に柄(スクロールさせて)、そして発射元の光。
全部アルファ合成ではなく、加算合成です。
こういうのは、フォトレタッチソフトか何かでシミュレートしてから、
実装を考えると良いかもしれません。


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

Name: HK  ..ぴよぴよ(497ポイント)   Date: 2010/02/09(火) 18:52   No:47864     
Title: Re:太いレーザーに関して    
レスしていただきありがとうございます。

なるほど、画像を重ねるということですか…
本家素材を貼ることはできないので、私が本家素材に似せて描いた素材の絵を貼ります。

No:47855 では1番上の太くて長い画像を青くして描画しただけでした。

y様のおっしゃっている「三つ目が普通のレーザー」というのはこの太いヤツだと解釈してもOKですか?

また、私の理解力不足のせいで「発射元の光」というのが何を指しているのかよくわかりません。
素材でいうところの 真ん中の丸い画像 のことでしょうか??

今、バイトに行くところなので、夜にでもy様の方法を試してみようと思います。


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

Name: Ma  ..熟練のプログラマー(47,385ポイント)   Date: 2010/02/09(火) 21:02   No:47865     
Title: Re:太いレーザーに関して    
>素材でいうところの 真ん中の丸い画像 のことでしょうか?? 
画像を見た感じ、直感で答えるので正確でゃありませんが、
中央の明かりが放射状に拡散しているところからして、あなたの素材にある単純に丸い画像では綺麗に再現できません。
フォトショップでいうスマッジツール(ひきのばすやつ)を使って、放射状にちょっと拡散するような画像が必要になるんじゃないでしょうか?

あと、αではなく加算にするのは、白く表現するためです。
当然ですが、αではかさなっても元の色がこくなるだけで、かさなることによって綺麗な白色を再現できません。

ちなみに、yさんは画像として再現するといっているのに対して、Dixqさんは、違う色のレーザーをかさねることを提案していますが、
私も違う色(パラメータ)を持ったレーザーをかさねるのが、一番楽かなー、なんて思ってます。
ですが、これはあたり判定に無駄がでたりしますね。

そこで、真ん中が強い白色で外ぶちが灰色の画像を用意して、それを色指定で加算で描画していけば、再現できるのではないでしょうか。


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

Name: y  ..入門者(4,827ポイント)   Date: 2010/02/09(火) 22:18   No:47873     
Title: Re:太いレーザーに関して    
すみません、私の表現がおかしかったです。
レーザーの根元と言った方がよかったですね。
素材の下の二つです。
一番上のものが柄です。
そして普通のレーザーですが、多分レーザーではないです。
素材の中段にある円形の画像に色を付けて一直線上に並べているだけみたいです。
(弾幕の動きからして、そのほうが正しいかもです)

先程、全部加算合成と言ったのですが、どうも違うみたいです。
普通のレーザーの部分は恐らく合成無し、その上に重ねるレーザーの柄は、加算合成。
レーザーの根元は、一度目に青色の拡大した根元を合成無しで、二度目にそのまま白で加算合成で描画…ですかね。

案外複雑なことしているみたいです。
一応、上の手順でそれらしいものは出来そうです。

間違いがあったらすみません<(__ >


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

Name: HK  ..ぴよぴよ(549ポイント)   Date: 2010/02/09(火) 22:45   No:47878     
Title: Re:太いレーザーに関して    
皆さん返信ありがとうございます。

一応、やってみようと思ったことが得られたので、試してみます

その結果をまた報告させていただきます


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

Name: HK  ..ぴよぴよ(595ポイント)   Date: 2010/02/11(木) 03:26   No:47950 解決!     
Title: Re:太いレーザーに関して    
yさんの方法を試してみたところ完璧に再現できました!

Maさん、管理人さん、yさん 皆様ありがとうございました。


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



Name: 大学1年(初心者)  ..ぴよぴよ(47ポイント)   Date: 2010/02/10(水) 19:21   No:47934 解決!       
Title: 構造体のポインタと構造体型の関数を用いた問題    
大学で出された課題についての質問です。正しくプログラムが動いてくれません。どこに原因があるのでしょうか。
このプログラムは、ヤンキースの選手の成績データをプログラムに取り組んで、以下のようなことを出力するプログラムです。

・選択した選手のデータを出力する
・安打数の一番多い選手のデータを出力する
・本塁打数の一番多い選手のデータを出力する
・打率の一番高い選手のデータを出力する
・出塁率の一番高い選手のデータを出力する

例えば、選択した選手のデータを出力したい場合は、出力画面で、enumで定義されている1(NAME)を入力し、そのあと、出力したい選手の名前を入力します(Matsuiなど)

【本体のプログラムのソース】
http://codepad.org/tGSltdvV

【インクルードされるbattingstats.h】
http://codepad.org/RuXvoLGI

【取りこむデータの入ったファイルmlbstats_nyy2009.csv】
http://codepad.org/Vv6lYaMq

また、実際にstats[]とnumにデータが格納されているかどうかを確認するためにprintfを実行した出力結果がこれです。→「http://codepad.org/SH0tS1Le
numにはしっかりと格納されているのですが、選手データの内容が狂っています(途中までは正しく格納されているのですが。。。)
おそらく、while(1)の中身が間違っていると思うのですが、どのように直せばよいでしょうか? 編集済み


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


Name: たかぎ [URL]  ..ハッカー(159,997ポイント)   Date: 2010/02/10(水) 19:29   No:47935     
Title: Re:無題    
意味不明です。
質問は何でしょうか?


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

Name: Justy  ..伝説なるハッカー(499,868ポイント)   Date: 2010/02/10(水) 22:20   No:47942     
Title: Re:無題    
>numとstats[]の中身を出力すると、numの中身は0

100:    if(fgets(line,sizeof line,fp) != NULL) /* fpからline[]に文字列を格納し、終了するまで(NULLを返すまで)繰り返す */
101:        break;


 この行が怪しい気がしますね。
 fgetsの処理に成功しているなら戻り値は NULLではないので、そのまま breakが呼ばれ
whileループを抜けてしまうような……。


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

Name: 大学1年(初心者)  ..ぴよぴよ(116ポイント)   Date: 2010/02/11(木) 00:09   No:47944     
Title: Re:無題    
Justyさん

確かにそこは明らかにおかしかったです。見落としてました。
ありがとうございます

ひとまず、num(データ数)は間違いなく格納できたのですが、stats[]の中身が大荒れです。
どうすればよいでしょうか


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

Name: Justy  ..伝説なるハッカー(500,210ポイント)   Date: 2010/02/11(木) 01:14   No:47946     
Title: Re:無題    
 中身が更新されたようですね。


>stats[]の中身が大荒れです
 loadStatsの中“だけ”でもいろいろおかしな箇所があります。

 まず、名前が "Player"だったらスキップするようになっていますが、この段階では
メンバ nameの文字列の終端が無い可能性があり、その場合 strcmpに失敗するので、
これが機能するかどうかは運次第になります。
 大抵の場合うまく機能しないでしょう。

 次に、ssanfのフォーマットですが、&dが紛れ込んでいます。
 この為、途中で解析に失敗します。


 まず、このあたりの処理を見直してみましょう。
 
 そもそも メンバ nameに名前をセットするのになにやらいろいろやっていますが、
これも含めて sscanfで処理してしまえば BatterStats変数の全てのメンバに対する代入は
一行で出来るはずです

 尚、その際 sscanfの戻り値を見て、どこまで読み込めたかどうかは必ず確認して下さい。


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

Name: box  ..ハッカー(150,865ポイント)   Date: 2010/02/11(木) 02:16   No:47949     
Title: Re:無題    
119:            (stats+tmp)->name[j] = NULL;

ポインタであるNULLをchar型に代入すると、
何かよくないことが起きるかもしれません。
コンパイル時に警告が出ているはずです。

NULLと、文字列の終端を示す'\0'とは全く別物であることを、
まずは理解するとよいでしょう。


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



Name: ft  ..中級者(12,890ポイント)   Date: 2010/02/10(水) 11:09   No:47893       
Title: boss_shot_calc()とgraph_bullet()を組み合わせ    
こんにちは。タイトルのようにboss_shot_calc()とgraph_bullet()のボス弾の描画部分を組み合わせることで、
BOSS_BULLET_MAXのループを減らしたいのですが上手くいきません。具体的には弾の座標や当たり判定は計算されているようですが、弾の描画がされない状態です。
無理矢理くっつけてますが以下がコードです。graph_bullet()の該当部分はコメントアウトしています。

//ボスの弾幕を計算する
void boss_shot_calc(){
      int i,eff;
        boss.endtime--;
        if(boss.endtime<0)
                boss.hp=-1;
        for(i=0;i<BOSS_BULLET_MAX;i++){
                if(boss_shot.bullet[i].flag>0){
                        boss_shot.bullet[i].x+=COS(boss_shot.bullet[i].angle)*boss_shot.bullet[i].spd;
                        boss_shot.bullet[i].y+=SIN(boss_shot.bullet[i].angle)*boss_shot.bullet[i].spd;
                        boss_shot.bullet[i].cnt++;
                                if(boss_shot.bullet[i].x<40 || boss_shot.bullet[i].x>300||
                                        boss_shot.bullet[i].y<-20 || boss_shot.bullet[i].y>280)
                                        boss_shot.bullet[i].flag=0;
                }
/****graph_bullet()からコピペ*****/
        //ボス
        if(boss_shot.flag>0){//弾幕データがオンなら
        //    for(j=0;j<BOSS_BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ
                        if(boss_shot.bullet[i].flag!=0){//弾データがオンなら
                eff=0;
                if(boss_shot.bullet[i].eff_detail==1){//風雨にも負けず用弾エフェクト
                    SetDrawBlendMode( DX_BLENDMODE_ADD, 100+GetRand(155)),eff=1 ;
                    DrawRotaGraphF(
                        boss_shot.bullet[i].x+FIELD_X+dn.x, boss_shot.bullet[i].y+FIELD_Y+dn.y,
                        0.9f, boss_shot.bullet[i].angle+1.5707963267948966192313216916395f,
                        img_bullet[boss_shot.bullet[i].knd][boss_shot.bullet[i].col],TRUE,0);
                }
                if(boss_shot.bullet[i].eff==1)
                    SetDrawBlendMode( DX_BLENDMODE_ADD, 255),eff=1 ;

                DrawRotaGraphF(
                    boss_shot.bullet[i].x+FIELD_X+dn.x, boss_shot.bullet[i].y+FIELD_Y+dn.y,
                    0.9f, boss_shot.bullet[i].angle+1.5707963267948966192313216916395f,
                    img_bullet[boss_shot.bullet[i].knd][boss_shot.bullet[i].col],TRUE,0);
                if(eff==1)
                    SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
                        }
         //       }
        }
/****graph_bullet()からコピペ*****/
        }
        boss_shot.cnt++;
}


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


Name: fatens  ..初心者(7,429ポイント)   Date: 2010/02/10(水) 11:15   No:47894     
Title: Re:boss_shot_calc()とgraph_bullet()を組み合わせ    
コードは見てないんでどこがおかしいのかは知りませんが、
計算処理と描画処理は分けておいた方が良いと思います。
そうしておかないと一時停止などを導入するときに困ると思うので。


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

Name: Tatu  ..上級者(24,719ポイント)   Date: 2010/02/10(水) 11:27   No:47897     
Title: Re:boss_shot_calc()とgraph_bullet()を組み合わせ    
龍神録プログラミングの館と同じようにしているという仮定の下での推測ですが、
メインループにおいて、boss_shot_calc()などが
はいったboss_shot_main()のあとにgraph_main()が実行されるため、
弾の描画が行われた後に背景などが描画されることにより
描画されてないように見えるのだと思います。


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

Name: ft [URL]  ..中級者(13,181ポイント)   Date: 2010/02/11(木) 00:15   No:47945 解決!     
Title: Re:boss_shot_calc()とgraph_bullet()を組み合わせ    
>>Tatuさん
ご指摘の通りでした。
そこで正常に表示されるようにしてみたのですが、何故か処理が重くなってしまいました(ちなみにPSPにおける動作です)
ifを減らしたり、for文を省略しても何故か遅くなってしまうことが多々あります;
PSPではキャッシュミスが発生すると数十倍の処理時間が掛かるとかどうとか。
今回の操作がこれに該当するのか、この辺りがどういう処理によって発生するのかイマイチ分からない部分です…

>>fatensさん
そうですね、今回の場合は一纏めにすることで重くなってしまったことですし、分けて処理をした方が良さそうです。


この件に関しては以上の通りとなりましたのでここで解決とさせて頂きます。
ありがとうございました。


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



Name: デラ初心者  ..入門者(3,770ポイント)   Date: 2010/02/08(月) 19:23   No:47796       
Title: C++の難しさ    
いつもお世話になっております
デラ初心者です

現在中2です

C++とCの違いは何ですか?

C++を覚えたいのですが良いサイトや、本などを
紹介してください。

問題集などあると嬉しいです。

よろしくお願いします



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


Name: たかぎ [URL]  ..ハッカー(159,405ポイント)   Date: 2010/02/08(月) 19:30   No:47798     
Title: Re:C++の難しさ    
> C++とCの違いは何ですか? 

下記でも参考にしてください。
http://www.kijineko.co.jp/tech/cpp2c


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

Name: softya  ..ハッカー(116,513ポイント)   Date: 2010/02/08(月) 19:37   No:47800     
Title: Re:C++の難しさ    
>C++とCの違いは何ですか? 
すごく大雑把に言うとC言語にオブジェクト指向の概念を取り入れて拡張したもの。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91
なので、C言語よりも覚えることは大変増えています。
wikipediaのC++の説明。
http://ja.wikipedia.org/wiki/C++


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

Name: MNS  ..プログラマー(31,172ポイント)   Date: 2010/02/08(月) 20:01   No:47804     
Title: Re:C++の難しさ    
中二ならば、ちょうど良い本で
「14歳からはじめるC++わくわくゲームプログラミング教室」(ラトルズ社)があります。

しっかりとした入門書で勉強できるのなら、それに越したことはないですが、
この本はかなり内容が簡単で、ゲーム製作ということで取っ付きやすいです。
もちろん、この本はC++の本を網羅しているわけではなく、間違いもあると思うので、
この本→その他の入門書、という流れで勉強すると、より理解しやすいでしょう。

少なからず、私が中二のときは、この本でC++のおおまかな部分については理解出来たかなと思います。


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

Name: デラ初心者  ..入門者(3,851ポイント)   Date: 2010/02/08(月) 20:25   No:47806     
Title: Re:C++の難しさ    
http://www.kijineko.co.jp/tech/cpp2c 
参考にさせていただきます

>この本→その他の入門書、という流れで勉強すると、より理解しやすいでしょう。

なるほどです。

入門書ですが何がオススメですか?

自分が探した限りでは明解C++が良いと思ったのですが・・・ 



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

Name: たいちう  ..熟練のプログラマー(55,915ポイント)   Date: 2010/02/09(火) 08:52   No:47828     
Title: Re:C++の難しさ    
> 入門書ですが何がオススメですか?

最近は入門書を読んでないので古い本を紹介します。

「これならわかるC++―挫折しないプログラミング入門」(ブルーバックス)
小林 健一郎 (著) 
http://www.amazon.co.jp/dp/4062573318

かなりやさしく書いてある本で、確かに挫折する可能性は小さいでしょう。
その半面この一冊ではC++のホンの一部しかカバーできていません。
この本を読み終わってから(サンプル等も実行してから)別の入門書を探すか、
別の入門書を読み終わってから、この本を手に取るのも良いでしょう。
オブジェクト指向についての説明も、良く書かれていると思いますので。


本を選ぶのにはAmazon等のレビューが参考になるでしょう。
それ以上の事はあまりここでも聞けないと思います。
例えば私の薦める上記の本について、他の回答者が「よくない本だ」と書いたら、
どのように判断しますか?
お勧めの本は人それぞれなので、その情報を取捨選択するのはあなたです。
どこに情報が集まっているかというと、現時点では質・量ともにAmazonでしょう。

最後に一番良い選び方は、大きな書店で手に取ってみることです。
Amazon等で好意的なレビューの多い本を何冊か調べておいて、
本屋で実物を比較し、どの本が自分に合うのか考えて下さい。


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

Name: たかぎ [URL]  ..ハッカー(159,721ポイント)   Date: 2010/02/09(火) 09:33   No:47829     
Title: Re:C++の難しさ    
C++が難しいといわれるのは、書籍等の解説のしかたに原因があるのかもしれません。
多くの解説では、(Cの知識を前提とするにせよ、しないにせよ)Cの延長として説明されており、細かな処理を積み重ねて全体を作っていく方針になっています。
一方、比較的初心者向けといわれる言語では、既存の部品を組み合わせることで、手っ取り早くアプリケーションを作る方針になっています。

C++の場合、標準ライブラリでできることはしれていますが、各ベンダーが提供する独自のライブラリやフレームワーク、さらにはサードパーティ製のライブラリを使うことで、多くの機能を比較的簡単に組み込むことができます。
ただし、こうしたアプローチは、信頼性の高いプログラムをつくるという観点からすれば、必ずしも正しくありません。どちらかといえば、手早く動くものを作ることで、プログラミングの楽しさを味わってもらうとか、あるいは使い捨てに近いツールを手軽に作るにはよいでしょう。

ご自身の目的をどこに設定するかで、どんな解説が適しているかが変わってきます。



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

Name: デラ初心者  ..入門者(3,937ポイント)   Date: 2010/02/09(火) 18:23   No:47859     
Title: Re:C++の難しさ    
わかりました
とりあえず、本屋に行って色んな本を見てきます

>ご自身の目的をどこに設定するかで、どんな解説が適しているかが変わってきます。 

最終的にはゲームが作れれば良いなと思っています



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

Name: Ma  ..熟練のプログラマー(47,676ポイント)   Date: 2010/02/09(火) 21:22   No:47869     
Title: Re:C++の難しさ    
趣味でプログラミングやっている程度の者ですが、できる範囲でお答えしたいとおもいます。

>ゲームが作れれば良いなと思っています 
それぐらいなら、本買わずにネット上だけでも十分できますよ。
C++言語入門サイトまたは、C言語入門サイトと、ここのサイトの講座を組み合わせることで、管理人さんが作っているようなゲームが作れます。

ただし、本の方がいいという方も結構いらっしゃいます。
ネットの講座の中にはたまにわかりにくかったり、間違ってたり、偏見があったり、誤字があったり、中途半端だったりする事があるためです。
物理的に紙なのがいいという方もいるとおもいます。


ちなみに、私はまったくCとC++については書籍を買った事がない口です。(というか、書籍を手軽に買える環境じゃないのでw)
もし、サイトの方法を取るなら、ひとつだけのサイトではCやC++言語についてきちんとした知識がつかないのは確かなので、より正しい知識をつけるために復習も兼ねて複数の入門サイト読むといいとおもいます。


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

Name: デラ初心者  ..入門者(3,962ポイント)   Date: 2010/02/10(水) 18:46   No:47932     
Title: Re:C++の難しさ    
>より正しい知識をつけるために復習も兼ねて複数の入門サイト読むといいとおもいます

なるほどです

電車で読みたいので、なるべく本が良いんですよね・・・

とりあえず、名古屋に行って本見てきます


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

Name: たいちう  ..熟練のプログラマー(56,217ポイント)   Date: 2010/02/10(水) 19:13   No:47933     
Title: Re:C++の難しさ    
> 電車で読みたいので、なるべく本が良いんですよね・・・

一応指摘しておくと、本を読むのも良いですが本だけでは身に付きません。
座って本やビデオを見ているだけでは野球が上手くならないのと同じです。
本を読む数倍の時間をプログラム作成に使ってください。


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

Name: デラ初心者  ..入門者(4,007ポイント)   Date: 2010/02/10(水) 20:23   No:47939 解決!     
Title: Re:C++の難しさ    
それは解っています

読んだだけで、ゲームを作ろうとしたアホですから(笑)

解決しました

皆様ありがとうございました


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



Name: あー  ..ぴよぴよ(414ポイント)   Date: 2010/02/10(水) 13:39   No:47907       
Title: VS2008について    
Visual studio2008のコマンドプロンプトを使ったコンパイルについてよろしくお願いします。


私は少し前にパソコンを買ったパソコンド素人なんですが最近C言語を学ぼうと思い、いろいろ調べてまずvisual studio2008をインストールしました。そのあと、cworkというヘッダファイルをつくり、サクラエディタでsmp.cというソースファイルを作ってデスクトップへ移動して、コンパイルしようとしたんですができません。
ちなみに、コマンドプロンプトでコンパイルしようと思うと


C:Program Files\Microsoft Visual Studio 9.0\VC> cd \cwork 

C:\cwork>cl smp.c

Microsoft(R)32-bit C/C++ 0ptimizing Compiler Version 15.00.30729.01 for 80*86
Copyright (R) Mircrosoft Corporation. All rights resrved.

smp.c
c1: fatal error C1083: ソースファイルを開けません。 ‘smp.c‘: No such file or directory

このような表示がでてしまいコンパイルできません。
ネットで調べ、これはファイルの場所を指定していないのが原因かもしれないということで、visual studio2008の上の[ツール]-[オプション]でその画面内左側のツリー状態の箇所で、[プロジェクトおよびソリューション]を選択し[VC++ディレクトリ]の「オプション」画面の[ディレクトリを表示するプロジェクト]で[インクルードファイル]を選択しました。そこへヘッダーファイルの置き場所を、フルパスで指定するらしいのですが、このヘッダーファイルの置き場所がいまいちわかりません。
一般的なフルパスでの指定で、C:\ooo\oooという形式らしいのでC:\cwork(マイコンピュータのcworkのアドレス)をおき、上記と同じように[ディレクトリを表示するプロジェクト]の[ソースファイル]のところにC:\Users\masaki\Desktop(デスクトップに置いてあるsmpのアドレス)を置きコンパイルしましたがうまくいきません><
どなたかこの解決策を詳細に教えてくれませんか?
ちなみにOSはvistaです。

文章能力がだいぶ乏しいのですが、よろしくおねがいします><

 編集済み


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


Name: fatens  ..初心者(7,518ポイント)   Date: 2010/02/10(水) 13:51   No:47908     
Title: Re:VS2008について    
>cworkというヘッダファイルをつくり
フォルダの間違いですよね?

そうだと仮定して、
smp.cをcworkフォルダの中に入れて
C:\cwork>cl smp.c
のようにすれば、コンパイルできます。


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

Name: あー  ..ぴよぴよ(578ポイント)   Date: 2010/02/10(水) 14:17   No:47909     
Title: 無題    
 fatensさんお返事ありがとうございます^^

やってみたんですが、
Microsoft(R)32-bit C/C++ 0ptimizing Compiler Version 15.00.30729.01 for 80*86 
Copyright (R) Mircrosoft Corporation. All rights resrved. 

smp.c 
smp.c(2):error C2006: ‘#include‘ : ‘(‘はファイル名ではありません。
smp.c(2):fatal error C1083 includeファイルを開けません。‘‘:No such file or directory

っていう見たことない表示がでてきてしまいます。。。

すいません。。またよろしくおねがいます〜>< 
 編集済み


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

Name: fatens  ..初心者(7,536ポイント)   Date: 2010/02/10(水) 14:27   No:47910     
Title: Re:無題    
ソース貼ってもらえますか。


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

Name: softya [URL]  ..ハッカー(119,057ポイント)   Date: 2010/02/10(水) 14:32   No:47911     
Title: Re:無題    
>っていう見たことない表示がでてきてしまいます。。。 

見たこと無いと言うか、それがコンパイラのエラー表示です。
smp.c(2)の(数字)の数字が行番号なんで、その行番号の行にエラーがあります。

私のお薦めとしては、VC++2008本体の統合環境(エディタを含む)を使ってコンパイルした方がエラーがわかり易いと思うのですが、どうしてもコマンドラインじゃないとだめですか?

VC++2008の使い方
http://cvwww.ee.ous.ac.jp/vc08prog.html


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

Name: あー  ..ぴよぴよ(445ポイント)   Date: 2010/02/10(水) 14:46   No:47912     
Title: Re:無題    
ソースが間違っていました; ()じゃなくて<>でした。。

それでできたかとおもったんですが、

Microsoft(R)32-bit C/C++ 0ptimizing Compiler Version 15.00.30729.01 for 80*86  
Copyright (C) Mircrosoft Corporation. All rights resrved


/out:smp.exe
smp.obj
LINK:fatal error LNK1104: ファイル‘kernel32.lib‘を開くことができません。

って出てきました。。


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

Name: たかぎ [URL]  ..ハッカー(159,977ポイント)   Date: 2010/02/10(水) 14:56   No:47913     
Title: Re:無題    
エラーが出るたびに質問していたのではきりがありません。
一通りドキュメントを熟読するなどして勉強した上で再挑戦してください。
必要なら書籍を購入するのもよいでしょう。


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

Name: softya [URL]  ..ハッカー(119,252ポイント)   Date: 2010/02/10(水) 15:00   No:47914     
Title: Re:無題    
VisualC++をコマンドプロンプトで使うのは初心者がやるべきことじゃないです。
それに書籍を購入しないのは、時間の無駄でしかありません。
どうしても購入出来ないなら、理由を教えてください。

私の問い掛けを無視している理由も。
>私のお薦めとしては、VC++2008本体の統合環境(エディタを含む)を使ってコンパイルした方がエラーがわかり易いと思うのですが、どうしてもコマンドラインじゃないとだめですか? 


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

Name: あー  ..ぴよぴよ(207ポイント)   Date: 2010/02/10(水) 15:09   No:47915     
Title: Re:無題    
>softya さん
お返事ありがとうです。
さっそくやってみたんですがビルドのところでビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか? ってでてたんでYを押したらメッセージでアプリケーションのインストールに失敗したなどの文がでて黒画面が出たんですがすぐ閉じてしまいました。
インストールに失敗していた場合、インストールする時何かほかにインストールしたほうがいいんでしょうか??

たかぎさん
お返事ありがとうです。
確かに、やさしいC言語ってのをひととおり読んだだけなので勉強不足でした。。。
引き続き勉強したいと思います。


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

Name: あー  ..ぴよぴよ(347ポイント)   Date: 2010/02/10(水) 15:15   No:47916     
Title: Re:無題    
No:47914 のsoftya さん

とにかくすいません><
書籍はやさしいC言語 っていう本を大学で借りて読んだだけなので勉強不足かもしれません。
そして私パソコンでタイピングが遅いのと、文章を考えながら書いていたので時間がかかり、結果的にsoftya さんの文章を無視してようになってしまいました。お気を悪くしたようでしたらすいませんでした。。


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

Name: softya [URL]  ..ハッカー(119,622ポイント)   Date: 2010/02/10(水) 15:20   No:47917     
Title: Re:無題    
>さっそくやってみたんですがビルドのところでビルドエラーが発生しました。
それは、ソースコードに間違いがあるからです。
プログラムと言うのは、コンパイルエラー、リンクエラー、実行時エラー、実行時のバグが出なくなって始めて完成です。ソースコードを打ち込んだだけでは、入り口に立っただけなのです。

紹介したサイトをちゃんと読んで下さい。
http://cvwww.ee.ous.ac.jp/vc08prog.html
「プログラムの作成と実行」の「4 エラーの発生」と「5 エラーの修正」に書かれています。


>続行して、最後に成功したビルドを実行しますか? ってでてたんでYを押したらメッセージでアプリケーションのインストールに失敗したなどの文がでて黒画面が出たんですがすぐ閉じてしまいました。
>インストールに失敗していた場合、インストールする時何かほかにインストールしたほうがいいんでしょう?? 

これは、VC++2008のメッセージが悪いんですが、失敗したビルドを実行してはいけません。
なので、何もしなくて良いです。「プログラムの作成と実行」の「4 エラーの発生」に書かれていますよ。

>お気を悪くしたようでしたらすいませんでした。。
大丈夫です。気にしているわけではありません。
ただ、こういうやり取りの中で読み飛ばしが多発する人がいるので確認したまでです。
そういう人は、再三良く読むように言わないと大事なところを読みとばすので。 編集済み


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

Name: あー  ..ぴよぴよ(610ポイント)   Date: 2010/02/10(水) 15:38   No:47918     
Title: Re:無題    
softyaさん

読んでやってみましたが

------ ビルド開始: プロジェクト: hello, 構成: Debug Win32 ------
マニフェストを埋め込んでいます...
プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。
ビルドログは "file://c:\Users\○○○\Documents\Visual Studio 2008\Projects\hello\hello\Debug\BuildLog.htm" に保存されました。
hello - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

このような感じででてきたんですが、HPのと比べてどこがエラーだとかの詳しい説明がのってないんですが
どういうことなんでしょうか??;何度もすみません;;


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

Name: softya [URL]  ..ハッカー(119,624ポイント)   Date: 2010/02/10(水) 15:45   No:47919     
Title: Re:無題    
すいません。リビルドしてみてもらえますか。
「ビルド」の「ソリューションのリビルド」ってのを選んで下さい。
その時でたメッセージを全て貼りつけて下さい。
ソースコードそのものもfatensさんが書いてますが、コピペしてください。

ついでに、ビルド時のエラーの詳細解説ページを付けておきます。
http://msdn.microsoft.com/ja-jp/library/8x5x43k7%28VS.80%29.aspx
C2006とかエラー時に出るはずなんで、それで参照出来ます。


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

Name: あー  ..ぴよぴよ(941ポイント)   Date: 2010/02/10(水) 15:53   No:47920     
Title: Re:無題    
私の説明不足で申し訳ありません;;


ソースファイルです

#include <stdio.h>

int main(void)
{
   printf("hello,world\n");
  
   return 0;
}   





リビルドの結果です

------ すべてのリビルド開始: プロジェクト: hello, 構成: Debug Win32 ------
プロジェクト 'hello'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
コンパイルしています...
hello.cpp
マニフェストをリソースにコンパイルしています...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation.  All rights reserved.
リンクしています...
LINK : 前回のインクリメンタル リンクで C:\Users\masaki\Documents\Visual Studio 2008\Projects\hello\Debug\hello.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います。
マニフェストを埋め込んでいます...
プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。
ビルドログは "file://c:\Users\masaki\Documents\Visual Studio 2008\Projects\hello\hello\Debug\BuildLog.htm" に保存されました。
hello - エラー 1、警告 0
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========


よろしくおねがいします;;


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

Name: softya [URL]  ..ハッカー(119,926ポイント)   Date: 2010/02/10(水) 15:55   No:47921     
Title: Re:無題    
調べてみましたが、
"error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。 "
はたちが悪いかも知れません。

もしリビルドしてもダメなら
1.Windowsを再起動してみてください。
2.ファイル名を指定して実行でcmd.exeと打ち込んでOKでコマンドプロンプトが起動するか確認して下さい。
3.コマンドプロンプトが起動したら、pathと打ち込んで表示されるものをここにコピペしてください。



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

Name: あー  ..かけだし(1,005ポイント)   Date: 2010/02/10(水) 16:09   No:47922     
Title: Re:無題    
>ファイル名を指定して実行でcmd.exeと打ち込んでOKでコマンドプロンプトが起動するか確認して下さい。
vs2008の[ファイル]の[開く]のとこでcmd.exeを指定して開こうとしたんですが、ファイルが見つかりませんっとでました;;



すいません 勘違いでした;;
PATH=C:Users\○○○\Documents\Visual Studio 2008\Projects

っていうのがでました;; 編集済み


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

Name: softya [URL]  ..ハッカー(120,133ポイント)   Date: 2010/02/10(水) 16:17   No:47923     
Title: Re:無題    
>vs2008の[ファイル]の[開く]のとこでcmd.exeを指定して開こうとしたんですが、ファイルが見つかりませんっとでました;; 

違いますよ。
パソコンも初心者でしたね。すいません。
Windows7だと、下記の手順でコマンドプロンプトを起動してみて下さい。
http://windows7faq.net/700/cat142/

あっそれから再起動したんですよね。
コマンドプロンプトの前にもう一回リビルドしてみてください。
うまく行ったらコマンドプロンプトはやらなくて良いです。


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

Name: あー  ..かけだし(1,077ポイント)   Date: 2010/02/10(水) 16:25   No:47924     
Title: Re:無題    
再起動してリビルドしてみたんですが同じ結果になりました;


上記の手順でやりパスはPATH=C:Users\○○○\Documents\Visual Studio 2008\Projects とでました;


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

Name: softya [URL]  ..ハッカー(120,418ポイント)   Date: 2010/02/10(水) 16:46   No:47925     
Title: Re:無題    
>上記の手順でやりパスはPATH=C:Users\○○○\Documents\Visual Studio 2008\Projects とでました; 

あれ?
もしかして環境変数pathの変更しました?
システム関係のパスが無くなっていますね。
さて、どうしましょうか。最悪の場合「システム復元」が手っ取り早いのですが。

とりあえずWindows7なら、
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
が正しいと思いますので、書き換えてもらえますか。
これでもダメなら最悪の場合は、「システムの復元」と「VisualC++2008」の再インストールとなります。


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

Name: あー  ..かけだし(1,192ポイント)   Date: 2010/02/10(水) 16:56   No:47926     
Title: Re:無題    
すいません前に思考錯誤してるときにパスを少しいじってしまいました;;

私のosはvistaなんですが大丈夫ですかね??


書き換えるところは前どこでやったかわすれてしまったんで教えていただけますか??;
お願いします><;


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

Name: softya [URL]  ..ハッカー(120,460ポイント)   Date: 2010/02/10(水) 17:05   No:47928     
Title: Re:無題    
>私のosはvistaなんですが大丈夫ですかね?? 

vistaだとまずいですね。
私の環境も大分変えてありますんで参考にならないし。
うーん。調べてみます。

分かりました。Vistaなら
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
で合ってると思います。

これでコンパイルし直してみて下さい。
コンパイル前に要再起動です。 編集済み


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

Name: あー  ..かけだし(1,270ポイント)   Date: 2010/02/10(水) 17:09   No:47929     
Title: Re:無題    
どこで設定するかわかったんですが

PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\ 
をどこへいれていいんすかね??


追記

ありがとうございます;
やってみます;
 編集済み


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

Name: softya [URL]  ..ハッカー(120,506ポイント)   Date: 2010/02/10(水) 17:14   No:47930     
Title: Re:無題    
こちらを参考に。
http://blog.heiichi.com/?eid=606274

ちなみVistaは、
変数名:path
変数値:C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem 
です。


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

Name: あー  ..かけだし(1,229ポイント)   Date: 2010/02/10(水) 17:21   No:47931 解決!     
Title: Re:無題    
できましたー(^^)


softya さん本当に詳しく教えていただきありがとうございました!!
他のみなさんもありがとうございました!

これから勉強頑張りたいと思います!


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



Name: warning  ..ぴよぴよ(6ポイント)   Date: 2010/02/10(水) 12:49   No:47904       
Title: splint での質問    
質問です。

"realloc" を使用した関数を作成し
引数、または戻り値でそのアドレスを返すプログラムを作成した場合
splint で警告がでてしまいます。

かなり調べてみたのですが、打開策がみつかりません。
どなたかご教授お願いします。。


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


Name: たかぎ [URL]  ..ハッカー(159,999ポイント)   Date: 2010/02/10(水) 13:16   No:47906     
Title: Re:splint での質問    
どんなコードを書いて、どんな警告が出たのでしょうか?


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



Name: つつ  ..ぴよぴよ(16ポイント)   Date: 2010/02/10(水) 09:34   No:47885       
Title: 無題    
cで迷路を解こうとしているのですがうまくいっていません。

何かいい探索プログラムはありませんか?
とりあえず今のソースをのっけます。

#include    "maze.h"
#include    <stdio.h>
#include    <stdlib.h>
#include    <time.h>

#define MAZE_X    (40)
#define MAZE_Y    (40)

static    CurrentState    getCurrent    ( void );
static    void            initMaze    ( int, int, CurrentState );
static    CurrentState    findNext    ( CurrentState ); 

static    int                mazeHeight = 0;                                // 迷路のサイズ
static    int                mazeWidth = 0;
static    int x, y;
static    int search[MAZE_X][MAZE_Y];
static    CurrentState    pos        = { 0, 0, DirDown, MapStart };        // 現在位置

static    int a = 0;              //経路探索状況

//    プレーヤー情報を持つ構造体
//        "蒲田"の部分のみ、変更すること
static    PlayerInfo        player = { "YON" , initMaze, findNext, getCurrent };

//    プレーヤーの情報を返す関数
//        "Kamada"の部分以外、変更しないこと
PlayerInfo*        getyonInfo    ( void )
{
    return    &player;
}

//    現在位置の情報を返す関数
//        変更しないこと
static    CurrentState    getCurrent    ( void )
{
        return pos;
}

//    初期化の関数
static    void    initMaze    ( int col, int row,                    //    迷路のサイズ
                             CurrentState start )                //    スタート位置
{
    //    この下の3行は、変更しないこと。
    //    このほかに必要なものがあれば、追加することは可。
    mazeWidth = col;
    mazeHeight = row;
    pos     = start;
    x = pos.x;
    y = pos.y;
}

//    次に進む場所を計算する関数
//        次に進む場所を返すようになっていれば、変更可
static    CurrentState    findNext    ( CurrentState    pos )
{
    CurrentState    next = pos;
    switch ( next.dir ){
        case DirUp        : next.y--; break;
        case DirDown    : next.y++; break;
        case DirLeft    : next.x--; break;
        case DirRight    : next.x++; break;
    }

    // 次に進もうとしているセルの状態をチェックする
    if ( next.status = canPassThrough ( next ) ) {
        pos = next;
    } else {
        // 上
        pos.status = pos.status;
        if (search[x][y-1]== MapWall)
        {
            pos.dir -= DirUp;
            pos.status = MapAisle;
        } else {
            if (search[x][y-1]== MapAisle) {
                pos.dir += DirDown;
            }
        }
        // 下
        if (search[x][y+1]== MapWall)
        {
            pos.dir += DirDown;
            pos.status = MapAisle;
        } else {
            if (search[x][y+1]== MapAisle) {
                pos.dir -= DirUp;
            }
        }

        // 左
        if (search[x-1][y]== MapWall)
        {
            pos.dir -= DirLeft;
            pos.status = MapAisle;
        } else {
            if (search[x-1][y]== MapAisle) {
                pos.dir += DirRight;
            }
        }
        // 右
        if (search[x+1][y]== MapWall)
        {
            pos.dir += DirRight;
            pos.status = MapAisle;
        } else {
            if (search[x+1][y]== MapAisle) {
                pos.dir -= DirLeft;
            }
        }
    }
    return pos;
}


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


Name: softya [URL]  ..ハッカー(117,932ポイント)   Date: 2010/02/10(水) 09:54   No:47886     
Title: Re:無題    
まず、どううまく行かないのかと意図しているアルゴリズムを箇条書きで書いてもらえますか。

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

Name: つつ  ..ぴよぴよ(461ポイント)   Date: 2010/02/10(水) 10:21   No:47887     
Title: Re:無題    
すいませんうっかり忘れていました。


状態
・壁にぶつかったとしても方向を変えない状態です。
・壁を突き破ってしまいます。

意図
・最短経路の探索
・壁にぶつからなくても方向を変更したい。

こんな感じです。
*.hファイルです。
//    マップ情報
#define    MazeStart    'S'            //    スタート地点
#define    MazeGoal    'G'            //    ゴール
#define    MazeAisle    ' '            //    通路

//    自分の進行方向
#define    DirUp        (0)            //    上
#define    DirDown        (1)            //    下
#define    DirLeft        (2)            //    左
#define    DirRight    (3)            //    右
#define    DirMax        (4)            // 方向の種類数

//    mapの状況
typedef    enum    { MapWall = 0, MapStart = 1, MapAisle = 2, MapGoal = 3 }    MapStatus;

//    現在位置と方向
typedef    struct    {
    int            x;                //    位置
    int            y;
    int            dir;            //    進行方向    
    MapStatus    status;            //    現在地の状況
}    CurrentState;

typedef    struct    {
    char*            name;
    void            ( *init )        ( int, int, CurrentState );
    CurrentState    ( *find )        ( CurrentState );
    CurrentState    ( *getCurrent )    ( void );
} PlayerInfo;

MapStatus        canPassThrough    ( CurrentState );


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

Name: つつ  ..ぴよぴよ(507ポイント)   Date: 2010/02/10(水) 10:23   No:47888     
Title: Re:無題    
すいません意図の部分に追加です

意図
・一度通った場所を記憶して二度通らなくしたいです。


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

Name: つつ  ..かけだし(1,471ポイント)   Date: 2010/02/10(水) 10:27   No:47889     
Title: Re:無題    
地図はこんなのを使用しています。

"+-----+---+------+---------+----+------+",
"S*****|***|******|*********|****|******|",
"+-+*******|***|******------+****+-----*|",
"G*|***|*******|**|*********************|",
"|*+---+---+---+**+---+---------------*-+",
"|*********|**********|*****************|",
"|*+*+*+*+*|**********|*-*-*-*-*-*-*-*-*|",
"|*********|**********|*****************|",
"|*+*+*+*+*+----------+------+------+-*-+",
"|***************************|******|***|",
"+---+---+-----------------+***+--+*|***|",
"|***|***|*****************|-+-*****+-+*|",
"|*|***|****+*+*+*+*+*+*+*+|*|**|*****|*|",
"|*|*|***|*****************|***-+*--+-+*|",
"+-+*|*|*|*|*|*|*|*|*|*|*|*|*|**|***|***|",
"|***|***+-+-+-+-+*+-+-+-+-+*+-*|*+*|***|",
"|***|*|*|*****|*****|*****|*|**|***|***|",
"|***|***|*-+-*|*-+-*|*-+-*+***-+---+-*-+",
"|***|*|*|**|**|**|**|**|**|*|**|***|***|",
"+-+*|***|**|*-+-*|*-+-*|**|*+-*|***|***|",
"|*|*|*|*|**|**|**|**|**|**|*|**|***|***|",
"|*|*|***|*-+-*|*-+-*|*-+-*|***-+***+--*|",
"|*|*+---+**|**|**|**|**|**|*|**|*******|",
"|***|***|**|*-+-*|*-+-*|**|*+-*|*******|",
"|***|***|**|**|**|**|**|**|*|**|***+-*-+",
"+-*-+***|*-+-*|*-+-*|*-+-*|***-+***|***|",
"|*******|**|**|**|**|**|**|*|**|***|***|",
"|*******|**|*-+-*|*-+-*|**|*+-*+---+*|*|",
"|*--+***|**|*****|*****|**|*|**|***|*|*|",
"|***|***+--+-----+-----+--+***-+*|*|*|*|",
"|***|***|*****************|*|**|***|*+-+",
"+-*-+---+---+----+----+-*-+-+-*|*|*|***|",
"|***********|*********|*****|**|***|***|",
"|*-*-*-*-*-*|*********|***|*|**|*|*|***|",
"|***********|*********|***|****|***|***|",
"+-*---------+--+**+---+---+*+--+*|*|*+-+",
"|**************|**|***|***|*|**|***|*|*|",
"|*--+****+---*****|*******+-+****|***|*|",
"|***|****|*****|******|********|***|***|",
"+---+----+-----+------+--------+---+---+"

「*」を空白に置き換えていただければ使用できます。 編集済み


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

Name: softya [URL]  ..ハッカー(117,941ポイント)   Date: 2010/02/10(水) 10:30   No:47890     
Title: Re:無題    
これは、アルゴリズムの箇条書きじゃないですね。
日本語で、文章だけでアルゴリズムを書いてもらえますか。


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

Name: つつ  ..かけだし(1,509ポイント)   Date: 2010/02/10(水) 10:41   No:47891     
Title: Re:無題    
すいません。

1:移動中に壁があるか探します。
2:探した結果、壁がない方向に進みます。
3:移動中の経路を記憶。
4:ゴールが見つからなかったら、探索経路を消去して再探索を行う。
1〜4の繰り返し。
5:ゴールが見つかったら終了。


こんな感じでよろしいでしょうか?


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

Name: softya [URL]  ..ハッカー(118,117ポイント)   Date: 2010/02/10(水) 10:54   No:47892     
Title: Re:無題    
main部分が掲載されていないので、全体がどうやって動いているか分からないんでzip添付の形で動くのに必要なものを全てもらえませんか?

あと確認したいことがあります。

>1:移動中に壁があるか探します。
これは歩く1歩前だけを調べていますか?
それと壁が無い限り方向転換しないんでしょうか?

>2:探した結果、壁がない方向に進みます。
方向転換するアルゴリズムは、右回り、左回り、ランダム、それ以外の何れでしょう?

>3:移動中の経路を記憶。
アルゴリズムの記述に出来ていませんが、記憶した経路はどの様に利用されていますか?

>4:ゴールが見つからなかったら、探索経路を消去して再探索を行う。
今まで探索した経路情報は全て消去してしまうのでしょうか?


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

Name: つつ  ..かけだし(1,525ポイント)   Date: 2010/02/10(水) 11:16   No:47895     
Title: Re:無題    
main部分が掲載されていないので、全体がどうやって動いているか分からないんでzip添付の形で動くのに必要なものを全てもらえませんか? 

あと確認したいことがあります。 

>1:移動中に壁があるか探します。 
歩く一歩前のことです。
壁が有っても方向転換させていただけるとうれしいです。

>2:探した結果、壁がない方向に進みます。
ランダムでお願いします。

>3:移動中の経路を記憶。 
記憶した経路を使いプログラム上で迷路を作成します。

>4:ゴールが見つからなかったら、探索経路を消去して再探索を行う。 
すべて消してしまって結構です。 


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

Name: softya [URL]  ..ハッカー(118,462ポイント)   Date: 2010/02/10(水) 11:25   No:47896     
Title: Re:無題    
将来どうしたいかじゃなくて今のアルゴリズムをお聞きしていますので、今のアルゴリズムを教えてください。
[訂正]今C言語で組み込んでいるつもりのアルゴリズムを書いて下さい。あるいは、組み込んでいないなら未作成と書いて下さい。

>>1:移動中に壁があるか探します。 
>歩く一歩前のことです。
>壁が有っても方向転換させていただけるとうれしいです。
今のアルゴリズムは?

>>2:探した結果、壁がない方向に進みます。
>ランダムでお願いします。
今はどうしていますか?

>>3:移動中の経路を記憶。 
>記憶した経路を使いプログラム上で迷路を作成します。
今のアルゴリズムと、この意味が分からないので説明してもらえますか?
プログラム上で迷路を作成してどうするのですか?経路情報を表示する?それとも別の意味?
元の迷路はmapファイル上にあるんですよね?

>>4:ゴールが見つからなかったら、探索経路を消去して再探索を行う。 
>すべて消してしまって結構です。  
今のアルゴリズムでお願いします。

 編集済み


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

Name: つつ  ..かけだし(1,582ポイント)   Date: 2010/02/10(水) 11:45   No:47898     
Title: Re:無題    
今わ
1:移動中は必ず1歩前の状態を見ています。(壁か道か)
未作成

2:未作成

3:未作成

4:未作成

すいませんこんな状態で。


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

Name: softya [URL]  ..ハッカー(118,646ポイント)   Date: 2010/02/10(水) 11:55   No:47899     
Title: Re:無題    
これについての詳細もお願いします。

>>>3:移動中の経路を記憶。 
>>記憶した経路を使いプログラム上で迷路を作成します。
>この意味が分からないので説明してもらえますか?
>プログラム上で迷路を作成してどうするのですか?経路情報を表示する?それとも別の意味?
>元の迷路はmapファイル上にあるんですよね? 

意図が分からないんで、お願いします。


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

Name: つつ  ..かけだし(1,677ポイント)   Date: 2010/02/10(水) 11:58   No:47900     
Title: Re:無題    
>>記憶した経路を使いプログラム上で迷路を作成します。
このことは忘れてください。
・一度通ったとこを通らないようにしてください。

元の迷路はmapファイル上には、あります。


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

Name: たいちう  ..熟練のプログラマー(56,155ポイント)   Date: 2010/02/10(水) 12:03   No:47901     
Title: Re:無題    
> 何かいい探索プログラムはありませんか?

プログラム自体はググるなり、ご自分で作成するなりしてもらうとして、
単純なアルゴリズムを書きます。

1.迷路の各マス目に対応する2次元配列を用意する。
2.2次元配列を0で初期化する。
3.スタートのマスに対応する2次元配列の要素に1を代入する。
4.1に隣接している0の要素に2を代入する。
5.2に隣接している0の要素に3を代入する。
...
6.nに隣接している0の要素に(n+1)を代入する。
7.ゴールのマスに数字が入るまで、手順6を繰り返す。
8.ゴールのマスから数字を降順に辿りスタートまでの順路を見つける。


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

Name: softya [URL]  ..ハッカー(118,909ポイント)   Date: 2010/02/10(水) 12:25   No:47902     
Title: Re:無題    
ほとんど未完成と考えて良いですね。

では、私は今出来ているものに近いアルゴリズムを提案します。
1.移動済みをマークする2次元配列を用意する。0クリアしておく。
2.移動分岐点をマークするスタックを用意する。
3.スタート地点をマークする。
4.今の位置から移動出来る方向を調べる。壁と移動済みの場所には移動出来ない。
5.移動先にゴールがあればゴールに移動して終了。
6.どこにも移動出来ない場合は、スタックから移動分岐点を取り出して4へ。
7.移動出来る方向が複数あったら、スタックに移動分岐点を記録する。
8.複数の移動方向の中の内からランダムで移動方向を決定する。1つしか無いならその方向を選択。
9.その方向に移動して移動済みをマークする。4へ戻る。


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

Name: つつ  ..かけだし(1,707ポイント)   Date: 2010/02/10(水) 12:28   No:47903     
Title: Re:無題    
わざわざありがとうございます。

参考に打ってみます。


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

Name: つつ  ..かけだし(1,714ポイント)   Date: 2010/02/10(水) 12:55   No:47905 解決!     
Title: Re:無題    
ありがとうございました

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



Name: CORVETTTE  ..ぴよぴよ(81ポイント)   Date: 2010/02/08(月) 22:51   No:47812       
Title: 龍神録18章 当たり判定    
当たり判定の範囲を変えたいと思っています
//敵の当たり判定範囲
int enemy_range[ENEMY_RANGE_MAX]={16,30,16,50};
//自機ショットの当たり判定範囲
int cshot_range[CSHOT_RANGE_MAX]={6,};
この部分だと思うのですが

16,30,16,50

6,

この数値はが何を表しているのかわかりません
例えば
{中心のx座標,中心のy座標,横幅,縦}
上のは意味不明ですがこういうことが知りたいということです


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


Name: Justy  ..伝説なるハッカー(499,516ポイント)   Date: 2010/02/09(火) 02:58   No:47825     
Title: Re:龍神録18章 当たり判定    
 それぞれの変数の使われ方を見れば解ると思いますが、

>enemy_range
 エネミーの種類(enemy_t構造体の knd値)毎の衝突判定範囲です。

>cshot_range
 同じくショットの種類(cshot_t構造体の knd値)毎の衝突判定範囲です。


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

Name: CORVETTE  ..ぴよぴよ(54ポイント)   Date: 2010/02/09(火) 14:10   No:47849     
Title: Re:龍神録18章 当たり判定    
つまり
エネミー0の衝突判定範囲=16
エネミー1の衝突判定範囲=30
エネミー2の衝突判定範囲=16
エネミー3の衝突判定範囲=50

ショット0の衝突判定範囲=6

ということでしょうか?


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

Name: Justy  ..伝説なるハッカー(499,533ポイント)   Date: 2010/02/09(火) 22:42   No:47876     
Title: Re:龍神録18章 当たり判定    
>ということでしょうか?
>エネミー0
 0が種類(knd)ならそうです。


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

Name: CORVETTE  ..ぴよぴよ(64ポイント)   Date: 2010/02/10(水) 03:02   No:47884 解決!     
Title: Re:龍神録18章 当たり判定    
わかりました
ありがとうございました


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



Name: コロッケ  ..ぴよぴよ(7ポイント)   Date: 2010/02/10(水) 00:52   No:47882       
Title: 龍神録プログラミング 8.キーコンフィグに対応させてみよう    
c言語歴は2カ月ちょっとで基礎中の基礎が分かるきらいの初心者です。
龍神録プログラミング 8.キーコンフィグに対応させてみようについて
質問させてもらいます。
//パッドとキーボードの両方の入力をチェックする関数
void GetHitPadStateAll(){
        int i,PadInput,mul=1;
        PadInput = GetJoypadInputState( DX_INPUT_PAD1 );//パッドの入力状態を取得
        for(i=0;i<16;i++){
                if(PadInput & mul)  pad.key[i]++;
                else                pad.key[i]=0;
                mul*=2;
        }
        input_pad_or_key(&pad.key[configpad.left]   ,CheckStateKey(KEY_INPUT_LEFT    ));
        input_pad_or_key(&pad.key[configpad.up]     ,CheckStateKey(KEY_INPUT_UP      ));
        input_pad_or_key(&pad.key[configpad.right]  ,CheckStateKey(KEY_INPUT_RIGHT   ));
        input_pad_or_key(&pad.key[configpad.down]   ,CheckStateKey(KEY_INPUT_DOWN    ));
        input_pad_or_key(&pad.key[configpad.shot]   ,CheckStateKey(KEY_INPUT_Z       ));
        input_pad_or_key(&pad.key[configpad.bom]    ,CheckStateKey(KEY_INPUT_X       ));
        input_pad_or_key(&pad.key[configpad.slow]   ,CheckStateKey(KEY_INPUT_LSHIFT  ));
        input_pad_or_key(&pad.key[configpad.start]  ,CheckStateKey(KEY_INPUT_ESCAPE  ));
        input_pad_or_key(&pad.key[configpad.change] ,CheckStateKey(KEY_INPUT_LCONTROL));
}
のif(PadInput & mul)の部分が分かりません…
PadInputとmulのアドレスがいっしょだったら真の条件だということでしょうか?
それmul*=2の部分なんですけど、なぜこのような処理を行わけければならないのかが分かりません…
このmul*=2の処理を行うことで、どのような意味があるでしょうか??

それともう一つあって、パッドとコンフィグの意味がいまいちわからない状態です。

すみませんが、ご回答をお願いします!



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


Name: Ma  ..熟練のプログラマー(48,299ポイント)   Date: 2010/02/10(水) 01:41   No:47883     
Title: Re:龍神録プログラミング 8.キーコンフィグに対応させてみよう    
*=====追記
>それともう一つあって、パッドとコンフィグの意味がいまいちわからない状態です。 
パッドとは
 ゲームパッドのこと
 ↓
 ゲームコントローラーのこと
 ↓
 USBでつなぐ、コントローラーのこと。

コンフィグ
 Configurationの略
 ↓
 設定という意味
 ↓
 今回の場合、パッド(USBでつなぐ、コントローラー)を設定すること。
 ↓
 どのボタンが、どの役目を担うかを設定すること。

*=====追記終わり

私もくわしくないので、間違ってたら、上級者の方ご指摘おねがいします。

&は、ビット演算子です。

int mul は次のように変化します。

1
2
4
8
16


ビット単位で表現すると

0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 1000
0000 0000 0000 0000 0000 0000 0001 0000
(intは4バイト、つまり32ビットです。)


このように左へ1がどんどん移動していることがわかります。


で、&演算子というのは左側の値と右側の値を比べたとき、
同じ位置のビット同士がONがあれば答えの中のその位置のビットもON、
同じ位置のビット同士のどちらか片方が0 または、両方0であれば結果も0 になります。
まさに、 AND または数学的に言えば ∩ です。


わかりやすい例をあげると、

0001 & 0010 = 0000



 0001
&0010
―――
=0000




1101 & 0001 = 0001



 1101
&0001
―――
=0001


のようになります。



で、
おそらく PadInput には、ビット単位でそのボタンがON だったかOFF だったかが記録されています。
すなわち、
PadInput = 0000 0000 0000 0000 0000 0000 0000 1001  = 9
となっていれば、ボタンがふたつおされていて、それ以外はおされていないとなります。
(どのビットがどのボタンになっているかは、私は知りませんが…。予想では、右から左へボタン1から上昇してるんじゃないかなと。)


そこで、あるボタンをOn/Off であるかを意味するのが一番右側のビットであるとして、それが押されたかどうかどうかをチェックするには、
0000 0000 0000 0000 0000 0000 0000 0001
この↑のintと、入力されたPadInputとで&演算子を使えばチェックできます。

つまり
PadInput & 0000 0000 0000 0000 0000 0000 0000 0001
が0以外(このボタンの場合1)なら、おされていることになる。

先ほどの例のように
PadInput = 0000 0000 0000 0000 0000 0000 0000 1001
これが入力されたとしたら、
  PadInput & 0000 0000 0000 0000 0000 0000 0000 0001
= 0000 0000 0000 0000 0000 0000 0000 1001 & 0000 0000 0000 0000 0000 0000 0000 0001
= 0000 0000 0000 0000 0000 0000 0000 0001

こうなります、結果は、1となり、ボタンがおされていることがわかりました。


最初にもどると、右側の4バイトは1が左へ移動していくだけです。
左側のint すなわち PadInput は1フレームごとに変化するものなので、今回のスコープ内では普遍です。

これらを、&することで、ひとつひとつのボタンがおされているか、おされていないかがチェックできるということになります。


長々とした説明失礼しました。 編集済み


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



Name: KANITAMA  ..ぴよぴよ(89ポイント)   Date: 2010/02/09(火) 22:25   No:47874       
Title: s5. 処理速度を一定にする。について    
ここの記述の関数wait_fanc()でtをstaticにし、t=GetNowCount();としていますが
GetNowCount()が2147483648ミリ秒以上を返してきたらintが数字を保てなくなりオーバーフローしてしまうのではないでしょうか
こんなに起動する場合はないかもしれませんがなんとかこのを解決できませんでしょうか
それとも別に平気なのでしょうか


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


Name: MNS  ..プログラマー(31,235ポイント)   Date: 2010/02/09(火) 22:44   No:47877     
Title: Re:s5. 処理速度を一定にする。について    
2147483647を超えたら、値は-2147483648に戻ると思いますよ。

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

Name: Justy  ..伝説なるハッカー(499,608ポイント)   Date: 2010/02/09(火) 22:47   No:47879     
Title: Re:s5. 処理速度を一定にする。について    
>オーバーフローしてしまうのではないでしょうか 
 オーバーフローはしません。
 GetNowCount()は 0x7fffffffを越えたら、0に戻り循環します。
 なので、前回の値より小さくなった場合は循環したと考えて、それを加味して処理すれば
大丈夫です。


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

Name: KANITAMA  ..ぴよぴよ(100ポイント)   Date: 2010/02/09(火) 22:55   No:47880 解決!     
Title: Re:s5. 処理速度を一定にする。について    
皆さん返信ありがとうございます。
循環を加味した考えで対処してみます。
ありがとうございました。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,146,710ポイント)   Date: 2010/02/09(火) 23:03   No:47881     
Title: Re:s5. 処理速度を一定にする。について    
時間関連の関数はこの辺参考になるでしょうか。

http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/time.html

http://d.hatena.ne.jp/prog_pc/20090522/1242977667

ここに書いてない関数でclockもありますね。GetNowCountと同じような関数ですが。

私は趣味程度のプログラムならintでいいやって感じにしてますが、
製品に組み込むような時はgettimeofdayをlong long unsigned intで扱えるようにして使ってます。

intでも1ヵ月弱カウント出来るので、趣味で作る程度のゲームなら十分なんじゃないかと思います。


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



Name: シノニム  ..かけだし(1,276ポイント)   Date: 2010/02/08(月) 22:43   No:47811       
Title: ネットワーク対戦機能について    
こんばんわ。いつもお世話になっております

今回はネットワーク機能についてお聞きしたいと思います
まだゲームをプログラミングしているわけではなく企画段階なのですが、大規模ではなく、自分のクラス内規模程度で実装できたらなと思っています

ジャンルはシミュレーションを考えているので、あまりFPSにはこだわっていません
自分で調べたところ、Visual C++.NETを使え、とのことだったのですが、製品版がなかなか考えさせられる値段で困っています

今のところC++のクラス思考が分かる程度ですが、必要なことはどんどん学んでいこうと思ってます

ネットワーク機能について、作ってみた感想や、どの程度スキルが必要か、いいソフト、アドバイスなどあればご教授願います

OSはXPですが、できればVistaとでもネットワークをつなげたらと思っています

一応参考にさせていただいたサイトを貼っておきます
http://msdn.microsoft.com/ja-jp/academic/cc998626.aspx


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


Name: たかぎ [URL]  ..ハッカー(159,460ポイント)   Date: 2010/02/08(月) 23:10   No:47817     
Title: Re:ネットワーク対戦機能について    
とりあえず、スタンドアロンでゲームが作れるだけのスキルは必須でしょう。
それプラスネットワーク関連の知識が必要になります。


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

Name: array [URL]  ..熟練のプログラマー(63,823ポイント)   Date: 2010/02/09(火) 00:12   No:47821     
Title: Re:ネットワーク対戦機能について    
> 自分で調べたところ、Visual C++.NETを使え、とのことだったのですが、製品版がなかなか考えさせられる値段で困っています

要求を満たしているか分かりませんけど、趣味レベル(興味の範囲)で行うなら、visual studio 2010 bata 2 を使ってみてはでしょう。とりあえず、テスト版ですので料金は発生しませんが、1ヶ月 10日起動だったか、なんらかの制限があったと思います。

http://www.microsoft.com/japan/visualstudio/try/default.mspx#download

とりあえず、Ultimateは 最高位エディションだったと思うので機能も最高のパフォーマンスを発揮してくれる
のではないでしょうか。


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

Name: softya [URL]  ..ハッカー(117,341ポイント)   Date: 2010/02/09(火) 00:31   No:47822     
Title: Re:ネットワーク対戦機能について    
DirectPlayを使うなら製品版Visual C++.NETは必要ありません。無料版のExpressEdtionで開発出来ます。
ただ、ネットワークの知識が無くては作れるものではありませんし、そもそもたかぎさんの言われる通りネットワークを使わないスタンドアローンのシミュレーションゲームを作れる技術力が無いと話になりません。

参考にしているサイトが理解出来るのなら、すぐに実装してみることは可能だと思います。
その上で問題点を洗い出して行ったらどうでしょうか?

>ネットワーク機能について、作ってみた感想や、どの程度スキルが必要か、いいソフト、アドバイスなどあればご教授願います 

私自身はネットゲームは開発したことはないですが、LANとインターネットでは必要とされるノウハウにかなり差があります。インターネットではパケットの遅延が相当でますので、リアルタイムストラテジーやアクション系はかなり辛いですね。1秒間に4〜5往復程度とかパケットをやり取り出来ないと思います。
LANだとしても、WinSockなどの通信プログラミングも知らなかったり、パケットキャプチャの使い方も知らない人だと細かい調整はほとんど不可能のちょっとお遊び程度の通信が出来る程度だと思います。

ちなみにサンプルは、見たところそれぞれのPCがサーバーとクライアントとなるLAN用の通信モデルで作られているみたいですね。


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

Name: Mikan [URL]  ..中級者(10,975ポイント)   Date: 2010/02/09(火) 00:58   No:47823     
Title: Re:ネットワーク対戦機能について    
むかーしに、VisualBasic+Winsockを使用して1:1の対戦オセロを作ったことがあります。
作成時は結構簡単にできるもんだなぁーって思った記憶がありますが、C++となると少し話がかわってくるかと思います。私のは、チャットプログラムの延長線上みたいなプログラムでしたね。

それも1:1ではなく多人数となるとサーバープログラムを用意しなければいけません。
簡単なものでよければVB+Winsockをオススメします。(それでも通信分野の知識は必要ですが)

最初は簡単な1:1でチャットプログラムを作ってみてはいかがでしょうか?
VC++EEとDxLibで出来ますよ。



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

Name: シノニム  ..かけだし(1,611ポイント)   Date: 2010/02/09(火) 02:54   No:47824 解決!     
Title: Re:ネットワーク対戦機能について    
>たかぎさん
ゲーム一本作れる程度には知識はありますが、ネットワーク関係はほとんどノータッチです・・・勉強してみます

>arrayさん
今はまだ企画段階ですが、もし製作が決定すると長期間(3〜4カ月)にわたって製作することになると思います。期限がきれる前にネットワーク関係のみ完成させても、後半いじれなくなるというのは少し厳しいかと

>softyaさん
的確な意見、ありがとうございます!とりあえず参考書を買って、1からオンラインについて勉強してみます

>Mikanさん
なるほど・・・確かにオンライン対戦のゲームにチャット機能は必須ですし、それなら試作にもいいかもですね。了解です。とりあえずチャットできるようにしてみます


みなさん稚拙な質問に付き合っていただきありがとうございます。手始めにチャットするプログラムから始めてみようと思います


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,146,412ポイント)   Date: 2010/02/09(火) 08:08   No:47826     
Title: Re:ネットワーク対戦機能について    
ところでサーバーは用意出来るのでしょうか?
プレイしてくれる人が多くなった場合、そのサーバーの管理費もかなり大変になってきそうです。
専用サーバー一台で目安として何人位のデータまで扱う事が出来るのかとかは知りませんが・・。


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

Name: softya [URL]  ..ハッカー(117,550ポイント)   Date: 2010/02/09(火) 11:31   No:47832     
Title: Re:ネットワーク対戦機能について    
>ところでサーバーは用意出来るのでしょうか?

1対1のサーバー・クライアントモデルでプレイするなら専用サーバーは不要です。
多人数プレイでもMMO・RPGじゃない限り専用サーバーはマッチングするだけですので、大規模なサーバーは不要でしょう。サーバーを必要としないP2Pで組むことも考えられます。

>自分のクラス内規模程度で
って部分を私は学校のクラス内って意味に取ったんですが違いますかね?
それだとLANですのでサーバーとかは考えなくて良いのかなと思いました。


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

Name: Ma  ..熟練のプログラマー(47,741ポイント)   Date: 2010/02/09(火) 12:06   No:47834     
Title: Re:ネットワーク対戦機能について    
>って部分を私は学校のクラス内って意味に取ったんですが違いますかね? 
私は、人数的にクラス規模だととらえました。
自宅にかえって、それぞれが接続するもので、学校内でやるものではないと。
いずれにせよ、言い方がややこしかったかもしれませんね。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,146,691ポイント)   Date: 2010/02/09(火) 21:16   No:47867     
Title: Re:ネットワーク対戦機能について    
ん、、、起きてすぐに書き込んだので色々と寝ぼけていたようです^^;
私は、改めて読んでみると学校の閉じたLAN内でやるって意味じゃないかなと思いましたがどうなんでしょう?


実は私も初めてsocketプログラムを勉強した時、なんちゃってオンラインゲーム作りました。
なんちゃってオンラインゲームといっても相手のIPアドレスわざわざ事前に調べて入力しないと遊べない実用的ではないものでしたが。

オンラインゲームとなると相手と自分のPCが同じ状態でないといけないので、その辺の同期処理がややこしかったりしますよね。

>手始めにチャットするプログラムから始めてみようと思います

いいですね。私も初めてはチャットでした。
相手からのデータ受信の関数で処理が止まってしまうとゲームにならないので、
マルチスレッドで待機するように処理を書いてみるとよいと思いますよ。


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

Name: Ma  ..熟練のプログラマー(47,694ポイント)   Date: 2010/02/09(火) 21:36   No:47871     
Title: Re:ネットワーク対戦機能について    
ネットゲームについてはくわしくありませんが、IPがないと。。。と読んで、ふとアイディアがおもいついたのでかきこしてみます。
あと、socket とか未学習ですw

DXライブラリとレンタルサーバーとCGIを組み合わせると、相手のIP情報を事前に入力しなくても、MMOのようなオンラインゲームが作れそうですね。

オンラインになったらCGIにそのユーザーのIP情報を送って、txtファイルにででも登録してもらって、すでにオンラインの人は定期的にそのtxtファイルを参照すれば他のユーザーがオンラインかもしれないIPアドレスを取得することができます。
(私が作ったゲームにランキングシステムとして使ってみたので実証済み)

ただ、あまり高速な通信手段ではないと記憶しているので、常時オンラインユーザーを確認というわけにはいかないかもしれません。
もちろん、もっといい方法はいくらでもありそうですがねw


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

Name: softya [URL]  ..ハッカー(117,907ポイント)   Date: 2010/02/09(火) 22:39   No:47875     
Title: Re:ネットワーク対戦機能について    
MMORPGはサーバー上であるていど仮想世界のシミュレートを行っているので、レンタルサーバー上だと難しいと思います。
格闘ゲームやFPS・TPSのユーザーマッチングは、ホストやゲストのPCを決めて、そちらに参加者のIPアドレスを渡すだけ(後はゲーム中の多量のパケットはホストPCとゲストPCが直接通信)ですので貧弱なレンタルサーバでもある程度の人数はカバーできます。
FF11とかが専用サーバーで運用されているのは、サーバー側の負荷が高いからですね。


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



Name: PEGASUS  ..ぴよぴよ(10ポイント)   Date: 2010/02/08(月) 22:24   No:47809       
Title: コンパイラを持ち歩くことは可能?    
最近ブラッディマンデイにハマっているのですが、それ関連でいろいろとネットを見ていたら、
OSをUSBメモリに入れて使うことが可能だそうですね!ということはそれと同じような方法でコンパイラをUSBに入れてコンパイラが入ってないPCでもプログラミングを行う!ってことは可能ですか?
すいません。初心者なんですが
できるなら、方法も教えていただけるとありがたいです。


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


Name: たかぎ [URL]  ..ハッカー(159,514ポイント)   Date: 2010/02/08(月) 22:54   No:47813     
Title: Re:コンパイラを持ち歩くことは可能?    
> コンパイラをUSBに入れてコンパイラが入ってないPCでもプログラミングを行う!ってことは可能ですか? 

USBに入れることは不可能ですが、USBフラッシュメモリやUSBハードディスクなどに入れて持ち歩くことなら可能です。

> できるなら、方法も教えていただけるとありがたいです。

環境不明なので具体的なことはいえませんが、特別なインストーラが必要ないコンパイラであれば、単にコピーするだけです。


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

Name: P  ..入門者(2,808ポイント)   Date: 2010/02/08(月) 23:01   No:47815     
Title: Re:コンパイラを持ち歩くことは可能?    
返信ありがとうございます。
コンパイラはborland5.5です。
必要かわかりませんがOSはXPです。
もし入れられえたら特別な設定なく他のPCでもコンパイラは使えますか。


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

Name: たかぎ [URL]  ..ハッカー(159,518ポイント)   Date: 2010/02/08(月) 23:07   No:47816     
Title: Re:コンパイラを持ち歩くことは可能?    
> コンパイラはborland5.5です。 

ライセンスの問題さえなければ、持ち歩きは可能です。

> もし入れられえたら特別な設定なく他のPCでもコンパイラは使えますか。

ドライブ名が変わらなければそのまま使えるかと思います。


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

Name: PEGASUS  ..ぴよぴよ(118ポイント)   Date: 2010/02/08(月) 23:14   No:47818     
Title: Re:コンパイラを持ち歩くことは可能?    
ライセンスの問題は・・・分かりません!初心者なんで。
前に学ホ校でームページビルダーを使った授業をしたとき家でやりたいと、USBメモリにホームページビルダーをコピーした人がいて、その時ショートカットが入っただけだったそうなんですが
仮に問題なかったときコンパイルするときは普通に
bcc32 (フォニャララ).c
でコンパイルできますか
質問が分かりにくくてすいません・


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

Name: たかぎ [URL]  ..ハッカー(159,451ポイント)   Date: 2010/02/08(月) 23:17   No:47819     
Title: Re:コンパイラを持ち歩くことは可能?    
> ライセンスの問題は・・・分かりません!

ライセンスが理解できなければ、いずれにしても利用することはできません。

> 初心者なんで。 

初心者かどうかは関係ありません。
それが理由でライセンスが理解できないのであれば、利用もできないということになります。


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

Name: mnkr  ..入門者(4,537ポイント)   Date: 2010/02/08(月) 23:56   No:47820     
Title: Re:コンパイラを持ち歩くことは可能?    
>USBメモリにホームページビルダーをコピーした人がいて
ホームページビルダーを自宅で使いたいなら、
メーカーのホームページで30日使用できる体験版があるのでそれをダウンロードして利用しましょう。
30日以上使用したい場合はライセンスを購入してください。


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

Name: non  ..比類無きプログラマー(91,160ポイント)   Date: 2010/02/09(火) 08:38   No:47827     
Title: Re:コンパイラを持ち歩くことは可能?    
>仮に問題なかったときコンパイルするときは普通に 
>bcc32 (フォニャララ).c 
>でコンパイルできますか 

環境設定は必要でしょう。


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

Name: PEGASUS  ..ぴよぴよ(112ポイント)   Date: 2010/02/09(火) 15:59   No:47852     
Title: Re:コンパイラを持ち歩くことは可能?    
> >仮に問題なかったときコンパイルするときは普通に 
> >bcc32 (フォニャララ).c 
> >でコンパイルできますか 

> 環境設定は必要でしょう。


環境変数をきちんとしていれば使えますかね。
まぁ、一度試してみます。


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

Name: dic  ..熟練のプログラマー(51,086ポイント)   Date: 2010/02/09(火) 18:08   No:47858     
Title: Re:コンパイラを持ち歩くことは可能?    
何を気にしているのかわかりませんが
持ち運び可能なほど、時間短縮を要求されるのであれば
汎用的なスクリプト言語を使うのが、現実的だと思います
もしくは某シラセみたいに某システムを構築してるとか


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

Name: PEGASUS  ..ぴよぴよ(163ポイント)   Date: 2010/02/09(火) 18:39   No:47862     
Title: Re:コンパイラを持ち歩くことは可能?    
環境変数を変えるのがめんどくさかったけどできました。
別に今のところ持ち歩く必要はあまりないのですが・・・


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

Name: もぐりん  ..ぴよぴよ(747ポイント)   Date: 2010/02/09(火) 21:18   No:47868     
Title: Re:コンパイラを持ち歩くことは可能?    
>USBメモリにホームページビルダーをコピーした人がいて 

学校で導入しているからといって、そのままコピーできるというのが怖いですね。
そもそも学校の所有しているソフトを無断で持ち出すような行為が認められているのですか?
セキュリティに対して学校が何も対策していないということになりませんか?
そもそもborland5.5なんてインターネットから自由にダウンロードできるのだから、
学校でコピーする必要はないでしょう。
それ以前に学校に個人所有のUSBメモリを持ち込んで学校のPCにウィルスをまき散らしたら
どうするつもりですか?


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

Name: たかぎ [URL]  ..ハッカー(159,984ポイント)   Date: 2010/02/09(火) 21:43   No:47872     
Title: Re:コンパイラを持ち歩くことは可能?    
> それ以前に学校に個人所有のUSBメモリを持ち込んで学校のPCにウィルスをまき散らしたら 
> どうするつもりですか? 

学校によっては、諸事情により、個人所有のUSBメモリにバックアップを取るように指導しているところもあります。
昨夏は、新型インフルエンザよりも、むしろメモリーワームのパンデミックにやられていたわけですが...


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



Name: 初心者ガーゴイル  ..ぴよぴよ(47ポイント)   Date: 2010/02/08(月) 19:14   No:47794       
Title: DXライブラリのことで    
はじめまして
初心者ガーゴイルです
本当に初心者でまだ1日目です。
今VisualC++用でサンプルプログラムを
貼り付けしてそれをチョコチョコ変えてるくらいの
ヘボヘボなんですが
DXライブラリは VisualC++用とBorlandC++用
どちらが使いやすいのでしょうか?
ご返事宜しくお願いいたします。


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


Name: softya  ..ハッカー(116,516ポイント)   Date: 2010/02/08(月) 19:38   No:47801     
Title: Re:DXライブラリのことで    
DXライブラリ自体の差は無いと思いますよ。

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

Name: 初心者ガーゴイル  ..ぴよぴよ(65ポイント)   Date: 2010/02/08(月) 19:42   No:47802     
Title: Re:DXライブラリのことで    
そうだったんですか
返信ありがとうございました


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

Name: 初心者ガーゴイル  ..ぴよぴよ(75ポイント)   Date: 2010/02/08(月) 19:43   No:47803 解決!     
Title: Re:DXライブラリのことで    
すいません
解決やるの忘れてました


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,146,529ポイント)   Date: 2010/02/09(火) 21:24   No:47870     
Title: Re:DXライブラリのことで    
どちらでも同じ事が出来ますが、うちで配布している私作成のサンプルは全てVC++ですので
もしうちのサンプルをご覧になる機会があるのでしたら、
VC++を使っていた方が、DLしてすぐ実行できるメリットがあります。
後、BorlandよりVC++のプロジェクトの方が使ってる人が多いので同様にサンプルを実行する環境づくりとしてはVC++の方がいいかもしれません。


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



Name: dic  ..熟練のプログラマー(51,198ポイント)   Date: 2010/02/09(火) 10:54   No:47830       
Title: 原因不明のエラー    
原因不明なエラーがでます

bool    Download( char *http, char *file, char *type )
{
    DEF_OKIMARI;

    bool    bSuccess = false;
    struct    _finddata_t        f;
    long                    hFile;
    //    指定したファイル名を探します
    HANDLE    h;
    WIN32_FIND_DATA    data;
    h = FindFirstFile( file, &data );


というソースコードなのですが
最後のFindFirstFile関数のところで必ずエラーになります
朝5時くらいまでは、何の問題もなく動いていたのですが
ひと眠りして今10時くらいから FindFirstFile 関数でエラーが
おこるようになりました
エラーをデバッカでおってもFindFirstFile関数内の
アセンブラレベルで問題が起きているようで手がだせません
さらにデバッカでエラーがひっかかり、もういっかいエラーを
おこそうとそのままF5を押してもエラーが起きずに実行できるのです
まったく原因が分かりません
どなたかわかる方いらっしゃいませんか?

開発環境は VC++6 です


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


Name: たかぎ [URL]  ..ハッカー(159,752ポイント)   Date: 2010/02/09(火) 11:29   No:47831     
Title: Re:原因不明のエラー    
どうなることを期待して、どうなったのかを書いてもらわないと何ともいえません。
画像にしても、肝心の変数ウォッチの部分が切れてしまっていますし。


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

Name: softya [URL]  ..ハッカー(117,543ポイント)   Date: 2010/02/09(火) 11:49   No:47833     
Title: Re:原因不明のエラー    
VC++でしたら「呼び出し履歴」と言う機能がありますので、それでFindFirstFileの呼び出し元から調べてみて下さい。何処から、どんなパラメータで呼び出したか調べることが出来ます。

下記はVC++2005ですがさほど差が無いはずです。
http://ext-web.edu.sgu.ac.jp/koike/semi/VC2005/c17.html




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

Name: dic  ..熟練のプログラマー(50,929ポイント)   Date: 2010/02/09(火) 13:00   No:47840     
Title: Re:原因不明のエラー    
私も意味がわからないので、意味不明な文章になりました すいません

期待していることは、sub.txt というファイルがすでにあるかどうか、FindFirstFile関数で
取得して、ハンドルが得られるかどうか
ということです

VC++2005はもってないです

VC++2008 Express でもコンパイル実行しましたが、同様のエラーが起きます

Stack Overflowを起こしてます
ブレークポイントを
h = FindFirstFile( file, &data );
に設定し
次のブレークポイントを
if( h == ...
に設定してます
この間で、エラーが起きてるのでFindFirstFile関数内でエラーが起きてるとしか
私としては言えないのです


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

Name: softya [URL]  ..ハッカー(117,579ポイント)   Date: 2010/02/09(火) 13:19   No:47842     
Title: Re:原因不明のエラー    
「呼び出し履歴」を見る限りネストは浅いのでstack overflowの原因らしきものは見当たりませんね。
可能性があるとしたら、ローカル変数で巨大の配列とか宣言していませんか?
1MB近くまで取っていると、何かの拍子にoverすると思いますが。


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

Name: dic  ..熟練のプログラマー(51,018ポイント)   Date: 2010/02/09(火) 15:41   No:47850     
Title: Re:原因不明のエラー    
回答ありがとうございます
すごいですね
たしかに巨大な配列を宣言しました
char    buf[10240];を
char    buf[1024000];
に変更しました
1024000Byte
= 1024KByte
= 1MB
で、計算上約1MB宣言してます
3か所変更したので3MBです

これは、どういったエラーを呼び起こすのでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(159,917ポイント)   Date: 2010/02/09(火) 15:50   No:47851     
Title: Re:原因不明のエラー    
> たしかに巨大な配列を宣言しました 

Visual C++の場合、自動記憶域期間を持つオブジェクトはスタックからとられます。
スタックに使うメモリのサイズには限界がありますので、それより大きなサイズのオブジェクトを使おうとするとメモリが不足します。
その結果、Stack Overflowがおきるわけです。


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

Name: softya [URL]  ..ハッカー(117,718ポイント)   Date: 2010/02/09(火) 16:01   No:47853     
Title: Re:原因不明のエラー    
大雑把にいうとローカル変数でstaticでは無い変数は、スタック領域にメモリ領域を確保します。
スタック領域のサイズはコンパイル時に変更可能ですが、デフォルトだとあれ?VC++6.0って1MBだと思ったんですが記憶違いかな?
スタック領域は、ローカル変数と関数の呼び出しなどで消費しますのでギリギリまで使われていると今回のように深い階層の関数呼び出しでスタックオーバーフローします。
大きな配列はstaticで取るか、mallocなどで動的確保して下さい。


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

Name: dic  ..熟練のプログラマー(51,029ポイント)   Date: 2010/02/09(火) 18:05   No:47857 解決!     
Title: Re:原因不明のエラー    
解決しました
ありがとうございました


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



Name: ko  ..かけだし(1,091ポイント)   Date: 2010/02/09(火) 12:45   No:47838       
Title: C言語エラーについて質問です    
主要部以外は省略します
if(o[i] < 0.050&&t%PR == 0 )
 for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",1,0,0,0);}; 
 for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",0,1,0,0);};
  for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",0,0,1,0);};
  for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",0,0,0,1);};
else if(o[i] > 0.9500&&t%PR == 0 )                   228行
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",0,0,0,1);};    229行
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",0,0,1,0);};
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",0,1,0,0);};
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",1,0,0,0);};

エラーが c:228: error: syntax error before "else"
         c:229: error: syntax error before ")" token

です。何が悪いのかよくわからないためご教授下さい。変数の設定などにミスはないと思います。


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


Name: Mist  ..比類無きプログラマー(83,856ポイント)   Date: 2010/02/09(火) 12:49   No:47839     
Title: Re:C言語エラーについて質問です    
ifに中括弧をつけないからです。
ifに中括弧をつけない場合、次の文までしか有効になりません。
よって、ifが無いのにelse ifが出てきたからエラーといってます。

if(o[i] < 0.050&&t%PR == 0 ) {
 for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",1,0,0,0);}; 
 for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",0,1,0,0);};
  for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",0,0,1,0);};
  for(l=0; l < Tp ; l++ ){printf("\n進め\n%d%d%d%d\n",0,0,0,1);};
} else if(o[i] > 0.9500&&t%PR == 0 ) {                   228行
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",0,0,0,1);};    229行
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",0,0,1,0);};
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",0,1,0,0);};
 for(l=0; l < Tp ; l++ ){printf("\n後ろ\n%d%d%d%d\n",1,0,0,0);};
}
 編集済み


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

Name: ko  ..かけだし(1,099ポイント)   Date: 2010/02/09(火) 13:03   No:47841     
Title: Re:C言語エラーについて質問です    
お早い変身ありがとうございます。言われたとおりに直して再コンパイルしてみますね

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

Name: ko  ..かけだし(1,248ポイント)   Date: 2010/02/09(火) 13:31   No:47843     
Title: Re:C言語エラーについて質問です    
おっしゃられた通りにコンパイルしたら見事その部分のエラーが無くなりました。
しかし、今度は別のところでエラーが出てきてしまいました。
さっき書いたソースコードはvoid forward(long int t);という関数宣言した関数内のコードなのですが、

再コンパイルした際のエラーが、
   c:In functon `forward":
      c:318: error: syntax error at end of Input

となり、double sigmoid(double u)
{
    return 1.0 / (1.0+exp(-beta*u));   317行目
}

でなぜかエラーが出てきsてしまう始末です。想像できる範囲でよろしいので、エラーの原因を教えていただけますか?


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

Name: Blue  ..中級者(11,273ポイント)   Date: 2010/02/09(火) 13:42   No:47844     
Title: Re:C言語エラーについて質問です    
forward関数の括弧の対応がおかしくないですか?

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

Name: ko  ..かけだし(1,260ポイント)   Date: 2010/02/09(火) 13:58   No:47847     
Title: Re:C言語エラーについて質問です    
ありがとうございました。無事解決しました。

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

Name: ko  ..かけだし(1,282ポイント)   Date: 2010/02/09(火) 13:59   No:47848 解決!     
Title: Re:C言語エラーについて質問です    
解決しました。皆さんありがとうございます。

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



Name: キャベツ太郎  ..ぴよぴよ(345ポイント)   Date: 2010/02/08(月) 17:31   No:47784       
Title: シミュレーションツール    
はじめまして。
さっそくですが、みんなdeクエストという携帯ゲームを知ってるでしょうか?
それはキャラに複数のパラメーターがありスキルには係数があります。
また武器にも攻撃力があり、これは±25%の乱数によって決まり、
ダメージを敵に与えて5ターン以内に倒すゲームです。
逆に敵からもダメージをくらい、行動順なども敏捷というパラメーターの値
±25%の乱数によって前後します。
さらに敵の攻撃はいくつかある中からランダムなどの場合もありますので、
その結果は何千万通りとあります。
そういったゲームのシミュレーションとなるツールみたいなのを作りたいんですが、
この場合何からはじめればいいのでしょうか?
自分にはプログラミングの知識など皆無で、もしかしたらここに書き込むこと事態、
見当違いなのかもしれませんが、知っていたら教えてください。
グラフィックなどはまったく使わず、計算のみになると思いますので、
おそらく先行確率計算プログラムみたいな感じになるんでしょうか?


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


Name: softya  ..ハッカー(116,236ポイント)   Date: 2010/02/08(月) 18:01   No:47785     
Title: Re:シミュレーションツール    
「みんなdeクエスト」の事は良く知りませんが、
携帯電話で動くものを作りたいのでしょうか?
それともパソコンで遊べるものでしょうか?
ブラウザだけで遊べるゲームってのもあります。
ここをはっきりしないと
>この場合何からはじめればいいのでしょうか? 
ターゲットなる物で色々やり方が変わるので、もう少し詳しくお願いします。

>グラフィックなどはまったく使わず、計算のみになると思いますので、 
「みんなdeクエスト」にはあるみたいですが、いらないのでしょうか?
テキストだけのゲームだとしたらレトロで、それはそれで面白いのですが。

>おそらく先行確率計算プログラムみたいな感じになるんでしょうか?
意味不明ですので補足をお願いします。


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

Name: Mist  ..比類無きプログラマー(83,396ポイント)   Date: 2010/02/08(月) 18:10   No:47787     
Title: Re:シミュレーションツール    
「みんなdeクエスト」の戦闘結果シミュレータが欲しいってことだと思いますけど。
コンソールアプリでいいのであれば、開発環境(VC++、BCC等)を用意してC言語を勉強すれば出来ると思いますけど。
「みんなdeクエスト」の乱数生成アルゴリズムが判らないと思った結果にはならないかもしれませんね。


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

Name: たいちう  ..熟練のプログラマー(55,581ポイント)   Date: 2010/02/08(月) 18:32   No:47789     
Title: Re:シミュレーションツール    
サイコロの期待値を求めるプログラムです。
携帯ゲームを単純化して1つのサイコロにしたもの、
シミュレーションについても、
期待値のみを結果として出力しています。

まずこれを理解し、徐々に複雑なものに改良して、
望むものを作ってみてはいかがでしょうか。

サイコロのシミュレーション

攻撃力のシミュレーション

複数回の攻撃のシミュレーション

攻撃のバリエーションを考慮



等と発展させる方法です。
プログラムを作っていくに従い、自分が何を求めているのか、
うまく説明できるようになるのではないでしょうか。

#include <stdio.h>

#define N 10000

int dice() {
    return rand() % 6 + 1;
}

int main() {
    int i, sum = 0;
    srand((unsigned int)time(NULL));
    for (i = 0; i < N; i++)
        sum += dice();
    printf("期待値 = %f\n", 1. * sum / N);

    return 0;
}


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

Name: キャベツ太郎  ..ぴよぴよ(927ポイント)   Date: 2010/02/08(月) 18:39   No:47791     
Title: Re:シミュレーションツール    
回答ありがとうございます。
正直、遊ぶというよりは結果を見るといった感じです。

>「みんなdeクエスト」にはあるみたいですが、いらないのでしょうか? 
「みんなdeクエスト」というゲームは、敵が使用したスキルを
確認してから次のスキルを選択するというゲームではなく、
使用するスキルを最初にセットし、時間がきたら勝手に戦い、
その内容をテキストによって確認します。
ですので、確認するときには戦闘は終わっており、勝っているか、負けているか
になります。
グラフィックは動いたりもせず、ただキャラやアイテムを判別するためのものなので
必要ないと思います。

私が作りたいのはあくまでツールになりますので、計算表みたいのだと思います。
例えば

力100に対し、係数3のスキルを使用すると300のダメージを与える。

といったものを力の項目に100と打ち込むだけで300という数字が割り出せるような
そんなツールです。
しかし実際はそこに武器の攻撃力も乱数によって出されるし、敵に先手をとられて
パラメータを下げられた場合、次の攻撃のダメージも変わってきます。
そういった複雑な計算を入力するだけで結果が出せるようなツールを作りたいです。
計算は乱数が使われるので、毎回結果は違いますがそれはしかたないです。

>携帯電話で動くものを作りたいのでしょうか? 
作ったものは携帯でもパソコンでも使えるようにしたいです。

>>おそらく先行確率計算プログラムみたいな感じになるんでしょうか? 
>意味不明ですので補足をお願いします。
すいません。忘れてください。


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

Name: バグ  ..ハッカー(190,084ポイント)   Date: 2010/02/08(月) 18:50   No:47792     
Title: Re:シミュレーションツール    
携帯でもPCでも動くとなると、Webアプリですかねぇ…
それはともかく、まずは計算式が分からない事にはどうしようもないかな?と思います。処理自体はそんなに複雑ではないようですが、全く同じ物が欲しいとなると、オリジナルアプリの計算式や乱数発生アルゴリズムが分からないと無理でしょうね。
似たような物であれば可能でしょうけど…


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

Name: softya  ..ハッカー(116,343ポイント)   Date: 2010/02/08(月) 19:02   No:47793     
Title: Re:シミュレーションツール    
>作ったものは携帯でもパソコンでも使えるようにしたいです。 
その前提であれば、リアルタイム性も必要ないですのでPerlやPHPなどWEB系開発言語を使われると良いと思います。CGIと呼ばれているものですね。
ブラウザで数値を入力してもらって、サーバーで計算して結果を表示するものになります。

これは信長の野望関係みたいですが、こんな感じですかね。
http://chika-rsin.jp/n/i/ikusa.cgi


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

Name: キャベツ太郎  ..かけだし(1,275ポイント)   Date: 2010/02/08(月) 19:15   No:47795     
Title: Re:シミュレーションツール    
>「みんなdeクエスト」の戦闘結果シミュレータが欲しいってことだと思いますけど。
まさにそのとおりです。

>計算式が分からない事にはどうしようもないかな?と思います。
ダメージなどの検証により、それを逆算して乱数±25%というのは
わかりました。
ダメージを割り出すことだけを見るとしても、それだけでは
情報不足でしょうか?
ほかにもいくつかの計算式といいますか、乱数などはわかっています。

>似たような物であれば可能でしょうけど…
乱数の全ては逆算によって出されたものなので、
確かにオリジナルの計算式とは違うかもしれませんが、
それに近いものだとも思いますので、似たような物であれば十分です。

>これは信長の野望関係みたいですが、こんな感じですかね。
そうです。そういったものでダメージだけを割り出すツールは「みんなdeクエスト」にも
あるんですが、それでは敵がAの攻撃をした場合のダメージ、Bの攻撃をした場合のダメージ
などがわからず負けるときがありますので、いったんシミュレートできるような
ツールを作りたいです。


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

Name: softya  ..ハッカー(116,401ポイント)   Date: 2010/02/08(月) 19:31   No:47799     
Title: Re:シミュレーションツール    
>などがわからず負けるときがありますので、いったんシミュレートできるようなツールを作りたいです。

私のオススメは、PHPですね。
http://www.standpower.com/
完全なプログラミング初心者なら書籍を買った方が良いと思います。
PHP4とPHP5で大分違いますので、レンタルサーバを借りる前に下調べを十分に行って下さい。
無料で借りれるレンタルサーバーもあります(広告が入りますが)。


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

Name: キャベツ太郎  ..かけだし(1,359ポイント)   Date: 2010/02/08(月) 21:29   No:47807     
Title: Re:シミュレーションツール    
なるほど。
こういったところから始めればよろしいですか。
回答してくださったみなさま本当にありがとうございました。
私は素人のあまり伝わりにくかった部分がたくさんあったのに
みなさん回答はとてもわかりやすかったです。
これらを参考に少しずつ勉強していこうと思います。
ありがとうございました。


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

Name: kazuoni [URL]  ..ハッカー(134,048ポイント)   Date: 2010/02/08(月) 21:55   No:47808     
Title: Re:シミュレーションツール    
自分もPHPやってみたかったんですよね^^;
この機にちょっとやってみようかなぁ・・・。
○チスロ解析アプリぐらいなら作れるかな・・・?

#キャベツ太郎は自分の生涯を通して一番好きなお菓子です。


余談失礼しましたorz


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

Name: softya [URL]  ..ハッカー(116,645ポイント)   Date: 2010/02/08(月) 22:37   No:47810     
Title: Re:シミュレーションツール    
>>kazuonさん
C言語が分かっていれば、さほど難しくはありません。
C言語よりも楽に文字列処理も出来ますし、正規表現も使えて便利です。
一応クラスも使えますので、C言語よりも気の利いた記述が出来ます。
豊富なライブラリがあり、HTMLコードの生成が楽に行えるsmartyなんか気に入って使っています。

C/C++経験者なら、こちらのサイトが手っ取り早いと思います。
http://www.phppro.jp/phpmanual/php/index.html



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

Name: たかぎ [URL]  ..ハッカー(159,563ポイント)   Date: 2010/02/08(月) 22:57   No:47814     
Title: Re:シミュレーションツール    
実は、最近はコマンドラインツールを作るのもPHPで作っていたりします。
PHPとC++を合わせれば非常に強力なタッグになりますね(それぞれ得意分野が異なるので)。


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



Name: MNS  ..プログラマー(30,900ポイント)   Date: 2010/02/08(月) 18:07   No:47786       
Title: "export"キーワードについて    
テンプレートについて勉強している間に、exportというキーワードがあることを知りました。
通常、テンプレートを記述するにあったっては、全てのテンプレートをヘッダファイルに記述するため、
ヘッダファイルが肥大化するおそれがあるという話を聞いていたので、使用を躊躇ってきたのですが、
ああ、便利なキーワードがあったんだな、と思い調べてみたところ、exportはC++の標準規格であるが、
主要なコンパイラ(GCCやVC++)はこれをサポートしていないということでした。

ここで質問なのですが、
なぜ、exportは、標準規格であるのにも関わらず、多くのコンパイラで実装されていないのでしょうか?



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


Name: たかぎ [URL]  ..ハッカー(159,390ポイント)   Date: 2010/02/08(月) 18:14   No:47788     
Title: Re:"export"キーワードについて    
> なぜ、exportは、標準規格であるのにも関わらず、多くのコンパイラで実装されていないのでしょうか? 

実装が面倒なわりに、ありがたみが少ないからです。


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

Name: MNS  ..プログラマー(30,987ポイント)   Date: 2010/02/08(月) 18:35   No:47790 解決!     
Title: Re:    
なるほど。
実装が不可能というわけではないのですね。
便利そうな機能でしたので残念ですが、将来に実装されることを期待することにします。
どうもありがとうございました。


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

Name: たかぎ [URL]  ..ハッカー(159,431ポイント)   Date: 2010/02/08(月) 19:28   No:47797     
Title: Re:    
> 実装が不可能というわけではないのですね。 

Comeau C/C++ Compilerならexportを実装しています。
http://www.comeaucomputing.com/

$50ぐらいなので、興味があるなら買ってみては?


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

Name: MNS  ..プログラマー(31,206ポイント)   Date: 2010/02/08(月) 20:02   No:47805     
Title: Re:    
すでに実装されているコンパイラもあるのですね。
まあ、もう少しテンプレートが使いこなせるようになってから、考えてみたいと思います。


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



Name: Ma  ..熟練のプログラマー(44,332ポイント)   Date: 2010/02/07(日) 09:53   No:47730       
Title: cpp ファイルが長文になったら・・・    
クラスの関数が何十もあり、そのひとつひとつの関数が長くなってしまった場合、
みなさんはどのように分割していますか?


1.新しく cpp ファイルをつくり半分の関数をそっちに移動する。
2.新しく h ファイルをつくり、cppファイルにインクルードすう。(外道なのだろうか?)
3.なにがあろうとcppは、クラスひとつにたいしてひとつのみ。(VC++の[+][-]のボタンで宣言内容を略で表示する。)
4.その他

よければ理由もお聞かせください。


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


Name: たかぎ [URL]  ..ハッカー(158,418ポイント)   Date: 2010/02/07(日) 10:26   No:47732     
Title: Re:cpp ファイルが長文になったら・・・    
> クラスの関数が何十もあり、そのひとつひとつの関数が長くなってしまった場合、 
> みなさんはどのように分割していますか? 

最初に考えないといけないのは、何十もあるというメンバ関数が、本当にメンバである必要があるのかどうかです。
非メンバ、非フレンドにできる関数はそのようにすべきです。
フリー関数になれば、3.を支持する理由は失われます。

ひとつひとつの関数が長くなったとのことですが、どの程度長くなったのでしょうか?
アルゴリズム関数を使ってループをなくすことができれば短くすることはできると思いますし、関数内の汎用的な処理は再利用可能な形に切り出すのもよいでしょう。
いずれにせよ、実際のソースを見ないことには一概にどうすればよいかはいえません。


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

Name: Justy  ..伝説なるハッカー(498,739ポイント)   Date: 2010/02/07(日) 10:26   No:47733     
Title: Re:cpp ファイルが長文になったら・・・    
 クラスのメソッドが何十もあってしかも1つ1つが長いとなると、それはもうクラス設計に
問題があります。
 そのようなクラスを放置しては将来に禍根を残すことになりかねません。

 従って「4 設計を見直す」です。


 ただ、状況的にその選択肢は無理、ということなら1か3ということになります。

 メソッドの性格・役割などの分類ができるならその分類毎に1の方法で分割します。
 分類するとその種類が多くなってしまうカオスなごった煮状態、或いは逆に1種類しか無く
同類ばかりというのであれば3です。


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

Name: Ma  ..熟練のプログラマー(44,722ポイント)   Date: 2010/02/07(日) 10:51   No:47735     
Title: Re:cpp ファイルが長文になったら・・・    
なるほどなるほど。
参考にしてみます。

>いずれにせよ、実際のソースを見ないことには一概にどうすればよいかはいえません。 
一応例に出せるようなソースをもっているのですが、あえてはらないでおきました。
理由は、ソースがめちゃ長いのと機能を説明するのが大変なのと、この場では抽象的に話すつもりだからです。
具体例があったほうが答えやすいというのはごもっともなので、ソースの代わりに簡単に言葉で説明させていただきます。(↓に関数の説明をいれました。)


>ひとつひとつの関数が長くなったとのことですが、どの程度長くなったのでしょうか?
string を引数として、その内容次第で処理を切り替える関数が一番ながいです。
この関数は、ノベルゲームによくある読み込んだスクリプト次第で処理をかえるというのが目的です。
if else 文で分割し、そのスコープ内で、stringにあった命令文(スクリプト)どおりに動く形です。
(ココで言うスクリプトとは、私が独自のフォーマットで作ったtxtファイルから読み込み、プログラム側に指示を出す命令文のことです。)
(たとえば、文字更新、画像更新、画像移動、画像透明度変更、音声再生、BGMコントロール、などなど。)


*私なりに思いついた解決法
この場合は、スクリプトの指示のひとつひとつをメンバー関数にして、その関数をポインタ化し、stringを引数とする例の関数から呼び出すなんて方法も思いつきます。
ですが、ヘッダーファイルがメンバー関数の数ですごいことになります。
さらに、この場合は数十あるスクリプト関数用に別にcppファイルを用意したほうがよさそうですね。




> 従って「4 設計を見直す」です。
↑のスクリプトのような処理はやはり、クラスをわけるわけいはいかなさそうですよね。
とすると、やはりcppファイル分割がいいのかな。 編集済み


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

Name: たかぎ [URL]  ..ハッカー(158,621ポイント)   Date: 2010/02/07(日) 10:58   No:47736     
Title: Re:cpp ファイルが長文になったら・・・    
> 命令文ひとつひとつをメンバー関数にして

ですから、その命令文ひとつひとつが、本当にメンバ関数である必要があるのですか?
クラスが肥大化すると、データメンバがグローバル変数と変わらなくなってしまいます。
カプセル化のやり方をしっかり見直せば、改善の余地はあるように思います。


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

Name: 山崎  ..プログラマー(35,669ポイント)   Date: 2010/02/07(日) 10:59   No:47737     
Title: Re:cpp ファイルが長文になったら・・・    
私はまだひとつのcppファイルを分割しなければならないほど長くしたことはないですが、
おそらく1の方法をとると思います。
新しくヘッダを準備するのも手間ですし、
あまりに一つのファイルが長いと関数やメンバを探すのが大変ですからね…。
ええと、飽くまで私はまだまだ素人なので、参考までの意見でした。

投稿主じゃないのですが、ちょっと関連して質問してもよろしいでしょうか?

なぜ、関数を非メンバ・非フレンドにするべきなのでしょうか?

私は今まで、変数や関数は、なるべくクラスメンバやクラスメソッドにして、
なるべくグローバルは避け、スコープを狭めるようにしてきました。
メンバ関数に関しては、この努力は逆だったのでしょうか…?


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

Name: たかぎ [URL]  ..ハッカー(158,780ポイント)   Date: 2010/02/07(日) 11:14   No:47738     
Title: Re:cpp ファイルが長文になったら・・・    
> なるべくグローバルは避け、スコープを狭めるようにしてきました。 

非メンバ、非フレンドにできるものをメンバ関数にすれば、クラス有効範囲(スコープ)はその分だけ広がります。
極端な話、アプリケーションクラスを作って、プログラム全体をそこに詰め込んでしまえば、アプリケーションクラスのデータメンバはグローバル変数と何ら変わらなくなりますよね。

> メンバ関数に関しては、この努力は逆だったのでしょうか…?

状況にもよりますが、基本的には逆です。目的と手段が逆転している可能性があるからです。
カプセル化ないしは情報隠蔽を考える上で大切なのは、情報の公開範囲を必要最小限に抑えることです。
情報を見せなくてもよい関数(非メンバ、非フレンドにできるはずなのにメンバにした関数)に見せてしまうのは目的に反しています。


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

Name: Ma  ..熟練のプログラマー(44,924ポイント)   Date: 2010/02/07(日) 11:36   No:47739     
Title: Re:cpp ファイルが長文になったら・・・    
>その命令文ひとつひとつが、本当にメンバ関数である必要があるのですか?
はい、すべての関数が、クラスのメンバー変数に対する処理を行っているため非メンバーにできません。
ただ、クラスの外から参照して処理しようと思えばできる部分が多々あるので、これを非メンバーにしろということでしょうか?
たとえば、今まで話をしてきたのはスクリプトから読み込んだ文を保存しているクラスなのですが、表示する場合、メンバー関数の.draw() をやめて、外から文を保存してあるメンバーを参照して表示するなど。
ただ、この方法は、インスタンス名.メンバー変数 のような処理が多発します。
そのため、これをメンバー関数にして、インスタンス名. の部分を略してきました。
この手法はあまり好ましくないのでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(158,878ポイント)   Date: 2010/02/07(日) 11:43   No:47740     
Title: Re:cpp ファイルが長文になったら・・・    
> はい、すべての関数が、クラスのメンバー変数に対する処理を行っているため非メンバーにできません。 

コード不明なので具体的な話はできませんが、個々のデータメンバに対して(他のメンバ関数ではできない方法で)デリケートな操作を行う必要があるなら仕方がありませんね。

> ただ、この方法は、インスタンス名.メンバー変数 のような処理が多発します。 
> そのため、これをメンバー関数にして、インスタンス名. の部分を略してきました。 

つまり、データメンバがグローバル変数に近い状況になっているわけですね?

> この手法はあまり好ましくないのでしょうか?

一般論では好ましくありません。
 編集済み


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

Name: Ma  ..熟練のプログラマー(45,047ポイント)   Date: 2010/02/07(日) 12:09   No:47741     
Title: Re:cpp ファイルが長文になったら・・・    
なるほど、みなさんのおかげでよく分かりました。
クラスを間違った方向に充実させすぎると、今度はグローバル化していってしまうため、
本来のクラスの目的が無意味になっていってしまうんですね。
自分のオブジェクト指向も、今後はより良い設計がされたものを作れると思います。
ありがとうございました。


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

Name: Justy  ..伝説なるハッカー(499,172ポイント)   Date: 2010/02/07(日) 12:24   No:47742     
Title: Re:cpp ファイルが長文になったら・・・    
 なんか解決したようですが、一応コメントしておきます。
 
 実際問題こちら側はソースがないので、あくまで一般論というかこちらが想定している状況でしか
言えないので、あちこちに齟齬がありそうですが。


>string を引数として、その内容次第で処理を切り替える関数が一番ながいです
 それなら例えば std::mapのキーに文字列、値に処理する関数ポインタなり関数オブジェクトなどを入れておいて、
検索・切り替え処理をすればコードは一気に短くなりそうですね。


>↑のスクリプトのような処理はやはり、クラスをわけるわけいはいかなさそうですよね
 この手のゲームスクリプトの性格上、スクリプトからゲーム全体のフラグ制御をする必要もあるので
グローバル的なデータな部分があるのも解らなくはないです。

 ただ、今の設計のスクリプトクラスは処理するスクリプトが増える度に肥大化していくのが
目に見えているので、上手くこのクラスから分離して処理するのがいいかと思います。


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

Name: Ma  ..熟練のプログラマー(45,189ポイント)   Date: 2010/02/07(日) 12:37   No:47743 解決!     
Title: Re:cpp ファイルが長文になったら・・・    
> それなら例えば std::mapのキーに文字列、値に処理する関数ポインタなり関数オブジェクトなどを入れておいて、 
>検索・切り替え処理をすればコードは一気に短くなりそうですね。 

あ、それに似た方法はすでに思いついています。(mapとまでは言いませんでしたが)
   ここで↓
 >*私なりに思いついた解決法 

その関数ポインタの関数をどこに配置するかというと、結局その関数はクラスのメンバー関数になりますよね。
(その関数が、クラスのメンバー変数にたいして処理を行うため。)



> ただ、今の設計のスクリプトクラスは処理するスクリプトが増える度に肥大化していくのが 
>目に見えているので、上手くこのクラスから分離して処理するのがいいかと思います。

一応、一定量のスクリプトに達したらデータを捨てる方法をとって膨大化をふせいでいました。


解決おしわすれてました。
どのようにして回避するべきか、またどうしても長くなってしまった場合、どの状況に応じてどの手法をとるべきかという基準が大体分かったので解決にします。
(一応また書き込みがありましたら見ます。) 編集済み


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

Name: 山崎  ..プログラマー(35,569ポイント)   Date: 2010/02/07(日) 12:42   No:47744     
Title: Re:cpp ファイルが長文になったら・・・    
たかぎさん
ご回答いただきありがとうございます。
確かに手段と目的が逆転しているような気がします、
なるべくカプセル化をするにはどうすればいいのだろう、と
その部分に苦心してしまっていた傾向がありました。
非常に参考になりました、ありがとうございました。

Maさん
途中で質問を挟んでしまい申し訳ございませんでした。


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

Name: バグ  ..ハッカー(189,959ポイント)   Date: 2010/02/07(日) 13:39   No:47745     
Title: Re:cpp ファイルが長文になったら・・・    
既に皆さんが書かれているように設計に難有りというのが私の意見ですが、それだけではなんなので…

VisualStudio限定ではありますが、#pragma region、#pragma endregionで関連あるメソッドを折り畳む…というのはいかがでしょうか?
根本的な解決になっていませんが、とりあえず、見やすくなるかと思いますよ。


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

Name: Justy  ..伝説なるハッカー(499,496ポイント)   Date: 2010/02/07(日) 14:02   No:47746     
Title: Re:cpp ファイルが長文になったら・・・    
>結局その関数はクラスのメンバー関数になりますよね
 どうでしょうね。

 例えば汎用のシステムとして考えるなら処理の項目がべったりクラスにひっついていると、
それはもう汎用ではなくなりますので、項目の種類を外部から定義したり、
諸々の処理を外部で処理できるように作ります。
 その場合その共通でアクセスするデータも外部におかれるので、もうメンバ関数にはなりません。
(仮にその際それがメンバ関数になることはあったしてもそれは別のクラスのメンバ関数でしょう)

 反対に汎用にはせず、べったりそのクラスに項目を固定してしまうのであれば、
メンバ関数になることもあります。

 設計と状況次第ですね。


>>肥大化していくのが目に見えているので 
>データを捨てる方法をとって膨大化をふせいでいました
 あ、いえ、肥大化していくのはデータではなくクラスの規模の方です。 編集済み


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

Name: Ma  ..熟練のプログラマー(45,420ポイント)   Date: 2010/02/07(日) 14:51   No:47747     
Title: Re:cpp ファイルが長文になったら・・・    
>途中で質問を挟んでしまい申し訳ございませんでした。
いえいえ、かまいませんよ。

>、#pragma region、#pragma endregion
おぉ、故意的に範囲を指定できたんですね。
勉強になりました。ありがとうございます。


> 設計と状況次第ですね。 
なるほど。たしかに非クラス関数としてもよさそうですね。
そうなると、cppファイルを新しく作りそこに関数郡をおいて、そのポインタを使うことで整理できそうですね。
例のクラスのメンバーへのアクセスには、
インスタンス名.メンバー名 となりますね。
(追記:インスタンス名はわからないのでポインター化した関数の引数に対象のインスタンスのポインターか参照でも渡せばいいのかな。)

>諸々の処理を外部で処理できるように作ります。
メンバーをパブリックにするってことですね。
貴重なご意見ありがとうございました。


>あ、いえ、肥大化していくのはデータではなくクラスの規模の方です
あぁ、勘違いしてたみたいですね。すいません。 編集済み


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

Name: たかぎ [URL]  ..ハッカー(158,899ポイント)   Date: 2010/02/07(日) 15:50   No:47748     
Title: Re:cpp ファイルが長文になったら・・・    
なんか、全然伝わっていないような...
やはり、実際のコードを見ながら、具体的な話をした方がよいかと思います。


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

Name: Ma  ..熟練のプログラマー(45,559ポイント)   Date: 2010/02/07(日) 18:02   No:47752     
Title: Re:cpp ファイルが長文になったら・・・    
自分が間違って読んでいるかもしれませんよ?
ということなので、今回聞いたことの一部を模擬コード化しました。
元のコードをそのままのせると、とんでもないことになるので、模擬コードを変わりに作りました。
以下、模擬コードです。

とおもったら、長すぎてはれなかったので、添付しました。

間違って理解しているようであればご指摘おねがいします。

かなり眠い状態で作ったので、模擬コードでも間違いがあるかもです。
模擬コードでこんだけ長いんだから、本物のせたら大変なことに。。。
(すいません、これから時間的にしばらく(半日?)返事できません。) 編集済み


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

Name: たかぎ [URL]  ..ハッカー(159,109ポイント)   Date: 2010/02/07(日) 18:21   No:47753     
Title: Re:cpp ファイルが長文になったら・・・    
> 模擬コードでこんだけ長いんだから、本物のせたら大変なことに。。。 

全然長くありませんので、本物をのせてください。
少なくとも伝わっていないことだけは確認できました。


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

Name: ぽこ  ..初心者(6,136ポイント)   Date: 2010/02/07(日) 22:14   No:47756     
Title: Re:cpp ファイルが長文になったら・・・    
とりあえず、「オブジェクト指向」と「SRP(Single Responsibility Principle)」で
ググッてみてはどうでしょうか?

クラスが大きくなったから、ファイル分割を行うのは何の意味もありません。


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

Name: Ma  ..熟練のプログラマー(45,792ポイント)   Date: 2010/02/08(月) 00:28   No:47761     
Title: Re:cpp ファイルが長文になったら・・・    
>全然長くありませんので、本物をのせてください。 
>少なくとも伝わっていないことだけは確認できました。

そうですか。。理解していなかったようですいません。

では、仕方ないので本物をそのままはることにします。
たぶん、読むだけで数時間かかるかも。。。本当にすいません。

(このコードを修正するのはお金とれるような読み量/修正量だとおもうので
もし、長すぎて気分を害されたようでしたら、本当に申し訳ないです。
量がきついようでしたら見ていただけなくても結構ですので…。それでも見ていただけるようなら、本当に感謝です。)

あと、生半可な知識で無理やりごりごり完成させたゲームのソースなので、非効率的なところや、
不可解な部分が多数あるとおもいますが、ご了承ください。

コードは、私が製作したゲーム「シエル・ソルシエールズ」のコードのものです。
一応バグはなく(プロジェクトとしては)コンパイルできるものですが、添付したファイルだけではコンパイルできません。

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


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

Name: Ma  ..熟練のプログラマー(45,883ポイント)   Date: 2010/02/08(月) 00:33   No:47762     
Title: Re:cpp ファイルが長文になったら・・・    
>Title: Re:cpp ファイルが長文になったら・・・      
> とりあえず、「オブジェクト指向」と「SRP(Single Responsibility Principle)」で 
>ググッてみてはどうでしょうか?  
入門時代に、(もう覚えていない)あるサイトで一度読んだきりでしたので、
再度読んでみることにしてみます。


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

Name: たかぎ [URL]  ..ハッカー(159,261ポイント)   Date: 2010/02/08(月) 01:02   No:47764     
Title: Re:cpp ファイルが長文になったら・・・    
この程度であれば全然長くありません。
ただ、もうこの時間ですし、週末も終わりましたので、いつ時間が取れるかわからなくなりました。
それと、storyStructure.cpp が空のようです。


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

Name: ぽこ  ..初心者(6,391ポイント)   Date: 2010/02/08(月) 01:21   No:47766     
Title: Re:cpp ファイルが長文になったら・・・    
>たぶん、読むだけで数時間かかるかも。。。本当にすいません。 
おそらく大抵の方は、*.cppの方は行数確認するだけなので問題ないと思います。

軽くヘッダファイルを見ましたが、storyControllerクラスの役割多くないですか?
Maさんも「(たとえば、文字更新、画像更新、画像移動、画像透明度変更、音声再生、
BGMコントロール、などなど。)」と仰ているように、 このクラス単体で実現
しようとしていることが多すぎる気がします。

私なら、DisplayManager(文字更新、画像更新、画像移動、画像透明度変更担当)、
VolumeManager(音声再生担当)、BgmManager(BGMコントロール担当)といった
クラスを作成し、storyControllerクラスはシナリオ解釈後、やるべき事に対して、
それらのクラスを呼び出すだけの実装にします。

というわけでこの場合なら、私もJustyさんと同様、
4.設計を見直す。
です。 編集済み


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

Name: Ma  ..熟練のプログラマー(46,772ポイント)   Date: 2010/02/08(月) 01:33   No:47767     
Title: Re:cpp ファイルが長文になったら・・・    

>それと、storyStructure.cpp が空のようです。 
すいません。 story_structures.cpp を作る前に誤って作った物です。
まったく関係ありませんので、けしていただいてかまいません。





オブジェクト指向について読み直せ という指摘から、ちょっと復習させていただきました。
(一応、私なりのオブジェクト指向の理解度を示すためにいいと思ったので書かせて頂きました。)

@IT 連載 ここから始まるオブジェクト指向 を読んで、私なりに気づいた現在の問題点

●自律分散協調動作
○いろいろつめこみすぎて、グローバル化している。
役割が拡散していない。

●オブジェクトは外部からのメッセージを受け取るためのインターフェイスを公開しています。メッセージを受け取ると、それに対応する振る舞いを実行するのですが、外部からは、公開されているインターフェイス以外にオブジェクトの状態に直接アクセスする方法はありません。
○外部からコントロールするために、set()系の関数を作るのが面倒で
メンバーをすべてpublic にしちゃってる。


●(3)関係
 オブジェクトは単独で存在することはありません。必ずほかのオブジェクトと関係を持っています。
○story_structures と storyController があるが、ふたつだけではなく
もっと関係を増やし、分解していくべき?

●(4)アイデンティティ
各オブジェクトは、ほかのオブジェクトから自らを識別できるアイデンティティを持っています。
○ぜんぜんない!というか、いくつも作る目的で作ったクラスではなかったため、アイデンティティは必要でなかった。
↑すでに、オブジェクト指向ではないことが伺える…



○私のソースについて考えると

つまり、storyController はクラスの長所をぜんぜん使っていないのだから、そもそもクラスであるべき必要はないしオブジェクト指向ではない。
クラス(または構造体)使っているんだから、一応オブジェクト指向だと思ったら大間違いということなんですね。

それに対して、lineInfo や chara とかの構造体は、複数作るための構造体なのでオブジェクト指向として機能しているかのように見えますが、スーパークラスがない点などからクラス階層を欠如しているためオブジェクト指向ではない。ということでしょうか。

さらにポリモフィズムなんて、ぜんぜん使っていないので、わたしが添付したソースには
まったくオブジェクト指向があるとはいえない。

あれ、では、クラスというものはオブジェクト指向でないと使ってはいけないものなのか?
たしかに、単純にデータをグループ化したいという意図で作っていたのでは、間違い。(storyController のように)

ただし、例外として、 ココで紹介されているシューティングの敵の構造体などは階層関係やポリモフィズムをもっていなくとも、グループ化することで扱いやすくなるので、クラスや構造体を使うのが適している。
(storyController は例外ではなくクラスを使うべきではないが、lineInfo や chara は例外でクラスや構造体を使うのが良い)



と、私は読んで思いました。

いままで、オブジェクト指向だと思い込んでいたものは、いろいろと問題があったんですね・・・。
読んだおかげで、皆さんがいっていることの理解度がすこしふえたきがします。 編集済み


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

Name: softya  ..ハッカー(115,611ポイント)   Date: 2010/02/08(月) 01:33   No:47768     
Title: Re:cpp ファイルが長文になったら・・・    
クラスに関しては独学で学んだのでアレコレ語れるほどの技量は有していませんが、ざっとみて機能の詰めすぎ込と言うか本来クラス分けすべき部分がひとつのクラスに詰め込まれている印象です。
シナリオスクリプの制御すべきクラスが、メニューの制御やら表示の制御まで、果ては「マウスがボタン上に乗っているかどうか。」とかsave/loadでファイルの入出力まで管理しています。
1つのクラスの保持する情報と機能がシンプルに整理されているか見直すことをオススメします。と言う事で私も

4.設計を見直す。 

です。


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

Name: Ma  ..熟練のプログラマー(47,114ポイント)   Date: 2010/02/08(月) 01:43   No:47769 解決!     
Title: Re:cpp ファイルが長文になったら・・・    
なるほど。
ぽこさん、softyaさん、お返事ありがとうございます。


4.役割分割して、階層関係を作る。
これが一番ですね。ありがとうございました。

>たかぎさん
>この程度であれば全然長くありません。 
>ただ、もうこの時間ですし、週末も終わりましたので、いつ時間が取れるかわからなくなりました。 

お時間をとってしまいすいません。
ですが、具体的な修正案は提示していただけなくても結構です。
今回のソースは開発がほぼ終了しているものだからと、今回質問をさせていただいたのは、今後のプログラミングに役立たせるために聞いたものでした。

役割をつめこめすぎ、という皆様のご意見のおかげで、このケースの場合は具体的に何をするべきなのかは自分で探せると思います。
お手伝いありがとうございました。


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

Name: Ma  ..熟練のプログラマー(47,246ポイント)   Date: 2010/02/08(月) 01:51   No:47770     
Title: 補足    
先ほどの読書感想文みたいなものに追記です。
>(storyController は例外ではなくクラスを使うべきではないが、lineInfo や chara は例外でクラスや構造体を使うのが良い) 
とありましたが、
「もしくは、storyController 内部の機能を分割し、オブジェクト指向にする。」
ですね。
それで、これが今回の解決法でした。


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

Name: たかぎ [URL]  ..ハッカー(159,298ポイント)   Date: 2010/02/08(月) 01:54   No:47771     
Title: Re:補足    
> ですが、具体的な修正案は提示していただけなくても結構です。

了解しました。
他のみなさんと同意見ですので、ほぼそれで解決するでしょう。


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

Name: softya  ..ハッカー(115,980ポイント)   Date: 2010/02/08(月) 11:25   No:47780     
Title: Re:補足    
>それに対して、lineInfo や chara とかの構造体は、複数作るための構造体なのでオブジェクト指向として機能しているかのように見えますが、スーパークラスがない点などからクラス階層を欠如しているためオブジェクト指向ではない。ということでしょうか。

クラスだから、スーパークラスが必要だってのは間違いです。

>さらにポリモフィズムなんて、ぜんぜん使っていないので、わたしが添付したソースにはまったくオブジェクト指向があるとはいえない。

ポリモフィズムもクラスの必要条件ではありません。
オブジェクト指向の三大要素であるカプセル化、継承、ポリモフィズムを全て満たしているクラスを作らなければならないってのはオブジェクト指向の曲解だと思いますよ。

>あれ、では、クラスというものはオブジェクト指向でないと使ってはいけないものなのか?

使ってはいけないとは言いませんが、Cの関数で事足りるなら構造化プログラミングのモジュールと言う考え方だけで機能的でメンテンナンス性の高いプログラムを作ることは出来ます。
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/Intro2Basic/Structure.html
今のソースコードを見る限り、構造化プログラミングの点でも不十分です。今のコードはCに無い機能を使いためだけのベターCとして使われていると思います。

>たしかに、単純にデータをグループ化したいという意図で作っていたのでは、間違い。(storyController のように)

今のコードはカプセル化を満たしていませんので、オブジェクト指向の三大要素の全てを持っていませんよね。なのでクラス化する意味がないって事は確かだと思います。


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

Name: たかぎ [URL]  ..ハッカー(159,338ポイント)   Date: 2010/02/08(月) 12:58   No:47781     
Title: Re:補足    
ちなみにC++では、構造体や共用体もクラスの一種です。
ですので、オブジェクト指向ではなくても、クラスを一切使わないというのは現実的ではありません。


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

Name: Ma  ..熟練のプログラマー(47,649ポイント)   Date: 2010/02/08(月) 14:17   No:47782     
Title: Re:補足    
前話したように、オブジェクト指向でない場合でも、グループ化としてクラスや構造体が有効になるときがある。ということですよね。
(特に、そのグループ化したものをたくさん複製する場合)

図示すると、

オブジェクト指向
   ↓
クラスや構造体を使用する。

ではなく、

クラスや構造体の用途
   ↓
グループ化または、オブジェクト指向。

です(よ)ね。


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



Name: tk  ..かけだし(1,894ポイント)   Date: 2010/02/05(金) 13:47   No:47659       
Title: オブジェクト指向の参考資料    
友人が今度プログラムをやるらしく、c++について教えてほしいといってきました。
別件でかなりお世話になった友人なので、是非1からしっかり教えていきたいと思っています。
内容はオブジェクト指向とc++とMFCについてです。

しかしオブジェクト指向を教えるにあたって、いい資料が手元になく、
どう教えていっていいものか悩んでいます。

そこで皆さんに質問というかお願いがあります。

みなさんがオブジェクト指向を理解するために使った、又は、おすすめの参考資料を教えてください。
媒体は何でも構いません。(ネット上、本ぐらいしかありませんが)

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


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


Name: 山崎  ..プログラマー(35,341ポイント)   Date: 2010/02/05(金) 14:58   No:47666     
Title: Re:オブジェクト指向の参考資料    
こんにちは。

プログラムは、人に教えると自分の理解も一層深まりますからね。
私も、人に教えることでプログラムの復習をしてます。

では、私が参考にしている資料を紹介しましょう。

まずは、こちらのサイト
ttp://www.geocities.jp/ky_webid/index_old.html
C言語もC++についても、基礎から丁寧に、サンプルコード付きで説明しているサイトです。
最初から順番に読んでいけば、最後までいく頃にはかなりの力が付いていると思います。
探したいことを目次から探しやすいので、今でも非常に重宝してます。

こちらは、純粋なリファレンスサイト。
ttp://www.cppll.jp/cppreference/
STLコンテナの関数が全部載ってるので、こちらも重宝してます。
もちろん、もっと基礎的な数学関数も載ってるので便利です。

本は、私はハーバートシルトの「独習C++」で勉強しました。
これをプログラミングの教科書にしている学校も多数あるようです。
ただ、この本はかなりの厚みがありますし、ボリュームもあります。
C++とOOPについての基礎をがっつり勉強したい人向けかもしれません。
「独習」ってあるくらいなので、人に教えるときの参考書としては向いてないかも…?

オブジェクト指向とかカプセル化だとかは、
ある程度の規模のプログラムを自分で組んでみた時に
重要性やコツがわかってくると思います。自分はそうでした。
小さいプログラムだと、なかなか便利さを実感できないですかも…?

頑張ってくださいね。


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

Name: Mikan [URL]  ..中級者(10,725ポイント)   Date: 2010/02/05(金) 23:47   No:47695     
Title: Re:オブジェクト指向の参考資料    
自分が悩んだ時と同様に、それを人に教えることはそれ以上に難しいものですよね^^;

>本は、私はハーバートシルトの「独習C++」で勉強しました。
私もこれを読みました。
いい書籍だと今でも思います。

個人的には、相手のプログラムに沿った回答がいいのではないかと思います。

>友人が今度プログラムをやるらしく、c++について教えてほしいといってきました。
題材が漠然としているので、特定はできませんが、ゲームならキャラクターの構造をクラスにしてみるとか、
敵をクラスにしてみるとかですかねぇ。。。

業務用アプリケーションなら、データベースを管理するクラスや、日付を管理するクラスとかなどからではないでしょうか?


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

Name: sizuma [URL]  ..プログラマー(34,044ポイント)   Date: 2010/02/06(土) 01:29   No:47703     
Title: Re:オブジェクト指向の参考資料    
オブジェクト指向って最初は意味が分かりませんからね。
というか僕は、今でも真髄はわからないです。

オブジェクト指向だけでも教えるつもりなら、UMLのテキストを使うというのはどうでしょうか。
UMLのテキストなら、いい本がたくさんあると思います。

あとは結城さんの
Java言語で学ぶデザインパターン入門
はきっと分かりやすいと思うので、こんな感じで利用するって読んでもらうといいかもしれません。
僕はエリックガンマの本しか持ってないので、結城さんの他の本を読んだ印象です。

>独習C++
C言語をさわったことがない方なら明解C++の方がいいと思います。
Cが出来るなら独習C++はすごくオススメします。その方のモチベーション次第ですけど・・・・

MFCを使えればオッケーならば、MFCの開発入門書を利用したほうがいいとは思います。
まぁMFC利用したことないので、なんともいえないです


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

Name: バグ  ..ハッカー(189,812ポイント)   Date: 2010/02/06(土) 10:47   No:47712     
Title: Re:オブジェクト指向の参考資料    
MFCだけでいいのならば…

※林晴比古著「新VisualC++6.0入門」
http://www.amazon.co.jp/%E6%96%B0Visual-6-0%E5%85%A5%E9%96%80-%E3%83%93%E3%82%AE%E3%83%8A%E3%83%BC%E7%B7%A8-Visual-6-0%E5%AE%9F%E7%94%A8%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4797307609/ref=pd_sim_b_1

ビギナー編には、少しだけC++についての解説も少し載っていますが、メインはMFCの解説です。
スーパービギナー編はぶっちゃけ不要かな?ビギナー編とシニア編があればとりあえずOKです。

VisualStudio6.0以降に対応したものも発売されていますが、MFC自体はそんなに変わっていないので、古いのでも充分ではないかな?(開発環境に関する説明箇所は結構変わっていますが…)


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

Name: たかぎ [URL]  ..ハッカー(158,531ポイント)   Date: 2010/02/07(日) 10:32   No:47734     
Title: Re:オブジェクト指向の参考資料    
オブジェクト指向を勉強すればするほどMFCのダメさ加減が目に付きます。
ただし、それはオブジェクト指向の観点からの話であって、MFCが絶対的にダメなわけではありません。
C++はオブジェクト指向だけの言語ではありませんので、バランスをとりながら勉強することをオススメします。



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

Name: tk  ..かけだし(2,310ポイント)   Date: 2010/02/08(月) 10:36   No:47778 解決!     
Title: Re:オブジェクト指向の参考資料    
皆様回答ありがとうございます。

>山崎様
>ttp://www.geocities.jp/ky_webid/index_old.html
見た感じ、なかなか使えそうですね。
これを軸に教えていこうと思います。

>オブジェクト指向とかカプセル化だとかは、
>ある程度の規模のプログラムを自分で組んでみた時に
>重要性やコツがわかってくると思います。
たしかにオブジェクト指向単体で教えることは結構至難ですね。
(実際自分もオブジェクト指向は理解しているといえばウソになりますから・・・)
C++教えながら、オブジェクト指向の話を織り交ぜる形で教えていきます。


>山崎様、Mikan様、sizuma様
>独習C++
週末、本屋で少し読んできました。
かなりボリュームがあっていい感じなのですが、
友人のC言語のレベルが、C言語入門書の第1章あたりにでてくる
簡単なプログラム程度を作れる程度(ほぼ初心者)なので、
sizuma様の明解C++を使いたいと思います。


>バグ様
>※林晴比古著「新VisualC++6.0入門」
これは自分も持っています。
MFCを教える場合に使っていこうかなと考えてました。


これで解決とさせていただきます。
ありがとうございました。


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

Name: たいちう  ..熟練のプログラマー(55,305ポイント)   Date: 2010/02/08(月) 10:57   No:47779     
Title: Re:オブジェクト指向の参考資料    
> あとは結城さんの
> Java言語で学ぶデザインパターン入門
> はきっと分かりやすいと思うので、こんな感じで利用するって読んでもらうといいかもしれません。

私も持っていますがとても良い本だと思います。演習問題も充実しています。
しかし今回の場合はC++でということなので、この本はまだまだ先でしょう。
あれこれと手を広げるよりも、C++でオブジェクト指向を身に着けるのが無難だと思いますので、
本の説明を利用するとしても、サンプルコードはC++のものを用意することをお勧めします。
(欲を言えばJavaのソースを参考に学習者にC++で作成してもらいたいですが)


また、山崎さんも書いてますが、

> オブジェクト指向とかカプセル化だとかは、
> ある程度の規模のプログラムを自分で組んでみた時に
> 重要性やコツがわかってくると思います。自分はそうでした。
> 小さいプログラムだと、なかなか便利さを実感できないですかも…?

結局こういうことなのですよね。
入門書には、車から乗用車とトラックを派生させる類のサンプルがありますが、
これをある程度の規模のプログラムに適用させる方法は書いていません。
デザインパターンのサンプルについても、自分の関わっているプログラムの
どこにどのように応用するかは、著者には判るはずがありません。

会社の先輩や同僚が教えることもある程度は可能ですが、
身に付くかどうかは最終的には本人の資質ではないかと思います。


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



Name: 初心者以下  ..ぴよぴよ(12ポイント)   Date: 2010/02/05(金) 23:05   No:47692       
Title: GroupBoxについて    
今、人が作成したツールを勉強がてら編集しているのですが、
GroupBoxの枠線のみ削除、または不可視にできるのでしょうか?

そのツールの背景色が黒になっているのですが、GroupBoxで囲っている3か所の枠線の
デフォルト色(灰色)?が不格好に目立つので削除したいのですが、可能ですか?

不可視にすると左上に配置してあるText(題名)まで消えてしまう為、困っています。

ご存知でしたら、ご教示ください。
よろしくお願い致します。

環境:VC++ VisualStudio2008 MFC


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


Name: 初心者以下  ..ぴよぴよ(114ポイント)   Date: 2010/02/05(金) 23:16   No:47694     
Title: Re:GroupBoxについて    
線で区切りを入れグループ化する表示用コントロールって
記載されていたので枠線を削除するとGroupBoxの意味がなくなりそうなので
枠線のみ削除するのは無理なんですかね・・・??


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

Name: バグ  ..ハッカー(189,498ポイント)   Date: 2010/02/06(土) 08:58   No:47711     
Title: Re:GroupBoxについて    
>>線で区切りを入れグループ化する表示用コントロールって 
>>記載されていたので枠線を削除するとGroupBoxの意味がなくなりそうなので 
>>枠線のみ削除するのは無理なんですかね・・・??

無理というよりも、ご自身の書かれているように無意味なので、そういう機能は無いのでしょう。
オーナードローを使用すればできない事はないでしょうが、そこまで苦労して実装するのならば、グループボックスの代わりにスタティックテキストを貼り付ければいいだけではないでしょうか?


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

Name: 初心者以下  ..ぴよぴよ(171ポイント)   Date: 2010/02/08(月) 09:10   No:47777 解決!     
Title: Re:GroupBoxについて    
バグ様

ご回答ありがとうございます。
無意味ですよね。。。
ご指摘いただいた通り、GroupBoxではなく
スタティックテキストにします。

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


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



Name: rugby_irukatachi  ..ぴよぴよ(200ポイント)   Date: 2010/02/07(日) 23:21   No:47757       
Title: 教えてください    
この問題はできるのでしょうか??
教えてください。

/*例題*/

観測回数 

X座標 X軸方向の流速
34.333 9.762
Y座標 Y軸方向の流速
448.111 -17.032
サイズ サイズの変化量
9.000 2.000 
0.000 0.000 


3
34.333 9.762
448.111 -17.032
9.000 2.000
0.000 0.000

3
20.615 5.329
688.385 -17.115
13.000 -1.000
0.000 0.000

3
1.200 0.200
1018.667 -17.333
15.000 1.000
0.000 0.000

3
0.375 0.042
1065.000 -17.500
8.000 2.000
0.000 0.000

3
53.750 17.114
22.333 -16.758
12.000 1.000
0.000 0.000





2
2014.273 -0.352
1233.727 17.727
11.000 3.000
0.000 0.000

2
2014.000 -0.625
1282.500 17.500
12.000 4.000
0.000 0.000

1
22.088 19.302
3.971 -20.493
34.000 6.000
0.000 0.000

1
19.636 16.812
122.909 -17.326
11.000 -6.000
0.000 0.000

のデータが6000個あります。

まず観測回数で昇順にソートして、その昇順に表示したものを

x軸方向の流速 + y軸方向の流速

で昇順にソートして並べて表示する問題です。


x座標、y座標、サイズ、サイズの変化量は今ないものとします。

プログラムおしえてください。



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


Name: たかぎ [URL]  ..ハッカー(159,151ポイント)   Date: 2010/02/07(日) 23:28   No:47758     
Title: Re:教えてください    
> この問題はできるのでしょうか?? 

できます。

> プログラムおしえてください。

何を知りたいのでしょうか?
単なる丸投げなら規約違反ですし、掲示板の外で連絡をいただければ作ることは可能です(もちろん有償で)。


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

Name: たかぎ [URL]  ..ハッカー(159,204ポイント)   Date: 2010/02/07(日) 23:36   No:47759     
Title: Re:教えてください    
http://oshiete1.goo.ne.jp/qa5657122.html
マルチポストですね。
これではまったく話になりません。


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

Name: rugby_irukatachi  ..ぴよぴよ(105ポイント)   Date: 2010/02/07(日) 23:38   No:47760     
Title: Re:教えてください    
観測回数でソートすることはできるのですが、


観測回数  
3  
X座標   X軸方向の流速 
34.333  9.762 
Y座標   Y軸方向の流速 
448.111 -17.032 
サイズ  サイズの変化量 
9.000   2.000  
0.000   0.000  

この状態からX流速、Y流速を抜き出して

X流速+Y流速

でソートしていく方法がわかりません。


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

Name: Mist  ..比類無きプログラマー(83,304ポイント)   Date: 2010/02/08(月) 04:21   No:47773     
Title: Re:教えてください    
http://www3.realint.com/cgi-bin/tarticles.cgi?pointc2+9786
どうも規約を読まない人みたい(^^;


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



Name: staff  ..かけだし(1,392ポイント)   Date: 2010/02/06(土) 00:54   No:47699       
Title: 計算プログラム    
はじめまして。

以下のプログラムを作成したんですが、初めて見るエラー?が出ました。これは何が原因なのでしょうか?

使っているのはC++で、始めて3カ月くらいです。



// kabe.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include "math.h"


int _tmain(int argc, _TCHAR* argv[])
{ 

FILE * fp;
FILE *file;
fp = fopen("data.txt","r");
file = fopen("result.txt","w");


double thi,tho; /*屋内,屋外温度*/
printf("屋内,屋外温度\n");
fscanf(fp,"%lf,%lf",&thi,&tho);
printf("thi = %f,tho = %f\n",thi,tho);

printf("\n");


double phi,pho; /*屋内,屋外相対湿度*/
printf("屋内,屋外相対湿度\n");
fscanf(fp,"%lf,%lf",&phi,&pho);
printf("phi = %f,pho = %f\n",phi,pho);

printf("\n");


double ai,ao; /*屋内,屋外熱伝達率*/
printf("屋内,屋外熱伝達率\n");
fscanf(fp,"%lf,%lf",&ai,&ao);
printf("ai = %f,ao = %f\n",ai,ao);

printf("\n");


double ai2,ao2; /*屋内,屋外湿気伝達率*/
printf("屋内,屋外湿気伝達率\n");
fscanf(fp,"%lf,%lf",&ai2,&ao2);
printf("ai2 = %f,ao2 = %f\n",ai2,ao2);

printf("\n");


int n; /*壁の層数*/
printf("壁の層数\n");
fscanf(fp,"%d",&n);
printf("n = %d\n",n);

printf("\n");


int t;
    double x[256],y[256],L[256]; /*熱伝導率,湿気伝導率,壁の厚さ*/
printf("熱伝導率,湿気伝導率,壁の厚さ\n");
for(t = 1;t <= n;t++) {
fscanf(fp,"%lf,%lf,%lf",&x[t],&y[t],&L[t]);
printf("x[%d] = %f,y[%d] = %f,L[%d] = %f\n",t,x[t],t,y[t],t,L[t]);
}

printf("\n");

double LL[256]; /*屋内壁表面からの距離*/
printf("屋内壁表面からの距離\n");
for(t = 1;t <= n+1;t++) {
if(t == 1) {
LL[t] = 0;
printf("LL[%d] = %fm\n",t,LL[t]);
} else {
LL[t] = LL[t-1] + L[t-1];
printf("LL[%d] = %fm\n",t,LL[t]);
}
}

printf("\n");


double q,K,R = 0,c[256],th[256]; /*屋内,壁表面,壁内,屋外の温度*/
fprintf(file,"屋内,壁表面,壁内,屋外の温度\n");
for(t = 1;t <= n;t++) {
c[t] =L[t]/x[t];
R = R + c[t];
} 
K = 1/ai + R + 1/ao;
q = 1/K * (thi - tho);
fprintf(file,"thi = %f℃\n",thi);
for(t = 1;t <= n+1;t++) {
if (t == 1) {
th[t] = thi - q/ai;
} else {
th[t] = th[t-1] - q*c[t-1];
}
fprintf(file,"%fm:%f℃\n",LL[t],th[t]);
}
fprintf(file,"tho = %f℃\n",tho);

printf("\n");


double fs[256],fsi,fso; /*屋内,壁表面,壁内,屋外の飽和水蒸気圧*/
fprintf(file,"屋内,壁表面,壁内,屋外の飽和水蒸気圧\n");
    fsi = 0.1333 * exp(18.6686 - 4030.183/(235 + thi));
fsi = fsi * 1000;
    fso = 0.1333 * exp(18.6686 - 4030.183/(235 + tho));
fso = fso * 1000;
fprintf(file,"fsi = %f\n",fsi);
for(t = 1;t <= n+1;t++) {
fs[t] = 0.1333 * exp(18.6686 - 4030.183/(235 + th[t]));
fs[t] = fs[t] * 1000;
fprintf(file,"%fm:%f\n",LL[t],fs[t]);
}
fprintf(file,"fso = %f\n",fso);

printf("\n");


double lmdd[256],alfdi,cd[256],fi,fo,f[256],W,Kd,rd[256],Rd = 0; /*屋内,壁表面,壁内,屋外水蒸気圧*/

fprintf(file,"屋内,壁表面,壁内,屋外の水蒸気圧\n");
    fi = phi/100 * fsi;
    fo = pho/100 * fso;
fprintf(file,"fi = %f\n",fi);
for(t = 1;t <= n;t++) {
rd[t] = L[t]/lmdd[t];
Rd = Rd + rd[t];
}
Kd = 1/ai2 + Rd + 1/ao2;
W = 1/Kd * (fi - fo);
    for(t = 1;t <= n+1;t++) {
if (t == 1) {
f[t] = fi - W/alfdi;
} else {
f[t] = f[t-1] - W*cd[t-1];
}
fprintf(file,"%fm:%f\n",LL[t],f[t]);
}
fprintf(file,"fo = %f\n",fo);

printf("\n");


fclose(file);
fclose(fp);

fflush(stdin);
getchar();

return 0;
}

またここで使われているdata.txtの内容は以下のような感じです。
25,5
60,80
10,25
0.125,0.5
4
0.15,0.000018,5
1.10,0.00005,180
0.05,0,0011,150
1.30,0.000025,5




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


Name: sizuma [URL]  ..プログラマー(33,714ポイント)   Date: 2010/02/06(土) 01:12   No:47700     
Title: Re:計算プログラム    
どのようなエラーがでたのでしょうか?

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

Name: staff  ..ぴよぴよ(747ポイント)   Date: 2010/02/06(土) 01:26   No:47702     
Title: Re:計算プログラム    
>どのようなエラーがでたのでしょうか?

最初に英語で


Debug Assertion Failed!




中止 再試行 無視 ←選択するボタンみたいな感じです


それから無視を選ぶと



Microsoft Visual Studio C ランタイム ライブラリは kabe.exe に致命的なエラーを検出しました。

[中断] をクリックしてプログラムをデバッグするか、または [続行] をクリックしてプログラムを終了してください。



という画面が出てきて続行を選ぶと

/***
*dbghook.c - Debug CRT Hook Functions
*
*       Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
*       Allow users to override default alloc hook at link time.
*
*******************************************************************************/

#include <dbgint.h>

#ifdef _DEBUG

#include <internal.h>
#include <limits.h>
#include <mtdll.h>
#include <malloc.h>
#include <stdlib.h>

_CRT_ALLOC_HOOK _pfnAllocHook = _CrtDefaultAllocHook;

/***
*int _CrtDefaultAllocHook() - allow allocation
*
*Purpose:
*       allow allocation
*
*Entry:
*       all parameters ignored
*
*Exit:
*       returns TRUE
*
*Exceptions:
*
*******************************************************************************/
int __cdecl _CrtDefaultAllocHook(
        int nAllocType,
        void * pvData,
        size_t nSize,
        int nBlockUse,
        long lRequest,
        const unsigned char * szFileName,
        int nLine
        )
{
        return 1; /* allow all allocs/reallocs/frees */
}

#endif  /* _DEBUG */

int _debugger_hook_dummy;

#ifdef _M_IA64
#undef _CRT_DEBUGGER_HOOK
#define _CRT_DEBUGGER_HOOK __crt_debugger_hook
#endif  /* _M_IA64 */

__declspec(noinline)
void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved)
{
    /* assign 0 to _debugger_hook_dummy so that the function is not folded in retail */
    (_Reserved);
    _debugger_hook_dummy = 0;
}



というタグが出てきました。


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

Name: sizuma [URL]  ..プログラマー(34,077ポイント)   Date: 2010/02/06(土) 01:55   No:47706     
Title: Re:計算プログラム    
実行時エラーなんですね。
C++は勉強不足なんで間違いがあるかもしれませんが。

ていうかこれコンパイル通ったんですか?

>double phi,pho; /*屋内,屋外相対湿度*/
>printf("屋内,屋外相対湿度\n");
>fscanf(fp,"%lf,%lf",φ,&pho);
>printf("phi = %f,pho = %f\n",phi,pho);


φ→&phiですよね。

あとは、

>double lmdd[256],alfdi,cd[256],fi,fo,f[256],W,Kd,rd[256],Rd = 0
のalfdiが初期化されずに使われてるってでてきます。
どんな値を設定すればいいのかわからないんで、ココから先は僕には分からないです。

stdat.hがあるってことはVC++なんでしょうか(ここらへんよくわからないですが
コンソールに表示されなくなったあたりにブレークポイントを貼って、ステップ実行すれば何処でエラーになるかわかりますよ。
一応ちょっと前にブレークポイントの張り方の説明をしたのを
ぺたっと
http://tsizu.blog45.fc2.com/blog-entry-85.html


 編集済み


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

Name: staff  ..ぴよぴよ(789ポイント)   Date: 2010/02/06(土) 02:21   No:47708     
Title: Re:計算プログラム    
ブレークポイントの使い方がよくわかりません…orz


貼りつけてあったのを参考にしながら試したんですが、また変なタグが出てきました。


/***
*fopen.c - open a file
*
*       Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines fopen() and _fsopen() - open a file as a stream and open a file
*       with a specified sharing mode as a stream
*
*******************************************************************************/

#include <cruntime.h>
#include <stdio.h>
#include <share.h>
#include <dbgint.h>
#include <internal.h>
#include <mtdll.h>
#include <file2.h>
#include <tchar.h>
#include <errno.h>

/***
*FILE *_fsopen(file, mode, shflag) - open a file
*
*Purpose:
*       Opens the file specified as a stream.  mode determines file mode:
*       "r": read       "w": write      "a": append
*       "r+": read/write                "w+": open empty for read/write
*       "a+": read/append
*       Append "t" or "b" for text and binary mode. shflag determines the
*       sharing mode. Values are the same as for sopen().
*
*Entry:
*       char *file - file name to open
*       char *mode - mode of file access
*
*Exit:
*       returns pointer to stream
*       returns NULL if fails
*
*Exceptions:
*
*******************************************************************************/

FILE * __cdecl _tfsopen (
        const _TSCHAR *file,
        const _TSCHAR *mode
        ,int shflag
        )
{
        REG1 FILE *stream=NULL;
        REG2 FILE *retval=NULL;

        _VALIDATE_RETURN((file != NULL), EINVAL, NULL);
        _VALIDATE_RETURN((mode != NULL), EINVAL, NULL);
        _VALIDATE_RETURN((*mode != _T('\0')), EINVAL, NULL);

        /* Get a free stream */
        /* [NOTE: _getstream() returns a locked stream.] */

        if ((stream = _getstream()) == NULL)
        {
                errno = EMFILE;
                return(NULL);
        }

        __try {
        /* We deliberately don't hard-validate for emptry strings here. All other invalid
        path strings are treated as runtime errors by the inner code in _open and openfile.
        This is also the appropriate treatment here. Since fopen is the primary access point
        for file strings it might be subjected to direct user input and thus must be robust to
        that rather than aborting. The CRT and OS do not provide any other path validator (because
        WIN32 doesn't allow such things to exist in full generality).
        */
        if(*file==_T('\0'))
        {
            errno=EINVAL;
            return NULL;
        }

        /* open the stream */
#ifdef _UNICODE
        retval = _wopenfile(file,mode,shflag,stream);
#else  /* _UNICODE */
        retval = _openfile(file,mode,shflag,stream);
#endif  /* _UNICODE */

        }
        __finally {
                _unlock_str(stream);
        }

        return(retval);
}


/***
*FILE *fopen(file, mode) - open a file
*
*Purpose:
*       Opens the file specified as a stream.  mode determines file mode:
*       "r": read       "w": write      "a": append
*       "r+": read/write                "w+": open empty for read/write
*       "a+": read/append
*       Append "t" or "b" for text and binary mode
*
*Entry:
*       char *file - file name to open
*       char *mode - mode of file access
*
*Exit:
*       returns pointer to stream
*       returns NULL if fails
*
*Exceptions:
*
*******************************************************************************/

FILE * __cdecl _tfopen (
        const _TSCHAR *file,
        const _TSCHAR *mode
        )
{
        return( _tfsopen(file, mode, _SH_DENYNO) );
}

/***
*errno_t _tfopen_s(pfile, file, mode) - open a file
*
*Purpose:
*       Opens the file specified as a stream.  mode determines file mode:
*       "r": read       "w": write      "a": append
*       "r+": read/write                "w+": open empty for read/write
*       "a+": read/append
*       Append "t" or "b" for text and binary mode
*       This is the secure version fopen - it opens the file in _SH_DENYRW
*       share mode.
*
*Entry:
*       FILE **pfile - Pointer to return the FILE handle into.
*       char *file - file name to open
*       char *mode - mode of file access
*
*Exit:
*       returns 0 on success & sets pfile
*       returns errno_t on failure.
*
*Exceptions:
*
*******************************************************************************/

errno_t __cdecl _tfopen_s (
        FILE ** pfile,
        const _TSCHAR *file,
        const _TSCHAR *mode
        )
{
        _VALIDATE_RETURN_ERRCODE((pfile != NULL), EINVAL);
        *pfile = _tfsopen(file, mode, _SH_SECURE);

        if(*pfile != NULL)
            return 0;

        return errno;
}
 編集済み


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

Name: sizuma [URL]  ..プログラマー(34,169ポイント)   Date: 2010/02/06(土) 02:48   No:47709     
Title: Re:計算プログラム    
とりあえず、alfdiには何を設定するんですか?
修正して貼り付けてくれれば、弄ってみますけど。

詳しい人が書き込んでくれればそれを参考にしてください。


>ブレークポイント
デバッグがかなり楽になるんで、使い方は知っておいたほうがいいですよ。
どっか参考になるサイトとかあるんじゃないですかね。
と、一応。


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

Name: ただの通りすがり(二年生)  ..ぴよぴよ(227ポイント)   Date: 2010/02/06(土) 04:57   No:47710     
Title: Re:計算プログラム    
コンパイルが通らないコードは書かないほうがいいよ
上のコードのφはphiだね?
あと
0.15,0.000018,5
1.10,0.00005,180
0.05,0,0011,150
1.30,0.000025,5



0011は左の0,が0.の間違いだね?

プログラムは順番に動くんだから、動くところまでコードをコメントアウトしたり、
breakポイントを置いて、デバッグで開始したほうがいいかも

今回のはエラーはポインタがおかしいから出ている。
data.txtにはどこに置いてますか?
fopenはVC++でプログラムを組んでいるなら、デバッグで開始するときに、
プログラムの出力先(exeが出る所、デフォルトだとdebugとかrelease)にdata.txtが置かれていないと
読み込ませんので今後注意してくださいね。
FILE *fp
fp = fopen("data.txt","r");
のところで読み込めない時の処理(returnするなり, printfでメッセージを出すなり,
exit( 0 )するなり)を入れた方がいいです。
あと変数の初期化が全くされていませんが大丈夫ですか?
変数を初期化する癖をつけましょう。

今回のエラーはファイルの読み込みに失敗で出たものです。

一応動くものを上げておきますのでご確認ください。

 編集済み


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

Name: staff  ..ぴよぴよ(818ポイント)   Date: 2010/02/06(土) 22:44   No:47722     
Title: Re:計算プログラム    
すいません…。

上のプログラムはどのようにすれば使えるんですか?


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

Name: ただの通りすがり(二年生)  ..ぴよぴよ(297ポイント)   Date: 2010/02/07(日) 00:25   No:47723     
Title: Re:計算プログラム    
コマンドプロンプトから実行ファイルを実行する

ソースコードが付いてあるからコンパイルして実行すればいいのではないでしょうか?




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

Name: staff  ..ぴよぴよ(832ポイント)   Date: 2010/02/08(月) 00:57   No:47763 解決!     
Title: Re:計算プログラム    
ありがとうございました。無事に解決しました。

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



Name: かなで  ..ぴよぴよ(352ポイント)   Date: 2010/02/05(金) 14:32   No:47662       
Title: マウスカーソルの移動範囲を制限する    
マウスカーソルの移動範囲を制限するソースをかいております。
しかし下記のソースで上手く動きません。
X軸の制限はできるのですがY軸の制限位置が240px下になってしまっております。
なぜなのでしょうか・・・?

WIN_W 640
WIN_H 480

</pre>
    // マウスカーソルの移動範囲を制限する    
    int WINDOW_X = ((GetSystemMetrics( SM_CXSCREEN ) - WIN_W ) / 2);  // ウィンドウの表示位置
    int WINDOW_Y = ((GetSystemMetrics( SM_CXSCREEN ) - WIN_H ) / 2); // ウィンドウの表示位置
    RECT rect;
    rect.left   = WINDOW_X;
    rect.top    = WINDOW_Y;
    rect.right  = WINDOW_X + WIN_W;
    rect.bottom = WINDOW_Y + WIN_H;
    ClipCursor( &rect );
<pre>


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


Name: 御津凪 [URL]  ..ハッカー(139,737ポイント)   Date: 2010/02/05(金) 14:44   No:47664     
Title: Re:マウスカーソルの移動範囲を制限する    
int WINDOW_Y = ((GetSystemMetrics( SM_CXSCREEN ) - WIN_H ) / 2);

となっています。

int WINDOW_Y = ((GetSystemMetrics( SM_CYSCREEN ) - WIN_H ) / 2);

が正しいのではないでしょうか。


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

Name: かなで  ..ぴよぴよ(529ポイント)   Date: 2010/02/07(日) 02:38   No:47727     
Title: Re:マウスカーソルの移動範囲を制限する    
御津凪様

あ〜!!!!
すみません。ケアレスミスをしておりました・・・。
ご指摘ありがとうございます。

ただ修正してみたのですがメニューバー分? 範囲が下から始まってしまいます。

なぜなのでしょうか?

┌─────────┐
│         │
│─────────│
│         │
│         │ ←ここらへんから始まります。
│         │
│         │
└─────────┘



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

Name: 御津凪 [URL]  ..ハッカー(139,927ポイント)   Date: 2010/02/07(日) 20:41   No:47755     
Title: Re:マウスカーソルの移動範囲を制限する    
ウインドウのクライアント領域部分の中心位置がちゃんと画面全体の中心にあるのでしょうか?

CreateWindow 関数で指定したウインドウサイズはウインドウそのもののサイズで、
クライアント領域のサイズはそれより小さくなります。

もしクライアント領域のサイズ調整が行われていないのなら、そのようにずれるのは当たり前なのですが。
(同様に左右の枠のサイズ分ずれているはずです)

さらに確認なのですが、そのウインドウは絶対的に画面中央に置かれるのでしょうか?
質問欄に書かれているコードでは作成されたウインドウにかかわらず、常に画面の中央でカーソルの移動制限が行われることになります。


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



Name: 山口  ..ぴよぴよ(723ポイント)   Date: 2010/02/05(金) 14:16   No:47661       
Title: AeroBeatPlusのスタッフロール    
AeroBeatPlusのスタッフロールについての質問です。
あの様な光の弾の分散ってどのように行っているのでしょうか?

あらかじめ弾がどっち方向に飛ぶかをテーブルでもっていたりするのでしょうか?
そしたらかなりの弾の個数を制御してますよね?


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


Name: Justy  ..伝説なるハッカー(497,891ポイント)   Date: 2010/02/05(金) 20:37   No:47676     
Title: Re:AeroBeatPlusのスタッフロール    
>あの様な光の弾の分散ってどのように行っているのでしょうか?
> あらかじめ弾がどっち方向に飛ぶかをテーブルでもっていたりするのでしょうか? 
 十中八九、ランダムです。
 光の大きさと飛ぶベクトル(移動方向&移動量を)をランダムで、
タイミング毎……最初の移動、中央で減速したとき、最後に画面外に消えていく時、
あと中央で減速した瞬間のそれぞれでフレームあたりの光の放出数を調整していると思われます。


>そしたらかなりの弾の個数を制御してますよね?
 かなりというほどではないでしょうけど、そうですね。
 一種のパーティクルですから。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,146,108ポイント)   Date: 2010/02/05(金) 22:38   No:47689     
Title: Re:AeroBeatPlusのスタッフロール    
Justyさんが余すところなく説明されているので、言うことありませんw

ところで、似たようなサンプルを以前作ったことがあるのでよければご覧ください。
RemicalSoftのロゴを表現するものも一緒に入っています。

http://dixq.net/zip/bbs/LogoEffect.zip


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

Name: 山口  ..かけだし(1,457ポイント)   Date: 2010/02/07(日) 02:33   No:47726     
Title: Re:AeroBeatPlusのスタッフロール    
皆様ご回答ありがとうございます。

管理人様ソースありがとうございます。
取りあえずは自分なりにソースを書いてみたのですが
どうしても一か所だけ上手くいきません。
というのも
必ず移動量(speed)が2種類しかでない?です。
方向は確実にランダムに飛ぶのですが全体的に○を描いて進みます。

#define    EFFECT_MAX    256

// 20100205 

typedef struct{
    bool Flg;
    float Px,Py,Mx,My,Zx,Zy;
    float speed;
    float rot;
    int    Air;
    int Cnt;
}OBJ;

OBJ    Effect[EFFECT_MAX];
    if(Key[KEY_INPUT_SPACE].trgKey){
        for(int i=0; i<EFFECT_MAX; i++){
            if(Effect[i].Flg == false){
                Effect[i].Flg = true;
                Effect[i].Cnt = 0;
                Effect[i].Px = 320;
                Effect[i].Py = 240;
                Effect[i].Air = 255;
                Effect[i].Zx = float((rand()%10/10)) + 1.0f;
                Effect[i].Zy = Effect[i].Zx;

                Effect[i].speed = float((rand()%20/10)) + 2.0f;
                Effect[i].rot = float(rand()%360);
                Effect[i].rot = float(Effect[i].rot/180*M_PI);
                Effect[i].Mx = cos(Effect[i].rot) * Effect[i].speed;
                Effect[i].My = sin(Effect[i].rot) * Effect[i].speed;
            }
        }
    }

    for(int i=0; i<EFFECT_MAX; i++){
        if(Effect[i].Flg == true){
            Effect[i].Cnt++;
            if(Effect[i].Cnt >= 100) Effect[i].Flg = false;
            Effect[i].Air -= 255/100;
            Effect[i].Px += Effect[i].Mx;
            Effect[i].Py += Effect[i].My;
        }
    }
〜処理〜
//////////////////////
描画処理 
    for(int i=0; i<EFFECT_MAX; i++){
        if(Effect[i].Flg == true){
            DrawCenter( (int)Effect[i].Px , (int)Effect[i].Py  , H_effect , Effect[i].Air  ,Effect[i].Zx , Effect[i].Zy) ;
        }
    }

//  中心点表示
void DrawCenter(int x,int y,int GrHandle,int Alpha, float Zx, float Zy){

    //  透明度
    int Air = Alpha;
    if(Air <= 0) Air = 0;
    else if(Air >= 255) Air = 255;

    //  画像サイズ
    int SizeX,SizeY;
    GetGraphSize( GrHandle , &SizeX , &SizeY ) ;

    // 描画ブレンドモードをαブレンドにする
    SetDrawBlendMode(DX_BLENDMODE_ALPHA,Air);
    // グラフィックの描画
    DrawExtendGraph( x , y , int(x + SizeX * Zx) , int(y + SizeY*Zy) , GrHandle , TRUE ) ;
    // 描画ブレンドモードをノーブレンドにする
    SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 );
    
}



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

Name: Justy  ..伝説なるハッカー(498,542ポイント)   Date: 2010/02/07(日) 02:44   No:47728     
Title: Re:AeroBeatPlusのスタッフロール    
>float((rand()%20/10))
 見た感じこの式が拙そうです。
 rand()%20は 0〜19の範囲で出力されますが、/10をした段階で 0と 1の2つしか残りません


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

Name: 山口  ..かけだし(1,462ポイント)   Date: 2010/02/07(日) 05:33   No:47729     
Title: Re:AeroBeatPlusのスタッフロール    
すみません><出来ました。
ご指摘ありがとうございます。


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +