C言語何でも質問掲示板


Total hit  今日  昨日  

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

 
   フルスクリーン [C#]   
     ・[63183] dic 
     ・[63224] black_cat 
   マスク関数の使用法に ....   
     ・[62915] dic 
     ・[62948] ACE 
     ・[62949] シエル 
     ・[63046] ACE 
     ・[63166] dic 
     ・[63198] ACE 
   配列の要素を増やすか ....   
     ・[63186] dic 
     ・[63190] NANA 
   iphone Viewの分割表示 ....   
   配布掲示板のパラメー ....   
     ・[63167] dic 
     ・[63169] 438番 
   ゲーム公開   
     ・[63033] gyz 
     ・[63121] Tatu 
     ・[63157] CorzY 
   ファイルのコピー   
     ・[63145] ぽこ 
     ・[63148] IT侍 
     ・[63151] みけCAT 
   直線と円の当たり判定   
     ・[63138] rexrexrex 
     ・[63139] Ultimate 
     ・[63140] Ultimate 
     ・[63144] ぽこ 
     ・[63147] Ultimate 
     ・[63149] ぽこ 
     ・[63150] Ultiamte 
   自機と敵機の角度   
     ・[63093] Ultimate 
     ・[63094] みけCAT 
     ・[63096] Ultimate 
     ・[63097] みけCAT 
     ・[63098] Ultimate 
     ・[63103] Ultimate 
     ・[63108] みけCAT 
     ・[63109] みけCAT 
     ・[63120] Ultiamte 
   プロトタイプ宣言の必 ....   
     ・[63089] たかぎ 
     ・[63110] へろり 
     ・[63111] たかぎ 
     ・[63113] みけCAT 
   売れるiPhoneアプリゲ ....   
     ・[62931] Dixq (管理人) 
     ・[63018] カイリ 
     ・[63039] ISLe 
     ・[63050] Justy 
     ・[63072] カイリ 
     ・[63084] ひよこ 
     ・[63100] Dixq (管理人) 
     ・[63105] softya 
     ・[63107] Justy 
   DrawRotaGraphF相当の ....   
     ・[63104] 迷彩吹雪 
     ・[63106] みけCAT 
   Unicodeと静的リンクラ ....   
     ・[63054] りゅん 
     ・[63056] たかぎ 
     ・[63057] うしお 
     ・[63058] たかぎ 
     ・[63059] りゅん 
     ・[63060] うしお 
     ・[63088] たかぎ 
     ・[63095] うしお 
     ・[63099] たかぎ 
     ・[63102] うしお 
   龍神録の8章について   
     ・[63001] fatens 
     ・[63003] softya 
     ・[63073] dkns 
     ・[63082] dkns 
   正しく入力できないの ....   
     ・[63019] softya 
     ・[63024] みけCAT 
     ・[63025] softya 
     ・[63026] みけCAT 
     ・[63027] みけCAT 
     ・[63028] softya 
     ・[63077] きのこのこのこ 
   無題   
     ・[63061] 初級者 
     ・[63064] hax 
     ・[63065] softya 
     ・[63066] hax 
     ・[63068] Dixq (管理人) 
     ・[63070] softya 
     ・[63071] hax 
     ・[63075] みけCAT 
   検索&置換ボックスが ....   
     ・[63069] Dixq (管理人) 
     ・[63074] アトラス 
   C言語取得   
     ・[62952] シエル 
     ・[62953] シエル 
     ・[62955] Dixq (管理人) 
     ・[62957] ポルク 
     ・[62959] ポルク 
     ・[62967] へろり 
     ・[62976] 白 
     ・[63063] ポルク 
   座標の回転   
   placement new につい ....   
     ・[62911] たかぎ 
     ・[62932] 山崎 
     ・[62954] ISLe 
     ・[62969] 山崎 
     ・[62970] めるぽん 
     ・[62977] ookami 
     ・[63037] ISLe 
     ・[63051] 山崎 
   GDIのみでゲーム作り   
     ・[63041] シエル 
     ・[63042] WHITE 
     ・[63045] シエル 
     ・[63048] softya 
     ・[63049] WHITE 
   グローバル変数   
     ・[63035] みけCAT 
     ・[63036] Dixq (管理人) 
     ・[63038] Dixq (管理人) 
     ・[63043] 笹身 
     ・[63044] 笹身 
   LoadDivGraph相当のコ ....   
     ・[63029] softya 
     ・[63030] みけCAT 
     ・[63031] みけCAT 
   無題   
     ・[62962] みけCAT 
     ・[62963] たかぎ 
     ・[62964] しろ 
     ・[62965] みけCAT 
     ・[62971] hax 
     ・[62972] ookami 
     ・[62973] hax 
     ・[62974] hax 
     ・[62975] hax 
     ・[62978] ookami 
     ・[62980] hax 
     ・[62982] ookami 
     ・[62983] hax 
     ・[62984] ookami 
     ・[62985] hax 
     ・[62986] hax 
     ・[62987] ookami 
     ・[62989] hax 
     ・[62990] ookami 
     ・[62991] みけCAT 
     ・[62992] hax 
     ・[62993] ookami 
     ・[62995] hax 
     ・[62996] ookami 
     ・[62997] hax 
     ・[62998] hax 
     ・[62999] ookami 
     ・[63000] hax 
     ・[63002] ookami 
     ・[63004] hax 
     ・[63005] hax 
     ・[63007] hax 
     ・[63008] hax 
     ・[63009] ookami 
     ・[63014] hax 
   なんというか   
     ・[62880] fr 
     ・[62881] シエル 
     ・[62882] シエル 
     ・[62901] Justy 
     ・[62902] softya 
     ・[62907] へろり 
     ・[62912] dic 
     ・[62914] dic 
     ・[62917] 住所特定反対 
     ・[62920] ookami 
     ・[62935] Dixq (管理人) 
     ・[62937] dic 
     ・[62938] やっくん 
     ・[62940] シエル 
     ・[62945] MNS 
     ・[62947] softya 
     ・[62966] へろり 
     ・[62981] へろり 
     ・[62988] softya 
   合計値   
     ・[62809] みけCAT 
     ・[62814] kokuoutyou 
     ・[62815] ai 
     ・[62816] みけCAT 
     ・[62817] ookami 
     ・[62818] kokuoutyou 
     ・[62819] kokuoutyou 
     ・[62820] ai 
     ・[62821] 住所特定大反対 
     ・[62822] ookami 
     ・[62916] ai 
     ・[62918] 住所特定反対 
     ・[62933] Dixq (管理人) 
     ・[62979] 一般的な名前 
   C# Box2D 画像適用2   
     ・[62856] black_cat 
     ・[62858] Justy 
     ・[62861] black_cat 
     ・[62888] black_cat 
     ・[62900] Justy 
     ・[62904] black_cat 
     ・[62946] Justy 
     ・[62968] black_cat 
   conio.hをUNIXで使う方 ....   
     ・[62923] おこちゃま 
     ・[62924] toyo 
     ・[62925] おこちゃま 
     ・[62926] ISLe 
     ・[62927] おこちゃま 
     ・[62930] ISLe 
     ・[62936] おこちゃま 
     ・[62956] ISLe 
   ファイルの書き出し   
     ・[62702] softya 
     ・[62705] kokuoutyou 
     ・[62709] softya 
     ・[62712] みけCAT 
     ・[62729] kokuoutyou 
     ・[62730] softya 
     ・[62740] みけCAT 
     ・[62741] softya 
     ・[62752] kokuoutyou 
     ・[62753] みけCAT 
     ・[62762] softya 
     ・[62776] kokuoutyou 
     ・[62778] シエル 
     ・[62779] たかぎ 
     ・[62780] softya 
     ・[62781] みけCAT 
     ・[62782] kokuoutyou 
     ・[62783] softya 
     ・[62784] みけCAT 
     ・[62785] みけCAT 
     ・[62786] kokuoutyou 
     ・[62788] みけCAT 
     ・[62789] みけCAT 
     ・[62790] kokuoutyou 
     ・[62791] みけCAT 
     ・[62794] kokuoutyou 
     ・[62797] みけCAT 
     ・[62798] softya 
     ・[62799] kokuoutyou 
     ・[62800] kokuoutyou 
     ・[62801] みけCAT 
     ・[62802] kokuoutyou 
     ・[62803] kokuoutyou 
     ・[62804] みけCAT 
     ・[62805] kokuoutyou 
     ・[62808] みけCAT 
     ・[62810] みけCAT 
     ・[62812] toyo 
     ・[62813] kokuoutyou 
     ・[62824] みけCAT 
     ・[62827] kokuoutyou 
     ・[62828] kokuoutyou 
     ・[62829] みけCAT 
     ・[62831] kokuoutyou 
     ・[62833] みけCAT 
     ・[62835] kokuoutyou 
     ・[62836] kokuoutyou 
     ・[62838] みけCAT 
     ・[62839] kokuoutyou 
     ・[62846] ookami 
     ・[62848] kokuoutyou 
     ・[62850] softya 
     ・[62853] みけCAT 
     ・[62854] kokuoutyou 
     ・[62855] kokuoutyou 
     ・[62860] みけCAT 
     ・[62862] kokuoutyou 
     ・[62944] みけCAT 

Name: black_cat  ..入門者(3,227ポイント)   Date: 2010/10/10(日) 22:51   No:63165       
Title: フルスクリーン [C#]    
C#でウインドウをフルスクリーンにするときに、
ほんの一瞬画面が白くなるのを防ぎたいのですが、
なにかやり方はあるのでしょうか?

もし出来ないのなら、白くなるのを黒くなるのに変えるのでもいいです。

よろしくお願いします。


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


Name: dic  ..ハッカー(105,637ポイント)   Date: 2010/10/10(日) 23:56   No:63183     
Title: Re:フルスクリーン [C#]    
C#はわかりませんが、
ウィンドウクラスの構造体の情報に背景の色をBLACKにしてみてはどうでしょう?


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

Name: black_cat  ..入門者(3,258ポイント)   Date: 2010/10/11(月) 08:08   No:63224 解決!     
Title: Re:フルスクリーン [C#]    
ありがとうございます。><

画面が切り替わるときの一瞬の色が黒になりました!
 編集済み


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



Name: ACE  ..ぴよぴよ(90ポイント)   Date: 2010/10/08(金) 14:18   No:62913       
Title: マスク関数の使用法について    
始めましてACEという者です。現在サークル活動でゲーム制作を行っております。
今回はマスク関数の使用法について質問させていただきます。

以前サークルで作ったゲームを配布しようとなったときに他の環境下でも動くか確認したことがあるのですが、
マスク処理が正常に行われないパソコンがありました。当時は締め切りも近く、急遽違う処理を実装して配布しました。

それ以降ゲーム制作にマスク処理を使わないようにしてきたのですが、今制作中のゲームで実装したい表現に
どうしても使わざるを得なくなっています。
今思うと環境依存ではなく私の実装方法が間違っていたのかもしれません。

そこで、関数の使い方や用意するマスク画像等マスク処理を行うときに注意しなければならないことについて
助言いただければと思います。


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


Name: dic  ..ハッカー(104,609ポイント)   Date: 2010/10/08(金) 14:21   No:62915     
Title: Re:マスク関数の使用法について    
参考にならないハッカーですが
思いつく限りではデスクトップの画像の扱い方かもしれません
8ビット環境、16ビット、24ビット、32ビット
なおかつその中での色素のビットマスクが違う環境があります
使用しているビデオカードの色素の取り扱い方が違います
これ以上は詳しくはないです


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

Name: ACE  ..ぴよぴよ(100ポイント)   Date: 2010/10/09(土) 00:44   No:62948     
Title: Re:マスク関数の使用法について    
dicさん、ご返答ありがとうございます。
やはりマスク処理は環境依存が強いのでしょうか。
こちらの管理人様が公開されているAerobeatでは随所でマスク処理が
使われていて、それに近い表現をしてみたいと思ったのですが…。


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

Name: シエル [URL]  ..比類無きプログラマー(87,359ポイント)   Date: 2010/10/09(土) 00:57   No:62949     
Title: Re:マスク関数の使用法について    
ちょっと返答がしにくいですね。

関数の使い方といっても、まず何のライブラリで開発されてるのかわからないので
具体的なアドバイスが出来ません。

また、マスク処理が正常に行われないとありますが、その時の状況もわからないので
具体的なアドバイスは難しいかと。

DXライブラリだったら、私はさっぱりわからないので具体的なアドバイスはできませんが。


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

Name: ACE  ..ぴよぴよ(261ポイント)   Date: 2010/10/09(土) 20:01   No:63046     
Title: Re:マスク関数の使用法について    
>シエルさん
申し訳ありません。詳しい説明もせずに質問していました。

開発環境はC/C++とDXライブラリです。
不具合の具体的な内容としては、マスク画像で隠したい部分がまったく隠れていなかったということです。
マスク画像を変更してみたりもしましたが改善が見られなかったので、
マスク機能自体がうまく動いてないものと認識しています。

因みに正常動作した環境はvista/ノートPC一台、XP/デスクトップPC三台です。
異常動作した環境はXP/ノートPC二台になります。


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

Name: dic  ..ハッカー(105,337ポイント)   Date: 2010/10/10(日) 22:52   No:63166     
Title: Re:マスク関数の使用法について    
マスク処理関数内でどのような処理をしているかを書いてくれる
よりアドバイスされるかと思います


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

Name: ACE  ..ぴよぴよ(698ポイント)   Date: 2010/10/11(月) 00:31   No:63198     
Title: Re:マスク関数の使用法について    
>dicさん
以下に当時のコードのマスクに関係する部分を記載します。
二年前のコードなのですが覚えている範囲でコメントを追加しました。

//ゲームシーンのコンストラクタ
Result::Result(){
 (中略)
  CreateMaskScreen();     //マスク画面の作成
  graph.push_back(LoadMask("graph/black.bmp"));   //std::vectorにハンドル追加
  DrawMask(0,0,graph[22],DX_MASKTRANS_NONE);      //追加したハンドルでマスク描画
  SetUseMaskScreenFlag(FALSE);                    //一時的にマスク使用フラグを折る
}

//描画関数
void Result::Draw(){
  (マスクを適用しない部分の描画)
  SetUseMaskScreenFlag(TRUE);
 (マスクを適用する部分の描画)
  SetUseMaskScreenFlag(FALSE);
}

//ゲームシーンのデストラクタ
Result::~Result(){
 (中略)
  DeleteMaskScreen();        //マスク画面の削除
}


DXライブラリのレファレンスにあるサンプルプログラムを参考にしました。


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



Name: NANA  ..ぴよぴよ(472ポイント)   Date: 2010/10/10(日) 23:31   No:63172       
Title: 配列の要素を増やすか否か    
いつもお世話になっております。
現在、想定ミスで、配列の要素を増やすか、増やさないかを検討しております。

具体的には、2Dアクションゲームを作成していて
array[64][64](左から、「種類」「行動パターン」)と配列を定義していました。
「種類」にはプレイヤー1・プレイヤー2・敵1・敵2・アイテム1〜などとしていたのですが
array[64][64][64]として「大項目」「小項目」「行動パターン」として
「プレイヤー」の「1番」が「待機中」などとしたほうが、プログラム的に都合がいいこと(プレイヤー全体に何かをさせたいときなど…)に気づき、現在要素を増やそうかと思っています。

ただ、ささいなことですが、「安易に要素を増やしていいのか?」と思いました。
要素を増やせば、プログラムを書き換える作業も発生するし、負荷も増えてしまうので、
無理に変えず、今のままで、突っ切ってもいいのかな?と思いました。

これを書きながら、「普通に増やしたほうがいい」とは思っているのですが、
なんとなく気にかかったので、皆様の意見をいただければ幸いです。

以上となります。
くだらない質問ですが、どうかよろしくお願いいたします。


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


Name: dic  ..ハッカー(105,692ポイント)   Date: 2010/10/11(月) 00:01   No:63186     
Title: Re:配列の要素を増やすか否か    
まだ、手付け初めの段階なら3次元配列に変更していいと思います
ただ、結構途中まで作ってるなら2次元配列で作って
次は3次元配列で作るのがいいカナと思います


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

Name: NANA  ..ぴよぴよ(525ポイント)   Date: 2010/10/11(月) 00:09   No:63190 解決!     
Title: Re:配列の要素を増やすか否か    
dic様
ご返信いただき誠にありがとうございます。

まさに言っていただいたことが極論だと思いました。
ので、まだある程度手付け始めなので、3次元配列にしたいと思います。


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



Name: グルグル  ..入門者(2,585ポイント)   Date: 2010/10/11(月) 00:00   No:63184       
Title: iphone Viewの分割表示とUITableViewの長さを変える    
こんなことができるのかな。。。ということで書きました。

【やりたい事】
 1つのWindowに2つのViewを張付けたい。
 2つのViewは、「UITableView」と「UIImageView」です。
 「何考えているの」って感じですが、
 画面のイメージは、「UITableView」の横幅を短くして、Windowの右側に
 そして左側に「UIImageView」を表示したいと思っています。

 不可能と思っていて、テーブルも自前でImageで作成して制御するしかないと思っています。
 テーブルで実装したい制御は、スクロール、並び替え(検索)、選択して他画面へですが。。。
 何か情報ありましたら教えてください。

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


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




Name: 工藤 [URL]  ..ぴよぴよ(844ポイント)   Date: 2010/10/10(日) 11:51   No:63101       
Title: 配布掲示板のパラメータの追加方法について    
初心者でがご指導宜しくお願い致します。

どんな相談でも乗って頂けるのか分かりませんが以前にC-BOARDという配布掲示板をDLしたのですが

パラメータの追加をすることで1項目枠(丁度この掲示板のURL蘭のような枠)を追加することが出来たのですが

追加した項目だけが(必須)項目にしていても未入力の際、エラーメッセージが表示されません。

始から付いていたその他の項目は全て以下のような形式でエラーメッセージが正常に表示されるのですが
<span class=ErrorSmall>ERROR:○○を記入してください。 [(eval 9)(42)] </span>

そこで質問させて頂きたいのですが追加した項目も(必須)の際、未入力の場合同じようにエラーメッセージが表示されるようにしたいと思っています。

sub check {
my @error;

#── 名前をチェック
my $name = $::FORM{'name'};
my $master = $CNF::master{'name'};
(!$::FLAG{'master'} && (&ETC::name_matching($name,$master,$CNF::master{'mode'})))
&& return(['管理人と同じ名前は使えません。']);

#── 新規スレッド立てチェック
if (!$::FORM{'follow'}) {
(!$::FLAG{'master'} && $CNF::permission{'pst'}{'master'}{'modenew'})
&& return(['管理人以外は新規スレッドを投稿できません']);
}

#── 投稿元をチェック
$CNF::post{'referer_check'}{'mode'} && !$::FLAG{'mobile'}{'mode'}
&& !$::FLAG{'incm'}
&& ($ENV{'HTTP_REFERER'} !~ /^\Q$CNF::place{'this'}{'url'}\E/)
&& push(@error, '投稿元が不正です。');

#── アクセス権チェック
if ($CNF::permission{'pst'}{'mode'}) {
require './cmd/prm.pl'; &PERMISSION::check('pst');
}

#── プロキシ経由かチェック
($CNF::post{'no_proxy'}{'mode'}
&& !&CGI::check_proxy(&CGI::get_host(1)))
&& push(@error,
'プロキシサーバーを経由しての書き込みは'
. '禁止されています。');

#── ここまででエラーがある場合は出力
@error && return(\@error);

#── 投稿データチェック
@error = @{&check_parameter}; $::FLAG{'check'} = 1;

#── 二重投稿チェック
my $o_identify;
if (!$::FLAG{'master'} && !$::FORM{'preview'}
&& ($::FORM{'cmd'} ne 'mdt')) {
my $result; ($o_identify, $result) = &identify;
($::FLAG{'debug'} == 2) && ($result = 2);
if ($result == 0) {
push(@error, '同一内容の再投稿は禁止されています。');
}
elsif ($result == 1) {
push(@error,
"管理人($CNF::master{'name'})以外は"
. "$CNF::post{'interval'}秒以内の再投稿は出来ません。");
}
}

return((@error ? \@error : 0), $o_identify);
}
__SUB__

関係ないのかもしれませんが上記はpst.pl投稿関係の関数が含まれているそうです。

補足などあれば補記させて頂きたいと思っています。

宜しくお願い致します。 


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


Name: dic  ..ハッカー(105,394ポイント)   Date: 2010/10/10(日) 22:55   No:63167     
Title: Re:配布掲示板のパラメータの追加方法について    
C言語ではないですよね?
サーバーサイドはHTMLしか分からないし、
その配布元に質問してみてはいかがでしょうか?


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

Name: 438番  ..かけだし(1,869ポイント)   Date: 2010/10/10(日) 23:16   No:63169     
Title: Re:配布掲示板のパラメータの追加方法について    
>C言語ではないですよね? 
コメント文の#記号、変数(なのかな)?の前の$記号、my @〜という記述、あと掲示板ってこと
perlじゃないですかね?


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



Name: Tatu  ..熟練のプログラマー(45,152ポイント)   Date: 2010/10/09(土) 15:24   No:63016       
Title: ゲーム公開    
4つのゲームを公開します。

アップローダー
http://www1.axfc.net/uploader/He/so/296830.zip&key=4games

シューティング     様々な攻撃をしてくるボスを倒すシューティング。
tenemies       10体の敵を倒すシューティング。
宇宙求星旅      宇宙空間で星を探すアクションゲーム。
ひたすらボールわり 飛び跳ねるボールを割るゲーム。


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


Name: gyz  ..入門者(4,047ポイント)   Date: 2010/10/09(土) 17:15   No:63033     
Title: Re:ゲーム公開    
DLして一通りやってみました

宇宙求星旅がやったこと無いプレイ感覚で、一番面白かったですね。
けっこう夢中になって25面全クリしちゃいました
衛星でスイングバイして、予想外の軌道で動いたりするのが
特に面白いと感じました。

新しい仕掛けとか追加したり、画像をリファインしたりすれば
面クリア型のアクションパズルゲームとして、立派なものができそうな気がします。


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

Name: Tatu  ..熟練のプログラマー(45,126ポイント)   Date: 2010/10/10(日) 15:36   No:63121     
Title: Re:ゲーム公開    
>>gyz さん

全25面クリアおめでとうございます。
気に入ってくれたようでなによりです。




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

Name: CorzY [URL]  ..入門者(4,175ポイント)   Date: 2010/10/10(日) 21:37   No:63157     
Title: Re:ゲーム公開    
自分のゲームのテストプレイの際はお世話になりました。

自分も一通りプレイしてみましたが、宇宙求星旅は斬新な感じがしました。
引力の感じがなんだかクセになります。
全体的に、効果音があると雰囲気が出ていいと思います。

自分はあまりゲームを作ったことがないので、いろいろな種類のゲームを作れるのは羨ましいです。
ではでは、失礼します。



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



Name: IT侍  ..ぴよぴよ(184ポイント)   Date: 2010/10/10(日) 19:26   No:63143       
Title: ファイルのコピー    
もともとあるファイルの内容を違うファイルにコピーするプログラムで watch を入力するとそのファイルの内容をコマンドに表示させるプログラムなのですが、なぜかうまくいきません。コマンドに永遠に????が表示されてしまいます。
どうしてでしょうか?ご教授願います。以下がソースです。何故かファイルもコピーされてません。何が原因なのでしょうか。


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char *argv[])
{
  FILE *to, *from;
  char ch,watch;

  if (argc < 3 || argc > 4){
    puts("エラーです。正しい使用法で使用してください。\n"
     "<プログラム名>  <元のファイル名>   <コピー先のファイル名>   <watch>");
    exit(1);
  }

  if ((from = fopen(argv[1],"r")) == NULL){
    puts("error! I can't this program");
    exit(1);
  }

  if ((to = fopen(argv[2],"w")) == NULL){
    puts("error!");
    exit(1);
  }

  if (argc == 4 || !(strcmp(argv[3],"watch")))
     watch = 1;
    else
      watch = 0;
    

    while ((ch = fgetc(from)) == EOF){
      fputc(ch,to);
      if(watch)
    putchar(ch);
    }

    fclose(to);
    fclose(from);

    return 0;
    
}


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


Name: ぽこ  ..プログラマー(31,737ポイント)   Date: 2010/10/10(日) 19:32   No:63145     
Title: Re:ファイルのコピー    
while文で指定するのは、ループ終了条件ではなく、ループ継続条件です。
((ch = fgetc(from)) == EOF)
→((ch = fgetc(from)) != EOF)
とするとどうなりますか?


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

Name: IT侍  ..ぴよぴよ(241ポイント)   Date: 2010/10/10(日) 20:07   No:63148     
Title: Re:ファイルのコピー    
ありがとうございました。
おかげさまで問題が解決しました。
こういったうっかりミスでプログラムって全然動かないもんですね。

これからも精進していきます。
適切な指導ありがとうございました!


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

Name: みけCAT  ..上級者(24,699ポイント)   Date: 2010/10/10(日) 20:42   No:63151     
Title: Re:ファイルのコピー    
> if (argc == 4 || !(strcmp(argv[3],"watch")))
このままだと、argc==3のときに範囲外のargv[3]にアクセスすることになり、危険です。
 if (argc == 4 && !(strcmp(argv[3],"watch")))
とすべきだと思います。

(追記)
間違っていたので修正しました。 編集済み


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



Name: Ultimate  ..上級者(18,119ポイント)   Date: 2010/10/10(日) 18:16   No:63137       
Title: 直線と円の当たり判定    
直線と円の当たり判定関数を作ろうと思います。

考え方を教えてください。

(ex. 円と円では中心の距離の計算 など)


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


Name: rexrexrex  ..ぴよぴよ(6ポイント)   Date: 2010/10/10(日) 18:34   No:63138     
Title: Re:直線と円の当たり判定    
直線の距離以内 かつ  直線の向いている方向 と 円の中心から直線の中心への角度 が一致


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

Name: Ultimate  ..上級者(18,130ポイント)   Date: 2010/10/10(日) 18:52   No:63139     
Title: Re:直線と円の当たり判定    
例として図をつけていただけないでしょうか?

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

Name: Ultimate  ..上級者(18,177ポイント)   Date: 2010/10/10(日) 19:07   No:63140     
Title: Re:直線と円の当たり判定    
現在当たり判定をまとめたヘッダファイルを作っています。

まだ円と円の判定しかできてないのでその他の当たり判定について参考になるページもありましたら教えてください。


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

Name: ぽこ  ..プログラマー(31,686ポイント)   Date: 2010/10/10(日) 19:27   No:63144     
Title: Re:直線と円の当たり判定    
円の中心と直線の距離dを「点と直線の距離の公式」で求め、
それを円の半径rと比較する。
d≦rの場合、直線と円は交わっていることになります。


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

Name: Ultimate  ..上級者(18,261ポイント)   Date: 2010/10/10(日) 20:03   No:63147     
Title: Re:直線と円の当たり判定    
中学2年ですがそんな公式初めて知りました。(一応理解しました。)

2点の座標からy=ax+by+cの形に直すプログラムを作り、その後公式に当てはめればよいでしょうか?



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

Name: ぽこ  ..プログラマー(31,817ポイント)   Date: 2010/10/10(日) 20:09   No:63149     
Title: Re:直線と円の当たり判定    
> 2点の座標からy=ax+by+cの形に直すプログラムを作り、その後公式に当てはめればよいでしょうか?

それで良いと思います。
y=ax+by+cではなく、0=ax+by+cですが。

#これは、直線と円の当たり判定の話であって、線分と円の当たり判定の話じゃないことは留意してください。


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

Name: Ultiamte  ..ぴよぴよ(365ポイント)   Date: 2010/10/10(日) 20:26   No:63150 解決!     
Title: Re:直線と円の当たり判定    
y=ax+by+cではなく、0=ax+by+cですが。>打ち間違えました。

一次関数なら中1でやったので大丈夫だと思いますが何かあったらまた回答お願いします。


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



Name: Ultimate  ..上級者(17,205ポイント)   Date: 2010/10/10(日) 11:08   No:63092       
Title: 自機と敵機の角度    
弾幕を作っていて、敵に自機狙いショットを打たせたいのですが、下の部分に何かおかしい点があるようです。

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

tmain2.r[]はラジアンを入れる変数です。
tmain2.coscos[]はコサインを入れる変数
tmain2.sinsin[]はサインを入れる変数


tmain2.r[i]=atan2(tmain2.ty-jiki.ty,tmain2.tx-jiki.tx);
tmain2.coscos[i]=cos(tmain2.r[i]);
tmain2.sinsin[i]=sin(tmain2.r[i]);


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


Name: Ultimate  ..上級者(17,256ポイント)   Date: 2010/10/10(日) 11:09   No:63093     
Title: Re:自機と敵機の角度    
追加

tmain2.tyは自機のY座標
jiki.tyはは敵機のY座標
tmain2.txは自機のX座標
jiki.txは敵機のX座標


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

Name: みけCAT  ..上級者(21,886ポイント)   Date: 2010/10/10(日) 11:13   No:63094     
Title: Re:自機と敵機の角度    
コードが少なすぎるので確証はできません。
tmain2.ty-jiki.ty

jiki.ty-tmain2.ty
にしてみてください。


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

Name: Ultimate  ..上級者(18,070ポイント)   Date: 2010/10/10(日) 11:18   No:63096     
Title: Re:自機と敵機の角度    
すみませんが、うまく動きません。
もっと広い範囲のソースを載せます。

//敵2
        typedef struct{
            double x[50];           //X座標
            double y[50];           //Y座標
                    double tsin,tcos,tr;
            double r[10],sinsin[10],coscos[10];//ラジアン,サイン,コサイン
            int flag;                  //フラグ
            int tflag[50];
            int nagasa[50];
            int count;                 //カウント
            int count2;
            double tx;
            double ty;
            int tcounter;
            int hp;
            }t2;
        t2 tmain2;
        //自機
        typedef struct{
            double tx;           //X座標
            double ty;           //Y座標
            double x[100];
            double y[100];
            double x2[100];
            double y2[100];
            int flag[100];
            int hp;
            int nagasa[100];
            int count;
            }jstruct;
        jstruct jiki;





//中略//





//敵2/////////////////
            if(tmain2.hp>0&&tmain1.hp<=0){
                
                DrawGraph(tmain2.tx,tmain2.ty,tmain,TRUE);
                if(tmain2.count<100){
                    tmain2.ty++;
                }
                tmain2.count++;
                if(tmain2.count2<10){
                    tmain2.count2++;
                }
                for(i=0;i<50;i++){
                    if(tmain2.tflag[i]==0){
                        tmain2.x[i]=tmain2.tx;
                        tmain2.y[i]=tmain2.ty;
                    }
                }
                if(tmain2.count2>=10){
                        tmain2.count-0;
                        for(i=0;i<50;i++){
                            if(tmain2.tflag[i]==0){
                                tmain2.tflag[i]=1;
                                //サインコサイン
                                tmain2.r[i]=atan2(jiki.ty-tmain2.ty,tmain2.tx-jiki.tx);
                                tmain2.coscos[i]=cos(tmain2.r[i]);
                                tmain2.sinsin[i]=sin(tmain2.r[i]);
                                break;
                            }
                        }    
                }
                for(i=0;i<50;i++){
                    if(tmain2.tflag[i]==1){
                        
                        tmain2.nagasa[i]+=10;
                        tmain2.x[i]=tmain2.nagasa[i]*tmain2.coscos[i];
                        tmain2.y[i]=tmain2.nagasa[i]*tmain2.sinsin[i];
                        DrawCircle(tmain2.x[i],tmain2.y[i],3,BLACK,TRUE);
                    }
                }
                DrawFormatString(0,0,BLACK,"%d",tmain2.tflag[0]);
                                
                        
            }


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

Name: みけCAT  ..上級者(21,920ポイント)   Date: 2010/10/10(日) 11:19   No:63097     
Title: Re:自機と敵機の角度    
No.63093について
自機と敵機が逆ではありませんか?
勘違いだったらすみません。


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

Name: Ultimate  ..上級者(18,067ポイント)   Date: 2010/10/10(日) 11:22   No:63098     
Title: Re:自機と敵機の角度    
訂正

tmain2.tyは敵機のY座標 
jiki.tyはは自機のY座標 
tmain2.txは敵機のX座標 
jiki.txは自機のX座標


逆でした。。。


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

Name: Ultimate  ..上級者(18,083ポイント)   Date: 2010/10/10(日) 12:01   No:63103     
Title: Re:自機と敵機の角度    
引き続き回答をお願いします。

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

Name: みけCAT  ..上級者(22,757ポイント)   Date: 2010/10/10(日) 13:03   No:63108     
Title: Re:自機と敵機の角度    
double r[10],sinsin[10],coscos[10];//ラジアン,サイン,コサイン 
というように要素を10しか確保していないのに、
for(i=0;i<50;i++){ 
                            if(tmain2.tflag[i]==0){ 
                                tmain2.tflag[i]=1; 
                                //サインコサイン 
                                tmain2.r[i]=atan2(jiki.ty-tmain2.ty,tmain2.tx-jiki.tx); 
                                tmain2.coscos[i]=cos(tmain2.r[i]); 
                                tmain2.sinsin[i]=sin(tmain2.r[i]); 
                                break; 
                            } 
                        } 

というようにそれより大きい要素にアクセスしているためデータが壊れていると思います。


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

Name: みけCAT  ..上級者(22,776ポイント)   Date: 2010/10/10(日) 13:08   No:63109     
Title: Re:自機と敵機の角度    
このようなことをしたいのでしょうか?

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

Name: Ultiamte  ..ぴよぴよ(289ポイント)   Date: 2010/10/10(日) 15:34   No:63120 解決!     
Title: Re:自機と敵機の角度    
ご指摘いただいた通りの初歩的なミスでした。

あとは細かな調整などをして成功しました。

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


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



Name: みけCAT  ..上級者(21,170ポイント)   Date: 2010/10/10(日) 08:57   No:63076       
Title: プロトタイプ宣言の必須化    
おはようございます。みけCATです。
開発環境はDev-c++4.9.9.2(コンパイラはデフォルト)
もしくはTeraPad0.93とMinGWと自作ソフトを使っています。
たとえばこのコードを見てください。
#include <stdio.h>

int main(void) {
    printf("%d\n",zikkenn(3,5));/*スペルミス*/
    return 0;
}

int zikken(int a,int b) {
    return a+b;
}
このコードをコンパイルすると、
[Linker error] undefined reference to `zikkenn'
というエラーが出ます。 この程度のプログラムであれば、zikkennというトークンがどこに使われているかわかりやすいですが、 もっと大きいプログラムになるとわかりにくくなります。 検索すればいいかもしれないですが、
#include <stdio.h>

int main(void) {
    printf("%d\n",ikken(3,5));/*スペルミス*/
    return 0;
}

int zikken(int a,int b) {
    return a+b;
}

のようなパターンになると、ikkenで検索するとzikkenも引っかかってきて、検索しにくいと思います。
そこで、関数のプロトタイプ宣言を必須にして、プロトタイプ宣言がない関数を使用すると
そこで警告かエラーを吐くようにするコマンドラインオプションはありますでしょうか?
教えていただければ幸いです。


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


Name: たかぎ [URL]  ..ハッカー(230,757ポイント)   Date: 2010/10/10(日) 10:52   No:63089     
Title: Re:プロトタイプ宣言の必須化    
一番手っ取り早いのはC++でコンパイルすることです。


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

Name: へろり  ..熟練のプログラマー(45,024ポイント)   Date: 2010/10/10(日) 13:09   No:63110     
Title: Re:プロトタイプ宣言の必須化    
grepあたりで検索するという手もありますね。

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

Name: たかぎ [URL]  ..ハッカー(231,081ポイント)   Date: 2010/10/10(日) 13:19   No:63111     
Title: Re:プロトタイプ宣言の必須化    
一応GCCのオプションについても回答しておきます。

-Wimplicit-function-declaration
-Werror-implicit-function-declaration

この二つがそれに該当するはずです。


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

Name: みけCAT  ..上級者(23,217ポイント)   Date: 2010/10/10(日) 13:26   No:63113 解決!     
Title: Re:プロトタイプ宣言の必須化    
たかぎさん
ありがとうございます。
#include <stdio.h>

int main(void) {
    printf("%d\n",zikken(3,5));/*スペルミス*/
    return 0;
}

int zikkenn(int a,int b) {
    return a+b;
}

を-Wimplicit-function-declarationオプションでコンパイルすると

F:\C\error\error2.c: In function `main':
F:\C\error\error2.c:4: warning: implicit declaration of function `zikken'

C:\Users\(ユーザー名)\AppData\Local\Temp/ccWAbaaa.o(.text+0x3a):error2.c: undefined reference to `zikken'
collect2: ld returned 1 exit status

と表示されました。

エディタで検索するときに「単語全部が一致」を使うという手もあります。


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



Name: カイリ  ..ぴよぴよ(461ポイント)   Date: 2010/10/08(金) 18:40   No:62929       
Title: 売れるiPhoneアプリゲームについて    
iPhoneアプリゲーム(有料115円)を2本リリースして2ヶ月経ちました。
しかしDL数が全国で100に行きそうにありません。
売上をあまり気にしていないのですがDLが多いに越したことはありません。

もしiPhone関連の開発者の方や販売に詳しい方がいたら
アドバイスを頂きたいのですがどのようなことをすればDL数が増えるでしょうか?
あまりお金のかかることが出来ないので大きな広告を出すなどは無理です・・・。
また公開開始して2カ月もたってDL数100は少ない方ですよね?


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


Name: Dixq (管理人)  ..ウィザード(1,284,866ポイント)   Date: 2010/10/08(金) 19:20   No:62931     
Title: Re:売れるiPhoneアプリゲームについて    
私はiphone持ってないのですが、そのアプリの名前を書けばより具体的なアドバイスが受けられるかもしれません。

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

Name: カイリ  ..ぴよぴよ(346ポイント)   Date: 2010/10/09(土) 15:45   No:63018     
Title: Re:売れるiPhoneアプリゲームについて    
管理人様直々ご連絡ありがとうございます。
具体的なURLを貼れればいいのですが私の本名がばれるのでww
詳しい方がいたら何か販売の意見を頂けたらと思いまして・・・。


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

Name: ISLe  ..プログラマー(25,562ポイント)   Date: 2010/10/09(土) 18:41   No:63039     
Title: Re:売れるiPhoneアプリゲームについて    
iPhoneの市場のことは分かりませんが。
宣伝していない有料アプリなら2ヵ月でDL数100は多い方だと思います。


Name: Justy  ..伝説なるハッカー(584,013ポイント)   Date: 2010/10/09(土) 21:37   No:63050     
Title: Re:売れるiPhoneアプリゲームについて    
 うちも五十歩百歩なんであんまり偉そうなことは言えませんが、多くの iPhoneアプリはそんなものです。
 いいコンセプトを持ったアプリを作っても、何らかの宣伝をしなければ当然売れ行きは伸びません。

 とにかく、作ったアプリをユーザーの目に触れさせる機会を増やすことが重要ではないでしょうか。
 ちなみに今までにどんなプローモーション活動をしたんですか?


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

Name: カイリ  ..ぴよぴよ(650ポイント)   Date: 2010/10/10(日) 08:04   No:63072     
Title: Re:売れるiPhoneアプリゲームについて    
>>ISLe 様
そうなんですか?
100は多い方なんですか。
月に数十万とか稼いでいる方もいるみたいだったので最底辺と思いました。
宣伝の仕方が良く分からないので全くしてません。

>>Justy様
プロモーション活動は全くと言っていいほどしておりません。
mixiのアプリ紹介コミュニティやtwitterを使い宣伝しようかとは思うのですが効果が期待できる気がしなくて・・・。
やってもいないのにそういうこと言うなと怒られてしまいそうですがw

>>作ったアプリをユーザーの目に触れさせる機会を増やすことが重要ではないでしょうか。 
なるほど・・・まず目に留まらなければDLもされませんもんね。

このスレを見て下さった方でこういうのしてみたら?という意見があったら是非伺いたいです。


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

Name: ひよこ  ..比類無きプログラマー(87,636ポイント)   Date: 2010/10/10(日) 10:16   No:63084     
Title: Re:売れるiPhoneアプリゲームについて    
iPhoneアプリ用ゲームは作りませんが・・・
youtubeにゲームをしている映像(CMみたいに)をアップロードしてみるのが
私的に一番いいと思います。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,289,531ポイント)   Date: 2010/10/10(日) 11:38   No:63100     
Title: Re:売れるiPhoneアプリゲームについて    
> 月に数十万とか稼いでいる方もいるみたいだったので

その人も何の宣伝活動もしていないんですか?
きっと上位に来る人はそれなりの活動をしているのではないかと思います。
それにそんなに簡単に月数十万稼げるような話は無いのでは・・。

すごく良いアプリで有名サイトや雑誌の編集者が気に入ればそこで宣伝してもらって一気に人気が出る事はあるかもしれませんが、結局は宣伝ではないかと。
iPhoneアプリの事は良く知りませんが、星の数ほどあるアプリから人に気に入ってもらうのは簡単な事ではない気がします。

カイリさんのアプリがどんなアプリなのか全く解らないので、検討違いな事を言っているかもしれませんが、
アプリの紹介ページを見てくれている人にパっとそのアプリの内容が伝わるような努力をされてはどうでしょう。

私はベクターとかで何か良いソフトは無いか探す時、文章ばかりの一覧では良く解らず選ぶのに困る事があります。
でも、ソフトの紹介ページのリンクに作者のHPがあって、そこで非常に解りやすいアプリの紹介があれば私はそれをDLします。

私自身が作っているゲームも、なるべく人が見てすぐにゲームの内容が解るように紹介動画を作ったり、
HPを見ただけでゲームの内容が伝えられる工夫をしているつもりです。
また、ゲームをプレイして下さった方々にアンケートのお願いをしています。
作ったゲームのどこがよくて、どこを改善しないといけないのか、
このゲームをしった経緯はなんだったのか、などをアンケートを通じて知ることで次により良い物が作れたら良いなと思っています。
http://dixq.net/sr/ank/enq.cgi?mode=kekka

ここを見ると過半数の人は動画サイトからHPに来てくれていることが解ります。
それなら、より人が見ようと思ってくれるような動画作りを頑張る事が最も効率的に人に見てもらう機会を作る事になるのだなと解ります。

宣伝も良いと思いますが、自分のアプリやその宣伝活動の一連を含めて何が良くないのかを知り、それを改善する活動も必要だと思います。
しかし、宣伝するにはそのアプリへのリンクが必要だと思うのですが、本名を知られることなく人にアプリを知ってもらうというのは難しいのでは・・。


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

Name: softya [URL]  ..ハッカー(231,355ポイント)   Date: 2010/10/10(日) 12:28   No:63105     
Title: Re:売れるiPhoneアプリゲームについて    
iPhoneアプリの事は分かりませんがWindowsのフリーソフトは雑誌等で紹介されると劇的にダウンロード数が伸びることがあります。私の場合だと週刊アスキーに紹介されたらいきなり500DL増えました。
やはり、こういう場合のメディアの力は侮れません。
ただ、雑誌社に自分で売り込んだことはないので、紹介ホームページを充実させて、アプリ掲載サイトの載せてもらったり地道に活動するしか無いと思います。そういう意味で動画を用意するのは良いかも知れませんね。


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

Name: Justy  ..伝説なるハッカー(584,375ポイント)   Date: 2010/10/10(日) 12:48   No:63107     
Title: Re:売れるiPhoneアプリゲームについて    
 基本的なところを挙げると

・ アプリを海外対応する
 日本だけだと厳しいので海外でも売る機会を作ります。
 勿論App Storeからリンクを張っている公式サイトも英語版も作ります。

・ Youtubeにアプリの魅力が伝わるような紹介動画をアップする
 私自身アプリ購入に迷ったときは動画で判断することが多いですし、口コミ効果も期待できるので
これはうまく作るとかなり有効だと思います。

 今までで一番記憶に残っているアプリの動画は幾つかあるのですが、一番最初に凄いと思ったのは
Voice Bandの動画でした。
 段取りのいい動画ではないですし「パーパパパパー」とか言ってるだけなのに、
しかも iPhoneの画面は6分40秒もの動画の中で合わせて30秒くらいしか見せてないのに
なんだか「すごい」と思わせる動画で、即買いでした。

・ 何かのコミュニティで宣伝する、アプリ紹介サイト・ブログ等のメディアで紹介してもらう
 大手ブログで紹介されると売り上げは伸びますのよ。
 App Bank等開発者自ら寄稿できるところもありますうまく利用するといいでしょう。


 あと、ある程度売れてからとなりますがApp Storeのランキングに載ると(カテゴリ別Top200とかでも)、
ランクによっては少ないですがしばらくはコンスタントに売れていきますので、まずはランキングに
載るよう、そしてそのランキングを維持するようプローモーションを行うのがいいんじゃないでしょうか。
 ちなみにあのランキングそんなに売れてなくても不思議と載ってしまうことがあります……。


>を使い宣伝しようかとは思うのですが効果が期待できる気がしなくて・
 宣伝OKな場所でターゲットユーザーがそこにいる可能性があるなら、やった方がいいでしょう。
 一本でも売れれば御の字ですし、そこから広がっていくことも考えられます。
 何でもそうですが売れる為には地道な営業努力が必要だと思います。


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



Name: みけCAT  ..上級者(21,694ポイント)   Date: 2010/10/10(日) 09:35   No:63078       
Title: DrawRotaGraphF相当のコード TurnFlag    
http://www.play21.jp/board/formz.cgi?action=res&resno=63023&page=&id=dixq&rln=63031
の続きです。
DrawRotaGraphFに回転などを実装しているのですが、
TurnFlagが効かないようです。
どこが悪いかわかる方がいらっしゃいましたら教えていただければ幸いです。
kaiten関数は
http://www.play21.jp/board/formz.cgi?action=res&resno=63052&page=&id=dixq&rln=63052
のものです。
function.cppのDrawRotaGraphFの下に貼りつけました。
int DrawRotaGraphF(HDC to,int x,int y,float ExtRate,float Angle,
        gazou* graph,int TransFlag,int TurnFlag) {
    HDC gazoufordraw;
    HDC scaledgazou;
    HBITMAP oldbmp;
    HBITMAP scalebmp;
    HBITMAP scaleoldbmp;
    int sx,sy;
    int dx,dy;
    double rx,ry;
    COLORREF col;
    sx=(int)(graph->sizex*ExtRate);
    sy=(int)(graph->sizey*ExtRate);
    gazoufordraw=CreateCompatibleDC(to);
    scaledgazou=CreateCompatibleDC(to);
    scalebmp=CreateCompatibleBitmap(to,sx,sy);
    oldbmp=(HBITMAP)SelectObject(gazoufordraw,graph->bmp);
    scaleoldbmp=(HBITMAP)SelectObject(scaledgazou,scalebmp);
    StretchBlt(scaledgazou,0,0,
        sx,sy,
        gazoufordraw,graph->x,graph->y,graph->sizex,graph->sizey,
        SRCCOPY);
    for(dy=0;dy<sy;dy++) {
        for(dx=0;dx<sx;dx++) {
            if(TurnFlag)col=GetPixel(scaledgazou,sx-dx,dy);
            else col=GetPixel(scaledgazou,dx,dy);
            col=GetPixel(scaledgazou,dx,dy);
            kaiten(&rx,&ry,x,y,x+dx-sx/2,y+dy-sy/2,Angle);
            if(!TransFlag || col!=RGB(255,255,255)) {
                SetPixel(to,(int)rx,(int)ry,col);
            }
        }
    }
    SelectObject(gazoufordraw,oldbmp);
    SelectObject(scaledgazou,scaleoldbmp);
    DeleteObject(scaleoldbmp);
    DeleteDC(gazoufordraw);
    DeleteDC(scaledgazou);
    return 0;
}


(編集)</pre>をつけ忘れました。 編集済み


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


Name: 迷彩吹雪  ..入門者(4,389ポイント)   Date: 2010/10/10(日) 12:17   No:63104     
Title: Re:DrawRotaGraphF相当のコード TurnFlag    
for文の中にある
      if(TurnFlag)col=GetPixel(scaledgazou,sx-dx,dy);
      else col=GetPixel(scaledgazou,dx,dy);
      col=GetPixel(scaledgazou,dx,dy);
      if(TurnFlag){
         col=GetPixel(scaledgazou,sx-dx,dy);
      }
      else{
         col=GetPixel(scaledgazou,dx,dy);
      }
      col=GetPixel(scaledgazou,dx,dy);

と同義ですよね?
ならば、TurnFlagに関わらず
      col=GetPixel(scaledgazou,dx,dy);
が実行されてしまうのではないでしょうか。
私が若輩者でどんな処理をされているか良くわかっていないので、見当違いだったらすみません……。


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

Name: みけCAT  ..上級者(21,997ポイント)   Date: 2010/10/10(日) 12:45   No:63106 解決!     
Title: Re:DrawRotaGraphF相当のコード TurnFlag    
その通りでした。
下のcol=GetPixel(scaledgazou,dx,dy);を消したら動きました。
ありがとうございました。

ただ、拡大をかけるとかなり重いようなのでまた改良したいと思いますが...


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



Name: うしお  ..初心者(5,243ポイント)   Date: 2010/10/09(土) 20:16   No:63047       
Title: Unicodeと静的リンクライブラリについて    
Unicode対応ライブラリを作成する場合についての質問です

ある関数の中身が、
マルチバイト用の関数と、Unicode用の関数、
それぞれ別な中身を用意する必要があると知りました

たとえば、

void DebugPrintA()
{
    OutputDebugStringA("");
}
void DebugPrintW()
{
    OutputDebugStringW(L"");
}
という実装で、公開ヘッダは
#ifdef _UNICODE
    #define DebugPrint DebugPrintW
#else
    #define DebugPrint DebugPrintA
#endif

しかしこうすると、同じ関数が2つ出来るために、
メンテナンス性の低下を引き起こします

OutputDebugStringなどの文字コードに関係するコードが1行でも出てくれば、
関数を2つにする必要が出てきてしまいます

これはなんとかして簡略な方法はありませんか?
それとも考え方が間違っていますでしょうか?


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


Name: りゅん [URL]  ..ぴよぴよ(140ポイント)   Date: 2010/10/09(土) 22:19   No:63054     
Title: Re:Unicodeと静的リンクライブラリについて    
マルチバイト・unicode の両方に対応させるには、どうしても関数をふたつ作る必要があります。

私も同じような問題に当たったことがありますが、そのときはこんな風にしてみました。
ちょっと強引かもしれないけど…

void DebugPrintA( char* cstr )
{
    // マルチバイト文字をワイド文字に変換した後、処理は DebugPrintW に丸投げ
    wchar_t wbuf[ 512 ];
    toWideString( wbuf, 512, str );
    OutputDebugStringW( wbuf );
}

void DebugPrintW( wchar_t* wstr )
{
    OutputDebugStringW( wstr );
    // ...
}

これなら DebugPrintW の中身を管理するだけで大丈夫!  …なはずです。^^;


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

Name: たかぎ [URL]  ..ハッカー(230,302ポイント)   Date: 2010/10/09(土) 22:38   No:63056     
Title: Re:Unicodeと静的リンクライブラリについて    
ひとつで済ませる方法がないわけではありません。
基本的にはりゅんさんの方法と同じで、いったんワイド文字列になおしてからワイド文字版を呼ぶことになりますが...

まず、準備として...

std::wstring to_wstring(char const* s);
std::wstring to_wstring(wchar_t const* wcs);

のようなワイド文字列に変換する関数を作っておきます。
本来は必要がない、ワイド文字列→ワイド文字列への変換関数も作るのがポイントです。
その上で、

template <typename charT>
void DebugPrint(charT const* s)
{
    ::OutputDebugString(to_wstring(s).c_str());
}

とすれば、ひとつの関数定義で済むようになります。



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

Name: うしお  ..初心者(5,450ポイント)   Date: 2010/10/09(土) 22:50   No:63057     
Title: Re:Unicodeと静的リンクライブラリについて    
ご回答ありがとうございます
ちょっと自分が勘違いしているかもしれないのですが、

ライブラリを利用する立場の話ですが、
マルチバイトの設定でビルドしているにもかかわらず、
Unicodeの関数を呼んでも問題はないのですか?

ためしに
コンソールにて、マルチバイト設定で
wprintf(L"これはワイド文字列");
としましたが、
コンパイル、リンク->正常
出力->なし
という状態で正常に動かなかったのですが
これは何がいけないのでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(230,450ポイント)   Date: 2010/10/09(土) 22:53   No:63058     
Title: Re:Unicodeと静的リンクライブラリについて    
> マルチバイトの設定でビルドしているにもかかわらず、 
> Unicodeの関数を呼んでも問題はないのですか? 

Visual C++に限った話だとすると、問題ありません。

> コンソールにて、マルチバイト設定で 
> wprintf(L"これはワイド文字列"); 
> としましたが、 
> コンパイル、リンク->正常 
> 出力->なし 
> という状態で正常に動かなかったのですが 
> これは何がいけないのでしょうか?

ロケールを設定していないからでは?
wprintfを使う前には、setlocaleで少なくともLC_CTYPEを設定しておかなければなりません。


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

Name: りゅん [URL]  ..ぴよぴよ(192ポイント)   Date: 2010/10/09(土) 23:29   No:63059     
Title: Re:Unicodeと静的リンクライブラリについて    
>>たかぎさん
そうだ、テンプレートがあったんだ…ッ!

補足ありがとうございます。参考になりました。m(_ _)m


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

Name: うしお  ..初心者(5,530ポイント)   Date: 2010/10/09(土) 23:32   No:63060     
Title: Re:Unicodeと静的リンクライブラリについて    
wprintfは別な要因でした、すみませんありがとうございます

テンプレートに関して、ああ、こんな方法もあるのか!
と思ったのですが、

ヘッダーに全部書くとなると、
見えて欲しくないものも公開ヘッダに含まれてしまう
→さらにもう一段cppに包む手間が発生する
void DebugPrintA()
{
    DebugPrint<char>();
}
void DebugPrintW()
{
    DebugPrint<wchar_t>();
}
という実装になるといった感じだろうと想像することができました
内部newのあるstringのオーバーヘッドも気になるところでしょうか
その代わりに、関数は1つで済む

ちょっと自分にはメリットとデメリットが交錯して判断が難しくなってきました

この手法はよく用いられる方法なのでしょうか?
>Visual C++に限った話だと、
というのも気になります
これはかなり環境依存の解決方法ということになってしまうのでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(230,742ポイント)   Date: 2010/10/10(日) 10:51   No:63088     
Title: Re:Unicodeと静的リンクライブラリについて    
> void DebugPrintA() 
> { 
>     DebugPrint<char>(); 
> } 
> void DebugPrintW() 
> { 
>     DebugPrint<wchar_t>(); 
> } 
> という実装になるといった感じだろうと想像することができました 

最終的に関数名を分けるのであれば...

#ifdef _UNICODE
#define AorW(x)  x##W
#else
#define AorW(x) x##A
#endif

のようなマクロを作っておいて、

void AorW(DebugPrint)(LPCTSTR s)
{
  OutputDebugString(s);
}

と、関数定義を一度だけ定義しておき、2回コンパイルを通せばよいのです。
IDEでもできないことはありませんが、Makefileを書いた方が簡単かもしれません。

> 内部newのあるstringのオーバーヘッドも気になるところでしょうか 

それほどタイムクリティカルな処理なのであれば、もっといろいろなことに配慮しなければならなくなります。

> この手法はよく用いられる方法なのでしょうか? 

ジェネリックプログラミングでは、本来違うものを同じように書けるように工夫するのは普通だと思います。

> これはかなり環境依存の解決方法ということになってしまうのでしょうか? 

Windows APIを使う時点で完全に環境依存だと思いますが...




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

Name: うしお  ..初心者(5,777ポイント)   Date: 2010/10/10(日) 11:16   No:63095     
Title: Re:Unicodeと静的リンクライブラリについて    
どうせウィンドウズ依存だからVCにもガンガン依存しちゃえ!
というのもひとつの考え方ですが、
せめてVCのみの機能は控える、というのも勉強のためには良いかなと
考えたからです
このあたりは自分で実際に今後試しながらやっていきます

タイムクリティカルというよりは、

ライブラリを使う側でマルチバイトだけで組む場合、
本来は必要なかったUnicode変換の処理が毎回入ってしまう
同じくUnicode→Unicodeでもコピーが発生する
というのに対してもったいなさといいますか、そういった印象があがってしまいました

OSがUnicodeベースであれば、
マルチバイトであっても内部で変換が入るらしいので、
このオーバーヘッドはたいしたことない、と考えることもできそうですが
まだ実際に計測したわけではないです

関数定義を一度だけ定義しておき、2回コンパイル
というのは、.Libファイルごと分けてしまうということでしょうか?
それとも、
Makefile(私は詳しくないです)
の設定で.objを2つ作ってあくまでも1つの.libという形でしょうか?


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

Name: たかぎ [URL]  ..ハッカー(231,031ポイント)   Date: 2010/10/10(日) 11:35   No:63099     
Title: Re:Unicodeと静的リンクライブラリについて    
> せめてVCのみの機能は控える、というのも勉強のためには良いかなと 
> 考えたからです 

それはちょっと厳しいのでは?
元の質問は、

> マルチバイトの設定でビルドしているにもかかわらず、  
> Unicodeの関数を呼んでも問題はないのですか?  

なので、それであればライブラリの作りなどに完全に依存していますから。

> ライブラリを使う側でマルチバイトだけで組む場合、 
> 本来は必要なかったUnicode変換の処理が毎回入ってしまう 

これについてはご自身で書かれているように、どこで変換するかだけの話です。
もっとも、Visual C++に依存したくないのであれば、MutibyteToWideCharなどは使えませんので、std::codecvtファセットを使うなどしなければならなくなります。これだとオーバーヘッドはもう少し増えるでしょうね。

> 同じくUnicode→Unicodeでもコピーが発生する 
> というのに対してもったいなさといいますか、そういった印象があがってしまいました 

本質ではないところでもう一手間かかりますので、分かりにくいかと思って省略しましたが、その問題は回避可能です。

> 関数定義を一度だけ定義しておき、2回コンパイル 
> というのは、.Libファイルごと分けてしまうということでしょうか? 
> それとも、 
> Makefile(私は詳しくないです) 
> の設定で.objを2つ作ってあくまでも1つの.libという形でしょうか?

Makefileであれば、

DebugPrintA.obj: DebugPrint.cpp
    cl /c DebugPrint.cpp

DebugPrintW.obj: DebugPrint.cpp
    cl /c /D_UNICODE DebugPrint.cpp

のように、ひとつのソースファイルから複数のオブジェクトファイルを生成できるということです。
 編集済み


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

Name: うしお  ..初心者(5,859ポイント)   Date: 2010/10/10(日) 12:01   No:63102 解決!     
Title: Re:Unicodeと静的リンクライブラリについて    
たくさんの詳しいご回答ありがとうございました

かなり知識を深めることが出来ました!

またMakefile、template
のことについて等非常に参考になりました

得た知識を元に
もう一度自分のソースと相談し、進めていきたいと思います。


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



Name: dkns  ..ぴよぴよ(679ポイント)   Date: 2010/10/09(土) 12:47   No:62994       
Title: 龍神録の8章について    
こんにちは、自分は専門学校ゲームプログラミング科1年のものです

サイトを見ながらプログラミングの勉強をしているのですがどうしても8章がうまくできません
エラーの内容は以下のとおりです

1>c:\documents and settings\user\デスクトップ\project\1章\mydat\include\struct.h(21) : error C2065: 'PAD_MAX' : 定義されていない識別子です。
1>c:\documents and settings\user\デスクトップ\project\1章\mydat\include\struct.h(17) : error C2371: 'ch_t' : 再定義されています。異なる基本型です。
1>        c:\documents and settings\user\デスクトップ\project\1章\mydat\include\struct.h(17) : 'ch_t' の宣言を確認してください。
1>c:\documents and settings\user\デスクトップ\project\1章\mydat\include\struct.h(22) : error C2371: 'pad_t' : 再定義されています。異なる基本型です。
1>        c:\documents and settings\user\デスクトップ\project\1章\mydat\include\struct.h(22) : 'pad_t' の宣言を確認してください。
1>c:\documents and settings\user\デスクトップ\project\1章\mydat\include\struct.h(27) : error C2371: 'configpad_t' : 再定義されています。異なる基本型です。
1>        c:\documents and settings\user\デスクトップ\project\1章\mydat\include\struct.h(27) : 'configpad_t' の宣言を確認してください。




色々とエラー原因を探したのですが解決できず、しかたなく8章で追加や変更のあった文字をサイトから丸々コピーしたにも関わらず同じエラーがでます

どのような要因が考えられますか?、皆さまのお力をお貸しください

0SはXP、Visual C++ 2008Express Editionを使っています
長々と失礼いたしました。




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


Name: fatens  ..上級者(19,957ポイント)   Date: 2010/10/09(土) 13:13   No:63001     
Title: Re:龍神録の8章について    
前に同じ質問がありましたが、参考になるでしょうか。

http://www.play21.jp/board/formz.cgi?action=res&resno=60218&page=30&lognum=183&id=dixq&rln=60224


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

Name: softya [URL]  ..ハッカー(229,666ポイント)   Date: 2010/10/09(土) 13:17   No:63003     
Title: Re:龍神録の8章について    
勉強のためでしたら、まずエラーの意味を理解することから始めてはどうでしょうか?
これらのエラーは2つに分類されます。

'PAD_MAX' : 定義されていない識別子です。 
 'ch_t' : 再定義されています。

この2つの意味は分かりますでしょうか?
また、C言語のexternとファイル分割やヘッダの役割に付いてどの程度理解されていますか?


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

Name: dkns  ..ぴよぴよ(841ポイント)   Date: 2010/10/10(日) 08:38   No:63073     
Title: Re:龍神録の8章について    
No:63001 様

参考にしてみます
ありがとうございます

No:63003 様
そうですね、もう少し理解することを頑張ってみようと思います

externについてはこのサイトで初めて存在を知り、グーグルで検索して他サイトで1時間ほど勉強した程度です
ファイル分割やヘッダファイルも他サイトで独学で授業ではちゃんとした授業では習っていません(簡単なゲームを作る際、先生が”こういうものもあるんだよ”とほのめかした程度)


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

Name: dkns  ..ぴよぴよ(872ポイント)   Date: 2010/10/10(日) 10:09   No:63082 解決!     
Title: Re:龍神録の8章について    
出来ました!

やはり重複インクルードが原因だったようです

ありがとうございました


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



Name: きのこのこのこ  ..ぴよぴよ(858ポイント)   Date: 2010/10/09(土) 15:24   No:63017       
Title: 正しく入力できないのです    
生年月日を入力してそれをメッセージボックスで表示するプログラムなのですが、正しく入力できないことがあります
月で1桁の月を入力した時に日が1桁しか入力できなかったり、1桁の日を入力した時に年齢が1桁しか入力できなくなってしまいます
1桁入力するときに01とすると次も2桁入力できるみたいですが、そのようなことをしなくても2桁入力できるようにしたいと思っています
私は高校でC言語を学んでいる最中ですが、WindowsCはまだ数ヶ月しか学んでいません
生年月日や年齢を使って占いのようなものを作り、文化祭で発表しようと思ってますのでどうかよろしくお願いします
見落としておりました、申し訳ありません
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1148365286
Yahoo知恵袋でも質問しておりますが、どうかよろしくお願いします


LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    static int  check = 0 , sFlag = 0 , century , month , day , age;
    int id , len = 0;
    static char str[12];
    char outstr[300] , mes_str[256] , mes_str2[256];
    HDC hdc;
    PAINTSTRUCT ps;
    
    switch(msg){
        case WM_CREATE:
            memset(str , 0 , sizeof(str));
            memset(outstr , 0 , sizeof(outstr));
            memset(mes_str , 0 , sizeof(mes_str));
            break;
        case WM_CHAR:
            len = strlen(str);
            if(wp == VK_RETURN && len != 0){
                memset(str , 0 , sizeof(str));
                sFlag++;
            }
            str[len] = wp;
            if(sFlag == 0){
                century = atoi(str);
            }
            if(sFlag == 1){
                month = atoi(str);
            }
            if(sFlag == 2){
                day = atoi(str);
            }
            if(sFlag == 3){
                age = atoi(str);
            }
            InvalidateRect(hWnd , NULL , TRUE);
            break;
        case WM_PAINT:
            hdc = BeginPaint(hWnd , &ps);
            wsprintf(mes_str , "初めに誕生年を入力してくださ

い");
            TextOut(hdc , 300 , 20 , mes_str , (int)strlen

(mes_str));
            if(century != 0){
                wsprintf(outstr , "年:%d" , century);
                TextOut(hdc , 385 , 40 , outstr , (int)

strlen(outstr));
            }
            if(sFlag > 0){
                memset(mes_str , 0 , sizeof(mes_str));
                wsprintf(mes_str , "続いて誕生月を入力し

てください");
                TextOut(hdc , 300 , 60 , mes_str , 

(int)strlen(mes_str));
                if(month != 0){
                    wsprintf(outstr , "月:%d" , 

month);
                    TextOut(hdc , 395 , 80 , outstr 

, (int)strlen(outstr));
                }
            }
            if(sFlag > 1){
                memset(mes_str , 0 , sizeof(mes_str));
                wsprintf(mes_str , "続いて誕生日を入力し

てください");
                TextOut(hdc , 300 , 100 , mes_str , 

(int)strlen(mes_str));
                if(day != 0){
                    wsprintf(outstr , "日:%d" , 

day);
                    TextOut(hdc , 395 , 120 , outstr 

, (int)strlen(outstr));
                }
            }
            if(sFlag > 2){
                memset(mes_str , 0 , sizeof(mes_str));
                wsprintf(mes_str , "最後に現年齢を入力し

てください");
                TextOut(hdc , 300 , 140 , mes_str , 

(int)strlen(mes_str));
                if(age != 0){
                    wsprintf(outstr , "年齢:%d" , 

age);
                    TextOut(hdc , 385 , 160 , outstr 

, (int)strlen(outstr));
                }
            }
            if(sFlag > 3){
                memset(mes_str , 0 , sizeof(mes_str));
                if(month < 1 || month > 12){
                    strcat(mes_str , "1年はは1〜12月

までです\n");
                    check = 1;
                }
                if(month == 4 || month == 6 || month == 

9 || month == 11){
                    if(day < 1 || day > 30){
                        wsprintf(mes_str2 , "%d

月は1〜30日までです\n" , month);
                        strcat(mes_str , 

mes_str2);
                        check = 1;
                    }
                }
                if(month == 1 || month == 3 || month == 

5 || month == 7 || month == 8 || month == 10 || month == 12){
                    if(day < 1 || day > 31){
                        wsprintf(mes_str2 , "%d

月は1〜30日までです\n" , month);
                        strcat(mes_str , 

mes_str2);
                        check = 1;
                    }
                }
if(check == 0){
                    wsprintf(mes_str , "%d年%d月%d日生まれ  %d歳" , century , 

month , day , age);
                }
                id = MessageBox(hWnd , mes_str , "確認" 

, MB_YESNO | MB_ICONQUESTION);
                if(id == IDNO){
                    sFlag = 0;
                }
            }
            EndPaint(hWnd , &ps);
            break; 編集済み


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


Name: softya [URL]  ..ハッカー(230,277ポイント)   Date: 2010/10/09(土) 15:48   No:63019     
Title: Re:正しく入力できないのです    
同じ人でよね?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1148365286
マルチポストですので、利用規約を読んでいただいて相互リンクをお願いします。
http://dixq.net/board/board.html


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

Name: みけCAT  ..上級者(18,397ポイント)   Date: 2010/10/09(土) 16:34   No:63024     
Title: Re:正しく入力できないのです    
case WM_CHAR: 
            len = strlen(str); 
            if(wp == VK_RETURN && len != 0){ 
                memset(str , 0 , sizeof(str)); 
                sFlag++; 
            } 
            str[len] = wp; 
            if(sFlag == 0){ 
                century = atoi(str); 
            } 
            if(sFlag == 1){ 
                month = atoi(str); 
            } 
            if(sFlag == 2){ 
                day = atoi(str); 
            } 
            if(sFlag == 3){ 
                age = atoi(str); 
            } 
            InvalidateRect(hWnd , NULL , TRUE); 
            break; 
のところを
case WM_CHAR: 
            len = strlen(str); 
            str[len] = wp;/*この行の位置を移動する*/
            if(wp == VK_RETURN && len != 0){ 
                memset(str , 0 , sizeof(str)); 
                sFlag++; 
            }  
            if(sFlag == 0){ 
                century = atoi(str); 
            } 
            if(sFlag == 1){ 
                month = atoi(str); 
            } 
            if(sFlag == 2){ 
                day = atoi(str); 
            } 
            if(sFlag == 3){ 
                age = atoi(str); 
            } 
            InvalidateRect(hWnd , NULL , TRUE); 
            break; 

としてみてください。


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

Name: softya [URL]  ..ハッカー(230,509ポイント)   Date: 2010/10/09(土) 16:42   No:63025     
Title: Re:正しく入力できないのです    
みけCATさん、利用規約を守らていない場合には回答を控えていただいたほうが後々の為になると思います。無意味にDixq (管理人)さんがマルチポストに付いて利用規約に書かれているわけではないので。

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

Name: みけCAT  ..上級者(18,836ポイント)   Date: 2010/10/09(土) 16:43   No:63026     
Title: Re:正しく入力できないのです    
どうしてできなかったかを解説します。
(想像なので間違っているかもしれません。)
最初、str配列はこうなっています。
00 00 00 00 00 00 00 00 00 00 00 00
「1」を押すとこうなります。
31 00 00 00 00 00 00 00 00 00 00 00
ここでEnterを押したとします。
まず
len = strlen(str);
により、len=1になります。 次に、
if(wp == VK_RETURN && len != 0){ 
    memset(str , 0 , sizeof(str)); 
    sFlag++; 
}
のところで 00 00 00 00 00 00 00 00 00 00 00 00 となります。 そして、
str[len] = wp;

のところで、len=1なので
00 0D 00 00 00 00 00 00 00 00 00 00
となります。
「1」を押すと
31 0D 00 00 00 00 00 00 00 00 00 00
となります。
もう一度「1」を押すと、strlen(str)==2なので
31 0D 31 00 00 00 00 00 00 00 00 00
となります。
これをatoiに掛けると、0Dのところで解析が止まり、1になるのだと思います。
同じ理由で、現状のプログラムで2桁入力すると、次に3桁以上は入力できないと思います。


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

Name: みけCAT  ..上級者(19,179ポイント)   Date: 2010/10/09(土) 16:46   No:63027     
Title: Re:正しく入力できないのです    
ついでにバッファオーバーラン対策もした方がいいと思います。
case WM_CHAR: 
            len = strlen(str); 
            if(len<11)str[len] = wp;/*終端のnull文字も含めて要素数-1*/
            if(wp == VK_RETURN && len != 0){ 
                memset(str , 0 , sizeof(str)); 
                sFlag++; 
            }  
            if(sFlag == 0){ 
                century = atoi(str); 
            } 
            if(sFlag == 1){ 
                month = atoi(str); 
            } 
            if(sFlag == 2){ 
                day = atoi(str); 
            } 
            if(sFlag == 3){ 
                age = atoi(str); 
            } 
            InvalidateRect(hWnd , NULL , TRUE); 
            break;


softyaさん
きのこのこのこさんは、規約違反だと言われたらちゃんと直されたので、それでいいと私は思いました。


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

Name: softya [URL]  ..ハッカー(230,580ポイント)   Date: 2010/10/09(土) 16:48   No:63028     
Title: Re:正しく入力できないのです    
>きのこのこのこさんは、規約違反だと言われたらちゃんと直されたので、それでいいと私は思いました

申し訳ないですね。見落としておとました。
きのこのこのこさん、みけCATさん、失礼しました。


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

Name: きのこのこのこ  ..ぴよぴよ(814ポイント)   Date: 2010/10/10(日) 09:00   No:63077 解決!     
Title: Re:正しく入力できないのです    
ご迷惑おかけして申し訳ありませんでした
解決致しました。ありがとうございました


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



Name: hax [URL]  ..ぴよぴよ(732ポイント)   Date: 2010/10/09(土) 22:35   No:63055       
Title: 無題    
またまた来ました・・。
http://dixq.net/g/63.html
に書かれているのですがどうやってセキュルティ?するのでしょうか。

あとデーターを非表示し?、ロック?する方法はありますか?


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


Name: 初級者  ..中級者(9,892ポイント)   Date: 2010/10/09(土) 23:35   No:63061     
Title: Re:無題    
ご本人がわかっていない(クエスチョンマーク付き)概念について、
ご本人が望むような回答が来るとはとても思えませんね。


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

Name: hax [URL]  ..ぴよぴよ(888ポイント)   Date: 2010/10/10(日) 00:31   No:63064     
Title: Re:無題    
では、http://dixq.net/g/63.htmlに載ってるセキュルティを設定する方法をサックリ分かりやすく教えてください。

そして画像などのデータを隠す方法はありますか?


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

Name: softya [URL]  ..ハッカー(231,201ポイント)   Date: 2010/10/10(日) 00:35   No:63065     
Title: Re:無題    
>またまた来ました・・。
>http://dixq.net/g/63.html
>に書かれているのですがどうやってセキュルティ?するのでしょうか。

そのページにも書かれている通りバイナリエディタで文字を書き換えるだけです。
なんかリンクが切れているみたいなので、こちらから。
http://www.forest.impress.co.jp/lib/stdy/program/progeditor/binaryeditbz.html

>あとデーターを非表示し?、ロック?する方法はありますか? 
暗号化やら圧縮やら色々と方法はありますが高度なテクニックが必要です。
初心者のうちはそんなことを気にぜず動くゲーム作りを優先してください。


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

Name: hax [URL]  ..ぴよぴよ(918ポイント)   Date: 2010/10/10(日) 01:19   No:63066     
Title: Re:無題    
とくにやるものはなかったです。
親切にありがとうございます。

っと言いたいところですが、動画の再生はどうしたらできるのでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,288,509ポイント)   Date: 2010/10/10(日) 01:31   No:63068     
Title: Re:無題    
セキュリティを考えるのはsoftyaさんも仰るようにゲームが完成してからでも良いと思いますが
気になるようなので少しだけ回答しましょう。

> あとデーターを非表示し?、ロック?する方法はありますか?  

ユーザーが勝手にデータを閲覧したり改竄したりしないようにする方法という事でしょうか?
それであれば、「暗号化」という話になるでしょう。
例えば、リンク先のように「見られてはいけないデータ」なる文字列があったとしましょう。
実行ファイルは膨大なデータ量である為、一文字ずつ見ていく人はあまりいないでしょう。
(と言っても実行ファイルの仕組みを知ればどこに何のデータがありそうか大体わかってしまうのですが)

多くの場合は検索をかけてデータを見つけると思います。
今回の場合で言えば「データ」という文字列で検索をかければ見つかります。
しかし
「デ」「ー」「タ」それぞれに文字コード+1したものを保存してみたとしたらどうでしょう。
文字コードに1足しただけであっても全く意味の解らない文字列にかわるはずです。

検索してもひっかからなくなるでしょう。
これはシーザー暗号といって最も簡単な暗号化の一つです。

先ほども言ったように解る人が見ればそれでも大体データの場所が解ってしまうので、
データをいくつかシフトするだけで発見されるかもしれません。
ですので、暗号化にはより複雑な方法等様々な方法が存在します。
すごく大事なデータであればライブラリを利用して暗号化するのが良いでしょうが、まぁフリーゲームではそこまでしなくても良いように思います。
いくらデータファイルにこだわってもしょうがない事もありますので。

何故かというと、例えば私のゲームのセーブデータには簡単な暗号化がかけてあって、
改竄するとゲームが起動できなくなるようになっています。
しかし、いくらセーブデータをきっちり暗号化したって、保存する前に書き換えられてはしょうがありません。

ゲームをプレイ中、そのゲームが使っているメモリのデータを書き換える事が出来るので、
例えば、ゲームをクリアした時「1200ポイント」だったとしましょう。
「1200」のデータを持っているメモリのデータを探して「10000ポイント」に書き換えてしまうと
保存する前に変数のデータが変わっているので防ぎようがないのです。

それを防ぐには変数に値を代入する時は常に暗号化するなどの処置が必要かもしれません。
その辺の効率的な方法は私も良く知りませんが、この辺の分野は突き詰めていくとドンドン深くなりそうです。
そしてプログラムコードはドンドン読みにくくなりそう・・。

ですから、最初は気にせずにゲーム本体のプログラムを勉強していった方が良いように思います。


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

Name: softya [URL]  ..ハッカー(231,342ポイント)   Date: 2010/10/10(日) 02:34   No:63070     
Title: Re:無題    
>っと言いたいところですが、動画の再生はどうしたらできるのでしょうか?

色々飛びますね!
まぁ、好奇心旺盛なのは勉強のモチベーションになるので好奇心旺盛でいてください。

「DXライブラリ置き場 リファレンスページ」
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
に色々関数とサンプルコードがありますので眺めてみてください。
お望みのものもありますよ。


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

Name: hax [URL]  ..ぴよぴよ(928ポイント)   Date: 2010/10/10(日) 02:36   No:63071 解決!     
Title: Re:無題    
ありがとうございます。

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

Name: みけCAT  ..上級者(20,585ポイント)   Date: 2010/10/10(日) 08:43   No:63075     
Title: Re:無題    
暗号化するDLLを作ってみました。
ご自由にお使いください。


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



Name: アトラス  ..初心者(6,393ポイント)   Date: 2010/10/10(日) 01:29   No:63067       
Title: 検索&置換ボックスが表示されない    
VC++2008ExpressEditionを使っているのですが、
Ctr+F を押しても、編集メニューの置換と検索を押しても
検索ボックスが出てこなくなりました

不便で大変困っているのでアドバイスよろしくお願いします


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,288,735ポイント)   Date: 2010/10/10(日) 01:38   No:63069     
Title: Re:検索&置換ボックスが表示されない    
その不具合には出会ったことがありませんが、VC++ってたまにおかしな挙動をする時がありますよね。
そんな時は不必要なファイルを全部消して再起動すると戻る事があるかもしれません。

ソースコード(*.cpp, *.h)と
プロジェクト名.sln
プロジェクト名.vcproj

以外のファイルは消しても問題ありません。(DebugフォルダやReleaseフォルダも含め)
VC++を閉じ、不要なファイルを全て消してVC++を再起動してみてはどうでしょう。

これでうまくいかなければ再インストール以外に私は方法をしりません。。


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

Name: アトラス  ..初心者(6,445ポイント)   Date: 2010/10/10(日) 08:38   No:63074 解決!     
Title: Re:    
再起動しても変わらず・・・と思ったら自己解決しました。
なんとスクリーンの外にはみ出ていました(正確には端っこ数ドットがかろうじて見えていた状態
どうしてそんな所にウィンドウが行ってたのか謎ですが
ありがとうございました。


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



Name: ポルク  ..ぴよぴよ(25ポイント)   Date: 2010/10/09(土) 01:46   No:62951       
Title: C言語取得    
初めまして。主さんのHPを見てC言語を始めようと思ったのですが、コンバイルを入手はしたものの、基本的なプログラムがやっぱりまだ全然わかりません・・。
C言語を取得するには本を見ながらやった方がいいのか、ネットで検索して覚えていったほうがいいのかどっちがいいでしょうか?

ぁ、、良かったら主さんがオススメするC言語入門サイトなんか教えてくれたらうれしいです。。。
良かったら返信お願いします。


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


Name: シエル [URL]  ..比類無きプログラマー(87,482ポイント)   Date: 2010/10/09(土) 01:51   No:62952     
Title: Re:C言語取得    
私はC言語は一切本を買わずにネットだけで勉強しました。

まだ抜けている知識は結構ありますが、ほとんど問題なく扱えてます。
私が最初にC言語を勉強したサイトは以下の苦しんで覚えるC言語です。
最初は私もかなり苦しかったですが、諦めずに頑張ってある程度扱えるようになりました。
勉強頑張って下さい。

http://homepage3.nifty.com/mmgames/c_guide/

それでは。


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

Name: シエル [URL]  ..比類無きプログラマー(87,518ポイント)   Date: 2010/10/09(土) 01:54   No:62953     
Title: Re:C言語取得    
すいません。こっちが最新のURLだったようです。
一応貼っておきます。
http://9cguide.appspot.com/


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,286,260ポイント)   Date: 2010/10/09(土) 02:01   No:62955     
Title: Re:C言語取得    
> ポルクさん

こんにちは^^
私のHPを見てC言語を勉強しようと思って頂けたとは光栄です。
これから難しい事や辛い事も沢山あるかもしれませんが、共にがんばっていきましょう☆

さて、本・ネットはそれぞれに長所短所があります。
HPの解説はボランティアで作っているので、図が少なかったりあまり解説が念入りに考えられた文章では無かったりします。
その代わりソースがコピペ出来るのは便利です。

本は売り物ですから、よく考えて書かれていて解説も非常に解りやすい物が多いです。
ただ、コピペが出来ないので、プログラムを書くのに時間がかかります。
しかし最初は全て手打ちした方が良いかもしれませんし、CDロム付の本を買うなど方法もあるかもしれません。

私がお勧めする方法としては、まず「C言語 入門」でググります。
解説サイトが山のように出てきますので、順番に見ていって自分が読みやすそうだと思ったサイトで"ある程度"勉強して見て下さい。
google先生は賢いので、上にあるものほど読みやすい場合が多いです。

"ある程度"C言語に慣れてきたら大きな書店に行きます。
C言語の解説書もこれもまた山のようにありますが、端から手に取ってパラパラ見ていきます。
「これが読みやすそう」と思った本を購入してしっかり勉強して下さい。
人が勧めるより自分が読みやすそうだと思った本の方が良いと思います。
それでも何か勧めてほしいという事でしたら、
http://www.amazon.co.jp/%E6%96%B0%E7%89%88-%E6%98%8E%E8%A7%A3C%E8%A8%80%E8%AA%9E-%E5%85%A5%E9%96%80%E7%B7%A8-%E6%9F%B4%E7%94%B0%E6%9C%9B%E6%B4%8B/dp/4797327928
この辺お勧めです。この次は実践編を読んでください。

先ほど"ある程度"といったレベルはパラパラ参考書を読んでどれが解りやすそうか解るレベルです。
詳しい文法を覚えているような必要はありません。
ネットでも勉強できるでしょうが、やはり勉強する為には自分の財布を痛めたほうが良い事が多いです。

ところで、プロジェクトを作ってhello worldをコンパイルするところまではいきました?


念のため、コン「パ」イル (コンバイルではなく)
また、機械語に変換する事をコンパイルといい、その作業をしてくれるソフトの事をコンパイラと言います。


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

Name: ポルク  ..ぴよぴよ(106ポイント)   Date: 2010/10/09(土) 02:22   No:62957     
Title: Re:C言語取得    
>シエルさん>管理人さん

詳しい返信ありがとうございます・・!

とても参考になります。まだ始めたばっかですが頑張って勉強します。ありがとうございましたm(_ _)m 編集済み


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

Name: ポルク  ..ぴよぴよ(196ポイント)   Date: 2010/10/09(土) 02:55   No:62959     
Title: Re:C言語取得    
連続で返信すいません。

>管理人さん
>ところで、プロジェクトを作ってhello worldをコンパイルするところまではいきました?

ここまではなんとかできました。ここから先どうしよう・・と思い質問しようと思った次第です。


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

Name: へろり  ..熟練のプログラマー(44,610ポイント)   Date: 2010/10/09(土) 07:59   No:62967     
Title: Re:C言語取得    
>ここまではなんとかできました。ここから先どうしよう・・と思い質問しようと思った次第です。

プログラムを習得するには、とにかく読んで、とにかく書くのが一番の近道です。
最初はきちんと書いたつもりでも、意図しない振る舞いをすることが多々あると思います。(慣れてきても日常茶飯事ですが)
何故、そういう動きをするのか調べたり考えたりしていく内に、上達していきます。


とりあえず、FizzBuzzゲームなど、簡単な問題から解いていくのがいいと思いますよ。

ここの掲示板では、コンソールでピラミッド? 三角形? を描画させる問題が流行っているような気がします。
応用してパスカルの三角形を描画してみてもいいですね。



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

Name:  ..中級者(11,380ポイント)   Date: 2010/10/09(土) 11:41   No:62976     
Title: Re:C言語取得    
 僕も初心者なので余り参考にならないかもしれませんが、
シエルさんがお書きになられたHPの例を一通りやってみたら、
簡単なライフゲームを自力で作ってみるといいと思います。


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

Name: ポルク  ..ぴよぴよ(206ポイント)   Date: 2010/10/10(日) 00:05   No:63063 解決!     
Title: Re:C言語取得    
ありがとうございます! 参考にさせてもらってやってみまする

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



Name: みけCAT  ..上級者(20,555ポイント)   Date: 2010/10/09(土) 22:05   No:63052       
Title: 座標の回転    
なぜか座標を回転するサンプルを作ってみました。
参考になれば幸いです。
添付したサンプルの計算部分のみ抽出して掲載しておきます。
ox,oy:結果を代入するポインタ
cx,cy:回転の中心の座標
mx,my:回転される座標
angle:回転角度(ラジアン、時計回り)
void kaiten(double* ox,double* oy,
        double cx,double cy,double mx,double my,double angle) {
    double length;/*斜辺の長さ*/
    double sinmoto,cosmoto;/*元のsin,cos*/
    double sinsaki,cossaki;/*回転後のsin,cos*/
    length=sqrt((mx-cx)*(mx-cx)+(cy-my)*(cy-my));
    if(length==0) {
        *ox=mx;
        *oy=my;
        return;
    }
    sinmoto=(cy-my)/length;
    cosmoto=(mx-cx)/length;
    /*加法定理*/
    sinsaki=sinmoto*cos(angle)+cosmoto*sin(angle);
    cossaki=cosmoto*cos(angle)-sinmoto*sin(angle);
    *ox=cx+length*cossaki;
    *oy=cy-length*sinsaki;
}

/*ニュートン法*/
double sqrt(double in) {
    double x=2.0;
    double nextx=1.0;
    while((x>=nextx?1:-1)*(x-nextx)>0.0000000001) {
        x=nextx;
        nextx=x-(x*x-in)/(2*x);
    }
    return nextx;
}

/*
高校生のための マクローリン展開(1)
http://bit.ly/9Z2PNX
より
*/
double cos(double angle) {
    double result=1.0;
    double temp;
    int i,j;
    double fugou=-1;
    for(i=2;i<=30;i+=2) {
        temp=fugou;
        for(j=0;j<i;j++)temp*=angle;
        for(j=1;j<=i;j++)temp/=j;
        result+=temp;
        fugou=-fugou;
    }
    return result;
}

/*
高校生のための マクローリン展開(2)
http://bit.ly/bfVyXy
より 
*/
double sin(double angle) {
    double result;
    double temp;
    int i,j;
    double fugou=-1;
    result=angle;
    for(i=3;i<=31;i+=2) {
        temp=fugou;
        for(j=0;j<i;j++)temp*=angle;
        for(j=1;j<=i;j++)temp/=j;
        result+=temp;
        fugou=-fugou;
    }
    return result;
}


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




Name: 山崎  ..熟練のプログラマー(51,036ポイント)   Date: 2010/10/08(金) 10:55   No:62909       
Title: placement new について    
おはようございます。
いつもお世話になっております、山崎と申します。
今回は、placement new についていくつかお伺いに参りました。

OSはXP、エディタはVisual Studio2010を使っております。

前々から興味があったplacement newについて、現在いろいろ調べております。
普通のnewよりどれくらい高速に動作するのかを調べようとプログラムを作っていたのですが、
その前にいろいろわからないことが出てきましたので、皆様のお力をお借りしたいと思います。
なお、placement new については主に以下のサイトを参考に学習しております。
http://www.geocities.jp/ky_webid/cpp/language/036.html

1.
メモリプールとして前もって確保しておくメモリ領域の型は、何でもいいのでしょうか?
char型として確保した領域にint型の値を割り当てたり、
あるいは自作したクラスの型でメモリを確保し、その領域にさらに違うクラスの値を割り当てるなど…。
そういうことは可能なのでしょうか。または、そういった使い方は安全なのでしょうか。

2.
メモリプールの、既に値を割り当てて使用中の領域に対して、誤ってさらに値を割り当てようとした時、
それは実行時エラーにならないのでしょうか?
仮にそれがエラーにならないとしたら、
「メモリプールのどこが使用中で、どこが空いているか」という情報の管理は、
プログラマがしなければいけないのでしょうか。

3.
メモリプールの中のどの位置に値を割り当てるかは選ぶことができるのでしょうか?

4.
デストラクタを明示的に呼び出した後の領域は、不定な値にならないのでしょうか?
仮に、デストラクタで後処理した後の領域に誤ってアクセスしてしまった場合、
デストラクタが呼び出された後の未使用領域ということに気づかずそのままプログラムが走り続けてしまうのでしょうか。

5.
普通のnewに比べて、placement newはどれくらい高速なのでしょうか。
自動変数を利用するくらいに高速なのでしょうか。

似たような意味の質問もあるとは思いますが、どうかお教えいただければ幸いです。

参考に、placement newをとりあえず試しに使ってみた時のコードを貼り付けておきます。
#include <stdio.h>
#include <stdlib.h>
#include <new>

class TestClass
{
public:
    int TestInt;
    double TestDouble;

    TestClass() {printf("called constructor\n");}
    ~TestClass() {printf("called destructor\n");}
    void PrintMember() {printf("Int=%d Double=%lf \n",TestInt,TestDouble);}

    void SetMember()    //テキトーな値を入れてみる
    {
        TestInt=rand();
        TestDouble=(double)rand()/10;
    }
};

int main()
{
    char* Pool=new char[sizeof(TestClass)*5];    //char型でメモリプールを作る

    TestClass* TestSpace[5];
    for(int i=0;i<5;i++)
    {
        TestSpace[i]=new(Pool) TestClass();
        TestSpace[i]->SetMember();
    }

    TestSpace[0]->~TestClass();

    return 0;
}


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


Name: たかぎ [URL]  ..ハッカー(229,901ポイント)   Date: 2010/10/08(金) 12:11   No:62911     
Title: Re:placement new について    
> 1. 
> メモリプールとして前もって確保しておくメモリ領域の型は、何でもいいのでしょうか? 
> char型として確保した領域にint型の値を割り当てたり、 
> あるいは自作したクラスの型でメモリを確保し、その領域にさらに違うクラスの値を割り当てるなど…。 
> そういうことは可能なのでしょうか。または、そういった使い方は安全なのでしょうか。 

一般的には不可能ですし、安全でもありません。
x86であれば、たまたま動くとは思いますが...

> 2. 
> メモリプールの、既に値を割り当てて使用中の領域に対して、誤ってさらに値を割り当てようとした時、 
> それは実行時エラーにならないのでしょうか? 
> 仮にそれがエラーにならないとしたら、 
> 「メモリプールのどこが使用中で、どこが空いているか」という情報の管理は、 
> プログラマがしなければいけないのでしょうか。 

メモリプールというのが何を指しているのか分かりませんので、それ次第でしょう。

> 3. 
> メモリプールの中のどの位置に値を割り当てるかは選ぶことができるのでしょうか? 

これも、その「メモリプール」次第です。

> 4. 
> デストラクタを明示的に呼び出した後の領域は、不定な値にならないのでしょうか? 
> 仮に、デストラクタで後処理した後の領域に誤ってアクセスしてしまった場合、 
> デストラクタが呼び出された後の未使用領域ということに気づかずそのままプログラムが走り続けてしまうのでしょうか。 

不定だという認識でよいと思います。
誤ってアクセスした場合でも検出方法はありませんので、ポインタにNULLを入れておくなどしたほうが無難です。

> 5. 
> 普通のnewに比べて、placement newはどれくらい高速なのでしょうか。 
> 自動変数を利用するくらいに高速なのでしょうか。 

newに渡すメモリブロックを割り付ける時間によります。


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

Name: 山崎  ..熟練のプログラマー(51,119ポイント)   Date: 2010/10/08(金) 19:58   No:62932     
Title: Re:placement new について    
たかぎさん
ご返信、まことにありがとうございます。
まだまだ学習中の身ですので拙い質問だったかもしれません、
御親切にお答えくださりありがとうございました。


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

Name: ISLe  ..プログラマー(25,488ポイント)   Date: 2010/10/09(土) 01:55   No:62954     
Title: Re:placement new について    
>         TestSpace[i]=new(Pool) TestClass();

上記のコードだとTestSpace[0]〜TestSpace[4]に入るアドレスはすべてPoolと同じアドレスになるのですけど。


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

Name: 山崎  ..熟練のプログラマー(51,307ポイント)   Date: 2010/10/09(土) 09:23   No:62969     
Title: Re:placement new について    
ISLeさん
ご返信ありがとうございます。
おっしゃるとおりで、上のソースコードでは全て同じ場所に値が代入されてしまっていて、
コードを書いた人が期待したであろう結果が得られていません。
そんな事態が起こったので、こちらで質問をするにいたったというわけなのです。

ただ、質問の趣旨は「期待した結果が得られないのですが、どこをどう直せばいいのですか」ではなく、
3番目に質問させてもらったように「値を割り当てる場所は指定できるのかどうか」と少し一般的な
感じの質問にさせていただきました。


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

Name: めるぽん  ..上級者(22,019ポイント)   Date: 2010/10/09(土) 10:38   No:62970     
Title: Re:placement new について    
placement new は必要無いのであれば使わないに限りますが、どうしても必要だということになれば、最低でもアライメントの知識は入れておくべきでしょう。
http://d.hatena.ne.jp/Cryolite/20051102#p1
がよくまとめられています。

>あるいは自作したクラスの型でメモリを確保し、その領域にさらに違うクラスの値を割り当てるなど…。
>そういうことは可能なのでしょうか。または、そういった使い方は安全なのでしょうか。 
仕様上では、たとえば、
void* p; // 何かの領域が割り当てられているとする
Hoge* q = new(p) Hoge();
Fuga* r = new(p) Fuga();
のように、同じ領域に別のオブジェクトを構築することは未定義です。なぜかというと、q のライフタイムが終了する前に p の領域に別のオブジェクトを構築しているからです。
void* p;
Hoge* q = new(p) Hoge();
q->~Hoge();
Fuga* r = new(p) Fuga();

とするのは、デストラクタ呼び出しによって q のライフタイムが終了しているため、この領域を使っても構いません。

デストラクタを呼ばずに構築してもいいケースはいくつか挙げられますが、一般的にはこのように明示的にデストラクタを呼んでから再構築するべきです。


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

Name: ookami  ..熟練のプログラマー(53,991ポイント)   Date: 2010/10/09(土) 11:42   No:62977     
Title: Re:placement new について    
私も基本的には、明確なメリットがなければ「やめといたほうが」と思いますが、

> 3番目に質問させてもらったように「値を割り当てる場所は指定できるのかどうか」

ということなら、
TestSpace[i]=new(Pool) TestClass();

TestSpace[i]=new(Pool+sizeof(TestClass)*i) TestClass();
でいけるんじゃないですかね。


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

Name: ISLe  ..プログラマー(25,562ポイント)   Date: 2010/10/09(土) 18:26   No:63037     
Title: Re:placement new について    
> ただ、質問の趣旨は「期待した結果が得られないのですが、どこをどう直せばいいのですか」ではなく、
> 3番目に質問させてもらったように「値を割り当てる場所は指定できるのかどうか」と少し一般的な
> 感じの質問にさせていただきました。

指定したアドレスから始まる領域にオブジェクト割り付ける機能でしかないので、どんなアドレス値を渡すか、いつどこに領域を確保するか、はすべてプログラマの責任で行う必要があります。

自前で管理するメモリプールを使いたいならnewとdeleteをオーバーライドすればdeleteもふつうに呼び出せて差し替えとか楽です。
落ち物パズルゲームみたいにオブジェクトの最大数が決まっているときに固定で確保したメモリを使い回すのをやったことあります。

あとVisual C++の有償版にあるDEBUG_NEWマクロと同時に使えませんね。
newのオーバーライドでデバッグしたいところに合わせてメモリ確保の方法を切り替えると効率が良いです。


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

Name: 山崎  ..熟練のプログラマー(51,533ポイント)   Date: 2010/10/09(土) 21:43   No:63051 解決!     
Title: Re:placement new について    
ぬるぽんさん、ookamiさん、ISLeさん、
ご返信まことにありがとうございます。
皆様に提示いただいたサンプルコードやサイト、ノウハウのおかげで
なんとかplacement newを使っていくことができそうです。
御親切にお教えいただき、誠にありがとうございます。

ぬるぽんさん
紹介頂いたサイトを拝見しました。
placement newに関するノウハウがたくさんつまっているようでした、
この後じっくり読ませて頂きますね。
お気に入りに登録して、ことあるごとに参考にさせて頂きます。

ookamiさん
なるほど、newのカッコの中身でアドレスを指定すればいいのですね・・・。
参考にしてプログラムを組んでみようと思います。
ありがとうございます。

ISLeさん
やはり、プログラマが管理する必要があるのですね・・・。
やってみようと思います。
アドバイス誠にありがとうございました。


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



Name: WHITE  ..ぴよぴよ(212ポイント)   Date: 2010/10/09(土) 19:33   No:63040       
Title: GDIのみでゲーム作り    

少し前にC言語の勉強を始めた者です。

ざっくりとした質問になってしまいますが、描画にWin32APIのGDI関数だけを使って
リアルタイムに動くゲーム(グラ●ィウスとかのシューティングのような)を作ることは可能なのでしょうか?

また、作ることができる場合どのようなものまでつくれるのでしょうか?
(なにかゲームの作品名をあげてもらえるとイメージしやすくて助かります。)
ウインドウズに付属するピンボール(Space Cadet)のようなものはDirectXをつかっているのでしょうか?

よろしくお願いします。


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


Name: シエル [URL]  ..比類無きプログラマー(87,754ポイント)   Date: 2010/10/09(土) 19:42   No:63041     
Title: Re:GDIのみでゲーム作り    
私は実際にWINAPIだけを使ってシューティングをある程度まで完成させました。

私の作り方がまずかったのか、弾を300発程度描画したら、処理落ちしたり
ほかにも高度なエフェクトを表現できなかったので、
今は描画部分をDirectXに移行させて現在作り直しています。(DXライブラリではありません)

ですので、シューティングもある程度のものなら十分作れると思います。
ですが、画像を回転させたり、高度なアルファブレンディングをしたりなどになってくると
DirectXなどを使わないと表現できなくなってきます。

ですので、そんなにクオリティの高いゲームでなければ十分作れます。 編集済み


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

Name: WHITE  ..ぴよぴよ(355ポイント)   Date: 2010/10/09(土) 19:52   No:63042     
Title: Re:GDIのみでゲーム作り    

シエルさん、回答ありがとうございます。

やはりある程度までは可能なのですね、
しかし高度な表現が使えないということですか・・

状況に応じてDirectXを使うこともしなきゃいけないということですね。


ちなみにシエルさんは開発環境(コンパイラ)はなにをつかっていますか?
私はMinGWを使っているのですが、MinGWからのDirectXの使い方がいまいちわかりません。
(本当はDXライブラリをMinGWで使える方法がわかればいいんですが・・・)
参考になるサイトとかをご存知であれば教えていただけると助かります。


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

Name: シエル [URL]  ..比類無きプログラマー(87,846ポイント)   Date: 2010/10/09(土) 20:00   No:63045     
Title: Re:GDIのみでゲーム作り    
私はVisual C++ 2008 Express Editionです。

私はまだC言語暦5ヶ月程度ですので、ほかのコンパイラは使ったことがありません^^;
MinGWなんか聞いたことないですね^^;
DXライブラリも普段まったく使わないので、ちょっとアドバイス出来そうにありません。
申し訳ありません。

ですので、ほかの方よろしくお願い致します^^


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

Name: softya [URL]  ..ハッカー(230,725ポイント)   Date: 2010/10/09(土) 20:57   No:63048     
Title: Re:GDIのみでゲーム作り    
使ったことはないのですが、SDLと言うのあるので試されてはどうでしょう。
「SDL - Wikipedia」
http://ja.wikipedia.org/wiki/SDL
MinGW + SDL で Windowsソフト開発
http://ai11.net/2005/05/06/

「初心者の初心者による初心者の為のSDL」
http://tokyo.cool.ne.jp/sdl/


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

Name: WHITE  ..ぴよぴよ(392ポイント)   Date: 2010/10/09(土) 20:59   No:63049 解決!     
Title: Re:GDIのみでゲーム作り    
シエルさん、softyaさん
ありがとうございました。

早速参考にさせていただきます。


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



Name: 笹身  ..ぴよぴよ(548ポイント)   Date: 2010/10/09(土) 17:45   No:63034       
Title: グローバル変数    
こんばんは、笹身という者です。

今回はグローバル変数について、質問があるので質問掲示板にて、質問させて頂きます。

本題ですが、グローバル変数は、使わないほうがいい、危険性がある。などと言われているので
なるべくグローバル変数の使用を抑えようとしているのですが、
今回の場合、グローバル変数を使わないでどのように表現したらよいでしょうか?

開発環境:VC++
言語:C言語

ソースコード

"test1.h"

//プレイヤーデータ
typedef struct Player{
    int Graph[12];        //プレイヤー画像の取得
    int X;                //プレイヤー座標Xの取得
    int Y;              //プレイヤー座標Yの取得
    int direction;        //プレイヤーの向き(9=上 0=下 6=右 3=左)
    int walk_flag;        //プレイヤーの移動状態(止まっているか動いているか)
}Player;

test2.cpp
void PLAYER_walking(){    
    
//構造体の初期化
Player Player;            //プレイヤーのデータ(画像、座標(XY)向き)    
    Player.direction;    //向き
    Player.X = PLAYER_X;//X座標
    Player.Y = PLAYER_Y;//Y座標
    Player.walk_flag =0;//移動状態(1=ON)

//数変数群    
    LoadDivGraph( "test.png" , 12 , 3 , 4 , 32 , 32 , Player.Graph );//プレイヤー画像
         .
         .
         .

void Barret_data(){
    ここにプレイヤーの座標と向きを元に弾を表示させたいのですが、
     もう一度構造体を初期化(?)して、向き、座標を取得しないといけないのでしょうか?

グローバル変数を使うと簡単に取得できるのですが、使わないほうがいいと言われているので
なるべく使いたくないです。

コードが分かりにくかったら申しわけございません。


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


Name: みけCAT  ..上級者(19,625ポイント)   Date: 2010/10/09(土) 17:54   No:63035     
Title: Re:グローバル変数    
コード全体を見ないとよくわかりませんが、
関数の引数でポインタを渡すというのはどうですか?
構造体のポインタのメンバへのアクセスは.のかわりに->を使います。
変数のポインタを取得するには、変数の前に&をつけます。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,287,385ポイント)   Date: 2010/10/09(土) 18:18   No:63036     
Title: Re:グローバル変数    
グローバル変数は安全に使えば非常に有用です。
むしろCで大きなプログラムを書くならモジュールごとに共通に使える変数は用意するべきでしょう。

C++ではクラスのメンバ変数として複数の関数間で共通に使う変数が用意出来ますが、
Cではそれが出来ません。しかしファイルごとにファイルの先頭にstatic変数を用意すれば似たような事が出来ます。
複数のファイル間で共通して使えるグローバル変数は0にし(全てのグローバル変数はstatic)、
値の取得はそのファイルに書いたGet関数を通して得るようにします。

そうすることで危険性は減らせます。

例えば、自機モジュールとそれを管理するメインモジュールがあったとしましょう。

自機.hにはメインモジュールから呼び出す関数のプロトタイプ宣言を書きます。
自機.cにはまず先頭に、上のプログラムで言う

statict Player_t Player;

を書き、Player自機.cのファイルの中ではどの関数からでもアクセスできるようにします。
(ただし、staticが付いているので、このファイルの外からはアクセスできません。)
自機の処理をする関数を自機.cに書きます。

プレイヤーの何らかの値が欲しい場合、例えばプレイヤーの座標を取得するような関数を使いたい時は

void GetPlayerPos( int *x, int *y ){
    *x = Player.x;
    *y = Player.y;
}

のような関数を通して渡してあげます。
そうすれば、元の変数の値が書き換わる可能性がありません。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,287,906ポイント)   Date: 2010/10/09(土) 18:32   No:63038     
Title: Re:グローバル変数    
goto文もグローバル変数も同じことが言えます。
C言語を学び始めた人には「なるべく使わないように」と教えると思います。
それは良く理解せずに使うと非効率になりがちだからです。
でもgoto文もグローバル変数も正しく使えば非常に有用です。

例えばgoto文で言えば、深いループから抜ける時や、終了処理をしてから関数を抜けたい時など、
goto文を使った方がスマートになる場合があります。

また、グローバル変数の使い方の例として以下のようなプログラムを書いてみました。
完全にモジュールを切り分ける単位として解りやすいモジュールとしてUIがあるでしょう。
ここではキーボードをUIとしています。

/***    UI.h    ***/

// キーの入力状態を計算する
int UI_CalcHitKeyStateAll();

// KeyNumberのボタンの入力状態を返す
int UI_GetHitButton( unsigned char KeyNumber );

/*************************************************/

/***    UI.cpp    ***/

#include "DxLib.h"

static int gKey[ 256 ];   // キー入力状態を格納するための int型配列

// キーの入力状態を計算する
// 返り値 0:正常
int UI_CalcHitKeyStateAll(){
    int i;
    char KeyInputNow[256];            // 現在のキーの入力状態を格納する配列
    GetHitKeyStateAll( KeyInputNow ); // 現在のキーの入力状態を取得
    for( i=0; i<256; i++ ){
          if( KeyInputNow[i] == 1 ){  // i番目のキーが押されていたら
                  gKey[i]++;          // i番目の配列要素の値を加算
          } else {                    // i番目のキーが押されていなかったら
                  gKey[i] = 0;        // 要素の中身を0に
          }
    }
    return 0;
}

// KeyNumberのボタンの入力状態を返す
// 返り値 自然数:KeyNumberのキーの入力状態
int UI_GetHitButton( unsigned char KeyNumber ){
    return gKey[ KeyNumber ];
}
/*************************************************/

このプログラムはゲームプログラミングの館のGetHitKeyStateAll_2をゲームのモジュールに適用したものです。
どのキーが現在おされているかという情報はあらゆるモジュールが必要とします。
しかし、どこからでもその情報が書かれている変数にアクセス出来てしまうと、安全性が下がります。
そこで、変数に直接アクセスすることなく値を取得する為に、UI_GetHitButton関数 を利用します。

こうすることで安全にグローバル変数の値を取得できます。
また、グローバル変数の値が書き換わるタイミングがわけわからないなんてことにもなりません。

キーボードの入力状態を取得したいファイルの先頭に

#include "UI.h"

を書きます。すると、そのファイルからこの関数が呼べるようになります。
全てのモジュールにおいてこの要領で作っていけばかなり大きな構造でも対応出来そうです。
ただやはりC++よりは非効率になる事が多いですが・・。


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

Name: 笹身  ..ぴよぴよ(747ポイント)   Date: 2010/10/09(土) 19:53   No:63043     
Title: Re:グローバル変数    
返信ありがとうございます。

>みけCAT様
引数を使う方法ですが一応考えたのですがどの部分で値を渡せばいいのか分からなくて
断念しました。

>Dixq (管理人)様
グローバル変数、goto文の有用性を丁寧に解説してくださり、ありがとうございます。
今回は、他の関数(当たり判定など)でも、プレイヤーの情報を必要になると思ったので
グローバル変数を使ってみます。

忙しいなかご返信ありがとうございます。


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

Name: 笹身  ..ぴよぴよ(752ポイント)   Date: 2010/10/09(土) 19:53   No:63044 解決!     
Title: Re:グローバル変数    
解決

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



Name: みけCAT  ..上級者(18,186ポイント)   Date: 2010/10/09(土) 16:29   No:63023       
Title: LoadDivGraph相当のコード    
無謀かもしれませんが、龍神録をDXライブラリを使わずに作ってみようとしています。
しかし、4章でつまずきました。
メインのループに入ってくれません。
メインのループとは、GameThread関数内のwhileのことです。
いろいろ調べてみたところ、
自作LoadDivGraph関数の中の
output[yy*x+xx].bmp=bmp;
output[yy*x+xx].x=xx*sx;
output[yy*x+xx].sizex=sx;
output[yy*x+xx].y=yy*sy;
output[yy*x+xx].sizey=sy;

のところをコメントアウトすると一応動いてくれました。
どこが悪いか教えてくださる人がいたら幸いです。
プロジェクトは添付しました。
画像は「プロジェクトを一括ダウンロード」の中の画像を同名でbmpに変換したものを使用しています。
プロジェクトの変換はhttp://sourceforge.jp/projects/sfnet_prjconverter/を使用しました。


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


Name: softya [URL]  ..ハッカー(230,612ポイント)   Date: 2010/10/09(土) 16:56   No:63029     
Title: Re:LoadDivGraph相当のコード    
extern gazou img_ch[2][12];でリンクエラーが出ますが何か足らないってことでしょうか?
実体は何処で定義されていますか?


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

Name: みけCAT  ..上級者(19,447ポイント)   Date: 2010/10/09(土) 16:58   No:63030 解決!     
Title: Re:LoadDivGraph相当のコード    
main.cpp内の
int img_ch[2][12];    //キャラクタ画像9枚分 X2(変身用)
gazou img_ch[2][12];    //キャラクタ画像9枚分 X2(変身用)

に直したらうまくいきました。
ありがとうございました。
透過処理とかはまたあとで考えます。


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

Name: みけCAT  ..上級者(19,695ポイント)   Date: 2010/10/09(土) 17:01   No:63031     
Title: Re:LoadDivGraph相当のコード    
とりあえず実行結果に近くなるようにfunction.cppを修正しました。
DrawRotaGraphF関数内です。
修正前
StretchBlt(to,x,y,
        (int)(graph->sizex*ExtRate),(int)(graph->sizey*ExtRate),
        gazoufordraw,graph->x,graph->y,graph->sizex,graph->sizey,
        SRCCOPY);
修正後
StretchBlt(to,x-graph->sizex/2,y-graph->sizey/2,
        (int)(graph->sizex*ExtRate),(int)(graph->sizey*ExtRate),
        gazoufordraw,graph->x,graph->y,graph->sizex,graph->sizey,
        SRCCOPY);


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



Name: hax  ..ぴよぴよ(23ポイント)   Date: 2010/10/09(土) 03:59   No:62961       
Title: 無題    
起動するときのアレってどうすればつくれるんですか?


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


Name: みけCAT  ..上級者(17,461ポイント)   Date: 2010/10/09(土) 06:05   No:62962     
Title: Re:無題    
「起動するときのあれ」とだけいわれても何のことかわかりません。
もう少し説明してください。

もしかしてスプラッシュスクリーンのことですか?


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

Name: たかぎ [URL]  ..ハッカー(230,009ポイント)   Date: 2010/10/09(土) 06:38   No:62963     
Title: Re:無題    
何が起動するときなのかもわかりませんね。
コンピュータ・ソフトウェアの話だと仮定しても、ブートローダーやスタートアップのことかもしれませんし、オペレーティングシステムの起動処理(OSによってまったく異なるので一概にはいえません)かもしれませんし、オペレーティングシステム上で動作するプロセス等の話かもしれません。
 編集済み


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

Name: しろ  ..初心者(7,937ポイント)   Date: 2010/10/09(土) 06:42   No:62964     
Title: Re:無題    
exeファイルのことでしょうか?

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

Name: みけCAT  ..上級者(17,491ポイント)   Date: 2010/10/09(土) 07:25   No:62965     
Title: Re:無題    
例として画像を提示してもらえるとわかりやすいです。

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

Name: hax  ..ぴよぴよ(506ポイント)   Date: 2010/10/09(土) 10:39   No:62971     
Title: Re:無題    
恐らく自分はこれを知りたいんだと思いますがビルドってどこですか?


ソフトが完成したらDebugビルドではなくReleaseビルドを行い処理速度の向上を図る

 ソフトの開発中はおそらくデバッグスタート(F5で実行)をしていると思いますが、いえ デバッグ機能を使っていなくてもデバッグスタートが出来る実行可能ファイルとしてビルドされますが、 こうして出来る実行可能ファイルはデバッグ用の情報を多く含むのでその情報をいれない時に比べて 200KBほどファイルの容量が増えてしまいます。(処理速度も落ちます)
 そこで、ソフトが完成したらリリースビルドという、デバッグ情報を含まない実行可能ファイルを ビルドすることで容量の縮小及び処理速度の向上をすることが出来ます。
 方法はまずメニューの『ビルド』→『アクティブな構成の設定』を開きます、すると『〜〜Debug』と 『〜〜Release』がリストの中に表示されていて、おそらく『〜〜Debug』のほうが選択されていると 思いますので、ここでもう一つの『〜〜Release』の方を選択してOKボタンを押します。これでもう一度 ビルドするとリリースビルドされた実行可能ファイルが出来ます。


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

Name: ookami  ..熟練のプログラマー(53,891ポイント)   Date: 2010/10/09(土) 11:05   No:62972     
Title: Re:無題    
一応リンク元を。
http://homepage2.nifty.com/natupaji/DxLib/dxfaq.html#M1

念のため、コンパイラは入手済みですか?


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

Name: hax  ..ぴよぴよ(520ポイント)   Date: 2010/10/09(土) 11:18   No:62973     
Title: Re:無題    
コンパラはありますよ?
コンパラでやるんですか?


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

Name: hax  ..ぴよぴよ(539ポイント)   Date: 2010/10/09(土) 11:35   No:62974     
Title: Re:無題    
コンパラとコンパイラを間違えました(笑)

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

Name: hax  ..ぴよぴよ(510ポイント)   Date: 2010/10/09(土) 11:37   No:62975     
Title: Re:無題    
コンパイラじゃなくてVisual C++ 2010 Expressでした(笑)

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

Name: ookami  ..熟練のプログラマー(54,075ポイント)   Date: 2010/10/09(土) 11:48   No:62978     
Title: Re:無題    
Visual C++ 2010 Express をインストール済みなら、
それを使って、プロジェクトを作成すれば、「ビルド」メニューが表示されます。

こちらも参考になるかもしれません。
http://dixq.net/g/


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

Name: hax  ..ぴよぴよ(535ポイント)   Date: 2010/10/09(土) 11:59   No:62980     
Title: Re:無題    
やっぱ 分かりません。
もっと詳しく説明していただけませんか?


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

Name: ookami  ..熟練のプログラマー(54,097ポイント)   Date: 2010/10/09(土) 12:04   No:62982     
Title: Re:無題    
すいませんが「起動するときのアレ」について詳しく説明してもらえますか?

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

Name: hax  ..ぴよぴよ(552ポイント)   Date: 2010/10/09(土) 12:06   No:62983     
Title: Re:無題    
ゲームを起動するファイルのようなもの?ですかね?

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

Name: ookami  ..熟練のプログラマー(54,122ポイント)   Date: 2010/10/09(土) 12:09   No:62984     
Title: Re:無題    
exeファイルのことですか?
(スクリーンショットでは breakout.exe)


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

Name: hax  ..ぴよぴよ(584ポイント)   Date: 2010/10/09(土) 12:12   No:62985     
Title: Re:無題    
例えばこんな 起動ファイル のようなものを作りたいわけです。
これで分かりましたでしょうか?


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

Name: hax  ..ぴよぴよ(604ポイント)   Date: 2010/10/09(土) 12:14   No:62986     
Title: Re:無題    
熟練のプログラマー 様  それです!!

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

Name: ookami  ..熟練のプログラマー(54,184ポイント)   Date: 2010/10/09(土) 12:15   No:62987     
Title: Re:無題    
Visual C++ 2010 Expressでは、作ったゲームを起動できるんですよね?
なら、デフォルトでは、プロジェクトファイルと同じフォルダの、DebugフォルダまたはReleaseフォルダに、すでにexeファイルができています。


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

Name: hax  ..ぴよぴよ(626ポイント)   Date: 2010/10/09(土) 12:25   No:62989     
Title: Re:無題    
・・・分からない。初心者なんで

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

Name: ookami  ..熟練のプログラマー(54,213ポイント)   Date: 2010/10/09(土) 12:35   No:62990     
Title: Re:無題    

Visual C++ 2010 Expressでゲーム作っているんですよね?


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

Name: みけCAT  ..上級者(17,528ポイント)   Date: 2010/10/09(土) 12:39   No:62991     
Title: Re:無題    
ショートカットですか?
それならこの掲示板にスレッドがあったので検索してください。


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

Name: hax  ..ぴよぴよ(652ポイント)   Date: 2010/10/09(土) 12:40   No:62992     
Title: Re:無題    
Visual C++ 2010 Express  はありますが、
DxLib_VC2008用  をしようしています。  


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

Name: ookami  ..熟練のプログラマー(54,235ポイント)   Date: 2010/10/09(土) 12:47   No:62993     
Title: Re:無題    
ゲームはまだ完成してないということで合ってますか?

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

Name: hax  ..ぴよぴよ(672ポイント)   Date: 2010/10/09(土) 12:48   No:62995     
Title: Re:無題    
完成はしてないですけど、
一度試したいので。


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

Name: ookami  ..熟練のプログラマー(54,285ポイント)   Date: 2010/10/09(土) 12:53   No:62996     
Title: Re:無題    
情報が少ないので私も推測しながら回答してますですが...

試したいということは、何かしら、ソースコードを打ってるんですよね。
添付のような感じで。


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

Name: hax  ..ぴよぴよ(682ポイント)   Date: 2010/10/09(土) 12:55   No:62997     
Title: Re:無題    
確かに打ちました。


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

Name: hax  ..ぴよぴよ(740ポイント)   Date: 2010/10/09(土) 13:03   No:62998     
Title: Re:無題    
どうすればいいんですか?
熟練のプログラマー 様


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

Name: ookami  ..熟練のプログラマー(54,347ポイント)   Date: 2010/10/09(土) 13:05   No:62999     
Title: Re:無題    
添付のように、
「デバッグ開始」か「デバッグなしで開始」をクリックしてください。

エラーが出なければ成功です。
エラーが出たら、それをそのままコピーしてください。 編集済み


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

Name: hax  ..ぴよぴよ(747ポイント)   Date: 2010/10/09(土) 13:07   No:63000     
Title: Re:無題    
OK です。
成功です。


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

Name: ookami  ..熟練のプログラマー(54,378ポイント)   Date: 2010/10/09(土) 13:17   No:63002     
Title: Re:無題    
そうしましたら、
DebugフォルダまたはReleaseフォルダに、
exeファイルができているはずです。


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

Name: hax  ..ぴよぴよ(772ポイント)   Date: 2010/10/09(土) 13:19   No:63004     
Title: Re:無題    

そっから が分からなくなりました・・・。
どこでしょう?


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

Name: hax  ..ぴよぴよ(794ポイント)   Date: 2010/10/09(土) 13:21   No:63005     
Title: Re:無題    
あっありました

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

Name: hax  ..ぴよぴよ(799ポイント)   Date: 2010/10/09(土) 13:28   No:63007     
Title: Re:無題    
ありがと

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

Name: hax  ..ぴよぴよ(805ポイント)   Date: 2010/10/09(土) 13:29   No:63008 解決!     
Title: Re:無題    
解決

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

Name: ookami  ..熟練のプログラマー(54,452ポイント)   Date: 2010/10/09(土) 13:30   No:63009     
Title: Re:無題    
おめでとうございました。
ゲーム制作がんばってください。

ついでに、私は 熟練のプログラマー ではなくて ookami です。

-- 追記

入れ違いになってしまいました。スルーしていただいておkです。 編集済み


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

Name: hax [URL]  ..ぴよぴよ(816ポイント)   Date: 2010/10/09(土) 15:05   No:63014     
Title: Re:無題    
ありがとう ookami さん

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



Name: dic  ..ハッカー(104,440ポイント)   Date: 2010/10/07(木) 19:39   No:62878       
Title: なんというか    
シューティングは色々問題ありますが完成しました
その間にタスクシステムだのオブジェクト指向だの考えていた頃はよかったのですが、
いざ作品が完成するとなんだが、やりきってしまった感におそわれ
次の作品も似たようなソース管理になるんだろうなぁ・・・と思うと
なんかやりきれない気持ちです
しかし、作品を作りたいという気持ちはあるんですが、今の精神状態では作品を作る気になれないです

なんというか、この気分が以前の作りたい気持ちに戻る方法ってあるでしょうか?
(わかる方いますかね?)


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


Name: fr  ..ぴよぴよ(226ポイント)   Date: 2010/10/07(木) 19:54   No:62880     
Title: Re:なんというか    
モチベーションの低下ってやつですかね。
ライブラリを構築したのはいいけどそのまま終了してしまうこともよくあるみたいです。
(ゲーム完成まで持っていけない)


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

Name: シエル [URL]  ..比類無きプログラマー(86,876ポイント)   Date: 2010/10/07(木) 19:56   No:62881     
Title: Re:なんというか    
今の自分のソースで充分満足いくものが作れたってことですかね?

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

Name: シエル [URL]  ..比類無きプログラマー(86,971ポイント)   Date: 2010/10/07(木) 20:01   No:62882     
Title: Re:なんというか    
私の場合色んなゲームを見たり、他人のソース見たり、どうにかしてリソース節約できないかとか
考えてると楽しくて仕方がなくなりますけどね。

まあ、今のシューティングが完成したら、気持ちが変わるかもしれませんが。
まだ、私の場合一つもゲームらしいゲームを作ってないことも影響してるかもしれません。


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

Name: Justy  ..伝説なるハッカー(583,802ポイント)   Date: 2010/10/08(金) 01:11   No:62901     
Title: Re:なんというか    
 再び作りたくなるまでプログラムから離れ、全く別のことをするのも手かもしれません。


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

Name: softya [URL]  ..ハッカー(229,332ポイント)   Date: 2010/10/08(金) 01:43   No:62902     
Title: Re:なんというか    
私の場合は作りたいものが沢山あるので興味に合わせ色々やっています。
サイトを見てもらうと分かりますが自作コンパイラ、マイコンで工作、ツールなどなど。
C#でオリジナルのゲーム、FPGAでCPUコアを書いたり、OSをZEROから構築もやっみたいとか色々野望はありますので特にモチベーションは下がることはなかったですね。

2〜3日ぐらいやる気が出なくても、その内やる気になると思いますが。


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

Name: へろり  ..熟練のプログラマー(44,516ポイント)   Date: 2010/10/08(金) 08:44   No:62907     
Title: Re:なんというか    
私はよほど暇を持てあますか、必要に迫られない限り何も出来ない人間ですので、何とも言えませんが。

とりあえず、ネットをブラブラしてみるといいと思いますよ。 時々おもしろいおもちゃが落ちてますから。
Diggなんかは結構お勧めです。 個人的にお気に入りのおもちゃ箱です。

以前、アリのエサ拾いアルゴリズムの問題点が指摘されていたのですが、コレにはえらく熱中した覚えがあります。 途中で挫折しましたが。

遺伝的アルゴリズムを知ったのもこのサイトです。 試しにTSP問題を解いてみてやっぱり途中で挫折しましたが。

タカハトゲームを知ったのもこのサイトです。 遺伝的アルゴリズムの交叉戦略に組み込んで見ましたが、あまりいい結果を得られませんでしたが。

そういえば、マイクロソフトのテラリウムを知ったのもこのサイトですね。 面白そうだなとは思いましたが、当時はちょっと忙しくて結局手をつけませんでしたが。


まぁ、何かと暇つぶしには困らないサイトです。

後はインスピレーションだと思いますよ。


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

Name: dic  ..ハッカー(104,478ポイント)   Date: 2010/10/08(金) 13:27   No:62912 解決!     
Title: Re:なんというか    
みなさん色々ご意見ありがとうございます
ブラブラして気分転換しようと思います
ありがとうございました


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

Name: dic  ..ハッカー(104,462ポイント)   Date: 2010/10/08(金) 14:19   No:62914     
Title: Re:なんというか    
書店でみかけたUbuntu というOSを使って遊んでみます

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

Name: 住所特定反対  ..ぴよぴよ(90ポイント)   Date: 2010/10/08(金) 16:29   No:62917     
Title: Re:なんというか    
ゲーム公開してほしい

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

Name: ookami  ..熟練のプログラマー(53,769ポイント)   Date: 2010/10/08(金) 17:20   No:62920     
Title: Re:なんというか    
> ブラブラして気分転換
phpなどでサーバアプリなんか作ってみるのはいかがでしょう。
Ubuntuを触るとの事なので、ついでにウェブサーバ・アプリサーバ・データサーバを立てて
掲示板を作るだけでも、面白いかもしれません。

ただ、最初の質問が、

> 以前の作りたい気持ちに戻る方法

なので、あまりゲームから離れても微妙かもですね。
「ゲームの面白さとは何か」とか考えるのもいいかもしれません。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,285,683ポイント)   Date: 2010/10/08(金) 20:39   No:62935     
Title: Re:なんというか    
私はモチベーションがそこまで潰えてしまう事はあまり無いのですが、
朝から晩までプログラム以外の事をほとんどしない毎日を1か月続けるとさすがに嫌になってしまったことがあります。

その時は、全くプログラムを書かない生活を1週間続けました。
すると自然とまたプログラムが書きたくなりました。
ただ「モチベーションをあげる為に他の事で遊んでいる」と思うとあまりよくないのかなと思います。

気を楽にして書きたい時に書くって感じで挑めば自然とモチベーションも上がってくるんじゃないでしょうか?
・・といいつつも私は一度作ると決めた物は絶対に完成させるぞと思って始めるので、途中でちょっと嫌になっても我慢して作り続けたりしていますが^^;
モチベーションを維持し続けるのって難しいですよね。

最近は友達とプログラムの話をすると無性にプログラムが書きたくなります。
「●●って作れそうにないよね」って話になると余計に(笑

大した参考になるかどうかわかりませんが、
「完全にプログラムの事を忘れてみる」「プログラムの話が出来る友人と会話してみる」って感じでどうでしょう。


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

Name: dic  ..ハッカー(105,103ポイント)   Date: 2010/10/08(金) 21:21   No:62937     
Title: Re:なんというか    
>ゲーム公開してほしい
大変ここではお世話になっているので
誰もやらないほどのクオリティですが公開してみます(R指定です)
http://www1.axfc.net/uploader/Li/so/79512

>phpなどでサーバアプリなんか作ってみるのはいかがでしょう。 
phpも勉強したいのですが、その前にHTMLを勉強しようかと考えてます

>ゲームの面白さ
そうですね、奥が深いです
キャラクターに感情移入したり、グラフィックがきれいだったり、シナリオが感動的だったり
ゲームシステムがおもしろかったりと多岐に渡ってて、色々考えさせられますね

>一度作ると決めた物は絶対に完成させるぞと思って始めるので
やっぱりここが違いますね
私だったら、毎日コツコツ積み重ねるようにプログラムを組み立てる感じで
エラーとかでると 結構へこみますね

>「完全にプログラムの事を忘れてみる」「プログラムの話が出来る友人と会話してみる」って感じでどうでしょう。
なかなか地方ではパソコンは持ってるけどプログラムまでは・・・というのが現状で
めったに会えないですね
どちらかというと相手に会話を合わせないと、なかなか会話がはずまないです


//-----------------------------------------------------------------------------
Ubuntu インストールしてみましたが、キーボードを認識せずログインができずに・・・
Vine Linuxで遊びます
gccの勉強にもなるかな
サーバー関連はまだちょっと無理っぽいです


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

Name: やっくん  ..プログラマー(39,263ポイント)   Date: 2010/10/08(金) 21:38   No:62938     
Title: Re:なんというか    
プレイさせてもらいました♪
絵はdicさんが描かれてるんですか?
上手なので羨ましいです(’

少しバグを見つけので・・・
前のステージの音楽が重複して次のステージを遊ぶときに流れてました。


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

Name: シエル [URL]  ..比類無きプログラマー(87,226ポイント)   Date: 2010/10/08(金) 22:13   No:62940     
Title: Re:なんというか    
これステージによって難易度は変わらないんですか?
ただ背景の絵が変わってるだけのような気が。

あとバグとして、
次のステージに行ったときに前回ステージ時クリア時の爆発が一瞬描画されてます。
第四ステージクリア時にゲームが止まります。

もうちょっと色々と改良できる点が結構あると思うので、
その辺見つけるだけでも私は意欲的になれますけどね。


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

Name: MNS  ..熟練のプログラマー(41,662ポイント)   Date: 2010/10/08(金) 22:53   No:62945     
Title: Re:なんというか    
私は大した数のゲームを完成させたことはないですが、
なんとなく、dicさんの気持ちが分かる気がします。

私が考える解決方法としては、
コードを書くのが苦痛にならないほど、ゲームを作りたいと思うのが一つです。
やはりそれは、ゲームそのものをプレイするのが一番いいんじゃないんでしょうか。

もう一つは、コードを書くことを楽しむこと、
それには、既存のゲームのコードを読むのもありですが、
ゲームプログラミングの書籍を買って、それを読むのが良いと思います。


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

Name: softya [URL]  ..ハッカー(229,371ポイント)   Date: 2010/10/08(金) 23:54   No:62947     
Title: Re:なんというか    
そういえば難解なバグが出ると逆に燃えるんですよね。私だけでしょうか。
再現性が悪かったり、締め切り間際だと泣きそうになりますが。


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

Name: へろり  ..熟練のプログラマー(44,625ポイント)   Date: 2010/10/09(土) 07:35   No:62966     
Title: Re:なんというか    
やってみました。

ゲーム起動後、最初のステージ選択でステージ1以外を選択すると、クリア時に異常終了するようです。
ステージ1クリア時には、クリアーという文字が表示されますが、他のステージクリア時には無いようですね。



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

Name: へろり  ..熟練のプログラマー(45,009ポイント)   Date: 2010/10/09(土) 12:00   No:62981     
Title: Re:なんというか    
ソースコードついていたのですね。 ざらっと見てみました。

まず、先に挙げたバグについては、各ステージクラスのメンバ関数 Move 内のクリア条件を満たした時の処理で、すべてのステージで *mode = def_mode_stage1_clear; となっているのが原因ですね。 

それとプログラムの構造ですが、若干スパゲッティ気味になっているようです。 ステージ毎にクラスを定義していますが、ステージの差異はパラメータ化出来ますので、ステージ毎にクラスの定義どころか、ステージ毎のインスタンスすら必要ないでしょう。

各ステージのソースコードは、ステージ1のソースコードをコピー&ペーストしてちょこちょこっと書き換えてはいませんか。 こういう場合人間のやることですから書き換え漏れなんてことが往々にして発生します。
こういう場合もパラメータ化して1つの関数に切り分けてあげるのが常套手段です。 今回の場合はその必要もありませんが。


ちょっと無駄が多いようなので、これで完成。 ビールだわーい。 などと思わずにいじくり倒して見てはどうでしょうか。
一度リファクタリングしてみることをお勧めします。 恐らくソースコードは半分以下になるでしょう。


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

Name: softya [URL]  ..ハッカー(229,509ポイント)   Date: 2010/10/09(土) 12:23   No:62988     
Title: Re:なんというか    
私もソースコードを見させていただきました。
動作パラメータをcsv化したりテーブル化したりするだけでかなり効率化すると思います。
switchの部分はタスクシステム化も良いかも知れません。
ほとんど同じようなコード部分があちこちにありますので、これだとちょっと差異でのステージ毎の動作が違うのもうなずけます。徹底して同じようなコードは書かない(共通化する)ことが解決策になると思います。


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



Name: ai  ..ぴよぴよ(50ポイント)   Date: 2010/10/05(火) 22:11   No:62806       
Title: 合計値    
はじめまして
0が入力されるまで数値を入力していき、
0が入力されたら
サブルーチンに合計をだし
終了するプログラムを作りたいのですが・・
どうしたら良いでしょうか??


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


Name: みけCAT  ..上級者(16,167ポイント)   Date: 2010/10/05(火) 22:33   No:62809     
Title: Re:合計値    
>0が入力されるまで数値を入力していき
int input,sum=0;
do {
    scanf("%d",&input);
    sum+=imput;
} while(input!=0);

>サブルーチンに合計を出力する
すいません、よくわかりません。


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

Name: kokuoutyou [URL]  ..かけだし(1,613ポイント)   Date: 2010/10/06(水) 07:31   No:62814     
Title: Re:合計値    
もうちょっと詳しく説明してください

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

Name: ai  ..ぴよぴよ(86ポイント)   Date: 2010/10/06(水) 10:18   No:62815     
Title: Re:合計値    
mainじゃなくって
別のとこに
入力した数値の合計をだすんです(´・ω・`)


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

Name: みけCAT  ..上級者(16,447ポイント)   Date: 2010/10/06(水) 11:36   No:62816     
Title: Re:合計値    
前のプログラムの続きで
subroutine(sum);
/*ここまでをmain関数に入れる*/

/*宣言*/
void subroutine(int sum) {
    /*処理*/
}

ということですか?
subroutineのプロトタイプ宣言も忘れずにしてください。


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

Name: ookami  ..熟練のプログラマー(53,662ポイント)   Date: 2010/10/06(水) 12:27   No:62817     
Title: Re:合計値    
言語も指定されてないしヒマだったので
バッチで書いてみましたwwww

@echo off
set sum=0
:re
set /p i=">"
if "%i%"=="0" goto end
set /a sum=%sum%+%i%
goto re
:end
echo 合計値:%sum%
pause


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

Name: kokuoutyou [URL]  ..かけだし(1,738ポイント)   Date: 2010/10/06(水) 12:32   No:62818     
Title: Re:合計値    
subroutine(atai);


int main(){
int input,sum=0;
do {
    scanf("%d",&input);
    sum+=imput;
} while(input!=0);
return sum;
}

void subroutine(int ata)i 
{
    /*処理*/
}

↑じゃないでしょうか?


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

Name: kokuoutyou [URL]  ..かけだし(1,760ポイント)   Date: 2010/10/06(水) 12:33   No:62819     
Title: Re:合計値    
void subroutine(int atai ) 

    /*処理*/ 



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

Name: ai  ..ぴよぴよ(101ポイント)   Date: 2010/10/06(水) 12:51   No:62820     
Title: Re:合計値    
みなさん
ありがとございます


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

Name: 住所特定大反対  ..ぴよぴよ(2ポイント)   Date: 2010/10/06(水) 12:54   No:62821     
Title: Re:合計値    
(管理人がコメントを削除しました)

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

Name: ookami  ..熟練のプログラマー(53,699ポイント)   Date: 2010/10/06(水) 13:58   No:62822     
Title: Re:合計値    
aiさんすみません、流れ的にC言語だろうとは思っていました。
解決されたようでよかったです。


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

Name: ai  ..ぴよぴよ(117ポイント)   Date: 2010/10/08(金) 15:05   No:62916     
Title: Re:合計値    
オオカミさん、大丈夫です。
ありがとございます。


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

Name: 住所特定反対  ..ぴよぴよ(102ポイント)   Date: 2010/10/08(金) 16:32   No:62918     
Title: Re:合計値    
わるい
次は気をつけてくれ


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,285,214ポイント)   Date: 2010/10/08(金) 20:02   No:62933     
Title: Re:合計値    
> 住所特定反対さん

ここは、読んでいる人が不快な思いをしないコメントであれば何を投稿しても良い事になっています。
トピ立ても自由で、内容も何でも良いことになっています。
逆に言えば規約の根底にあるのは「他人が不快に思うコメントはダメ」という事です。

前から何度かトラブルになっていると思います。
なるべく丁寧な言葉で書いていただけると幸いです。
また、出来れば誤解を招くようなお名前は使って頂きたくないのですが、何か一般的な名前に変更して頂けないでしょうか?


今回のookamiさんの回答はその前に既にちゃんとCの回答が付いていて、質問者さんが必要ないと思えば読み飛ばすこともできたので、質問者さんは困ったり不快に思ったりはされなかったと思います。
むしろもし興味があれば、他の知識も付けられるということで良い機会だったのではないでしょうか。


> ookamiさん

対応が遅くなってすみません。今後も気軽にコメントして下さいね。


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

Name: 一般的な名前  ..ぴよぴよ(16ポイント)   Date: 2010/10/09(土) 11:49   No:62979     
Title: Re:合計値    
むかつくとつい
名前はこれでいく


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



Name: black_cat  ..かけだし(2,257ポイント)   Date: 2010/10/04(月) 19:46   No:62731       
Title: C# Box2D 画像適用2    
「C#の基礎を固めては?」と言われて、そう決めたのですが、また投稿してしまいました。
何度もすみません。

C#をもっと勉強することに決めてC#の本も買って何度も読んだので、基礎中の基礎は理解したつもりです。
ですが、やっぱり目標がないと、次に何を勉強すればいいのか分かりません。

そこで、もし答えてくださるのであれば、
今の私ではとうてい理解できないような難しい回答でも構いませんので、
やり方だけでも教えていただけないでしょうか?

やりたいことは、
前回教えてくださったBox2Dのオブジェクトに画像を適用する方法では、すべてのオブジェクトが同じ画像になってしまうので、
各オブジェクトごとに違う画像を適用することです。

使用言語はVC#です。

もうサンプルコードに頼ったりせず、自分でしっかり考えようと思っています。
回答が理解できるように一生懸命がんばりますので、よろしくお願いします。

最後に、いつもわがままばかり言ってごめんなさい。


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


Name: black_cat  ..かけだし(2,269ポイント)   Date: 2010/10/06(水) 23:07   No:62856     
Title: Re:C# Box2D 画像適用2    
できればJustyさん、回答お願いします。

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

Name: Justy  ..伝説なるハッカー(583,457ポイント)   Date: 2010/10/07(木) 01:52   No:62858     
Title: Re:C# Box2D 画像適用2    
>Box2Dのオブジェクトに画像を適用する方法
 Imageを必要な数の分だけ持っておきます(ロードしておく)。
 ここまではいいですよね?

 Bodyクラスはメソッド SetUserDataを使って何か情報を設定しておくことができます
(引数は object型なのでどんな型でも受け付けます)。
 そうするとメソッド GetUserDataを使い、設定した時の型でキャストすればその情報を取り出すことができます
(設定していなかったり、設定したときの型と異なると例外が出るので注意)。

 これを利用して、全てのBodyの生成時にとりあえず種類を表す何か(enumとか数値とか)を入れておいて、
描画時に取り出して調べればそれが何のオブジェクトなのかわかるので、それに対応した
Imageデータを使って表示すればOKです。



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

Name: black_cat  ..かけだし(2,321ポイント)   Date: 2010/10/07(木) 07:16   No:62861     
Title: Re:C# Box2D 画像適用2    
ほんといつもありがとうございます。

2段落目からを理解できるように勉強するつもりなんですが、
これは理解して成功したときに「解決」にすればいいのでしょうか?(時間がかかると思うので。)



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

Name: black_cat  ..入門者(2,595ポイント)   Date: 2010/10/07(木) 21:06   No:62888     
Title: Re:C# Box2D 画像適用2    
初期化の時に
   m_Image = Image.FromFile("****.jpg");
でロードして、

オブジェクト作成の後に
   body.SetUserData("body1");
で設定、

描画時に
   string body1 = (string)body.GetUserData();
で取り出す
と考えたのですが、どこまで合っていますか?

あと、「調べればそれが何のオブジェクトなのかわかるので、それに対応したImageデータを使って表示する」
というところは、まだ考えている途中です。(苦戦中)


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

Name: Justy  ..伝説なるハッカー(583,758ポイント)   Date: 2010/10/08(金) 01:08   No:62900     
Title: Re:C# Box2D 画像適用2    
>これは理解して成功したときに「解決」にすればいいのでしょうか
 まぁそうですね。


>どこまで合っていますか
 文字列にしたのですね。イメージを1種類しかロードしていないような気もしますが
そこを除けば合っています。


>調べればそれが何のオブジェクトなのかわかるので
 オブジェクトの種類毎に異なる文字列に、例えば右クリックで生成されるBodyには "right"を、
左クリックで生成されるBodyには "left"の文字列を入れておけば、取り出したときに
どっちの文字列が入っているかで種類を区別できますよね?


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

Name: black_cat  ..入門者(2,775ポイント)   Date: 2010/10/08(金) 07:26   No:62904     
Title: Re:C# Box2D 画像適用2    
>イメージを1種類しかロードしていないような気もしますが 
大丈夫です。きちんと必要な分だけロードしています。

オブジェクトの区別は、
   string body1 = (string)body.GetUserData();
   if (body1 == "right")
   {
               
   }

という感じでいいですか?
ifの{ }の中はまだ分かりませんが...


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

Name: Justy  ..伝説なるハッカー(583,878ポイント)   Date: 2010/10/08(金) 23:45   No:62946     
Title: Re:C# Box2D 画像適用2    
>という感じでいいですか
 SetUserDataを使って種類毎に設定済みであるならOKです。

>ifの{ }の中はまだ分かりませんが
 その中で何をするべきなのか説明できますか?


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

Name: black_cat  ..入門者(2,815ポイント)   Date: 2010/10/09(土) 08:17   No:62968 解決!     
Title: Re:C# Box2D 画像適用2    
すみません。よく考えたらできました。
{ }の中で前回の描画の仕方を使えばよかったのですね。

やりたかったことが出来てとても嬉しいです。
Justyさん、ほんとありがとうございました。

また考えても分からないことがあれば、そのときはどうかよろしくお願いします。

では。 編集済み


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



Name: おこちゃま  ..ぴよぴよ(162ポイント)   Date: 2010/10/08(金) 17:22   No:62921       
Title: conio.hをUNIXで使う方法について    
はじめまして。
初めて利用させていただきます。

実は、C言語でconio.hのkbhit()などを使うコンソールアプリケーションを作成しました。
それを、ipod touchに移植(?)したいのですが、conio.hがUNIXにはないようです。
そこで、kbhit()を自作するか、ライブラリを追加するかしようとしたのですが、
いくら試してもうまくいきません。
MinGWのライブラリから、conio.hを追加、というのはそもそもうまくいくのでしょうか。

(管理人がタイトルを編集しました)


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


Name: おこちゃま  ..ぴよぴよ(192ポイント)   Date: 2010/10/08(金) 17:30   No:62923     
Title: Re:無題    
ごめんなさい・・・
編集キーをかけるのを忘れてました・・・
「無題」が直せません・・・


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

Name: toyo  ..熟練のプログラマー(63,011ポイント)   Date: 2010/10/08(金) 17:31   No:62924     
Title: Re:無題    
パソコンなどの環境では標準入出力を使えば移殖性のあるプログラムが作れますが組み込み系では入力、出力というのはその機器独自のものを使う必要があります
普通は開発キットにライブラリとしてあると思うのですが


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

Name: おこちゃま  ..ぴよぴよ(340ポイント)   Date: 2010/10/08(金) 17:45   No:62925     
Title: Re:無題    
ipod touchでGCCが動くと聞き、組んでみたのが今回の動機でした。
ですから私のプログラムは、MobileTerminal上で動くもので、
Xcodeのようなちゃんとした開発キットは、私は持っていません。

ipod touchに入れたGCCのライブラリは、
見た感じではcurses.hなどはあり、UNIXのようなライブラリでした。


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

Name: ISLe  ..プログラマー(25,397ポイント)   Date: 2010/10/08(金) 18:27   No:62926     
Title: Re:無題    
conio.hはMS-DOSの機能を呼び出すライブラリなのでUNIXにそのものずばりのものはありません。

> 見た感じではcurses.hなどはあり、UNIXのようなライブラリでした。

cursesが使えるなら

#include <stdio.h>
#include <curses.h>

int
main()
{
    int c;

    initscr();
    noecho();
    cbreak();
    nodelay( stdscr, TRUE );

    while (1)
    {
        sleep( 1 );

        c = getch();

        if ( c != ERR )
        {
            addch( c );
        }
        else
        {
            addch( '.' );
        }
    }

    endwin();
}

という感じでgetchにkbhitふうの動作をさせることができるそうです。
# Ubuntu10.04とCygwinで動作確認済みです。


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

Name: おこちゃま  ..ぴよぴよ(364ポイント)   Date: 2010/10/08(金) 18:35   No:62927 解決!     
Title: Re:無題    
上のコードを参考にさせていただきます。
改行がおかしくなるのはMobileTerminalの仕様だとあきらめて解決策を模索します。
ありがとうございました。


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

Name: ISLe  ..プログラマー(25,420ポイント)   Date: 2010/10/08(金) 18:50   No:62930     
Title: Re:無題    
> 改行がおかしくなるのはMobileTerminalの仕様だとあきらめて解決策を模索します。

Mac系の改行コードはWindows系やUNIX系と違いますけどそのあたりは大丈夫ですか?


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

Name: おこちゃま  ..ぴよぴよ(412ポイント)   Date: 2010/10/08(金) 21:03   No:62936     
Title: Re:無題    
え。
そうなんですか!
あちゃあ・・・
それかもしれません・・・
試してみます。
ありがとうございます。


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

Name: ISLe  ..プログラマー(25,532ポイント)   Date: 2010/10/09(土) 02:05   No:62956     
Title: Re:無題    
あっと、そう言えばOS XからはUNIX系でしたっけ。
すみません。間違えました。


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



Name: kokuoutyou [URL]  ..ぴよぴよ(795ポイント)   Date: 2010/10/04(月) 14:35   No:62697       
Title: ファイルの書き出し    
ファイルの読み込みについて
以前質問させていただきました
今度は逆のパターンで今度は
家のサーバーにtxtデータをアップロードしたいのですが
どうすればいいでしょうか?

プログラム歴6ヶ月くらい


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


Name: softya [URL]  ..ハッカー(225,535ポイント)   Date: 2010/10/04(月) 15:11   No:62702     
Title: Re:ファイルの書き出し    
ftpなら転送が出来ますがftpサーバーを自宅サーバーで起動できますか?
でも、ご自宅のHTTPサーバーにアップローダーCGIを入れたほうが速いかも知れません。
どうしてもプログラムでどうしても作りたいなら、自宅側にもプログラムでTCPサーバーを作ってしまえば自由自在にファイル送受信ができます。
難しいことをやりたくないというなら、別の手も考えますが。

http://www.geekpage.jp/programming/winsock/


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

Name: kokuoutyou [URL]  ..ぴよぴよ(847ポイント)   Date: 2010/10/04(月) 15:49   No:62705     
Title: Re:ファイルの書き出し    
作りたいですけどまったく分からないのでこの方法なら出来ると思い発言しました
別の方法で出来るならその方法を使ってみたいと思います


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

Name: softya [URL]  ..ハッカー(225,683ポイント)   Date: 2010/10/04(月) 16:29   No:62709     
Title: Re:ファイルの書き出し    
難しいと思われるならマイクロソフトのWindows Live SkyDriveを使われてはどうでしょうか?
http://windowslive.jp.msn.com/skydrive.htm
利便性は、自宅サーバーより遥かに高いと思いますが。

プログラムを手段と捉えるか勉強と捉えるかの話ですが、今後もっとHTTP/FTPなどインターネットプロトコルを活用したプログラムを書きたいのであればWinSockの勉強は必須だと思います。もうひとつのスレに出てくるhttpgetはあくまでget専用ですから。


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

Name: みけCAT  ..中級者(14,398ポイント)   Date: 2010/10/04(月) 17:03   No:62712     
Title: Re:ファイルの書き出し    
とりあえずFTPを扱うDLLです。
http://www.vector.co.jp/soft/win95/prog/se085139.html
VC++用のヘッダもついているそうです。

家庭用FTPサーバーです。
http://blueis.my.land.to/setting/windows_server.html
(追記)
FTPサーバーはこっちでした。
http://www.vector.co.jp/soft/win95/net/se315400.html
ソフト名はNekosogiFTPdです。 編集済み


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

Name: kokuoutyou [URL]  ..ぴよぴよ(934ポイント)   Date: 2010/10/04(月) 19:32   No:62729     
Title: Re:ファイルの書き出し    
NekosogiFTPdを使ってみましたが使い方がよく分かりません

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

Name: softya [URL]  ..ハッカー(226,128ポイント)   Date: 2010/10/04(月) 19:42   No:62730     
Title: Re:ファイルの書き出し    
FFFTPなどのFTPソフトを使われたことはありますか?
まず、FFFTPとFTPdの間で接続出来るように勉強されたほうが良いと思います。

>使い方がよく分かりません
それでは何が分からないか分かりません。
全部をここで質問するのは、kokuoutyouさん自身のためにもなりませんよ。
検索して色々やった結果分からないことを質問されるようにされてはいかがですか? 編集済み


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

Name: みけCAT  ..中級者(14,957ポイント)   Date: 2010/10/04(月) 21:16   No:62740     
Title: Re:ファイルの書き出し    
>使い方がよく分かりません
まず解凍したフォルダの中のnekosogiftpd.exeを起動します。
ツールバーの「ユーザー設定」ボタン(左から二つ目)をクリックします。
開いた画面の「追加」ボタンをクリックします。
ログインに使うユーザー名を「ユーザー名」の入力欄に入力します。
ログインに使うパスワードを「パスワード」の入力欄に入力します。
このユーザーでログインしたときに見える一番上のディレクトリにするディレクトリを
「ユーザー別ホームディレクトリ」で設定します。
「OK」を押します。
「OK」を押します。
これでユーザーの登録が完了です。
次に、サーバーを起動します。
ツールバーの一番左のボタンを押します。
サーバーが起動します。
ファイアウォールのダイアログが出てきたら「ブロックを解除する」を押します。
これでとりあえずFTPのクライアントで接続できるはずです。

softyaさん、せっかくアドバイスをされていますがすみません。


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

Name: softya [URL]  ..ハッカー(226,235ポイント)   Date: 2010/10/04(月) 21:25   No:62741     
Title: Re:ファイルの書き出し    
>>みけCATさん
結局のところよく分からずに kokuoutyou さんがHTTPとかに手を出されているので、もしこの知識レベルで自宅サーバーを公開しているとするとかなり危険な状態にあるんじゃないかと思って勉強することをおすすめしたまでです。
よく理解しないままFTPサーバーを公開してしまうと、PCの中のファイルを書き換え放題ですからね。


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

Name: kokuoutyou [URL]  ..ぴよぴよ(996ポイント)   Date: 2010/10/05(火) 07:26   No:62752     
Title: Re:ファイルの書き出し    
家はただランキング登録やランキングを見るとかに使いたいだけです
サーバーとかは必要ないと思いますが
どんな方法でやれば出来るかが知りたいだけです


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

Name: みけCAT  ..上級者(15,448ポイント)   Date: 2010/10/05(火) 07:35   No:62753     
Title: Re:ファイルの書き出し    
CGIとhttpget.dllを使うと良いと思います。
「とほほのWWW入門」というサイトを参考にしてみて下さい。
この場合、家にApache等のHTTPサーバーが必要です。
(レンタルサーバーでも構いませんが)


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

Name: softya [URL]  ..ハッカー(226,499ポイント)   Date: 2010/10/05(火) 11:42   No:62762     
Title: Re:ファイルの書き出し    
>家はただランキング登録やランキングを見るとかに使いたいだけです
>サーバーとかは必要ないと思いますが
>どんな方法でやれば出来るかが知りたいだけです

サーバーが必要ない?
あれ?今までの話の流れで自宅にHTTPサーバーが動いているのかも思ってました。
自宅から何かデータを得るにしろ、自宅にデータを送るにしろサーバーは必須です。
HTTPサーバーは動いているんですよね?

そもそもファイルを書き出したい要件やどこまでやりたいか明確にしないとダメだと思います。
・メールじゃダメな理由。
・他者のフリーソフトじゃダメな理由。
・Windows Live SkyDrive等ではダメな理由。
で、どのような状況でランキングの情報を見たいかです。
ランキングのデータは、そもそも何処からどの様な手段で手に入れて自宅のマシンのどの様に保存して、それをどの方法で外部公開しているか?がはっきりしません。
あとはそれを外出先から参照する手段として、パソコンからなのか携帯かスマートフォンなのかも明確ではありません。




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

Name: kokuoutyou [URL]  ..かけだし(1,231ポイント)   Date: 2010/10/05(火) 17:52   No:62776     
Title: Re:ファイルの書き出し    
作りたい物は
テトリス(オンラインでランキング登録可能)


自宅にHTTPサーバーはあるのですがFTPやCGIなどが使えないためどうすればいいかが分からない


メールの場合
どんな感じにプログラムを組めばいいのかが分からない

Windows Live SkyDriveの場合使った事も触ったこともないのでよく分からない

今日先生に聞いたところTCPなんとかってやつがいいよっていってたけ
TCPが何なのかも分かりません(今からネットで調べて見る)

開発環境は
VC 2008


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

Name: シエル  ..比類無きプログラマー(86,641ポイント)   Date: 2010/10/05(火) 18:06   No:62778     
Title: Re:ファイルの書き出し    
今の知識だけだと厳しそうですので、一度基本から勉強されることをお勧めします。

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

Name: たかぎ [URL]  ..ハッカー(229,564ポイント)   Date: 2010/10/05(火) 18:17   No:62779     
Title: Re:ファイルの書き出し    
普通にFTPコマンドを使って送信すればよいだけでは?
自作のプログラムから行いたいのであれば、system関数なり、CreateProcessなり、_spawn系の関数なりを使って、FTPコマンドを呼ぶだけです。
wputを使えばもっと使いやすいかもしれません。FTPSにも対応しているはずですし。



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

Name: softya [URL]  ..ハッカー(226,928ポイント)   Date: 2010/10/05(火) 18:35   No:62780     
Title: Re:ファイルの書き出し    
方向が全然違いましたね。

まずインターネットの仕組みから勉強しましょう。

インターネットの仕組み/プロトコル
http://www.geekpage.jp/technology/

もっと基本だとこちら。
インターネット技術を知ろうとしてみる
http://www.geekpage.jp/starter/net.php

[気になる点]
何にしても自宅サーバーだとゲームサーバーにするにはランキングとはいえIPアドレス固定じゃない限り無理がありますね。可変IPアドレス対応のサービスに入っていれば良いですが。

[提案]
自前FTPサーバーで常にランキングを受信して、総合ランキングを送り返すシステムを組むぐらいならCGIでランキング処理するCGIを組んで、総合ランキングをhttpでREST返却するシステムの方が楽なんじゃないかと思いますが。


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

Name: みけCAT  ..上級者(15,641ポイント)   Date: 2010/10/05(火) 18:39   No:62781     
Title: Re:ファイルの書き出し    
まずは自宅サーバーでCGIを動かせるように勉強してみたらいかがですか?

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

Name: kokuoutyou [URL]  ..かけだし(1,318ポイント)   Date: 2010/10/05(火) 19:05   No:62782     
Title: Re:ファイルの書き出し    
家のサーバーはyourserverっていうフリーソフト使ってますがCGIが使えるとかかいてるけど
家のPCは対応してない見たいでつかえないです

OS windows7 ホームプレミアム
メモリー 4G
CPU i7プロセッサー


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

Name: softya [URL]  ..ハッカー(226,985ポイント)   Date: 2010/10/05(火) 19:06   No:62783     
Title: Re:ファイルの書き出し    
PHPならC++より簡単ですよ。C/C++でCGIを作ることも出来ます。
自宅で公開しているHTTPサーバーが何かによって話が変わりますが。


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

Name: みけCAT  ..上級者(15,656ポイント)   Date: 2010/10/05(火) 19:18   No:62784     
Title: Re:ファイルの書き出し    
Perlでもいいのではないでしょうか?
ヒント:ActivePerl


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

Name: みけCAT  ..上級者(15,538ポイント)   Date: 2010/10/05(火) 19:27   No:62785     
Title: Re:ファイルの書き出し    
http://www.server.co.jp/faq/service/cgi.htm
を見てきましたが、
まずApacheとActiveperlのインストールが必要なようです。
まずこの2つのソフトの名前でググってみて下さい。 編集済み


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

Name: kokuoutyou [URL]  ..かけだし(1,335ポイント)   Date: 2010/10/05(火) 19:32   No:62786     
Title: Re:ファイルの書き出し    
ApacheとActiveperlが使えない

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

Name: みけCAT  ..上級者(15,570ポイント)   Date: 2010/10/05(火) 20:07   No:62788     
Title: Re:ファイルの書き出し    
「使えない」とは、どういうことですか?
使い方がわからないのですか?
それとも、使い方はわかるけど起動出来ないということですか?


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

Name: みけCAT  ..上級者(15,616ポイント)   Date: 2010/10/05(火) 20:55   No:62789     
Title: Re:ファイルの書き出し    
No.62782に
>OS windows7 ホームプレミアム
とありますが、32ビットですか?それとも64ビットですか?


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

Name: kokuoutyou [URL]  ..かけだし(1,364ポイント)   Date: 2010/10/05(火) 21:08   No:62790     
Title: Re:ファイルの書き出し    
互換性がなんとかだから管理者にお問い合わせくださいって

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

Name: みけCAT  ..上級者(15,734ポイント)   Date: 2010/10/05(火) 21:13   No:62791     
Title: Re:ファイルの書き出し    
そのメッセージはどんな状況で出たものですか?

・yourserverの管理画面で表示された
・Windowsのダイアログで出た
など

また、正確なエラーメッセージもわかりますか?
ダイアログのテキストをコピーするにはこのソフトがお勧めです。
ソフト名:コピット!
http://www.umechando.com/software/index.html


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

Name: kokuoutyou [URL]  ..かけだし(1,449ポイント)   Date: 2010/10/05(火) 21:16   No:62794     
Title: Re:ファイルの書き出し    
このファイルのバージョンは,現在実行中のwindowsのバージョンとは互換性がありません。
コンピュウターのシステム情報を確認して, x86(32ビット)または x64(64ビット)のどちらのバージョンの
プログラムが必要であるかを確認してからソフトウェアの発行者にお問い合わせください



↑が出てきて実行出来ないみたい


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

Name: みけCAT  ..上級者(15,908ポイント)   Date: 2010/10/05(火) 21:27   No:62797     
Title: Re:ファイルの書き出し    
No:62789にも書きましたが、
使っているのは32ビットのOSですか?それとも64ビットのOSですか?
「コンピュータ」を開けて、「システムのプロパティ」を押せば確認できると思います。
(これはWindows Vistaの場合なので、違うかもしれません)


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

Name: softya [URL]  ..ハッカー(227,183ポイント)   Date: 2010/10/05(火) 21:30   No:62798     
Title: Re:ファイルの書き出し    
その実行しようとしたものはなんでしょうか?
ファイル名と入手先を教えてください。

Apache HTTP Server (httpd) 2.2.16 の Win32 Binary including OpenSSL 0.9.8o (MSI Installer) ですか?
http://httpd.apache.org/download.cgi


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

Name: kokuoutyou [URL]  ..かけだし(1,475ポイント)   Date: 2010/10/05(火) 21:34   No:62799     
Title: Re:ファイルの書き出し    
システムの種類 64ビットオペレーティングシステム


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

Name: kokuoutyou [URL]  ..かけだし(1,504ポイント)   Date: 2010/10/05(火) 21:38   No:62800     
Title: Re:ファイルの書き出し    
http://www.activestate.com/activeperl
↑でインストールしました


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

Name: みけCAT  ..上級者(16,137ポイント)   Date: 2010/10/05(火) 21:38   No:62801     
Title: Re:ファイルの書き出し    
自分は32ビットのOSなので確認できません。
Apacheは
http://www.blackdot.be/?inc=apache/binaries
の下の方のFileの一番上のhttpd-2.2.15-win64.rarをダウンロードしてみてください。
その他の参考サイト
http://www.elxis.org/guides/developers-guides/64bit-apache-php-mysql-windows.html
http://www.apache.jp/pipermail/apache-users/2010-May/007746.html

ActivePerlは
http://akita-nct.jp/take/appendix/perl/activeperl_setting.html
を参考にx64の方をインストールしてみてください。


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

Name: kokuoutyou [URL]  ..かけだし(1,511ポイント)   Date: 2010/10/05(火) 21:51   No:62802     
Title: Re:ファイルの書き出し    
いんすとーるできました

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

Name: kokuoutyou [URL]  ..かけだし(1,524ポイント)   Date: 2010/10/05(火) 21:55   No:62803     
Title: Re:ファイルの書き出し    
http://akita-nct.jp/take/appendix/perl/activeperl_setting.html#TOPIC2
↑に書いてある簡単なプログラムも出来ました


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

Name: みけCAT  ..上級者(16,186ポイント)   Date: 2010/10/05(火) 21:55   No:62804     
Title: Re:ファイルの書き出し    
うまくインストールできましたか。よかったです。

ApacheでCGIを動かすための設定は、
http://www.futomi.com/lecture/apache/config.html
を参考にしてみてください。


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

Name: kokuoutyou [URL]  ..かけだし(1,562ポイント)   Date: 2010/10/05(火) 22:10   No:62805     
Title: Re:ファイルの書き出し    
http://www.futomi.com/lecture/apache/config.html 
↑がよく分かりません
C:\Program Files\Apache Group\Apache\htdocs
↑のフォルダとかがないです


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

Name: みけCAT  ..上級者(16,271ポイント)   Date: 2010/10/05(火) 22:27   No:62808     
Title: Re:ファイルの書き出し    
前のレスで指定したrarは解凍しましたか?
解凍したとしたら、何が出てきましたか?
出てきたものの中にhtdocsというフォルダなどがあったら、それのことだと思います。
(それに読み変えればいいだろうと思います)


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

Name: みけCAT  ..上級者(16,195ポイント)   Date: 2010/10/05(火) 22:41   No:62810     
Title: Re:ファイルの書き出し    
rarファイルの中身にがインストーラだった場合は、
インストール時に指定したインストール先に読み変えてみてください。


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

Name: toyo  ..熟練のプログラマー(62,912ポイント)   Date: 2010/10/06(水) 06:50   No:62812     
Title: Re:ファイルの書き出し    
それは古いバージョンのときのフォルダですね
ちなみに私の場合はC:の直下にインストールしたので
C:\Apache Software Foundation\Apache2.2\htdocs
になってます
Windows7でしたらProgram Files以下のファイルが直接編集できないためApacheのhttpd.confの編集が面倒になります(エディタを管理者権限で起動すれば可能ですがいちいち面倒です)
一度ApacheをアンインストールしてインストールフォルダをProgram Files以外に変更したほうが楽ですよ


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

Name: kokuoutyou [URL]  ..かけだし(1,577ポイント)   Date: 2010/10/06(水) 07:31   No:62813     
Title: Re:ファイルの書き出し    
分かりましたやってみますね

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

Name: みけCAT  ..上級者(16,481ポイント)   Date: 2010/10/06(水) 16:41   No:62824     
Title: Re:ファイルの書き出し    
rarファイルの中身を確認しました。
インストーラではなく、この中身をそのまま使います。
(rarファイルを解凍したフォルダ)\httpd-2.2-x64\bin\httpd.exeがサーバーの本体です。

C:\Program Files\Apache Group\Apache\htdocs

(rarファイルを解凍したフォルダ)\httpd-2.2-x64\htdocs
と読み替えてください。

簡易設定ソフトもつけておきます。
httpd.confにサーバーをインストールしたフォルダの情報を書き込むソフトです。
perlで作りました。
ActivePerlをインストールしたということなので、使えますよね。
使えなかったら遠慮なく質問してください。
コマンドライン:perl set.pl (rarファイルを解凍したフォルダ)
rarファイルを解凍したフォルダとは、httpd-2.2-x64というフォルダがあるところです。


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

Name: kokuoutyou [URL]  ..かけだし(1,765ポイント)   Date: 2010/10/06(水) 17:45   No:62827     
Title: Re:ファイルの書き出し    
わざわざこんな物まで作ってくれてホント♪感謝☆(人゜∀゜*)☆感謝♪です

無事に完了と出ましたw


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

Name: kokuoutyou [URL]  ..かけだし(1,776ポイント)   Date: 2010/10/06(水) 17:47   No:62828     
Title: Re:ファイルの書き出し    
このあとはどうすれば?

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

Name: みけCAT  ..上級者(16,760ポイント)   Date: 2010/10/06(水) 17:57   No:62829     
Title: Re:ファイルの書き出し    
実際のソフトを見ていないのでよくわかりませんが
http://www.server.co.jp/faq/service/cgi.htm
によると
>CGIプロキシ機能の設定画面で「127.0.0.1」と設定する
だそうです。

また、サーバー(Apache)の起動も必要です。
上のレスで指定した「サーバーの本体」を起動してください。


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

Name: kokuoutyou [URL]  ..かけだし(1,783ポイント)   Date: 2010/10/06(水) 18:15   No:62831     
Title: Re:ファイルの書き出し    
起動しました

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

Name: みけCAT  ..上級者(16,819ポイント)   Date: 2010/10/06(水) 18:31   No:62833     
Title: Re:ファイルの書き出し    
設定を済ませたら、
http://(自分のサーバーのドメイン名)/cgi-bin/printenv.pl
(最後の拡張子はcgiかも)
にアクセスしてみてください。
情報が表示されれば成功です。
404エラー(Not Found)が出た場合は、アドレスのcgi-binのところを変えてみてください。
500エラー(Internal Server Error)が出た場合は、
Apacheのhtdocsとかがあるフォルダの中の
cgi-binフォルダの中のprintenv.pl(もしくはcgi)の1行目を
#!(ActivePerlのperl.exeのフルパスの\を/にしたもの)
に変えてみてください。


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

Name: kokuoutyou [URL]  ..かけだし(1,794ポイント)   Date: 2010/10/06(水) 18:56   No:62835     
Title: Re:ファイルの書き出し    
404エラーが出ました

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

Name: kokuoutyou [URL]  ..かけだし(1,811ポイント)   Date: 2010/10/06(水) 18:58   No:62836     
Title: Re:ファイルの書き出し    
どこを変えればいいか分かりません

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

Name: みけCAT  ..上級者(16,841ポイント)   Date: 2010/10/06(水) 19:19   No:62838     
Title: Re:ファイルの書き出し    
http://www.server.co.jp/guide/pdf/service/cgi.pdf

http://www.server.co.jp/guide/pdf/all_setting.pdf
を参考にしてみてください。


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

Name: kokuoutyou [URL]  ..かけだし(1,827ポイント)   Date: 2010/10/06(水) 19:29   No:62839     
Title: Re:ファイルの書き出し    
Apacheのことがかかれてない見たい

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

Name: ookami  ..熟練のプログラマー(53,717ポイント)   Date: 2010/10/06(水) 21:15   No:62846     
Title: Re:ファイルの書き出し    
無料のレンタルサーバを検討するのもいいかもしれませんね?

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

Name: kokuoutyou [URL]  ..入門者(3,329ポイント)   Date: 2010/10/06(水) 21:43   No:62848     
Title: Re:ファイルの書き出し    
そうですか・・
TCPとかで作りたいんですが初心者にはムリですか?


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

Name: softya [URL]  ..ハッカー(228,118ポイント)   Date: 2010/10/06(水) 21:57   No:62850     
Title: Re:ファイルの書き出し    
>TCPとかで作りたいんですが初心者にはムリですか?

いや、みけCATさんの方針だとサーバーのCGIはPerlですよ。
ookamiさんは、Apacheに苦労するならCGIサーバーを無料で借りたらってことでしょう。
Perlのサーバー側ランキングプログラムも作らないといけませんし、ゲーム(クライアント側)はTCPでサーバーのCGIと通信しなくては行けません。なので、まだまだやることが沢山ありますよ。

ご自身でTCPサーバーも作れますがWinSockとかDXライブラリで作る必要がありますし、yourServerとは接続できないでしょう。つまり自宅サーバーの運営方法をイチから考えないといけません。 
kokuoutyouさんがやりたい事のために難しいことに挑戦する気がないのならって事でみけCATさんが代案を出してくれている訳ですから、この先何をする事になるのかご自身でまとめておいた方が良いように思います。 編集済み


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

Name: みけCAT  ..上級者(16,942ポイント)   Date: 2010/10/06(水) 22:29   No:62853     
Title: Re:ファイルの書き出し    
TCPを勉強したいのならそれでかまいませんが、
初心者のうちはCGIとhttpget.dllを使っておくのが簡単でいいと思います。

またCGIのサンプルも作ってみますので。


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

Name: kokuoutyou [URL]  ..入門者(4,063ポイント)   Date: 2010/10/06(水) 22:41   No:62854     
Title: Re:ファイルの書き出し    
TCPは
今後授業でやるから勉強しといてっていわれて
どうせならTCPを勉強する事にしました
みけさん本当にありがとうございます
みけさんのおかげで一歩前進しました


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

Name: kokuoutyou [URL]  ..入門者(4,078ポイント)   Date: 2010/10/06(水) 22:42   No:62855 解決!     
Title: Re:ファイルの書き出し    
ここのスレッドとじますね

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

Name: みけCAT  ..上級者(17,039ポイント)   Date: 2010/10/07(木) 06:22   No:62860     
Title: Re:ファイルの書き出し    
クライアントだけでも立派な「TCPを使ったソフト」です。
クライアントだけ作り、サーバーはHTTPサーバーとCGIを使うということも出来ます。
もちろんサーバーも作っても構いません。
それとも、TCPの仕組みから勉強したいですか?


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

Name: kokuoutyou [URL]  ..入門者(4,088ポイント)   Date: 2010/10/07(木) 07:21   No:62862     
Title: Re:ファイルの書き出し    
はい
一からでも勉強しますよ


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

Name: みけCAT  ..上級者(17,420ポイント)   Date: 2010/10/08(金) 22:46   No:62944     
Title: Re:ファイルの書き出し    
CGIが利用できない件について
まず、http://www.server.co.jp/guide/pdf/service/about_cgi.pdf
を参考にCGIプロキシ機能をyourserverにインストールします。
次に、Apacheを起動します。
その後、以下のURLを試してみてください。
http://kokuoutyou.server.co.jp/cgi/printenv.pl
http://kokuoutyou.server.co.jp/cgi/cgi-bin/printenv.pl
http://www.kokuoutyou.server.co.jp/cgi/printenv.pl
http://www.kokuoutyou.server.co.jp/cgi/cgi-bin/printenv.pl
http://cgi.kokuoutyou.server.co.jp/cgi/printenv.pl
http://cgi.kokuoutyou.server.co.jp/cgi/cgi-bin/printenv.pl
http://cgi.kokuoutyou.server.co.jp/printenv.pl
http://cgi.kokuoutyou.server.co.jp/cgi-bin/printenv.pl


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +