C言語何でも質問掲示板


アンケートにご協力下さい → >> アンケートフォーム <<

規約と使い方

 
   雑談板です   
     ・[1243] 管理人 
     ・[1244] 管理人 
     ・[1250] バグ 
     ・[1251] 管理人 
     ・[1252] 管理人 
     ・[1253] mas 
     ・[1255] 管理人 
     ・[1347] バグ 
     ・[1348] GPGA 
     ・[1349] バグ 
     ・[1411] バグ 
     ・[1412] 管理人 
     ・[1414] バグ 
     ・[1415] 管理人 
     ・[1416] バグ 
     ・[1417] 管理人 
     ・[1418] バグ 
     ・[1419] 管理人 
     ・[1421] 管理人 
     ・[1422] バグ 
     ・[1423] 管理人 
     ・[1424] 管理人 
     ・[1425] バグ 
     ・[1426] 管理人 
     ・[1427] バグ 
     ・[1428] 管理人 
     ・[1438] バグ 
     ・[1443] ダッシュ 
     ・[1444] 管理人 
     ・[1463] バグ 
     ・[1464] 管理人 
     ・[1466] バグ 
     ・[1470] 管理人 
     ・[1471] 管理人 
     ・[1472] 管理人 
     ・[1473] バグ 
     ・[1474] 管理人 
     ・[1475] keichan 
     ・[1476] 管理人 
     ・[1477] keichan 
     ・[1479] バグ 
     ・[1481] 管理人 
   関数を使って2   
     ・[1435] miki 
     ・[1436] miki 
     ・[1439] keichan 
     ・[1440] box 
     ・[1445] すず 
     ・[1452] 管理人 
     ・[1453] box 
     ・[1454] box 
     ・[1458] すず 
   閏年を求めるプログラ ....   
     ・[1447] Justy 
     ・[1449] louise 
     ・[1450] Justy 
   関数を使って1   
     ・[1431] バグ 
     ・[1432] miki 
     ・[1433] すず 
     ・[1437] バグ 
     ・[1441] すず 
     ・[1442] 管理人 
   C言語のおすすめの入 ....   
     ・[1388] Justy 
     ・[1389] バグ 
     ・[1390] 管理人 
     ・[1395] マキガミ 
     ・[1396] 管理人 
     ・[1420] バグ 
   無題   
     ・[1408] 管理人 
     ・[1409] ROGER 
     ・[1410] 管理人 
   古いソフトの再ビルド ....   
     ・[1339] 初心者 
     ・[1340] Justy 
     ・[1341] 初心者 
     ・[1342] keichan 
     ・[1356] 初心者 
     ・[1357] 初心者 
     ・[1358] 初心者 
     ・[1362] GPGA 
     ・[1363] 初心者 
     ・[1364] GPGA 
     ・[1365] GPGA 
     ・[1367] 初心者 
     ・[1368] GPGA 
     ・[1391] 初心者 
     ・[1392] GPGA 
     ・[1393] Justy 
     ・[1394] GPGA 
   2次関数のグラフを作る ....   
     ・[1370] keichan 
     ・[1371] ☆ 
     ・[1372] 管理人 
     ・[1373] 管理人 
     ・[1374] ☆ 
     ・[1375] ☆ 
     ・[1376] 管理人 
     ・[1377] ☆ 
     ・[1378] 管理人 
     ・[1380] ☆ 
     ・[1381] 管理人 
     ・[1383] keichan 
     ・[1384] ☆ 
     ・[1385] バグ 
     ・[1386] 管理人 
   固有値   
     ・[1382] 管理人 
   掲示板に訪問してくだ ....   
   トルク   
     ・[1361] バグ 
   リストの課題で困って ....   
     ・[1352] GPGA 
     ・[1353] オス豚 
     ・[1355] GPGA 
     ・[1359] オス豚 
   画像処理についての課 ....   
     ・[1344] keichan 
     ・[1345] ふわりん 
     ・[1346] バグ 
     ・[1350] keichan 
     ・[1354] ふわりん 
   古いソフトの再ビルド   
     ・[1320] keichan 
     ・[1321] 初心者 
     ・[1322] GPGA 
     ・[1323] 管理人 
     ・[1326] 初心者 
     ・[1327] GPGA 
     ・[1329] keichan 
     ・[1330] GPGA 
     ・[1331] GPGA 
     ・[1332] keichan 
     ・[1333] GPGA 
     ・[1334] keichan 
     ・[1335] GPGA 
     ・[1336] keichan 
     ・[1338] 初心者 
   C言語で排他制御の実現 ....   
     ・[1274] むっく 
     ・[1281] 管理人 
     ・[1324] むっく 
     ・[1325] mas 
     ・[1328] keichan 
   写真の加工について   
     ・[1278] なぎ 
     ・[1279] ダッシュ 
     ・[1280] なぎ 
     ・[1282] 管理人 
     ・[1284] ダッシュ 
     ・[1285] 管理人 
     ・[1293] ダッシュ 
     ・[1295] 管理人 
     ・[1300] ダッシュ 
     ・[1302] 管理人 
     ・[1303] 管理人 
     ・[1304] ダッシュ 
     ・[1305] 管理人 
     ・[1307] 管理人 
     ・[1313] ダッシュ 
     ・[1314] 管理人 
     ・[1315] ダッシュ 
     ・[1316] Justy 
     ・[1318] ダッシュ 
   球と三角形の衝突判定   
     ・[1257] Justy 
     ・[1258] 管理人 
     ・[1262] mas 
     ・[1266] こまいぬ 
     ・[1269] Justy 
     ・[1270] mas 
     ・[1272] こまいぬ 
     ・[1276] Justy 
     ・[1288] こまいぬ 
     ・[1292] いちびっと 
     ・[1298] Justy 
     ・[1312] いちびっと 
     ・[1317] Justy 
   困った操作の質問(_ _ ....   
     ・[1309] Justy 
     ・[1310] 管理人 
     ・[1311] Justy 
   雑談   
     ・[1287] 管理人 
     ・[1291] Justy 
     ・[1294] meigin 
     ・[1296] 管理人 
     ・[1297] meigin 
     ・[1299] 管理人 
     ・[1301] バグ 
     ・[1306] meigin 
   ゲーム素材について   
     ・[1228] 管理人 
     ・[1229] バグ 
     ・[1230] 管理人 
     ・[1273] こまいぬ 
     ・[1277] Justy 
     ・[1283] 管理人 
     ・[1289] Justy 
     ・[1290] 管理人 
   c言語の質問   
     ・[1232] keichan 
     ・[1233] billy 
     ・[1234] keichan 
     ・[1235] billy 
     ・[1236] keichan 
     ・[1237] billy 
     ・[1238] keichan 
     ・[1239] 管理人 
     ・[1240] Justy 
     ・[1241] keichan 
     ・[1254] Justy 
     ・[1264] なぎ 
     ・[1271] なぎ 
   C言語でUNIXコマンド実 ....   
     ・[1226] 管理人 
     ・[1227] GPGA 
     ・[1267] むっく 
   わかる人にしかわから ....   
     ・[1260] 管理人 
     ・[1261] 管理人 
     ・[1263] バグ 
     ・[1265] 管理人 
   乱数について   
     ・[1246] mas 
     ・[1247] 管理人 
     ・[1248] midfire 
     ・[1249] 管理人 
   VC++でHTMLを表示した ....   
     ・[1124] 管理人 
     ・[1127] GPGA 
     ・[1128] りんた姉さん 
     ・[1135] GPGA 
     ・[1195] りんた姉さん 
     ・[1196] GPGA 
     ・[1204] りんた姉さん 
     ・[1208] バグ 
     ・[1209] 管理人 
     ・[1212] ナガタ 
     ・[1221] GPGA 
     ・[1222] 管理人 
     ・[1224] mas 
   フォルダ内のファイル ....   
     ・[1131] ナガタ 
     ・[1132] 管理人 
     ・[1133] 管理人 
     ・[1136] ナガタ 
     ・[1137] 管理人 
     ・[1138] ナガタ 
     ・[1139] 管理人 
     ・[1140] 管理人 
     ・[1141] ナガタ 
     ・[1142] ナガタ 
     ・[1143] 管理人 
     ・[1144] 管理人 
     ・[1145] ナガタ 
     ・[1146] ナガタ 
     ・[1147] GPGA 
     ・[1148] ナガタ 
     ・[1149] 管理人 
     ・[1150] GPGA 
     ・[1151] ナガタ 
     ・[1152] GPGA 
     ・[1153] ナガタ 
     ・[1197] ナガタ 
     ・[1198] GPGA 
     ・[1199] ナガタ 
     ・[1200] GPGA 
     ・[1201] ナガタ 
     ・[1203] ナガタ 
     ・[1205] keichan 
     ・[1206] ナガタ 
     ・[1207] GPGA 
     ・[1211] ナガタ 
     ・[1213] keichan 
     ・[1214] ナガタ 
     ・[1215] GPGA 
     ・[1216] ナガタ 
     ・[1217] GPGA 
     ・[1218] ナガタ 
     ・[1219] GPGA 
     ・[1220] ナガタ 

Name: バグ  ..初心者(8,790ポイント)   Date: 2006/10/20(金) 12:20   No:1242       
Title: 雑談板です    
私、mixiのとあるC言語コミュに加入していたのですが、そこの管理人があまりに横柄&失礼な文を書くので退会してきました(^_^;)

初心者の人が虫食い状態のソースを埋めて完成させる簡単な課題を丸投げしていたのですが…

わざと理解できないように難しく書き直したり、きちんとお礼を言っている質問者に対して『この程度の事が分からないのはやる気がないだけ、そんな人間にお礼を言われる筋合いもないし、虫酸が走る』とまで書いていました…。

分かる人には大した事の無いことだったとしても、分からない人にはそうでないのですから、もう少し常識ある態度が取れないのかな…と思った訳です。

実は、他の掲示板でも似たような事があり、非常に不愉快な気分になった事もありました。初心者&入門者用と謳っていながら、分かる人が知識をひけらかし、分からない人を中傷するような感じだったんです。

こういうのを見た後に、ここのサイトにやってきたので、余計に素晴らしいなと思ったんですよね(笑)

私の拙い知識でも役に立つ人がいるのならば…と、今後を驕ることなく書き込みしていきたいと思ってますよ(^-^)


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


Name: 管理人  ..プログラマー(34,984ポイント)   Date: 2006/10/20(金) 13:10   No:1243     
Title: Re:雑談板です    
現在「あ行」がなかなか感知しない携帯から投稿していますf^_^;
古い携帯でもないのにもう壊れてしまった…。
文中に「あ行」が少ない文章を考えようと思いましたが不可能でしたw
というか「あ行」「あ行」言ってるし全然使わないようにしてな……。あ!母音っていえばいいのか!
(なんのこっちゃf^_^;

C言語のコミュでそんな事が!?
私とバクさんが初めてお話したとこですか?
そういうの多いですよ!
教えてGOOとかでもそんなの多いですよ……。配列すらわかってなさそうな質問者に2重ポインタで回答してるんですよ。
「頭悪いやつは参加するな」と思ってるのか「どうだ!こんな構文知ってるぞ!」と思っているのかわかりませんが
なんであんな書き方するんでしょうね。
ちょろっとHPにも書いてありますけどこのHPを作った理由はそれなんです!

私がまだC言語1年生の時、もうわけわかんなくて、いろんなのサイトで質問した事あります。
その時シングルコーテーションで囲んだものとダブルコーテーションで囲んだものの違いがわからなくて。
質問したら、「バカは家で参考書読んでろ」と言われてしまいました。別に書き込みくらいでへこみませんけど、いい気はしませんでした。
そんなひどいのは1回か2回ですけど、どこに言っても誠意的に回答してくれる人には出会えませんでした。
友達も詳しいやついないし、教授にも聞きづらい…。
よく困ってました。結局ある時からみっちり参考書片手に勉強して入門の壁は打開できました。
現在初心者の壁あたりだと思いますf^_^;
その時思ったんです!初心者がわからないっていってる時一生懸命教えてくれる初心者の身になって「わかりやすく」教えてくれるサイトがあったらいいのに……。と。
で上級生になってまだまだ青二才な私ですか段々人にプログラム教える機会がふえてきました。
それなら自分がHP作ろう!入門者くらいの質問なら答えられるかも!
そう思いました。自分が苦労した分いま苦労してる人にはそんな思いしてほしくないと。
HPの随所に「わかりやすく」という言葉が連発されてるのはそれでなんです^^
ですからここではないですが時々宿題丸投げしてお礼をためぐちで言ってる人みると「違うだろ」と思ってしまいます。
きっと時々みかけるひどい回答は、そんな楽して宿題終わらそう。人にやらそうとしてる人間が……


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

Name: 管理人  ..プログラマー(34,989ポイント)   Date: 2006/10/20(金) 13:17   No:1244     
Title: Re:雑談板です    
いるからなんでしょうね(>_<)
未だにそうですが回答みても人のプログラムみるのは大変です……。昔も回答読むのが大変でした。しかし少々難しく書いた方がスマートになったり結局は簡単になったりしますけど
意味が理解できなかったら無意味になってしまいます。
私は質問者さんの質問内容からスキル推測して回答してますけど
そういう見極めがだいじだと思います(^_^)
あえて終了条件をかかなかったり、重複をさける処理をかかなかったりします。
それはプログラムが長く、複雑になってしまうのを避けるためで、
少々穴のあるプログラムでも簡単なものでつかんでもらった方がいいと思うのです。
自分で理解できたら終了条件は自分でかけるでしょうしね!
ホント「わかりやすく」って思って説明してくれる人になかなかめぐりあえませんでした。
その分私がそんな人になれたらなと思ってます^^
管理人のスキルは低すぎますがf^_^;これからもがんばっていきますよ^^


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

Name: バグ  ..初心者(8,969ポイント)   Date: 2006/10/20(金) 20:03   No:1250     
Title: Re:雑談板です    
仕事で書くプログラムも、趣味で作るゲームも、極力分かり易い変数名&関数名を使用して、プログラム自体もシンプルなものを目指しています。
ここの掲示板に書き込みしたソースコードも、誰が見ても分かり易くしたつもりなんですが、どうでしょう?でも、そう思ってるのは自分だけだったりするんですよね〜(;^_^A

そうそう、先日書き込みしたポンデライオンを使ったパズルゲームのプロトタイプとして、同じルールの物をコンソールで製作中です。よければ、完成したらメールで送りますので遊んでみてもらえませんか?感想を聞きたいもので…(;^_^A


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

Name: 管理人 [URL]  ..プログラマー(35,770ポイント)   Date: 2006/10/20(金) 20:08   No:1251     
Title: Re:雑談板です    
>バグさん

是非是非!人のゲームを遊んでみるっていうのはほとんどやったことないので、楽しみです^^
逆に人に自分のゲームを遊んでもらったこともありません:;
しかし今度のシューティングゲームの館のシューティングは使っていい素材を使用しているので、大丈夫そうです^^

あ、そうだ、「お客さんのおつくりになったゲーム」っていうページを作ってそこで公開したりしても面白いと思うのですが、
そういうのだめですか??^^

>ここの掲示板に書き込みしたソースコードも、誰が見ても分かり易くしたつもりなんですが、どうでしょう?

とてもわかりやすいですよ^^
回答している人が、わかりやすくしよう!と思っていれば、それは伝わるはずだとおもいます^^

>でも、そう思ってるのは自分だけだったりするんですよね〜(;^_^A

矛盾するようですが、それにも同感です^^;
慣れてくると「昔難しかったことが難しく感じなくなってくる」これは当たり前ですが、
プログラムの場合それが極端な気がします。
ですから自分が「難しくない」と思ってわかりやすくかいたつもりが、難しかったりするんですよね。
ですから、回答を投稿した後で、質問をした人の立場で、もう一度読み返しています。
そうすると少しでも気持ちがわかるのではないかと^^


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

Name: 管理人 [URL]  ..プログラマー(36,225ポイント)   Date: 2006/10/20(金) 20:18   No:1252     
Title: Re:雑談板です    
あ、バグさん見ましたよ!
C言語のトピ。
ひどいですね!
・・っていうかNULL文字は間違いだってどうでもよくないですか?
ナルが正しいとか、ヌルと書けとか、、、。
なんでローマ字で書いたら間違い??
それに、NULLって(知りませんでしたが)ドイツ語なんですね。
ドイツ語読みではヌルといい、それが英語圏で使われるときには英語読みをして
ナルというときもある・・そうサイトに書いてありました。
NULLもヌル文字も間違いだ・・なんてどうでもいい話のような気がします・・。
ちなみに私はNULL文字とヌル文字、区別していません・・。
区別する意味がわかりません^^;

>この程度の事が分からないのはやる気がないだけ、そんな人間にお礼を言われる筋合いもないし、虫酸が走る
(この掲示板で発言されたものではありません)

ってひどすぎですね。
自分もプログラム最初は入門の頃苦労したことがあるはずだと思いますが。
掲示板で「俺」って発言している人やタメ口で発言している人はホント幼稚な人が多いですよ。。。
後、文章に顔文字を使うだけで、ずいぶん親しみやすく話ができると思うんです^^
ですのでバグさんのような書き方は非常に個人的に好きです^^
2チャンでもいい人はいるんでしょうけど、過去にいやなことがあったので、あの書き方はどうしても好きになれません・・。
あそこのサイト、トップページはいったとこのカテゴリ選択にしても、掲示板のターゲットクリックするにしてもにしても、めちゃ使いにくいし、広告だらけでいい印象ないんですけど、なんであそこまで有名になったんでしょう?


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

Name: mas  ..かけだし(1,955ポイント)   Date: 2006/10/20(金) 21:13   No:1253     
Title: Re:雑談板です    
他人に教えるのって難しいですよね。
そして、この掲示板を見てると教え方も人それぞれだなぁと感じます。

私は質問に対して回答するとき、答えをそのまま教えるのは好きではありません。
ヒントやポイントを挙げるだけなことが多いです。
私が見る限り、管理人さんは答えを教えて詳しく解説することが多いように見えます。
(先程の「乱数について」のトピックが例になるかな…)
どちらが良い悪いというわけではなく、それぞれ意図があっての発言ですよね。
ちなみに私はとしては質問者に試行錯誤してほしいという気持ちがあります。
自分自身、初心者の頃は分からないことだらけでしたが、
できるだけ他人には頼らずに自分で解決するようにしてきました。
どうしても教えてもらうよりは時間がかかってしまいますが、
調べる能力や思考力は養えたかと思います。


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

Name: 管理人 [URL]  ..プログラマー(36,271ポイント)   Date: 2006/10/20(金) 23:45   No:1255     
Title: Re:雑談板です    
そうですよね。
皆さん今まで試行錯誤されてここまで来られた事でしょう。
私もmasさんの意見賛成ですよ^^
調べても調べても全然わからないって時、苦労した思い出があるので、今の私のような回答になっているんだと思います。
結局、「調べなくてもまたここで聞けばいいや」と思うようになってしまっては私の回答は本末転倒です。
自分で調べて解決できる事もまた、プログラミングのスキルの一つなんだと思います。
例えば、コンパイルしてエラーが出ますよね。独特の。
そのエラーメッセージをほとんど丸々コピーして検索かければたいていのことは解決できます。
このような解決の仕方はいつも人にわからないこと聞いていたんじゃ結局出来ないでしょうね。
そのような自分で解決する力はとても大事です。

しかし、質問の一つの答えから普段なら一つの知識しか身につきませんが、私は3つも4つも
身に着けてほしいなと感じています。
http://www.play21.jp/board/formz.cgi?action=res&resno=893&page=20&lognum=&id=dixq&rln=894
私が最初文字コードで苦労したせいもありますが、この辺の回答からも、その気持ちをあらわしています。
答えから、大きく話を膨らまして、解説して言ったほうが絶対わかりやすいですし、一つの自分で解決する能力をつけるより、この回答によって得てもらえる知識を大事にしたいと思ってます。
しかし、それは「一生懸命自分でやっているけど、どうしてもわからないところがある」という人のみに有効でしょうね。
この質問の場合のように、学校の宿題があって、自分でやるのがめんどうだから質問したように思えてしまう質問には有効じゃないでしょう。
結局返答も無いし、全部読んでもらえたかどうかも不明です。
その辺の回答の仕方の駆け引きが難しいですね。
そうするとあまりやる気が感じられない人の質問は適当にして、一生懸命な人だけこちらも一生懸命という態度になってしまい、
あまり自分としては好きじゃないんです・・。

もちろんmasさんの意見に従って、成長した人間の方がたくましくなると思いますよw
自分が入門時に苦労したとき、丁寧に教えてもらった事を教訓に、自分のスキルが上がったとき、
困っている人に手伝ってあげてほしいなと思っていますが、そこまで拡張できる話かどうかは不明ですね^^;


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

Name: バグ  ..中級者(9,438ポイント)   Date: 2006/10/26(木) 15:15   No:1347     
Title: Re:雑談板です    
以前、書き込みしたゲームがある程度ですが、形になってきたので、画面写真を載せてみます。
ビットマップ表示にする前に、プロトタイプとしてコンソールで作ってみたのですが、もう、このままでもいいかな〜とか思い始めています(笑)


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

Name: GPGA  ..中級者(9,592ポイント)   Date: 2006/10/26(木) 15:27   No:1348     
Title: Re:雑談板です    
うを!

これコンソールですか。
最初画像見て、何でスクロールバーがあるんだろうと思いました。

これ気合入りすぎですよ。マジすげぇ。


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

Name: バグ  ..中級者(9,674ポイント)   Date: 2006/10/26(木) 15:42   No:1349     
Title: Re:雑談板です    
ふふふ…有難うございます(^-^)

そういう反応を楽しむ為に、ワザとコンソールっぽくない色使いにしてみたのは内緒ですよ(笑)

完成したら、管理人さんにメールで送る予定なので、ひょっとしたら、ダウンロードできるようになるかもしれません。その時は、是非、遊んでみてくださいm(_ _)m

ちなみに、これのもとになったのは、G-MODEの携帯アプリの『動物連鎖』というゲームだったりします。このゲーム、私のお気に入りでして、少しオリジナルルールを追加して、アレンジ移植してみました(^-^)


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

Name: バグ  ..中級者(10,070ポイント)   Date: 2006/11/06(月) 12:59   No:1411     
Title: Re:雑談板です    
>>管理人さん
とりあえず、遊べる位には形になりましたので、遊んでみてもらいたいのですが、どこにメールしたらいいでしょうか?
mixiのメッセージでアドレスを教えていただけたら、送りますので、よろしくお願いします(^-^)


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

Name: 管理人 [URL]  ..熟練のプログラマー(44,555ポイント)   Date: 2006/11/06(月) 13:17   No:1412     
Title: Re:雑談板です    
バグさん、ありがとうございます♪
dixqhp@gmail.com
こちらに送ってください〜♪
楽しみです^^


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

Name: バグ  ..中級者(10,081ポイント)   Date: 2006/11/06(月) 13:43   No:1414     
Title: Re:雑談板です    
exeを送ってみたのですが、帰ってきました〜(T_T)
ひょっとして、ソースじゃないと駄目なんでしょうか?(^_^;)


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

Name: 管理人  ..熟練のプログラマー(44,571ポイント)   Date: 2006/11/06(月) 13:45   No:1415     
Title: Re:雑談板です    
zipで送ってみてください(^^

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

Name: バグ  ..中級者(10,114ポイント)   Date: 2006/11/06(月) 14:32   No:1416     
Title: Re:雑談板です    
zipでも駄目です。アドレスが無効とか言われるんですが…(^_^;)

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

Name: 管理人  ..熟練のプログラマー(44,601ポイント)   Date: 2006/11/06(月) 14:37   No:1417     
Title: Re:雑談板です    
おかしぃですね…。アドレスはあってるのに(汗

dxq@hotmail.co.jp
ではどうでしょうか?


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

Name: バグ  ..中級者(10,138ポイント)   Date: 2006/11/06(月) 14:41   No:1418     
Title: Re:雑談板です    
無事、送れたようです。なんだったんでしょうね?(^_^;)

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

Name: 管理人  ..熟練のプログラマー(44,623ポイント)   Date: 2006/11/06(月) 14:44   No:1419     
Title: Re:雑談板です    
現在携帯なので後で見てみますね(^^
ありがとうございます♪


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

Name: 管理人 [URL]  ..熟練のプログラマー(44,661ポイント)   Date: 2006/11/06(月) 17:11   No:1421     
Title: Re:雑談板です    
バグさん、待ってもメールが届きません(T_T)
mixiの方に別のメルアド送ったので見てください^^


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

Name: バグ  ..中級者(10,199ポイント)   Date: 2006/11/06(月) 17:22   No:1422     
Title: Re:雑談板です    
今度こそ〜(笑)
とりあえず、送れたみたいなので、確認ヨロです(^-^)


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

Name: 管理人 [URL]  ..熟練のプログラマー(44,667ポイント)   Date: 2006/11/06(月) 17:24   No:1423     
Title: Re:雑談板です    
届きました^^
今から拝見しますね☆


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

Name: 管理人 [URL]  ..熟練のプログラマー(44,993ポイント)   Date: 2006/11/06(月) 17:33   No:1424     
Title: Re:雑談板です    
おぉぉ!
おもしろい!
しかもとてもコンソールとは思えない!
なるほど、コンソールなのでexeファイル一つだけで動いてしまうんですねw
ぷよぷよのような既存のゲームに似ているので親しみやすく、かつ同じではない独自の要素があって別の楽しさを味わうことができました♪
ひとマスしか一度に動けない事によるモーションのあらさを感じさせませんね。
配色もキレイですごかったです^^

是非家に帰ったらHPにアップロードさせていただきたいのですが、
バグさんの作品として紹介させてもらってもいいでしょうか^^


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

Name: バグ  ..中級者(10,269ポイント)   Date: 2006/11/06(月) 17:43   No:1425     
Title: Re:雑談板です    
是非、お願いします。
ただ、ついさっき、バグを発見したので、修正版を再送しますので、そちらを掲載していただけたらと思います(笑)


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

Name: 管理人 [URL]  ..熟練のプログラマー(45,030ポイント)   Date: 2006/11/06(月) 17:46   No:1426     
Title: Re:雑談板です    
了解しました^^
公開はコードなしのexeファイルのみでいいでしょうか?


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

Name: バグ  ..中級者(10,319ポイント)   Date: 2006/11/06(月) 17:55   No:1427     
Title: Re:雑談板です    
とりあえず、exeだけでかまいません。要望があれば、ソースを公開してもいいですが、大した事やってませんし…(苦笑)

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

Name: 管理人 [URL]  ..熟練のプログラマー(44,960ポイント)   Date: 2006/11/07(火) 00:15   No:1428     
Title: Re:雑談板です    
トップページの左メニューの
「ゲームプログラム」の中に「ゲーム作品紹介」の欄を作りました。
バグさんの作品をここに紹介させていただきましたので
是非ご覧ください^^


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

Name: バグ  ..中級者(10,892ポイント)   Date: 2006/11/07(火) 17:19   No:1438     
Title: Re:雑談板です    
おお、有難うございます。
遊んだ皆さんの感想をお待ちしております(^-^)


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

Name: ダッシュ  ..入門者(2,826ポイント)   Date: 2006/11/07(火) 21:41   No:1443     
Title: Re:雑談板です    
おひさです。バグさん!ゲームやりました。ユニークなルールで、面白かったです!今、なかなか時間がとれず、じっくり出来ませんでしたが、今度時間が出来たら腰を据えて楽しんでみようと思っています。僕も友達とともにゲーム制作の計画を進めており、こういった完成したゲームを見ると励みになります。

管理人さんへ

卒論大変みたいですね。僕も今、勉強のノルマに追われています、ゲーム制作をしている友達とともに、ノルマを決めてしているのですが、どうも土日にサボってしまい、バタフライ効果ならぬ、テトリス効果が生じています。バグさんの作品やりながら、「あ、今の俺みたいだな・・・」なんて思っちゃいました・・・。お互い頑張りましょう。今、C言語は管理人さんが勉強していたという、あのサイトで勉強しています。最初見たときは、何やら難しそうに見えましたが、管理人さんのサイトで基礎が出来たので、今は理解できるようになりました。受験とかもありますが、それに負けない反骨の精神で、こちらも勉強して行こうと思います。


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

Name: 管理人 [URL]  ..熟練のプログラマー(45,212ポイント)   Date: 2006/11/07(火) 21:57   No:1444     
Title: Re:雑談板です    
お〜ダッシュさん、お久しぶりです〜^^

お忙しいようですね。
特に高3になったら受験ですしね〜><;
高校のうちにそれだけ勉強されていたら大学生になれば余裕でこなせるようになるでしょうね☆

また、時間が出来たらいつでも遊びに来てください^^
頑張ってくださいね♪


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

Name: バグ  ..中級者(11,080ポイント)   Date: 2006/11/09(木) 07:48   No:1463     
Title: Re:雑談板です    
昼休みにカラードロップで遊んでいたら、特定の条件を満たすと、ブロックをすり抜けてしまうという致命的なバグを発見してしまいました…_| ̄|〇

これとは別に、もう1つ修正したい点があります。実は以前から気付いていたのですが、面倒臭くて放置していたんです(;^_^A

その修正箇所とは、フィールドの上部の見えない部分の判定なんですね。

今までは画面に表示されてない部分は完全に無視していたのですが、見えない2段を判定するように変更したいんですよね。

もちろん、消せるのは実際に表示されている部分だけですから安心して下さい(笑)

あと、バランスの見直しで、赤の魔法力があまりに使えないので、少し調整しようかな…とか思ってます。

実際、使い勝手の良い順番を考えると、どう考えても…

青 >>> 黄 > 水 = 緑 = 紫 >>> 越えられない壁 >>> 赤

こんな感じでしょうからねぇ…(笑)

まぁ、近いうちにバージョンアップさせますんで…ご容赦を…m(__)m

>>ダッシュさん
ありがとうございます(^-^)
また、別のゲームも作成中なので、もし完成できたら遊んでやってください(^^)v


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

Name: 管理人 [URL]  ..熟練のプログラマー(46,573ポイント)   Date: 2006/11/09(木) 08:58   No:1464     
Title: Re:雑談板です    
どんなにチェックしてても、複雑になってくるとどうしてもバグは出てきますよね^^;

バージョンアップ了解しました^^


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

Name: バグ  ..中級者(11,616ポイント)   Date: 2006/11/09(木) 12:58   No:1466     
Title: Re:雑談板です    
とりあえず、前記のバグを修正するのと、赤魔法の変更をしてみました(^-^)

ついでに、モノクロブロックという新ルールも追加したりしてみましたが、メチャクチャに難易度が上がってしまったので、少しバランス調整をしています。(苦笑)
ただ、その代わりに連鎖を組むのが楽しくはなりましたし、思いがけないところで連鎖が起こる事もしばしば…これを楽しいととるか、そうでないかで評価が別れそうではあります(^_^;)

あとは、ハイスコアをファイルに記録させる機能を追加したら、とりあえず、COLOR-DROPに手を入れるのは終わりにしようかと思います。


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

Name: 管理人 [URL]  ..熟練のプログラマー(46,628ポイント)   Date: 2006/11/09(木) 13:50   No:1470     
Title: Re:雑談板です    
機能がドンドン増えていきますねw
来年にはDirectXでCOLOR-DROP2が開発されてるかも(^-^)


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

Name: 管理人 [URL]  ..熟練のプログラマー(46,707ポイント)   Date: 2006/11/09(木) 13:56   No:1471     
Title: Re:雑談板です    
さっきCOLOR-DROPで遊んでたらかなりいいとこまで来たところで、操作不能になってものすごい速さでブロックが落ちてきて終了したんですけど、
これは仕様ですか?^^;


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

Name: 管理人 [URL]  ..熟練のプログラマー(46,734ポイント)   Date: 2006/11/09(木) 14:04   No:1472     
Title: Re:雑談板です    
一度この状態になるとリトライを選んでもものすごい速さでブロックが落ちてきて終了してしまいます(T T)

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

Name: バグ  ..中級者(11,683ポイント)   Date: 2006/11/09(木) 14:45   No:1473     
Title: Re:雑談板です    
あわわわ…(@_@;)
おそらく、タイマーの初期化忘れが原因ではないかと思います。
あと、操作不能になったのは、タイマーの下限が低過ぎた為だと思われますので、これも対応しました。

バージョンアップ&修正版を送りましたので、また遊んでみてください(^-^)


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

Name: 管理人 [URL]  ..熟練のプログラマー(46,783ポイント)   Date: 2006/11/09(木) 17:12   No:1474     
Title: Re:雑談板です    
再アップしました〜^^

しかしzipファイルに圧縮すると奇妙なことにフォルダの中にフォルダが自動生成されてしまいます・・。
ダウンロードしてみたらわかると思いますが、なぜでしょう;


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

Name: keichan  ..入門者(4,185ポイント)   Date: 2006/11/09(木) 18:06   No:1475     
Title: Re:雑談板です    
>しかしzipファイルに圧縮すると奇妙なことにフォルダの中にフォルダが自動生成されてしまいます・・。
>ダウンロードしてみたらわかると思いますが、なぜでしょう;
勝手な想像ですが、使われている圧縮ソフトの設定でそうなっているか、ソフトの仕様ではないでしょうか?


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

Name: 管理人 [URL]  ..熟練のプログラマー(46,791ポイント)   Date: 2006/11/09(木) 18:10   No:1476     
Title: Re:雑談板です    
ウィンドウズに標準でついている機能使ってるんですけどねぇ;

右クリックから圧縮できるやつです。


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

Name: keichan  ..入門者(4,224ポイント)   Date: 2006/11/09(木) 19:14   No:1477     
Title: Re:雑談板です    
そういう仕様じゃないでしょうか?

私はLhaplusを愛用していますが、Lhaplusではフォルダを作るかどうかはユーザーが決定できますし。


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

Name: バグ  ..中級者(11,987ポイント)   Date: 2006/11/09(木) 21:17   No:1479     
Title: Re:雑談板です    
すみません、フォルダ内フォルダの中にあるexeが最新です(^_^;)
タイムスタンプの古いexeは消してくださいm(__)m
なぜ、こんな事をしたかと言いますと、今回はHISCOREをバイナリファイルに記録してあるので、同じフォルダで管理した方が良いだろうと考えてのことです…。混乱させてしまったようで、申し訳ないです…。


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

Name: 管理人 [URL]  ..熟練のプログラマー(46,846ポイント)   Date: 2006/11/09(木) 22:10   No:1481     
Title: Re:雑談板です    
きちんとアップしなおしました、お騒がせしました^^;

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



Name: すず  ..入門者(2,846ポイント)   Date: 2006/11/07(火) 15:43   No:1434       
Title: 関数を使って2    
次のも教えて下さい。

西暦年、月、日を読み込み、その日が何曜日であるかを表示するプログラムを以下の手順で作成せよ。
3-1
西暦年を読み込み、その値を返す関数
int get_year(void)
を作成せよ。なお1900未満の値が入力された場合のには再入力を促し、1900以上の値が入力されるまで処理を繰り返させること。
また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。

3-2
月を読み込み、その値を返す関数
int get_month(void)
を作成せよ。なお0以下または13以上の値が入力された場合には再入力を促し、1以上12以下の値が入力されるまで処理を繰り返させること。
また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。

3-3
西暦年year を受け取り、その年が閏年ならば1をそうでなければ0を返す関数
int judge_uru(int year)
を作成せよ。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
なお、グレゴリオ暦では以下の規則に基づいて、閏年が設けられる。
(1)4で割り切れる年は閏年である。
(2)ただし、100で割り切れるが、400で割り切れない年は、閏年ではない。
たとえば、2004年は閏年であり、また1900年や2100年は閏年ではなく、2004年は閏年である。

3-4
西暦年yearと月monthを受け取り、year年 month月の最終日を返す関数
int get_lastday(int year,int month)
を作成せよ。たとえば、yearに2004をmonthに2を受け取ると、2004年の2月は29日までなので29を返す事になる。
なお、関数get_lastdayの中で3-3で作成したjudge_uruを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。

3-5
日を読み込み、その値を返す関数
int get_day(int year, int month)
を作成せよ。なお、この関数は、西暦年yearと月monthを受け取り、これらの値に基づき、その月の最終日を求める。そして0以下または最終日より大きな値が入力された場合には、再入力を促し、正しい値が入力されるまで処理を繰り返す。
なお、関数get_dayの中では、3-4で作成した関数get_lastdayを呼び出して使うことにすること。(言うまでもなく、関数last_dayの中では、3-3で作成されたjudge_uruが呼び出されることになる)また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。

3-6
西暦年yearを受け取り、1900年からyear年までのトータル日数を返す関数
int get_year_offset(int year)
を作成せよ。たとえば、この関数は1902年を受け取ると、1900から1901年までのトータル日数を返す。すなわち、1900年も1901年も閏年ではないため、365+365=730を返すことになる。
なお、関数get_yesr_offsetの中で、3-3で作成した関数をjudg_uruを呼び出して使うようにすること。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。

3-7
西暦年yearと月monthを受け取り、year年の1月からmonth月の前の月までのトータル日数を返す関数
int get_month_offset(int year,int month)
を作成せよ。たとえば、この関数は、yearに2,004を、monthに3を受け取ると、2004年の1月から2月までのトータル日数を返す。すなわち、2004年は閏年であるため、31+29=60を返すことになる。
なお、関数get_month_offsetの中で3-4で作成した関数get_lastdayを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。

3-8
世暦年year、月month、日dayを受け取り、year年、month月、day日が何曜日であるかを表示する関数
void put_what_day(int year,int month)
を作成せよ。
なお、この関数のyearには1900年以降の年が与えられるものとする。また、1900年1月1日は月曜日であることを利用して、該当の曜日を求めることにする。
なお、関数put_what_dayの中で、3-6で作成した関数get_year_offsetと3-7で作成した関数 get_month_offsetを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。

3-9
3-1から3-8で作成した関数を用いて、以下に示すように、西暦年、月、日、を読み込み、その日が何曜日であるかを表示するプログラムを作成せよ。

例1
西暦年・月・日を入力して下さい
西暦年:2005  return
月  :10 return
日  :15 return
<結果>
2005年10月15日は、土曜日です
 
例2
西暦年・月・日を入力して下さい
西暦年:1899 return
1900年以降の年を入力してください
西暦年:2005  return
月  :15 return
1〜12月を入力してください
月  :10 return
日  :35  return
1〜31日を入力してください
日  :15 return
<結果>
2005年10月15日は、土曜日です


一応出来たのはここまでです。
#include <stdio.h>

int get_year(void)
{
int nen;
printf("西暦年・月・日を入力して下さい\n");
printf("西暦年:");
scanf("%d",&nen);
while(nen<1900){
printf("1900年以降の年を入力してください\n");
printf("西暦年:");
scanf("%d",&nen);
}
}

int get_month(void)
{
int tuki;
printf("月:");
scanf("%d",&tuki);
while(tuki<1||tuki>12)
{
printf("1〜12月を入力して下さい\n");
printf("月:");
scanf("%d",&tuki);
}
}




int main(void)
{
int a,b;
a=get_year();
b=get_month();

return 0;
}



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


Name: miki  ..ぴよぴよ(270ポイント)   Date: 2006/11/07(火) 15:55   No:1435     
Title: Re:関数を使って2    
3−3以降も、一度ご自分で考えてみてください。
正しくなくてもいいですから。


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

Name: miki  ..ぴよぴよ(205ポイント)   Date: 2006/11/07(火) 16:06   No:1436     
Title: Re:関数を使って2    
get_year関数とget_month関数については、
「呼び出し元に値を返していない」という
大きな問題点があります。

get_year関数の最後に
return nen;

get_month関数の最後に
return tuki;

を付け加えましょう。


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

Name: keichan  ..入門者(4,053ポイント)   Date: 2006/11/07(火) 17:41   No:1439     
Title: Re:関数を使って2    
/*

回答例です。 3-9 は 3-8 までを理解できればご自分でコーディングできると
思いますので、わざと載せていません。
設問にはテスト用の main 関数を作りなさい。とありましたが省略しています。
まずは、ソースを眺めてみてください。
疑問点があれば遠慮なくして下さい。
#コンパイルしてチェックしていませんのでミスがあるかもしれません。
#突っ込みをお願いします。
*/

/* 3-1 */
int get_year(void)
{
int input_year = 0;
do {
printf("西暦を入力:");
scanf("%d", &input_year);
} while( input_year < 1900 );
return input_year;
}

/* 3-2 */
int get_month(void)
{
int input_month = 0;
do {
printf("月を入力:");
scanf("%d", &input_month);
} while( input_month < 1 || 12 < input_month );
}

/* 3-3 */
int judge_uru(int year)
{
if( year % 4 == 0 ) {
if( year % 100 == 0 && year % 400 != 0 ) {
return 0;
}
return 1;
}
return 0;
}

/* 3-4 */
int get_lastday(int year, int month)
{
const int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return days[month-1] + (month == 2 ? judge_uru(year) : 0);
}

/* 3-5 */
int get_day(int year, int month)
{
const int last_day = get_lastday(year, month);
int input_day = 0;
do {
printf("日を入力:");
scanf("%d", &input_day);
} while( input_day < 1 || last_day < input_day );
return input_day;
}

/* 3-6 */
int get_year_offset(int year)
{
const int start_year = 1900;
int total_day = 0;
int i;
for( i=start_year; i<year; ++i ) {
total_day += 365 + judge_uru(i);
}
return total_day;
}

/* 3-7 */
int get_month_offset(int year, int month)
{
const int start_month = 1;
int total_day = 0;
int i;
for( i=start_month; i<month; ++i ) {
total_day += get_day(year, i);
}
return total_day;
}

/* 3-8 */
/* 問題の引数には int day はありませんでしたが、勝手につけました */
void put_what_day(int year, int month, int day)
{
const char* const day[7] = {"日", "月", "火", "水", "木", "金", "土"};
const int total_day = get_year_offset(yaer) + get_month_offset(year, month) + day;
printf("%s曜日", day[total_day%7]);
}



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

Name: box  ..ぴよぴよ(365ポイント)   Date: 2006/11/07(火) 17:42   No:1440     
Title: Re:関数を使って2    
サンプルです。

#include <stdio.h>

int get_year(void);
int get_month(void);
int judge_uru(int year);
int get_lastday(int year, int month);
int get_day(int year, int month);
int get_year_offset(int year);
int get_month_offset(int year, int month);
void put_what_day(int year, int month, int day);

int main(void)
{
int year, month, day;

printf("西暦年・月・日を入力してください\n");
year = get_year();
month = get_month();
day = get_day(year, month);
put_what_day(year, month, day);
return 0;
}

int get_year(void)
{
int year;

while (1) {
printf("西暦年:");
scanf("%d", &year);
if (year >= 1900)
break;
printf("1900年以降の年を入力してください\n");
}
return year;
}

int get_month(void)
{
int month;

while (1) {
printf("月:");
scanf("%d", &month);
if (1 <= month && month <= 12)
break;
printf("1〜12月を入力してください\n");
}
return month;
}

int judge_uru(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}

int get_lastday(int year, int month)
{
int days[][13] = {
{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
};

return days[judge_uru(year)][month];
}

int get_day(int year, int month)
{
int day;

while (1) {
printf("日:");
scanf("%d", &day);
if (1 <= day && day <= get_lastday(year, month))
break;
printf("1〜%d日を入力してください\n", get_lastday(year, month));
}
return day;
}

int get_year_offset(int year)
{
int y, d;

for (d = 0, y = 1900; y < year; y++)
d += 365 + judge_uru(y);
return d;
}

int get_month_offset(int year, int month)
{
int m, d;

for (d = 0, m = 1; m < month; m++)
d += get_lastday(year, m);
return d;
}

void put_what_day(int year, int month, int day)
{
int d;
char *w[] = { "日", "月", "火", "水", "木", "金", "土" };

d = get_year_offset(year) + get_month_offset(year, month) + day;
printf("<結果>\n");
printf("%d年%d月%d日は、%s曜日です\n", year, month, day, w[d % 7]);
}


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

Name: すず  ..入門者(2,954ポイント)   Date: 2006/11/07(火) 23:50   No:1445     
Title: Re:関数を使って2    
お二人共ありがとうございまいた。分からないところがあるので教えて頂けたらです。
まだ、配列は習ってないのでconstとかday[][13]こういうやつが分からないので使わずに出来ませんか。


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

Name: 管理人 [URL]  ..熟練のプログラマー(45,589ポイント)   Date: 2006/11/08(水) 01:49   No:1452     
Title: Re:関数を使って2    
すずさん、詳しくお伝えすることが出来ないのですが、
[]と省略されている部分は2がはいります。
int days[][13] = {
{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
};
これは[2][13]の2次元配列です。
配列を習っていないのでしたら読むのは難しいかもしれませんね。。
どの辺まで理解できました?


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

Name: box  ..かけだし(1,337ポイント)   Date: 2006/11/08(水) 08:47   No:1453     
Title: Re:関数を使って2    
では、配列を使わない例を提示します。
ifを使う方法とswitchを使う方法がありますが、
今回は前者の例です。

#include <stdio.h>

int get_year(void);
int get_month(void);
int judge_uru(int year);
int get_lastday(int year, int month);
int get_day(int year, int month);
int get_year_offset(int year);
int get_month_offset(int year, int month);
void put_what_day(int year, int month, int day);

int main(void)
{
int year, month, day;

printf("西暦年・月・日を入力してください\n");
year = get_year();
month = get_month();
day = get_day(year, month);
put_what_day(year, month, day);
return 0;
}

int get_year(void)
{
int year;

while (1) {
printf("西暦年:");
scanf("%d", &year);
if (year >= 1900)
break;
printf("1900年以降の年を入力してください\n");
}
return year;
}

int get_month(void)
{
int month;

while (1) {
printf("月:");
scanf("%d", &month);
if (1 <= month && month <= 12)
break;
printf("1〜12月を入力してください\n");
}
return month;
}

int judge_uru(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}

int get_lastday(int year, int month)
{
if (month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12)
return 31;
if (month == 4 || month == 6 || month == 9 || month == 11)
return 30;
return 28 + judge_uru(year);
}

int get_day(int year, int month)
{
int day;

while (1) {
printf("日:");
scanf("%d", &day);
if (1 <= day && day <= get_lastday(year, month))
break;
printf("1〜%d日を入力してください\n", get_lastday(year, month));
}
return day;
}

int get_year_offset(int year)
{
int y, d;

for (d = 0, y = 1900; y < year; y++)
d += 365 + judge_uru(y);
return d;
}

int get_month_offset(int year, int month)
{
int m, d;

for (d = 0, m = 1; m < month; m++)
d += get_lastday(year, m);
return d;
}

void put_what_day(int year, int month, int day)
{
int d = get_year_offset(year) + get_month_offset(year, month) + day;

printf("<結果>\n");
printf("%d年%d月%d日は、", year, month, day);
if (d % 7 == 0) printf("日曜日です\n");
if (d % 7 == 1) printf("月曜日です\n");
if (d % 7 == 2) printf("火曜日です\n");
if (d % 7 == 3) printf("水曜日です\n");
if (d % 7 == 4) printf("木曜日です\n");
if (d % 7 == 5) printf("金曜日です\n");
if (d % 7 == 6) printf("土曜日です\n");
}



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

Name: box  ..かけだし(2,133ポイント)   Date: 2006/11/08(水) 09:12   No:1454     
Title: Re:関数を使って2    
> まだ、配列は習ってないのでconstとかday[][13]こういうやつが分からないので使わずに出来ませんか。

配列を使わないソースを、少しだけ修正しました。
put_what_day関数で、剰余の計算をするタイミングを見直しました。

#include <stdio.h>

int get_year(void);
int get_month(void);
int judge_uru(int year);
int get_lastday(int year, int month);
int get_day(int year, int month);
int get_year_offset(int year);
int get_month_offset(int year, int month);
void put_what_day(int year, int month, int day);

int main(void)
{
int year, month, day;

printf("西暦年・月・日を入力してください\n");
year = get_year();
month = get_month();
day = get_day(year, month);
put_what_day(year, month, day);
return 0;
}

int get_year(void)
{
int year;

while (1) {
printf("西暦年:");
scanf("%d", &year);
if (year >= 1900)
break;
printf("1900年以降の年を入力してください\n");
}
return year;
}

int get_month(void)
{
int month;

while (1) {
printf("月:");
scanf("%d", &month);
if (1 <= month && month <= 12)
break;
printf("1〜12月を入力してください\n");
}
return month;
}

int judge_uru(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}

int get_lastday(int year, int month)
{
if (month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12)
return 31;
if (month == 4 || month == 6 || month == 9 || month == 11)
return 30;
return 28 + judge_uru(year);
}

int get_day(int year, int month)
{
int day;

while (1) {
printf("日:");
scanf("%d", &day);
if (1 <= day && day <= get_lastday(year, month))
break;
printf("1〜%d日を入力してください\n", get_lastday(year, month));
}
return day;
}

int get_year_offset(int year)
{
int y, d;

for (d = 0, y = 1900; y < year; y++)
d += 365 + judge_uru(y);
return d;
}

int get_month_offset(int year, int month)
{
int m, d;

for (d = 0, m = 1; m < month; m++)
d += get_lastday(year, m);
return d;
}

void put_what_day(int year, int month, int day)
{
int d = (get_year_offset(year) + get_month_offset(year, month) + day) % 7;

printf("<結果>\n");
printf("%d年%d月%d日は、", year, month, day);
if (d == 0) printf("日曜日です\n");
if (d == 1) printf("月曜日です\n");
if (d == 2) printf("火曜日です\n");
if (d == 3) printf("水曜日です\n");
if (d == 4) printf("木曜日です\n");
if (d == 5) printf("金曜日です\n");
if (d == 6) printf("土曜日です\n");
}


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

Name: すず  ..入門者(3,044ポイント)   Date: 2006/11/08(水) 18:46   No:1458     
Title: Re:関数を使って2    
本当にありがとうございました。
一応理解できました。
また、分からない事があると思うのでその時もお願いします。
ありがとうございました。


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



Name: louise  ..入門者(2,829ポイント)   Date: 2006/11/08(水) 00:10   No:1446       
Title: 閏年を求めるプログラム    
西暦y年m月d日の<前の日>あるいは<次の日>の日付を求めてセットする関数
void yesterday(int *y, int *m, int *d){/* …*/}
void tomottow (int *y, int *m, int *d){/* …*/}
を作成せよ。閏年などもきちんと判定すること。

という問題で
#include <stdio.h>

void yesterday(int *y, int *m, int *d)
{
int feb=28;

/* うるう年の判定 */
if(*y%4==0 && *y%100!=0 || *y%400==0){
feb=29;
}

*d=*d-1;
if(*d==0){
if(*m==3){
*d=feb;
}else if(*m==5||*m==7||*m==10||*m==12){
*d=30;
}else{
*d=31;
}
*m=*m-1;
if(*m==0){
*m=12;
*y=*y-1;
}
}
}
void tomorrow(int *y, int *m, int *d)
{
int feb=28;

/* うるう年の判定 */
if(*y%4==0 && *y%100!=0 || *y%400==0){
feb=29;
}

*d=*d+1;
if(*m==2){
if(*d>feb){
*m=*m+1;
*d=1;
}
}else if(*m==4||*m==6||*m==9||*m==11){
if(*d>30){
*m=*m+1;

*d=1;
}
}else{
if(*d>31){
*m=*m+1;
if(*m>12){
*m=1;
*y=*y+1;
}*d=1;
}
}
}

int main(void)
{
int year, month, day;


printf("年:");
scanf("%d", &year);
printf("月:");
scanf("%d", &month);
printf("日:");
scanf("%d", &day);

yesterday(&year, &month, &day);
printf("昨日%d年は%d月%d日\n", year, month, day);

tomorrow(&year, &month, &day);
printf("明日は%d年%d月%d日\n", year, month, day);

return(0);
}

このソースではyesterday,tomorrowをどちらか一方のみにすれば
うまく動きますが、両方いれるとtomorrowで返される値が本日の物になってしまいます。

tomorrow(&year, &month, &day);
tomorrow(&year, &month, &day);
printf("明日は%d年%d月%d日\n", year, month, day);

こうすれば正常に表示されますが、なんか気持ち悪いです。

year == year2;
month == month2;
day == day2;

と書いて
tomorrow(&year2, &month2, &day2);
printf("明日は%d年%d月%d日\n", year2, month2, day2);

としたら意味の分からない数字がかえってきてしまいました。

yesterdayとtomorrowを同時に実行しなければ
正常に処理されるので関数はいいとおもうのですが、正常にあたいを表示するには
どうすればいいでしょうか??

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


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


Name: Justy  ..上級者(21,844ポイント)   Date: 2006/11/08(水) 00:42   No:1447     
Title: Re:閏年を求めるプログラム    
year == year2
の行は比較になっているので、
year = year2
のように代入にすればうまくいくと思います(残りの2つも同様)。


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

Name: louise  ..入門者(2,869ポイント)   Date: 2006/11/08(水) 00:50   No:1449     
Title: Re:閏年を求めるプログラム    
回答ありがとう御座います。

しかし

year = year2;
month =month2;
day =day2;

にすると

C:\C>uru
年:2006
月:11
日:7
昨日4194304年は4206592月4206591日

というふうになってしまいます…


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

Name: Justy  ..上級者(21,913ポイント)   Date: 2006/11/08(水) 01:34   No:1450     
Title: Re:閏年を求めるプログラム    
 あ・・・。
 すみません、逆でした。

year2 = year;


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



Name: すず  ..ぴよぴよ(853ポイント)   Date: 2006/11/07(火) 14:35   No:1430       
Title: 関数を使って1    
以下の問題を教えて下さい。

以下に示すように、身長と体重を実数値として読み込み、BMI指数(肥満の程度を示す指数)と肥満度の判定を表示するプログラムを作成せよ。ここで、BMI指数は身長h(m)、体重w(kg)に対して BMI=w÷h×hと定義され、また肥満度の判定は、以下に基づき行うものとする。
BMI指数 18.5未満 18.5以上25.0未満 25.0以上30.0未満 30.0以上35.0未満 35.0以上40.0未満 40.0以上
判定 やせ 普通 肥満度1 肥満度2 肥満度3 肥満度4

なお、以下のプロトタイプ宣言により示される関数を作成し、これを用いること。
double bmi_index(double height,double weight);
void bmi_judge(double index);
ここで関数bmi_indexは身長heightに、体重をweightに受け取り、BMI指数を計算する関数である。また関数bmi_judgeはBMI指数をindexに受け取り、判定結果を表示する関数である。

一応出来たのはここまでです。
#include <stdio.h>
double bmi_index(double height,double weight);
void bmi_judge(double index);
int main(void)
{
double a,b,bmi,bmi2;
printf("あなたのBMIを求めてみましょう\n");
printf("身長:");
scanf("%lf",&a);
printf("体重:");
scanf("%lf",&b);
printf("<結果>\n");
bmi=bmi_index(a,b);
printf("BMI指数:%f\n",bmi);
printf("肥満度:%f");
bmi_judge(bmi);

return 0;
}

double bmi_index(double height,double weight)
{
double bmi;
bmi=weight/height/height*10000;
return bmi;
}

void bmi_judge(double index)
{
double a,b;

a=bmi_index(index,b);

if(a<18.5)printf("やせ\n");
if(a>=18.5&&a<25.0)printf("普通\n");
if(a>=25.0&&a<30.0)printf("肥満度1\n");
if(a>=30.0&&a<35.0)printf("肥満度2\n");
if(a>=35.0&&a<40.0)printf("肥満度3\n");
if(a>=40.0)printf("肥満度4");

}

よろしくお願いします






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


Name: バグ  ..中級者(10,350ポイント)   Date: 2006/11/07(火) 15:23   No:1431     
Title: Re:関数を使って1    
確認なのですが、計算式はw÷h×hであっていますか?
この式では、必ず体重の数値になってしまうと思うのですが…


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

Name: miki  ..ぴよぴよ(231ポイント)   Date: 2006/11/07(火) 15:39   No:1432     
Title: Re:関数を使って1    
いくつか問題点があります。

【main関数】
・身長と体重の変数名をわかりやすくする方がよい。
 a, bでは意味がわかりにくい。
・変数bmi2は、定義しただけで使っていない。
 不要ならば、定義しない。
・身長と体重を入力する際の単位が不明。
 bmi_index関数で10000を掛けているので、
 身長はセンチメートル単位での入力を想定している?
 であるなら、printfで単位を明記する方がよい。
・printf("肥満度:%f"); の %f は不要。

【bmi_judge関数】
・引数indexの値によって肥満度を判定するので、
 変数a, bやbmi_index関数の実行は不要。
・すべてのif文で、aによる判定をindexによる判定に変更する。


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

Name: すず  ..ぴよぴよ(879ポイント)   Date: 2006/11/07(火) 15:40   No:1433     
Title: Re:関数を使って1    
すみません。
w÷h÷hです。
よろしくお願いします。


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

Name: バグ  ..中級者(10,858ポイント)   Date: 2006/11/07(火) 17:07   No:1437     
Title: Re:関数を使って1    

#include <stdio.h>

double bmi_index( double height , double weight );
void bmi_judge( double index );

int main( void )
{
double a ,b , bmi;

// 入力用の変数は初期化しておく方が望ましいです(^-^)
a = 0.0;
b = 0.0;

printf( "あなたのBMIを求めてみましょう\n" );
// 身長の入力
printf( "身長(m):" );
scanf( "%lf" , &a );
// 体重の入力
printf( "体重(kg):" );
scanf( "%lf" , &b );

// BMIの計算 & 表示
printf( "<結果>\n" );
bmi = bmi_index( a , b );
printf( "BMI指数:%f\n" , bmi );

// 肥満度の判定 & 表示
printf( "肥満度:" );
bmi_judge( bmi ); // ここで引数にbmiと指定すると…@に続く

return 0;
}

double bmi_index( double height , double weight )
{
double bmi;

// BMIの計算
bmi = weight / height / height;

// 戻り値はbmiです
return( bmi );
}

void bmi_judge( double index ) // @この関数の引数であるdouble型のindexにbmiの値が一時的に代入されます。
{
// つまり、わざわざ新しい変数を用意しなくても、そのままindexを判定に使用する事ができる訳です。
if( index < 18.5 ) printf( "やせ\n" );
if( index >= 18.5 && index < 25.0 ) printf( "普通\n" );
if( index >= 25.0 && index < 30.0 ) printf( "肥満度1\n" );
if( index >= 30.0 && index < 35.0 ) printf( "肥満度2\n" );
if( index >= 35.0 && index < 40.0 ) printf( "肥満度3\n" );
if( index >= 40.0 ) printf( "肥満度4" );
}


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

Name: すず  ..入門者(2,880ポイント)   Date: 2006/11/07(火) 18:55   No:1441     
Title: Re:関数を使って1    
なんとなく分かりました。ありがとうございました。
またよろしくお願いいます。


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

Name: 管理人 [URL]  ..熟練のプログラマー(45,091ポイント)   Date: 2006/11/07(火) 21:03   No:1442     
Title: Re:関数を使って1    
一連の質問・回答が終わってしまってましたね^^;
回答が遅くてごめんなさい;
mikiさん、バグさん、keichanさん、boxさん、お答えありがとうございます^^
すずさん、BMIの計算はきっと
体重÷身長の二乗という計算から
体重/(身長*身長)
を間違ったんだと思います。
割り算は逆数の掛け算なので、かっこをはずすとかけざんと割り算は、割り算になります^^


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



Name: マキガミ  ..ぴよぴよ(123ポイント)   Date: 2006/11/02(木) 22:47   No:1387       
Title: C言語のおすすめの入門書は?    
はじめまして。
現在大学4年生で卒業研究でC言語を使って暗号関係のことをやってますが、
C言語が苦手で苦労しています。
入社したらCを使うので、
今のうちに少しでも慣れておきたいです。

初心者でもわかる入門書なんですが、
どれを買おうか迷ってます。
おすすめがありましたら教えていただけないでしょうか?


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


Name: Justy  ..上級者(17,437ポイント)   Date: 2006/11/02(木) 23:55   No:1388     
Title: Re:C言語のおすすめの入門書は?    
 こんばんわ。初めまして、マキガミさん。

> 卒業研究でC言語を使って暗号関係のことをやってますが
 暗号ですか。それは楽しそうですね。私も個人的にはとても興味をもっている分野です。
 でも数学の嵐で、なかなか理解するのは難しいです。
 もっぱら既存のアルゴリズムを使う専門で・・・。


> おすすめがありましたら教えていただけないでしょうか?
 全くの未経験ってわけでないのでしたら柴田望洋著の「新版 明解C言語 入門編 」なんてどうでしょうか。
 ちょっとページ数がありますが、最新のC言語の規格 C99にも触れているようですし、
入門書として有名な書籍です。

 ただ、これでも難しいという人がいるのも事実なので、買うなら実際に書店で手にとって何ページか読んで「これなら判る」と思ってからにした方がいいと思います。

 あとはこのあたりの意見を参考にしてみるのもいいかもしれません。

推薦図書/必読書のためのスレッド PART 19
http://www.bookshelf.jp/2ch/tech/1089492835.html


※ ちなみに私が使っていたのは林晴比古著の「新C言語入門 ビギナー編 」と「新C言語入門 シニア編の古い版でした。
 こちらもネットではいろいろ言われていますが、私は悪くない本だと思います。


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

Name: バグ  ..中級者(10,009ポイント)   Date: 2006/11/03(金) 00:20   No:1389     
Title: Re:C言語のおすすめの入門書は?    
個人的には、さかおまい著『ビジュアルラーニングC言語入門』をおすすめします!(^-^)
文字が大きめで読みやすく、なおかつ写真やイラストをたくさん使用しているので、非常に分かりやすいです。しかも、ページ数も少なめなので、飽きやすい人でも安心です(笑)


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

Name: 管理人 [URL]  ..熟練のプログラマー(43,466ポイント)   Date: 2006/11/03(金) 00:35   No:1390     
Title: Re:C言語のおすすめの入門書は?    
こんにちは^^
卒論ですか!
そろそろ終盤で超忙しくなってきましたね!共感します!
なぜなら私も現在卒論中なのですw

どこもそうだと思いますが私の大学では12月には完成させないといけないので、
もろあせってます。
こんなことなら春から着実にしとけよって話ですが^^;

暗号化ですか、色々勉強しましたけど、色んなアルゴリズムがありますよね。
素因数分解を利用した暗号化がよいといわれているようですけど、自分でアプリ作るときは自分なりに考えて暗号化しています^^
大学の卒論ではそんな面白半分な暗号化じゃだめなんでしょうけど。
C言語は
初歩的な部分をマスターしたいなら
Justyさんのおっしゃっている
「新版 明解C言語 入門編 」
がおすすめです。
もう問題集をしている時間はないでしょうけど、
もしよければこの演習問題編もあるのでチェックしてみてください。
構造体位までひととおりやっている段階なら
「新版 明解C言語 実践編 」がお勧めです。
バグさんのおっしゃっている本は見たことが無いのでよくわかりませんけど、
バグさんがおっしゃっているようにやはり最初は「難しくない本」「興味をそそる本」「一冊全部読んでしまえそうな本」を選ぶのが大事だと思いますよ。
自分が読みやすいと思う本は人それぞれでしょうから上記を参考に、ご自分で大きな本屋さんにいって
選んでみるのが一番だと思います。

演習問題なんかでつまったり、プログラムの書き方がわからなくなったりしたらいつでもここで聞いてください^^

p.s.友達の研究室は10月に卒論が終わっていると聞き、ますますあせっている管理人です(_ _|||)
期限迫ってくるとやけにあせりません?^^;
卒論頑張りましょうね!


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

Name: マキガミ  ..ぴよぴよ(416ポイント)   Date: 2006/11/03(金) 23:08   No:1395     
Title: Re:C言語のおすすめの入門書は?    
こんばんは。
レスありがとうございます。

今日早速、書店に買いに行きました。
柴田望洋著の「新版 明解C言語 入門編 」を購入。
どこかで見た感じの内容だと思ったら、
研究室で使ってるのと同じものでした。^^;

>Justyさん
林晴比古著の「新C言語入門 ビギナー編 」、
色付で見やすかったです。

>バグさん
さかおまい著『ビジュアルラーニングC言語入門』、
書店で見当たりませんでした。

>管理人さん
>演習問題なんかでつまったり、プログラムの書き方がわからなくなったりしたらいつでもここで聞いてください^^
ありがとうございます。

卒論切羽詰ってます。(汗
お互い頑張りましょう!

バイクお好きなんですね。
私も好きで、特にSUZUKIの刀がお気に入りです。
今度模型を作ろうと思ってます。


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

Name: 管理人  ..熟練のプログラマー(44,148ポイント)   Date: 2006/11/04(土) 02:37   No:1396     
Title: Re:C言語のおすすめの入門書は?    
こんばんは。
この忙しいときに、結婚式のため横浜まで来ています^^;
ホテルがインターネット対応だったので、ホテルから書き込みしています。
いや〜新郎新婦、キレイでした〜。
結婚式はじめて出席したんですが、いいですねぇ。
自分の時はどんな感じにしようかいろいろ考えたりしました。
突然新郎がミッキーマウスのかっこうして出てきて驚かしてくれたときは、おもしろいサプライズだな〜と感心しました。
披露宴でインパクトのあることするのも面白そうですね。
お祭り好きなんで血が騒ぎますw

。。と関係ない話はこの辺にして、

結構その本指定の教科書になっていたり導入していたりする研究室多いみたいです^^
過去にもそのような書き込みがありました。
読んだ後に疑問が残らない本なので、おすすめです。

卒論大変ですねw
がんばりましょう^^

バイクお好きなんですか。
私バイクがとても好きですきで。
R-1ってわかるでしょうか。ヤマハのバイクなんですけど、
あんなのとすれ違った日にはテンションがあがりっぱなしです。
この前駅で限定カラーの隼がとまっていたときなんて
なめるようにバイクを見ていました。
旧式でもいいのでR-1を買おうと資金をためているところです。
結局大型ほしくても、C型ZZR1100位になってしまうのがオチですが・・。
ZZRもいいんですけどね、ちょっとレプリカ好きにとってはツアラーはな〜・・と思う部分がああって。
2人乗りで遠出するにはツアラーのほうがいいかもしれませんけどね。
レプリカって乗ってるとめちゃしんどいですね。50キロはしるともう腕や腰が痛くて・・。
・・・なんてバイクの話しだしたらとまらなくなるのでこのへんでw

刀いいですね^^
先輩が刀愛好家で夫婦で刀乗ってるらしいです。
夫婦でライダーってかっこいいですねw


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

Name: バグ  ..中級者(10,166ポイント)   Date: 2006/11/06(月) 15:59   No:1420     
Title: Re:C言語のおすすめの入門書は?    
http://www.7andy.jp/books/detail?accd=31568793

意外に知られてないようなので、リンク貼っておきますね。こんな表紙の本です。


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



Name: ROGER  ..ぴよぴよ(17ポイント)   Date: 2006/11/06(月) 07:01   No:1406       
Title: 無題    
HPでアクセス解析の方法を教えてください。

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


Name: 管理人 [URL]  ..熟練のプログラマー(44,512ポイント)   Date: 2006/11/06(月) 12:23   No:1408     
Title: Re:無題    
ROGERさん、こんにちは^^

アクセス解析の方法というのは、プログラムの話ではなく、
業者のサービスを利用する方法でいいのでしょうか?
業者のサービスを利用する方法でしたらとても簡単ですよ。

googleで調べたら沢山でてきます。
http://www.google.co.jp/search?hl=ja&q=%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E8%A7%A3%E6%9E%90&lr=

中でも性能がいいのは、ちょっと高いですが、infoseekじゃないでしょうか?
年間4千円かかるので少し高いですが、細かな調査が出来ます。
無料版でかなり使えるのはFC2だと思います。
http://analyzer.fc2.com/
無料版では広告が出るのがねっくですが、これはほっとんど広告が出ませんし、
infoseekほど使いやすくは無いものの、無料にしては十分機能が満載です。

利用の手順は、業者のサービスに登録後、
発行されるHTMLタグを任意の場所にはりつけるだけです。
そのタグによってBODYタグに貼り付けるものもあれば、HEADに貼り付けるものもあります。
手順は誰にでもわかるように書いてありますから、気を楽にして挑戦してみてください^^


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

Name: ROGER  ..ぴよぴよ(31ポイント)   Date: 2006/11/06(月) 12:28   No:1409 解決!     
Title: Re:無題    
ありがとうございました。

よくわかりました。
さっそくトライしてみます。


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

Name: 管理人 [URL]  ..熟練のプログラマー(44,528ポイント)   Date: 2006/11/06(月) 12:33   No:1410     
Title: Re:無題    
解決できてよかったです^^
頑張ってください☆


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



Name: 初心者  ..かけだし(2,018ポイント)   Date: 2006/10/25(水) 20:56   No:1337       
Title: 古いソフトの再ビルド(その2) 内容が変わったので    
内容が変わってきたみたいなので別の板をたてました。
申し訳ございません。
前回のエラーの件は何とか解決いたしました。
無事エラーは出なくなりました。
が、今度は別のエラーが発生してしまいました。
エラー内容は・・
error LNK2019: 未解決の外部シンボル _memset が関数 "void __cdecl reset_state(void)" (?reset_state@@YAXXZ) で参照されました。
error LNK2019: 未解決の外部シンボル ___security_cookie が関数 "void __cdecl single_click(unsigned int)" (?single_click@@YAXI@Z) で参照されました。
error LNK2019: 未解決の外部シンボル @__security_check_cookie@4 が関数 "void __cdecl single_click(unsigned int)" (?single_click@@YAXI@Z) で参照されました。
error LNK2019: 未解決の外部シンボル _memcpy が関数 "void __cdecl packetd6(void)" (?packetd6@@YAXXZ) で参照されました。
Debug/FastLoot.exe : fatal error LNK1120: 外部参照 4 が未解決です。

です。objファイルを作成するときにエラーを発生しています。
今回も自分なりに探ってみました。その結果、DLLファイルが作れなくて失敗してるみたいです。
dllファイルのみをビルドしても同じエラーが発生しました。
で、そのdllファイルのソースなんですが、該当すると思われる部分は、
static void alloc_shard_memory (u32 index, u32 size)
{
if (share.packet_size_prev[index] < size)
{
size = (size + 4095) & ~4095;
free_shard_memory (index);
}
else if (share.packet_size_prev[index] != global.packet_size_now[index])
{
size = share.packet_size_prev[index];
free_shard_memory (index);
}

if (global.packet_file_mapping[index] == NULL)
{
char sharname[24];
wsprintf (sharname, "UOH5:%d:%d", index, size);
share.packet_size_prev[index] = global.packet_size_now[index] = size;
global.packet_file_mapping[index] = CreateFileMapping ((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, global.packet_size_now[index], sharname);
global.packet_buffer[index] = (u8*)MapViewOfFile (global.packet_file_mapping[index], FILE_MAP_ALL_ACCESS, 0, 0, 0);
}
}


static void recv_recv_packet (const u8* adrs)
{
int len = share.packet_table[*adrs];
int flag = (len == 0x8000);
if (flag) len = *(u16*)(adrs +1);

alloc_shard_memory (0, len);
analyze_packet (adrs, len);
memcpy (global.packet_buffer[0], adrs, len);

if (flag)
{
_asm
{
mov eax,global.packet_buffer[0]
rol word ptr[eax+1],8
}
}
send_event (WM_USER+400, len, 0);
if (flag)
{
_asm
{
mov eax,global.packet_buffer[0]
rol word ptr[eax+1],8
}
}
}

です。
それで、例のごとく、ヘッダファイルに
#ifndef __UOHOOK5_H__
#define __UOHOOK5_H__

#define inline _inline

typedef __int8 s8;
typedef __int16 s16;
typedef __int32 s32;
typedef unsigned __int8 u8;
typedef unsigned __int16 u16;
typedef unsigned __int32 u32;

extern "C" {
bool WINAPI UOHOOK_IsHook();
u32 WINAPI UOHOOK_GetClientType();
HWND WINAPI UOHOOK_GetTargetWnd();
u32 WINAPI UOHOOK_GetPacketLength (const u8* adrs);
u32 WINAPI UOHOOK_GetXLoc();
u32 WINAPI UOHOOK_GetYLoc();
u32 WINAPI UOHOOK_GetPlayerID();
bool WINAPI UOHOOK_GetEvent (u32*, u32*, u32*);
void WINAPI UOHOOK_FreeEvent (UINT cmd = 0);
bool WINAPI UOHOOK_SendPacketToClient (const u8* adrs, int len);
bool WINAPI UOHOOK_SendPacketToServer (const u8* adrs, int len);
}

#endif

とあります。
どのようにすればよろしいのでしょうか。
ご教授お願いいたします。







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


Name: 初心者  ..かけだし(2,090ポイント)   Date: 2006/10/25(水) 23:26   No:1339     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
error LNK2019: 未解決の外部シンボル _memset が関数 "void __cdecl reset_state(void)" (?reset_state@@YAXXZ) で参照されました。
error LNK2019: 未解決の外部シンボル ___security_cookie が関数 "void __cdecl single_click(unsigned int)" (?single_click@@YAXI@Z) で参照されました。

このエラーについては何とか解決できました。
あと、もう一つの方が分かりません。
お願いします。


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

Name: Justy  ..上級者(16,879ポイント)   Date: 2006/10/25(水) 23:51   No:1340     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
 "msvcrt.lib"はリンクされていますか?

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

Name: 初心者  ..かけだし(2,129ポイント)   Date: 2006/10/26(木) 08:39   No:1341     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
>  "msvcrt.lib"はリンクされていますか?

すいません。リンクのさせ方が分かりません。
どこかに設定があるのだと思いますが見あたりません。
初心者ですが、よろしくお願いします。


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

Name: keichan  ..入門者(2,775ポイント)   Date: 2006/10/26(木) 09:27   No:1342     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
ソースファイルに
#pragma comment(lib,"msvcrt.lib")
と書くか、

プロジェクト -> プロパティ -> 構成プロパティ -> リンカ -> 入力
のタブにある「追加の依存ファイル」へ msvcrt.lib を追加してみてください。


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

Name: 初心者  ..入門者(2,555ポイント)   Date: 2006/10/29(日) 03:56   No:1356     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
> プロジェクト -> プロパティ -> 構成プロパティ -> リンカ -> 入力
> のタブにある「追加の依存ファイル」へ msvcrt.lib を追加してみてください。

こちらの方法でないとうまくリビルドできないので、こちらの方法でリビルドさせました。
うまくビルドはできるようになったのですが、プログラムを立ち上げるとエラーが出てきます。
最初は「msvcR80.dll」がない。といったエラーでしたので、それを探してきて、windowsのシステムフォルダにコピーしました。
すると、エラー内容が添付ファイル用に変化して、「初期かできませんでした。」といったエラーに変わりました。
初期化ってどうやればいいのでしょうか?



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

Name: 初心者  ..入門者(2,646ポイント)   Date: 2006/10/29(日) 04:27   No:1357     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
画像ファイルが添付できてないみたいです。
出てくるエラーはランタイムエラーで、エラーコードはR6034。
マニフェストがらみのエラーのようですが・・・
「マニフェストを追加しない」に設定してもだめでした。
解決方法をご教授ください。



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

Name: 初心者  ..入門者(2,774ポイント)   Date: 2006/10/29(日) 05:09   No:1358     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    

ランタイムエラーが出て来る件は何とか解決できました。
マニフェストファイルを作成して、読み込むことで対応できました。XPスタイルに対応してなかったのが原因みたいでした。
あとは、
「アプリケーションを正しく初期化できませんでした(0xc0000142)」のメッセージが出てくる分です。
これがわかりません。ご教授おねがいします。



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

Name: GPGA  ..中級者(12,234ポイント)   Date: 2006/10/29(日) 23:12   No:1362     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
これだけの情報ですと、正直わからないとしか言いようがないです。
状況も、最初のときに比べてずいぶん変わってしまったような感じですし
もし問題がないのであれば、プロジェクトをどこかのサーバにアップして
ダウンロード出来るようにしてください。
時間があるときにチェックしてみます。

---------------------------------------------------------------
★ 雑談
最近かなり忙しく、最後に休んだのは9月23日。
今日は日曜なのにもかかわらず、10時に出社しそのまま かいちゃ に泊まりです。
---------------------------------------------------------------

と、いうわけなので時間があるときにチェックします。


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

Name: 初心者  ..入門者(2,863ポイント)   Date: 2006/10/30(月) 21:19   No:1363     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    

どうもありがとうございます。
以下のUPローダーにUPさせていただきました。

http://snowup.dip.jp/up1/upload.html

ファイルネームは、snow0126.zip です。
よろしくお願いします。



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

Name: GPGA  ..中級者(12,337ポイント)   Date: 2006/10/31(火) 10:32   No:1364     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
ちょっと見てみましたが、結構手ごわそうです。
少なくとも私の実力では、ちょっとやそっと見たぐらいでは
わかりませんでした。

本格的に調査しないと、原因追及できそうにないので
他にわかる方がいたら、回答をお願いします。

一応、原因追求は時間の合間を見て、やってみようと思いますが
現在の忙しさを考えると、10日は軽くかかりそうです。


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

Name: GPGA  ..中級者(12,809ポイント)   Date: 2006/10/31(火) 12:01   No:1365     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
10日はかかるとか言いましたが、終わりました。
原因がさっぱりつかめなかったので、プロジェクトを一から
作り直し、ソースコピペして実行したところ、動作しました。

元を知らない私には、その動作が正しい挙動かどうか判断できませんので
初心者さんが確認してください。

初心者さんが使用したアップローダーにアップしなおしました。

http://snowup.dip.jp/up1/upload.html

NAME:snow0136.zip

アップしてから思い出したのですが、エントリーポイントを
元の「EntoryPoint」ではく、「WinMain」のまま、アップしてしまいました。

特に挙動の変化はないと思いますが、一応報告ということで。


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

Name: 初心者  ..入門者(2,929ポイント)   Date: 2006/10/31(火) 22:22   No:1367     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
ありがとうございます。
何とか起動はいたしました。
動作の検証を行っているのですが、リソースファイルの「IDD_MAGICITEM」になるエディットコントロールの値がうまく反映されていないみたいです。
お分かりになりますでしょうか?


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

Name: GPGA  ..中級者(12,670ポイント)   Date: 2006/10/31(火) 23:08   No:1368     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
もう少し具体的に症状を書いてもらえますか。

このアプリケーションの仕様を知らない私は、これが何でどのように使った結果
どうなるということが一切わからないわけです。

「IDD_MAGICITEMに該当するエディットコントロール」と言っているので、

メニュー→ルート→マジックの価値を選択

を行うくらいまでは、わかりました。

この後に A を B した行った結果、C にならなければいけないのに、D の結果になってしまった。

上記の A B C D に該当する言葉を入れてください。
また、可能であればその部分に該当する画像が添付されていると、わかりやすいです。


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

Name: 初心者  ..入門者(3,146ポイント)   Date: 2006/11/03(金) 08:25   No:1391     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
返信、ありがとうございます。
動作としては言われたとおりです。
希望する動きは、
マジックの価値を選択→エディットコントロールに数値を入力→絵エディットコントロールの値を条件判断としてValue変数条件判断 というのが正しい動きです。
しかし、現在のところエディットコントロールへの入力値が反映されてません。エディットコントロール値を画面にそのまま表示する(total=エディットコントロール値)とすると、なぜかtotalの値がすべて「1」になってしまいます。
お分かりになりますか?


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

Name: GPGA  ..中級者(13,040ポイント)   Date: 2006/11/03(金) 13:03   No:1392     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
> エディットコントロールの値を条件判断としてValue変数条件判断
これは、どの関数のどの部分のことを言っているのでしょうか?

> エディットコントロール値を画面にそのまま表示する(total=エディットコントロール値)
これは、エディットコントロールでOKを押した後に、表示しているのでしょうか?
また、totalとは、どの関数のどの変数のことを言っているのでしょうか?

とりあえずプログラムを見た限りでは、
マジックの価値を選択して出てきたエディットコントロールに値を入力し、最後にOKを押すと
settings.loot_items_value[ 各パラメータの番号 ]
の中に値が格納されるようになっています。
上記で言っている比較はここの値を使用しているのでしょうか?


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

Name: Justy  ..上級者(17,502ポイント)   Date: 2006/11/03(金) 14:44   No:1393     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
>初心者さん
 最初からきちんと説明してはどうでしょうか。
 このままでは同じような問答を何回も繰り返さないと、こちらが問題を理解するに至りません。

 少なくともこのツールはUOのチートツールだと思われるので、当然UOが動いていないと正しく動かないですよね?
 totalとか画面、というのはUOのパラメータだったり画面だと思われるのですが、そういうことも含めて全部話さないと、こちらには全く伝わりません。


 で、ネットで同じものと思われるものを落としてきて比較したところ、loot_items_valueの要素数は 111に、関連したテーブルや処理もそれに合わせて違いがありました。
 メッセージIDにも大きく違いがありました。

 まぁ、どっちのソースが新しいのかは判りませんし、UOを持っていないんでこれ以上は判りませんが・・・・。


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

Name: GPGA  ..中級者(13,164ポイント)   Date: 2006/11/03(金) 15:45   No:1394     
Title: Re:古いソフトの再ビルド(その2) 内容が変わったので    
> 少なくともこのツールはUOのチートツールだと思われるので、当然UOが動いていないと正しく動かないですよね?
なぬ〜。そうだったんですか。たしかにネットで調べてみたら、UOのチートツールっぽいですね。
私はてっきり、個人で作成したRPG用のツールで、現行ではどの操作をしても何も反応がないので、他に何かファイルが必要なんじゃないかとか思ってました。

そうなると、UO持っていない私にはどうしようもないですね。


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



Name:  ..ぴよぴよ(375ポイント)   Date: 2006/11/01(水) 16:04   No:1369       
Title: 2次関数のグラフを作るには?    
こんにちは、始めてのカキコです。。
私は、今年の6月から大学でプログラミングをならうよーになったんですか、まったく苦手なんです。。考えかたは思い浮かんでもなかなかC言語にして表せれないんです。なので、こちらでしばらくいろいろ勉強できれば、なぁーと思ってます。よろしくお願いします。

質問です。学校の課題です。
『y = x*x (-8<= x <= 8)のグラフを出力するプログラムを関数を用いて作成せよ.ただし,横軸がy軸,縦軸がx軸で良いものとする』
と言う問題です。

-8 <= x <= 8 の範囲で:
1) x の"値"(-8, -7, ... 7, 8)を出力
2) x*x の"値"(64,49,36,..49,64)を出力
して、その計算結果を配列に格納して、
表示はfor文を使う・・

というような雰囲気を考えてるんですが、本当によくわかりません。。教えてください。お願いします。


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


Name: keichan  ..入門者(2,825ポイント)   Date: 2006/11/01(水) 16:56   No:1370     
Title: Re:C言語得意になりたい    
回答例を書いてみました。
どこか疑問に思うところがあれば何でも質問してください。

#include <stdio.h>


#define MIN_VALUE (-8)
#define MAX_VALUE (8)

/**
* @brief 引数で渡された値の2乗した値を適正な位置に出力する
* @param in_x : x座標値
*/

void print_pow(const int in_x)
{
const int print_pos = in_x * in_x;
int i;

printf("%2d|", in_x); /* x座標値を出力 */

/* "*"を表示したい位置まで" "を出力 */
for( i=0; i<print_pos; i++ ) {
printf(" ");
}

/* 適正な位置まで来たので"*"を出力 */
printf("*");

/* 改行を出力して完了 */
printf("\n");
}

int main()
{
int i;
for( i=MIN_VALUE; i<=MAX_VALUE; i++ ) {
print_pow(i);
}
return 0;
}


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

Name:  ..ぴよぴよ(469ポイント)   Date: 2006/11/01(水) 17:02   No:1371     
Title: Re:C言語得意になりたい    
ありがとうございます。
では、さっそく質問です。
きっと、のちのち習って行くんだとおもうんですけど。。
まだ。。
『#define』とか『const』を見たことがないんですが。。
説明してもらえますか??


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

Name: 管理人 [URL]  ..熟練のプログラマー(41,008ポイント)   Date: 2006/11/01(水) 17:03   No:1372     
Title: Re:C言語得意になりたい    
☆さんこんにちは^^
最近管理人は卒論真っ盛りで夜も眠れない日々をすごしております;
ここにおこしになってらっしゃる方々にはご迷惑をおかけし、申し訳ございませんm(_ _|||)m

回答ですが、まず、アルゴリズムの説明をしますね。

写真のような出力をするプログラムでしたら
64回空白を表示して*を表示。 改行後
49回空白を表示して*を表示。 改行後
36回空白を表示して*を表示。 改行後
・・・・・
0回空白を表示して*を表示。 改行後
・・・・・
64回空白を表示して*を表示。 改行後
とすれば書けますよ!
ループは二重ループを使うとよいでしょう。

サンプルプログラムを書きました。これを実行してみてください。
#include  <stdio.h>

void main(){
for(int i=-8;i<=8;i++){
for(int j=0;j<i*i;j++){
printf(" ");
}
printf("*\n");
}
}


2重ループは最初は難しく感じるでしょう。
しかし順をおってみていけば簡単ですから!


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

Name: 管理人 [URL]  ..熟練のプログラマー(41,353ポイント)   Date: 2006/11/01(水) 17:09   No:1373     
Title: Re:C言語得意になりたい    
keichanさんが先に回答してくださってましたね^^;
keichanさんのプログラムはとても綺麗にかいてあるものですが、
きっとはじめて読むと難しく思うと思うので、
まず、私のプログラムを先にごらんになるといいと思います。
両者のプログラムとも、二重ループなんでやってることは一緒です。
私のプログラムで感覚をつかんだあと、keichanさんの綺麗なプログラムで完璧にされるとよろしいかと思います^^

二重ループはfor文のなかにfor文がはいっているプログラムの事で、
最初
for(int i=-8;i<=8;i++){
のループからiが-8で始まります。
for(int j=0;j<i*i;j++){
すぐにここのループにはいります。
iの2乗回空白を表示するわけですから
最初-8なんで64回空白が表示されますね。
64回空白が表示された後は*そして改行が表示されて
ループが戻ります。
処理は最初のループ
for(int i=-8;i<=8;i++){
こちらに戻り、今度はiが-7です。
処理はすぐ次のループ
for(int j=0;j<i*i;j++){
こちらにうつり、iは-7ですから49回空白が表示されたのち
ループをぬけ
*と改行が表示されます。
iが-8から8になるまで
これが実行され続けるわけですから
写真のような実行結果になるわけですね^^

わからなかったらまた聞いてください♪


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

Name:  ..ぴよぴよ(554ポイント)   Date: 2006/11/01(水) 17:10   No:1374     
Title: Re:C言語得意になりたい    
ありがとうございます。
『アルゴリズム』という言葉はきいたことありますよ☆
なるほど!!!
8*8=64、7*7=49の所に*印がくるようにすればいいんですね!!
で、それ以外は、空白ということですね!!


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

Name:  ..ぴよぴよ(800ポイント)   Date: 2006/11/01(水) 17:16   No:1375 解決!     
Title: Re:C言語得意になりたい    
連続投稿でごめんさい。

ほっっんとによく分かりました。

実は、私はC言語が本当によくわからなくて・・知り合いや兄弟でも教えてくれる人がいないため、掲示板で前質問をした時に、すっごく難しいことを言われて、挙げ句の果てに、キツイ文句を言われてしまいました。それで、ますますいやになってしまったんです。。

でも、今回ここで質問したら、とっても分かりやすく教えてもらえました☆もちろん『ブックマークに追加』しましたょ(笑)
もしよければ、これからも、わからないことがあれば、質問してもよろしいでしょうか??


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

Name: 管理人 [URL]  ..熟練のプログラマー(41,712ポイント)   Date: 2006/11/01(水) 17:17   No:1376     
Title: Re:C言語得意になりたい    
☆さん、すみません><;
専門用語を日々使い続けていると専門用語に思えなくなってくるっていう現象が起きるんですよね><;
さらっとわかりにくい言葉を使ってました!
アルゴリズムっていうのは端的に言うと「順序」という意味です。
つまりプログラムのアルゴリズムというとプログラムがどのように処理が行われているのかその順序、処理の工程という事です。
いつの間にかわかりにくい言葉を並べてしまうような事がないように、とにかくわかりやすくに重点を置いて説明をしてきたつもりですが、
段々侵食されてしまっているようです^^;
アルゴリズムっていうのはプログラム書いてると必ず出てくるので覚えておく必要大です!
是非この機会に覚えておいてください^^

使用例:
for文のアルゴリズムは
for(i=0;i<10;i++)
の場合、iは0から始まってループが一度終わるとiは1加算され、10になるまでループ処理を行う。
for文のアルゴリズムはそういうアルゴリズムです。

と言った感じです^^


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

Name:  ..ぴよぴよ(908ポイント)   Date: 2006/11/01(水) 17:23   No:1377 解決!     
Title: Re:C言語得意になりたい    
はいはいはいはい!!!!
なるほどなるほど!!!
今本当にパソコンの前で首縦に振ってましたから^^
すごい!!!すごいですね!!
よーくわかりました☆
+@まで教えてもらえて本当に光栄です♪
いますっごく感動してます(笑)
私も得意になって、ここの掲示板で、質問に答えれるよーになりたいなぁ(笑)


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

Name: 管理人 [URL]  ..熟練のプログラマー(42,534ポイント)   Date: 2006/11/01(水) 17:24   No:1378     
Title: Re:C言語得意になりたい    
☆さん

>実は、私はC言語が本当によくわからなくて・・知り合いや兄弟でも教えてくれる人がいないため、掲示板で前質問をした時に、すっごく難しいことを言われて、挙げ句の果てに、キツイ文句を言われてしまいました。

過去に掲示板でよく同じ事を言ったんですが、私も同じ経験があるので、是非今の初心者さんにはそんな思いをしてほしくない!
と思ってこのHPをたてたんです^^
掲示板で質問すると「わざと」難しく説明する人がいます。
どや!俺はこんなプログラムかけるんだぞ!
みたいな?
質問者の立場になって考えて回答してくれるような人には出会えませんでした。
友達にも詳しい人がいず、教授にも聞きにくく・・。途方にくれました。
質問者の立場としては「とにかくわかりやすく」に重点おいてほしいんですよね。
人の書いたプログラムってただでさえよみにくいのに、
それが上級者の書いたものだと余計にわからない!
ましてやわざと難しく書いたプログラムなんてわかるわけない!

>それで、ますますいやになってしまったんです。。

そういう流れで私もですw
しかしある時プログラム面白さがわかったんです。
それからというもの、ネットに質問することがなくなり、一人でひたすら本読んで勉強しました。
好きこそものの上手なれ。
頑張ってください^^


追伸ですが、
プログラムっていうのは定数は
#define で書くのが一番いいです。
そしてループするような処理は本当はkeichanさんのお書きになったように関数化すると
綺麗になります。
私は綺麗なプログラムっていうよりわかりやすくプログラムを書いたので完全ではありません。
keichanさんのお書きくださったプログラムも是非参考にしてください^^
もし#defineや関数化はまだ習っていなかったらもうちょっと自分で勉強してみてからでいいですので、
一度みなおしてみてはいかがでしょうか^^


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

Name:  ..ぴよぴよ(921ポイント)   Date: 2006/11/01(水) 17:35   No:1380 解決!     
Title: Re:C言語得意になりたい    
本当にありがとうございました。
よくお分かりになさっていて、嬉しかったです。

今学校では、配列や関数をやりかけたところなので、もっと勉強して理解できるように頑張ります。

管理人さんも卒論頑張ってくださいね♪
でもしっかり、睡眠とってくださいよぉー(笑)

お忙しいのにどーもありがとうございましたm(_)m


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

Name: 管理人 [URL]  ..熟練のプログラマー(42,851ポイント)   Date: 2006/11/01(水) 17:37   No:1381     
Title: Re:C言語得意になりたい    
はい、ありがとうございます^^

またいつでもお越しください☆

頑張ってくださいね^^


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

Name: keichan  ..入門者(2,952ポイント)   Date: 2006/11/01(水) 17:41   No:1383     
Title: Re:C言語得意になりたい    
『#define』とか『const』を見たことがないんですが。。
#defineは定数(プログラム内で変化することのない数値)を人間が見て理解しやすいように特定のキーワードに置き換えることをしてくれます。
今回の例では MIN_VALUE と MAX_VALUE ですね。

作ったときは直値でも問題はないのですが、何ヶ月か経った後に自分の書いたコードを見直したときに、「ん?この数値は何を意味してるんだっけ??」みたいな事に陥らない様に設けた"保険"です。
後は、他人にコードを見せる場合にも有効です。(当然ですね)

const に関しても#defineと同等の役割(定数)をしていますが、
使い方が違っています。
どこが違うのかと言うと、プログラム内でconstで定義された変数の値が毎回変わっていくということです。

[code]

void print_pow(const int in_x)
{
const int print_pos = in_x * in_x;
[/code]

ここで print_pos は関数の引数の値によって値が決定します。
in_x に関しても、呼び出し元のmain()内で毎回引数で渡している値が変化しています。





こんな説明でわかりますか?(難しく書いてませんか?)


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

Name:  ..かけだし(1,002ポイント)   Date: 2006/11/01(水) 17:48   No:1384 解決!     
Title: Re:C言語得意になりたい    
こちらこそ、ありがとうございます♪

嬉しいです。またおじゃまさせていただきます☆

keichanさんも、管理人サンもありがとうございました♪

私もがんばります(*^皿^*)


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

Name: バグ  ..中級者(9,803ポイント)   Date: 2006/11/02(木) 09:43   No:1385     
Title: Re:C言語得意になりたい    
細かいツッコミですが…

for( i = 0 ; i < 10 ; i++ )

の場合、厳密には『iが10になるまで繰り返す』ではなく、『iが10より小さい値である間、繰り返す』が正しいです。


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

Name: 管理人 [URL]  ..熟練のプログラマー(42,985ポイント)   Date: 2006/11/02(木) 09:45   No:1386     
Title: Re:C言語得意になりたい    
そうですね^^

ただ実際にループを抜けるときにはiは10になっているのでそういう気持ちで書きました。

実際にはi=10の時にはループしませんから、間違わないようにしないといけませんね☆


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



Name: さとる  ..ぴよぴよ(170ポイント)   Date: 2006/10/31(火) 21:21   No:1366       
Title: 固有値    
はじめまして。
質問させてください。

QR法を用いてエルミート行列の固有値、固有ベクトルを求めたいのですが、複素数のため計算方法がわかりません。

実数であれば、householder変換からQR法で固有値を求められるようになったのですが、複素数の場合、householder変換の段階で計算がよくわからなくなっています。
また、複素数を実数に変換してから固有値を求める方法もあるようですが、どのように実数にすればよいのかがわかっていません。

どなたか計算方法をご存知の方アドバイスいただけないでしょうか。
よろしくお願いします。


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


Name: 管理人 [URL]  ..熟練のプログラマー(42,925ポイント)   Date: 2006/11/01(水) 17:38   No:1382     
Title: Re:固有値    
QR法を用いてエルミート行列の固有値、固有ベクトル・・
確かに以前やった覚えがありますが、忘れてしまいました><;
力になれず、申し訳ないです・・。


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



Name: 管理人 [URL]  ..熟練のプログラマー(42,819ポイント)   Date: 2006/11/01(水) 17:34   No:1379       
Title: 掲示板に訪問してくださっている方へお詫び    
かれこれ2週間くらい?管理人が管理できずすみません;
管理人は事故にでもあって病院のベットにでもいるのでは?
とお思いの方、そういうわけではございません(_ _|||)

回答してくださってらっしゃる方、本当にありがとうございます!
アクセス、閲覧してくださっている方、アクセスありがとうございます!
これからも、HPのバージョンアップは時間のあるときに積極的にやっていこうと思いますし、
掲示板の回答も責任もってやらせていただきますので
どうか皆様、よろしくお願いします^^

シューティングの館の続き楽しみにしているという要望、うれしい限りです!
まだプログラムの面白さを実感していない方がこのHPをきっかけに目覚め、
面白さ実感していただけたら本当にうれしいです^^
プログラムって難しいですよね、みなさん一緒にがんばっていきましょう♪


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




Name: まーさん [URL]  ..ぴよぴよ(59ポイント)   Date: 2006/10/29(日) 19:41   No:1360       
Title: トルク    
体重50kgの人が25kgfのトルクで締め付けるには長さ何cmのトルクレンチを使用すれば良いか?             計算の公式も知りたいです。

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


Name: バグ  ..中級者(9,724ポイント)   Date: 2006/10/29(日) 20:21   No:1361     
Title: Re:トルク    
これって、C言語と全く関係ない質問なのではないでしょうか?(;^_^A
公式が分かれば答えは分かるでしょうし…これだけの説明では、プログラムにしようが無いと思いますよ…(;´∀`)


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



Name: オス豚  ..ぴよぴよ(267ポイント)   Date: 2006/10/26(木) 20:05   No:1351       
Title: リストの課題で困っています。    
本を読んでみて、リストのイメージは分かってきたような気がするのですが、書き方が全くわかりません。
課題は、

一方向線形リストを構築し、そのデータ全体を先頭からディスプレイに表示するプログラムを作成せよ。
データ:ID   名前
    1   Sapporo
    2   Sendai
    3   Tokyo
    4   Nagoya
    5   Kyoto
    6   Osaka
    7   Hiroshima
    8   Fukuoka

ということなんですが、他にも、データを挿入したり削除したり、IDもしくは名前を指定してそこのデータだけ表示するという課題が続くのですが、教えて下さい。


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


Name: GPGA  ..中級者(11,630ポイント)   Date: 2006/10/26(木) 21:32   No:1352     
Title: Re:リストの課題で困っています。    
追加と表示のみです。


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

// リスト構造体
typedef struct tagListData
{
int id; // ID
char name[80]; // 名前
struct tagListData* next; // 次のリストのポインタ
} ListData;

// ---------------------------------------
// ★ リスト追加
//
// 引数 ppData [in] リストの先頭のアドレス
// szName [in] 名前
//
// 戻り値 0 成功
// -1 失敗
// ---------------------------------------
int Add(ListData** ppData, const char* szName)
{
ListData* pNew = NULL;

pNew = (ListData*)malloc(
sizeof(ListData)); // 領域確保
// エラーチェック
if (pNew == NULL) {
return -1;
}
strcpy(pNew->name, szName); // 名前コピー
pNew->next = NULL; // 次のリストをなしに設定

if (*ppData == NULL) {
// データがまったくない場合
*ppData = pNew;
pNew->id = 0; // IDセット
}
else {
// データが一つでも存在する場合
ListData* p = *ppData;
int i;

// リストの最後までポインタをずらす
for (i = 0; p->next != NULL; p = p->next, i++);

// リストの最後に作成したデータを入れる
p->next = pNew;
pNew->id = i + 1; // IDセット
}

return 0;
}

// ---------------------------------------
// ★ 表示
// ---------------------------------------
void Draw(ListData* pData)
{
for (; pData != NULL; pData = pData->next) {
printf("ID:%3d Name:%s\n", pData->id, pData->name);
}
}

// ---------------------------------------
// ★ 全て開放
// ---------------------------------------
void AllRelease(ListData* pData)
{
if (pData != NULL) {
AllRelease(pData->next);
free(pData);
pData = NULL;
}
}

// ---------------------------------------
// ★ メイン
// ---------------------------------------
int main(void)
{
ListData* p = NULL;
char* name[] =
{
"Sapporo",
"Sendai",
"Tokyo",
"Nagoya",
"Kyoto",
"Osaka",
"Hiroshima",
"Fukuoka",
};

// 追加
for (int i = 0; i < 8; i++) {
Add(&p, name[i]);
}

// 表示
Draw(p);

// リスト開放
AllRelease(p);

return 0;
}



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

Name: オス豚  ..ぴよぴよ(321ポイント)   Date: 2006/10/26(木) 22:01   No:1353     
Title: Re:リストの課題で困っています。    
ご丁寧な回答どうもありがとうございます。
参考にして派生課題は考えてみます。


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

Name: GPGA  ..中級者(12,000ポイント)   Date: 2006/10/27(金) 18:02   No:1355     
Title: Re:リストの課題で困っています。    
一箇所ミス

// 追加
for (int i = 0; i < 8; i++) {
Add(&p, name[i]);
}





int i;

// 追加
for (i = 0; i < 8; i++) {
Add(&p, name[i]);
}


こうして下さい。
そうしないとCでコンパイル通らない。(C++、C99は通るけど、今回はCで書いたつもりだったので)


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

Name: オス豚  ..ぴよぴよ(341ポイント)   Date: 2006/10/29(日) 17:06   No:1359 解決!     
Title: Re:リストの課題で困っています。    
ありがとうございます。実は困ってました。

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



Name: ふわりん  ..ぴよぴよ(373ポイント)   Date: 2006/10/26(木) 09:57   No:1343       
Title: 画像処理についての課題がでました。    
pixelを用いて図形を描く問題です。初めて習う分野なので戸惑ってます。

@ 15×15の画面に(3,3),(3,10),(10,10),(10,3)のBOXを描きなさ
  い。

A 15×15の画面に(3,3)-(10,8)の直線を描きなさい。
  また、(3,3)-(8,10)の直線も加えなさい。

授業で習った例題を応用して書くプログラムだと思うのですが、イマイチわかりません。下に授業で扱った例題プログラムを示しておきます。

#define XSIZE 15
#define YSIZE 15
#include <stdio.h>
main(){
char pixel[XSIZE][YSIZE];
int x,y;
for(y=0;y<YSIZE;y++) for(x=0;x<XSIZE;x++)pixel[x][y]='.';
for(x=0;x<XSIZE;x++) pixel[x][x]='*';
for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++) printf("%c",pixel[x][y]);
printf("\n");
}
}

このプログラムをもとに上記の課題プログラムを作るんだと思います。

2題ありますが、できれば両方解説していただきたいです。
よろしくお願いします。
期限は来週の火曜日までなので、今週中にはお願いしたいです。
何度も無理を言ってしまってスミマセン。


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


Name: keichan  ..かけだし(2,047ポイント)   Date: 2006/10/26(木) 12:37   No:1344     
Title: Re:画像処理についての課題がでました。    
とりあえず@の回答例だけ。


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

/** @の回答例
/** ベタに書くとこんな感じになります。
/*********************************************************/
#define XSIZE (15)
#define YSIZE (15)

#include <stdio.h>

int main()
{
char pixel[YSIZE][XSIZE];
int x,y;

/* pixel配列の初期化(全て'.'で初期化) */
for( y=0; y<YSIZE; y++ ) {
for( x=0; x<XSIZE; x++ ) {
pixel[y][x] = '.';
}
}

/* Boxの左上から右上(3,3)->(10,3)を描く準備をする */
for( x=3; x<=10; x++ ) {
pixel[3][x] = '*';
}

/* Boxの右上から右下(10,3)->(10,10)を描く準備をする */
for( y=3; y<=10; y++ ) {
pixel[y][10] = '*';
}

/* Boxの右下から左下(10,10)->(3,10)を描く準備をする */
for( x=10; x>=3; x-- ) {
pixel[10][x] = '*';
}

/* Boxの左下から左上(3,10)->(3,3)を描く準備をする */
for( y=10; y>=3; y-- ) {
pixel[y][3] = '*';
}

/* 描画処理 */
for( y=0; y<YSIZE; y++ ) {
for( x=0; x<XSIZE; x++ ) {
printf("%c", pixel[y][x]);
}
printf("\n");
}

return 0;
}




あと、関数や構造体についての勉強は既にされていますか?


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

Name: ふわりん  ..ぴよぴよ(407ポイント)   Date: 2006/10/26(木) 13:03   No:1345     
Title: Re:画像処理についての課題がでました。    
@の解答ありがとうございました。

関数と構造体に関してはまだやってないと思います。


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

Name: バグ  ..中級者(9,354ポイント)   Date: 2006/10/26(木) 14:42   No:1346     
Title: Re:画像処理についての課題がでました。    
Aの回答例です。結構、ひねりの入った問題ですね。ちょっと悩みましたよ(^_^;)


#define XSIZE 15
#define YSIZE 15

#include <stdio.h>

void main()
{
char pixel[XSIZE][YSIZE];
int x , y , a , i;
double xx , yy , move_x , move_y;

// 画面全体を'.'で埋める
for( y = 0 ; y < YSIZE ; y++ )
{
for( x = 0 ; x < XSIZE ; x++ )
{
pixel[x][y] = '.';
}
}

///////////////////////////////////////////////////////////////////////////
// (3,3)-(10,8)の直線
///////////////////////////////////////////////////////////////////////////

// 計算用のX座標の初期化
xx = 3.0;

// 計算用のY座標の初期化
yy = 3.0;

// Y座標が1つ動く毎にX座標がどれだけ動くかを計算する
// 今回の場合はYが5移動する間にXが7移動するので、下記のようになる
move_x = 7.0 / 5.0;

// X座標の初期化
x = 3;

for( y = 3 ; y <= 8 ; y++ ) // Yの移動量を基準にしているため、Yの移動量は必ず1になる
{
// 計算用のX座標に移動量を足す
xx += move_x;

// 現在の座標から、X座標が何マス移動したかを計算する
a = ( int )xx - x;

// もし、一度に1以上移動していた場合は現在の場所から、移動先座標まで'*'にする
for( i = 0 ; i < a ; i++ )
{
pixel[x + i][y] = '*';
}

// 実際のX座標に移動量を足す
x += a;
}

///////////////////////////////////////////////////////////////////////////
// (3,3)-(8,10)の直線
///////////////////////////////////////////////////////////////////////////

// 計算用のX座標の初期化
xx = 3.0;

// 計算用のY座標の初期化
yy = 3.0;

// X座標が1つ動く毎にY座標がどれだけ動くかを計算する
// 今回の場合はXが5移動する間にYが7移動するので、下記のようになる
move_y = 7.0 / 5.0;

// 実際のY座標の初期化
y = 3;

for( x = 3 ; x <= 8 ; x++ ) // Xの移動量を基準にしているため、Xの移動量は必ず1になる
{
// 計算用のY座標に移動量を足す
yy += move_y;

// 現在の座標から、Y座標が何マス移動したかを計算する
a = ( int )yy - y;

// もし、一度に1以上移動していた場合は現在の場所から、移動先座標まで'*'にする
for( i = 0 ; i < a ; i++ )
{
pixel[x][y + i] = '*';
}

// 実際のY座標に移動量を足す
y += a;
}

///////////////////////////////////////////////////////////////////////////
// 画面全体を表示する
///////////////////////////////////////////////////////////////////////////
for( y = 0 ; y < YSIZE ; y++ )
{
for( x = 0 ; x < XSIZE ; x++ )
{
printf( "%c" , pixel[x][y] );
}

printf("\n");
}
}


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

Name: keichan  ..かけだし(2,402ポイント)   Date: 2006/10/26(木) 18:05   No:1350     
Title: Re:画像処理についての課題がでました。    
バグさんがAについての回答例を挙げてらっしゃいますので、
私のほうでは回答例を挙げません。

補足というかもうちょっと突っ込んだ話を。。。

Aでは "傾きのある直線" をどうやって描画するか?
が一番の難所になっているでしょう。

"傾きのある直線" といえば、中学校の数学の時間に習った [一次関数](y = ax + b) が理解できていればご自分でも図を書けると思います。

まずは、自分の手で紙に図を書いてみてはいかがでしょうか?
プログラムを組むのは自分の頭でどういう手順を踏む必要があるのか。を理解していないと組めません。

日本人が日本語で説明できないものを英語で説明しようとしても無理でしょう?
それと同じことです。

まずは、どういう処理を行う必要があるのかを理解してから回答例と睨めっこしてください。

また、回答例に書かれている事を理解するだけではなく、オリジナル(できれば違う処理で)を書いてみることを強くお勧めします。


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

Name: ふわりん  ..ぴよぴよ(543ポイント)   Date: 2006/10/26(木) 23:13   No:1354     
Title: Re:画像処理についての課題がでました。    
>バグさん
>keichanさん

解答&助言ありがとうございます。

そうですよね。

実際にどのような意味を持っているのか頭の中で整理できていないとプログラムは書けないですよね。

まだまだ、私は初心者で右も左もわからないことばかりなので、少しずつ理解を深めていきたいと思います。


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



Name: 初心者  ..ぴよぴよ(175ポイント)   Date: 2006/10/24(火) 06:48   No:1319       
Title: 古いソフトの再ビルド    
古いプログラムのソースを知り合いからいただいたのでVisual Studio2005でビルドし直しているところですが、以下のようなエラーがでてしまって困っています。
解決策を教えていただけないでしょうか?
エラー内容
c:\C練習\テスト.cpp(1425) : error C2664: 'MultiByteToWideChar' : 5 番目の引数を 'u16 []' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

ヘルプファイルを読んでみたのですが、さっぱり分かりませんでした。
よろしくお願いします。


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


Name: keichan  ..かけだし(2,202ポイント)   Date: 2006/10/24(火) 10:54   No:1320     
Title: Re:古いソフトの再ビルド    
プロジェクト -> ***のプロパティ -> 構成プロパティ -> 全般
の中にある文字セットを [Unicode文字セットを使用する] から [マルチバイト文字セットを使用する]に変更してみてください。


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

Name: 初心者  ..ぴよぴよ(196ポイント)   Date: 2006/10/24(火) 12:10   No:1321     
Title: Re:古いソフトの再ビルド    
> プロジェクト -> ***のプロパティ -> 構成プロパティ -> 全般
> の中にある文字セットを [Unicode文字セットを使用する] から [マルチバイト文字セットを使用する]に変更してみてください。

表記の通りやってみたのですが、結果は変わりませんでした。
デフォルトがマルチバイト文字セットになってました。
ソースの一部でものせた方がわかりやすいでしょうか?


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

Name: GPGA  ..初心者(7,903ポイント)   Date: 2006/10/24(火) 13:07   No:1322     
Title: Re:古いソフトの再ビルド    
プログラムが短いのであれば、全て乗せてもらったほうがいいですが
もし、かなり大きいというのであれば、MultiByteToWideCharを使用している行と
MultiByteToWideCharの5番目の引数に渡している変数の宣言部分および、u16をtypedefしている部分を
見せてください。


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

Name: 管理人 [URL]  ..熟練のプログラマー(40,771ポイント)   Date: 2006/10/24(火) 16:04   No:1323     
Title: Re:古いソフトの再ビルド    
皆さんすみません、、
卒論で忙しくて家に帰れない&夜も眠れない毎日が続いています…;。
ひと段落したらまた顔を出しにくるようになりますので、ご迷惑をおかけしますがよろしくお願いします(_ _||)


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

Name: 初心者  ..ぴよぴよ(220ポイント)   Date: 2006/10/25(水) 07:35   No:1326     
Title: Re:古いソフトの再ビルド    
> MultiByteToWideCharの5番目の引数に渡している変数の宣言部分および、u16をtypedefしている部分を見せてください。

よく分かりませんが関係ありそうな所をピックアップします。
これがエラーが出ている行です。
len = MultiByteToWideChar (CP_ACP, 0, msg, len, packet->text, len *2);
5番目の packet->text はそのまま変数の型宣言をしているところが見あたりませんでした。
いろいろ探してみたところ、
#include "packet.h"とincludeしているファイルの中に、
struct packetae
{
u8 no;
u16 len;
u32 object_id;
u16 model_id;
u8 type;
u16 color_id;
u16 font_id;
u32 language;
u8 name[30];
u16 text[0];
};

という記載がありました。
こんな感じで良いでしょうか?


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

Name: GPGA  ..初心者(8,217ポイント)   Date: 2006/10/25(水) 09:05   No:1327     
Title: Re:古いソフトの再ビルド    
textが他にどのように使われているか、気になるところですが

u16 text[0];

の部分を

wchar_t text[0];

に書き換えて、ビルドしてみてください。
これで問題なく、ビルドが通れば一番いいです。

もし、textが特殊な使われ方(ないとはおもうけど)をしていて、他でエラーが発生するようであるならば

MultiByteToWideChar(CP_ACP, 0, msg, len, packet->text, len * 2);

の部分を

MultiByteToWideChar(CP_ACP, 0, msg, len, reinterpret_cast< wchar_t* >(packet->text), len * 2);

と書き換えてください。

どちらも、符号なし16ビット型だと思うのでおそらくreinteroret_castでいけると思います。


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

Name: keichan  ..かけだし(2,357ポイント)   Date: 2006/10/25(水) 13:07   No:1329     
Title: Re:古いソフトの再ビルド    
>u16 text[0];
この表記はコピーミスでない限り、コンパイルエラーになると思います。
(要素数0個の固定長配列変数は定義できない)

u16 text[(適度な任意の数)];
と変更してください。


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

Name: GPGA  ..初心者(8,584ポイント)   Date: 2006/10/25(水) 13:38   No:1330     
Title: Re:古いソフトの再ビルド    
> この表記はコピーミスでない限り、コンパイルエラーになると思います。
>(要素数0個の固定長配列変数は定義できない)
たぶん使用していたコンパイラの拡張機能なのでしょう。
たしかgccができたようなできないような・・・。

> u16 text[(適度な任意の数)];
> と変更してください。
ここの部分についてなのですが

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

typedef struct tagData
{
int size;
char buf[1];
} Data;

int main(void) {
Data* pData;
pData = (Data*)malloc(
sizeof(Data) + strlen("あいうえお") + 1);
pData->size = strlen("あいうえお");
strcpy(pData->buf, "あいうえお");

printf("%s\n", pData->buf);
free(pData);
return 0;
}

上記のように、構造体の一番最後に、要素数1の配列を用意しておき、構造体の領域確保時に
余分に領域を取るという手法を使用しているのではないかと思います。
Windowsでも、BITMAPINFO構造体がこの形式を取っていたはずです。

ただ、私も文献で得た情報であり、実際にそれを自分の手で打ったことがないため
確実にそうであるとはいえませんが。


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

Name: GPGA  ..初心者(8,669ポイント)   Date: 2006/10/25(水) 13:50   No:1331     
Title: Re:古いソフトの再ビルド    
>> この表記はコピーミスでない限り、コンパイルエラーになると思います。
>>(要素数0個の固定長配列変数は定義できない)
> たぶん使用していたコンパイラの拡張機能なのでしょう。
> たしかgccができたようなできないような・・・。
どちらにしてもVS2005では、エラーになりますね。
初心者さんは [0] を [1] にして試してみてください。


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

Name: keichan  ..かけだし(2,415ポイント)   Date: 2006/10/25(水) 15:54   No:1332     
Title: Re:古いソフトの再ビルド    
> たしかgccができたようなできないような・・・。
そうなんですか。それは知りませんでした。

しかし、もしそうであるとしてもなぜ
char* text;
とせずに
char text[0];
にしているのかが納得できません。

#もしかして配置アドレスを固定したいからかな?


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

Name: GPGA  ..中級者(9,022ポイント)   Date: 2006/10/25(水) 16:46   No:1333     
Title: Re:古いソフトの再ビルド    
私も、実際にこの手法のメリット、デメリットを知っているわけではないため
憶測に過ぎないのですが、構造体全体をmallocして開放することによる開放ミスを防ぐとか
その構造体一つで、連続したメモリを確保できるとかでしょうか?

例えば以下の構造体があったとしましょう。

struct Data
{
int num[100];
char* buf;
};

この構造体のbufを別で400バイト分確保しようとしたときに、num[100]の400バイト(int=4byteとして)と
bufの400バイトが別の領域に作成されて、メモリが断片化しますね。
しかし、

struct Data
{
int num[100];
char buf[1];
};

この方法で構造体を最初にmallocすれば800バイト分の領域が一度に確保されて、メモリ断片化が極力防げます。
今でこそメモリが多いため、そのようなことは気にしませんが、昔はメモリが少なかったからこのような方法を
取ったのではないでしょうか?

あくまで憶測ですけどね。
実際に知っている方がいたら教えてください。


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

Name: keichan  ..入門者(2,524ポイント)   Date: 2006/10/25(水) 17:16   No:1334     
Title: Re:古いソフトの再ビルド    
なるほど。
フラグメント/リークの危険の面から見てもメリットはありそうですね。
私はバイナリファイルを保存する時に楽だなぁ。。。
くらいしか思いつきませんでした。

どちらにしてもこういう方法は今風ではない感じがします。

#私は専らC++畑で仕事をしていますのでよくわかっていませんが。


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

Name: GPGA  ..中級者(9,554ポイント)   Date: 2006/10/25(水) 17:46   No:1335     
Title: Re:古いソフトの再ビルド    
> どちらにしてもこういう方法は今風ではない感じがします。
はい、私もそう思います。

私もどちらかというとC++で記述する人間で、先ほどの例で言ってしまえば以下のように書いちゃいます。

class Data
{
public :
// コンストラクタ
Data() {
buf = NULL;
}
// デストラクタ
virtual ~Data() {
delete[] buf;
}
// 初期化
bool Init() {
buf = new char[400];
if (buf == NULL) {
return false;
}
return true;
}
private :
int num[400]
char* buf;
};

まあ今回は、初心者さんが知り合いから頂いた古いソースということでしたので
昔はこうだったのではないかという、憶測の話を出しただけです。


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

Name: keichan  ..入門者(2,680ポイント)   Date: 2006/10/25(水) 18:07   No:1336     
Title: Re:古いソフトの再ビルド    
私の場合はこんな感じですか。
Dataの扱いが単なる"データ"の塊であったらば...

#include <string>

struct Data
{
int num[400];
std::string;
};


※初心者さんへ
本題とは関係のない話で板を見づらくして申し訳ありません。


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

Name: 初心者  ..かけだし(2,036ポイント)   Date: 2006/10/25(水) 21:00   No:1338 解決!     
Title: Re:古いソフトの再ビルド    
> MultiByteToWideChar(CP_ACP, 0, msg, len, reinterpret_cast< wchar_t* >(packet->text), len * 2);
>
> と書き換えてください。

こちらの方法で無事にエラーが出なくなりました。
本当にありがとうございました。
でも、別の問題が・・ 別板を立てさせてもらってます。



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



Name: むっく  ..ぴよぴよ(417ポイント)   Date: 2006/10/21(土) 15:37   No:1268       
Title: C言語で排他制御の実現・・・    
むっくです。
いつもお世話になっております。

現在、課題で「CSVファイルのアカウント情報管理」をC言語で作成中です。
新規追加・変更・削除は、こちらのアドバイスで何とかなってます。

単純なCSVファイルの編集で終わりと、勝手に思っていたのですが、
「排他制御の実現」を指示されてしまいました。
指示してきた方は、"汎用的"が口癖の方で、私のプログラムでは、
私個人でしか使えないレベルだそうです。。。

すみませんが、C言語で「排他制御の実現」について、アドバイスお願いします。


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


Name: むっく  ..ぴよぴよ(441ポイント)   Date: 2006/10/21(土) 19:24   No:1274     
Title: Re:C言語で排他制御の実現・・・    
結構、"C言語""排他制御"で検索したら、
いろいろ出てきました。

flockを勉強してみます。


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

Name: 管理人 [URL]  ..プログラマー(36,908ポイント)   Date: 2006/10/21(土) 21:10   No:1281     
Title: Re:C言語で排他制御の実現・・・    
がんばってください^^
力になれなくてごめんなさい^^;


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

Name: むっく  ..ぴよぴよ(582ポイント)   Date: 2006/10/24(火) 18:06   No:1324     
Title: Re:C言語で排他制御の実現・・・    
欲張った質問です。

現在、読み込みモード"r"でファイルを読み込む場合は、lockfの共有ロック(F_ULOCK)、編集モード"a+"や"w"で開く場合は、排他ロック(F_LOCK)で何とかなりそうなんですが。

排他ロックした場合、別のプロセスからアクセスすると止まります。
排他ロックを解除しない限りシーーーーーンです。

「Waiting.......」等、見栄え良くしたいのですが、
処理が止まって、次のプログラムへ行かないんですよね。

何か、いい情報、ありましたらご教授願います。


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

Name: mas  ..かけだし(2,111ポイント)   Date: 2006/10/24(火) 21:47   No:1325     
Title: Re:C言語で排他制御の実現・・・    
この辺の話題には詳しくないのですが、

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/lockf.3.html

lockfで検索して見つかった上記のサイト見る限り、
F_TLOCK, F_TESTあたりでいけそうな気がします。


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

Name: keichan  ..かけだし(2,295ポイント)   Date: 2006/10/25(水) 13:00   No:1328     
Title: Re:C言語で排他制御の実現・・・    
本題の回答ではありません。

質問をされる際は開発環境(OS, コンパイラの種類及びバージョン, {プロジェクトの種類(あるのであれば)})を最低限明記された方が宜しいかと思います。
回答する側も万能ではありませんので質問者がダイレクトに欲しい情報を文面から察するしかありません。

一度投稿される前に回答側の立場に立って文面を読み直して頂く事をお勧めします。


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



Name: ダッシュ  ..かけだし(1,823ポイント)   Date: 2006/10/21(土) 19:54   No:1275       
Title: 写真の加工について    
何かいいソフトありませんか?学校でphoto shop使ったことあるんですが、あれいいですねぇ。でも高くてあんなもの買えません。

もしご存知でしたらお願いします。


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


Name: なぎ  ..入門者(3,168ポイント)   Date: 2006/10/21(土) 20:24   No:1278     
Title: Re:写真の加工について    
探せばいくつかあると思います。

が、私が愛用しているのは、
http://www.tom.sfc.keio.ac.jp/~sakai/hiki/?dibas
で紹介されている、dibas32 というものです。
機能的にどうかは試してみてからということになると思いますが、フリーで使えて、なおかつ、非常に軽く動くソフトです。

ただ、このソフト、開発は終了しているのですが。


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

Name: ダッシュ  ..かけだし(1,847ポイント)   Date: 2006/10/21(土) 20:44   No:1279     
Title: Re:写真の加工について    
なぎさん、回答ありがとうございます。

2つありますが、上と下ではなにが違うんですか?


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

Name: なぎ  ..入門者(3,153ポイント)   Date: 2006/10/21(土) 21:03   No:1280     
Title: Re:写真の加工について    
> 2つありますが、上と下ではなにが違うんですか?

おいてある場所が違うだけで同じものです。




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

Name: 管理人 [URL]  ..プログラマー(36,930ポイント)   Date: 2006/10/21(土) 21:14   No:1282     
Title: Re:写真の加工について    
もちろんGIMPでしょ!
http://www.vector.co.jp/soft/win95/art/se190877.html

人によって使いやすいものの基準が違うでしょうから、色んなのを使ってみるのもいいと思いますが、やはりこれほど高機能なフリーソフトはないんじゃないでしょうか?
もちろんレイヤー機能もついていますし、フォトショ7.0位の加工はこのGIMPで可能ですよ!
雑誌でも多く紹介されているようです。
私もフォトショを使うようになるまではお世話になりました。
色々プラグインがありますが、全部そのページのものをダウンロード、インストールするだけでいいので、一度使ってみてください^^


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

Name: ダッシュ  ..かけだし(2,052ポイント)   Date: 2006/10/21(土) 21:54   No:1284     
Title: Re:写真の加工について    
やっぱりですか・・・。僕もなぎさんに教えてもらった後も色々探して、GIMPに行き着き、ダウンロードしたとこです。dibasはとにかく簡単で使いやすいですが、やっぱり、やれることが限られているような気がします。僕の頭の中に、フォトショップの印象が強いからかもしれませんね。で、GIMPですが、すごいですね。なんでも出来そう。。。でも使い方がじぇんじぇんわかりません(泣)

HP作るのに写真とか載せたいんですが、加工するソフトに困ったので質問したわけですが、このHPの背景とかは管理人さんの自作ですか?


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

Name: 管理人 [URL]  ..プログラマー(37,547ポイント)   Date: 2006/10/21(土) 22:00   No:1285     
Title: Re:写真の加工について    
背景・・・わかりません;
いつの間にかマイドキュメントにあった画像を使いました^^;
HP素材関係のサイトはわんさかあるので、自分で作らなくても背景には困らないですよ^^
もちろん自作したいなら別ですが☆

GIMPは画像上で右クリックすればほとんどやりたいことは出来ますよ。
使っていくうちになれてきますから^^
最初に出る使い方を一つずつみるのもよし、説明書を読むのもよし。
私は途中でフォトショにいったので、使いこなしていませんが、友達が完璧にマスターしていますw
難しい操作で、もしやりたいことあったら聞いておきますよ^^

自分の作るソフトの背景は自作ですが、それ以外では作ったことないです。
案外ペイントをよく使いますw


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

Name: ダッシュ  ..かけだし(2,096ポイント)   Date: 2006/10/22(日) 07:42   No:1293     
Title: Re:写真の加工について    
なるほど、素材で管理人さんのオススメサイトあります?

それとGIMPとフォトショではやっぱりフォトショのほうが上なんでしょうか?


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

Name: 管理人 [URL]  ..プログラマー(39,763ポイント)   Date: 2006/10/22(日) 15:13   No:1295     
Title: Re:写真の加工について    
お勧めのサイトですかぁ、私はHPの素材には別にこだわらず、適当にホームページビルダー9の中にはいっているやつを
使ってます^^;
「HP 素材」で検索したら沢山出てきますよ^^

>それとGIMPとフォトショではやっぱりフォトショのほうが上なんでしょうか?

何をするかですが、特別なことをしない限りどちらも同じように使えますよ。
ただフォトショは今7.0とCSがありますが、CSが専門的なソフトでかなり値段も高いソフトです。10万円位かな?
CSとGIMPを比べたら確かにCSの方が機能は上ですが、使いこなすの大変ですよ〜。
GIMPは使いこなさずにフォトショ使い出したんで詳しくはわからないですが、フォトショ7.0とは同等のことが出来たと思います。

GIMPはあるかどうかわからないですが、フォトショなら使い方写真付で説明している本を読みながら
使うとよくわかりますよ。


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

Name: ダッシュ  ..かけだし(2,167ポイント)   Date: 2006/10/22(日) 18:37   No:1300     
Title: Re:写真の加工について    
7.0と同じくらいの実力なら十分です(笑)

すごく基本的なことが分からないのですが、どうやって画像取り込むんですか?他のHP探してもよく意味が分かりません(泣)


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

Name: 管理人 [URL]  ..熟練のプログラマー(40,194ポイント)   Date: 2006/10/22(日) 21:27   No:1302     
Title: Re:写真の加工について    
画像取り込むのはドラッグ&ドロップでもいいし、ファイルの開くから開いても開けますよ。
まず、ドロップで、あけてください。


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

Name: 管理人 [URL]  ..熟練のプログラマー(40,376ポイント)   Date: 2006/10/22(日) 21:31   No:1303     
Title: Re:写真の加工について    
メニューバーわかりますか?
The GIMP
と書かれているメインのウィンドウに「ファイル」とあります。
そこから「開く」を選択すると「画像読み込み」ウィンドウが出ます。
そこで、Cドライブの画像を読み込むなら
C:/
をダブルクリックDなら
D:/
をダブルクリック。
するとそれ以下のフォルダが「ディレクトリ」欄に、同じ階層のファイルが「ファイル」欄に表示されます。
希望のフォルダまでおりていって、ファイルがみつかれば指定して
「了解」を選択すると開けます。
画像操作は画像上で右クリックをすると、たいていの操作は出来ます。


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

Name: ダッシュ  ..かけだし(2,191ポイント)   Date: 2006/10/22(日) 22:02   No:1304     
Title: Re:写真の加工について    
Dのほうは出てくるのですが、Cやっても何も起こりません。

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

Name: 管理人 [URL]  ..熟練のプログラマー(40,407ポイント)   Date: 2006/10/22(日) 22:25   No:1305     
Title: Re:写真の加工について    

../
をダブルクリックしてください。


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

Name: 管理人 [URL]  ..熟練のプログラマー(40,426ポイント)   Date: 2006/10/22(日) 22:27   No:1307     
Title: Re:写真の加工について    
/はスラッシュじゃなくてバックスラッシュです。
キーボードでかけないので・・。


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

Name: ダッシュ  ..かけだし(2,289ポイント)   Date: 2006/10/23(月) 04:31   No:1313 解決!     
Title: Re:写真の加工について    
やった。出来ました。取り合えず、画像取り込み成功です!!!ありがとうございました!!!
(でも、写真を見ながら選べられないとこが痛いですね。ファイル名覚えとかないと・・・。)

はぁ、最近早起きになってしまいました。この時間。尋常じゃないですね。。。


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

Name: 管理人 [URL]  ..熟練のプログラマー(40,709ポイント)   Date: 2006/10/23(月) 04:32   No:1314     
Title: Re:写真の加工について    
もう起きたんですか^^;

写真が見えないのでドラッグアンドドロップするんですよ^^


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

Name: ダッシュ  ..かけだし(2,313ポイント)   Date: 2006/10/23(月) 19:53   No:1315     
Title: Re:写真の加工について    
そういえば、投げ縄ツールってないんですか?あれがないと不便です。。。。

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

Name: Justy  ..上級者(16,381ポイント)   Date: 2006/10/23(月) 22:55   No:1316     
Title: Re:写真の加工について    
>でも、写真を見ながら選べられないとこが痛いですね。ファイル名覚えとかないと
 Linerとか ViXとかと併用してみてはどうでしょう。

 これらのビューアでフォルダ内の画像一覧をプレビューして、編集したい画像が見つかったらドラッグ&ドロップで GIMPに放り込む、と。


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

Name: ダッシュ  ..かけだし(2,380ポイント)   Date: 2006/10/24(火) 06:26   No:1318     
Title: Re:写真の加工について    
あ、マイコンピュータから入ってもドラッグ&ドロップできるみたいなのでLinerとかをインストすることもないようです。せっかく教えてもらったのに申し訳ないです。

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



Name: こまいぬ  ..かけだし(1,585ポイント)   Date: 2006/10/21(土) 01:19   No:1256       
Title: 球と三角形の衝突判定    
こんにちは
球と三角形の衝突判定について質問させてください。C言語の質問というより数学の質問に近いかもしれませんが・・・。
DirectX8.0で球と三角形の衝突判定を行うプログラムを書いたのですがうまく動きません。
なぜか斜めに衝突した場合に衝突していても衝突していない判定が返ってしまいます。
衝突判定の方法ですが、まず平面と球の中心点の距離を求め、距離が半径より小さい場合は
平面上の点で円の中心に最も近い点を求め、最後にその点で三角形の内外判定を行います。
距離を出すところまでは問題ないようなので、それ以降の部分でおかしいところがあるのだと思うのですが、どうでしょうか。
一応、周辺のソースを書いておきます。


bool ShpereTri (
D3DXVECTOR3& c, // 球の中心点
float r, // 球の半径
D3DXVECTOR3& t0, // 三角形の頂点1つ目
D3DXVECTOR3& t1, // 三角形の頂点2つ目
D3DXVECTOR3& t2, // 三角形の頂点3つ目
D3DXVECTOR3& p // 交点収納用
)
{
// 平面の法線ベクトルを求める
D3DXVECTOR3 n;
D3DXVECTOR3 v1 = t1 - t0;
D3DXVECTOR3 v2 = t2 - t0;
D3DXVec3Cross( &n, &v1, &v2 );
n /= D3DXVec3Length( &n );

// 平面と球の中心点の距離を求める
D3DXVECTOR3 vec = c - t0;
float ln = D3DXVec3Dot( &vec, &n );

// 距離が半径より大きい場合、衝突していない
if( fabsf( ln ) > r ) return false;

p = c - n * ln; // 平面上の、円の中心に最も近い点

bool point = true;

// 点から頂点へのベクトル
D3DXVECTOR3 v3 = t0 - p;
D3DXVECTOR3 v4 = t1 - p;
D3DXVECTOR3 v5 = t2 - p;

// 三角形の内外判定
D3DXVECTOR3 sm = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 cp;

D3DXVec3Cross( &cp, &v3, &v4 );
if( D3DXVec3Dot( &sm, &cp ) < 0 ) point = false;
sm += cp;
D3DXVec3Cross( &cp, &v4, &v5 );
if( D3DXVec3Dot(&sm, &cp) < 0 ) point = false;
sm += cp;
D3DXVec3Cross( &cp, &v5, &v3 );
if(D3DXVec3Dot( &sm, &cp) < 0 ) point = false;

// 向きがすべて同じなので内側
if( point )return true;

return false;
}


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


Name: Justy  ..中級者(14,854ポイント)   Date: 2006/10/21(土) 02:12   No:1257     
Title: Re:球と三角形の衝突判定    
>DirectX8.0で球と三角形の衝突判定を行うプログラムを書いたのですがうまく動きません
 球と三角形ですか。ちょっと複雑ですね。

 ざっと眺めただけですが、んーと。
 最後のあたりの各内積は smと cpじゃなくて、三角形の法線 nと cpでやるのでは?


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

Name: 管理人 [URL]  ..プログラマー(36,284ポイント)   Date: 2006/10/21(土) 02:22   No:1258     
Title: Re:球と三角形の衝突判定    
力になれず、、ごめんなさい…。

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

Name: mas  ..かけだし(2,109ポイント)   Date: 2006/10/21(土) 08:22   No:1262     
Title: Re:球と三角形の衝突判定    
ソースは未検証ですが、気になったところだけ…

> なぜか斜めに衝突した場合に衝突していても衝突していない判定が返ってしまいます。

「斜めに衝突」の意味がわかりません。
また、うまく判定できない場合の具体的な座標を教えていただけると、
回答者側としても動作を検証しやすくなるかもしれません。

> 衝突判定の方法ですが、まず平面と球の中心点の距離を求め、
> 距離が半径より小さい場合は平面上の点で円の中心に最も近い点を求め、
> 最後にその点で三角形の内外判定を行います。

最初の2点は問題なさそうですが、
「最後にその点で三角形の内外判定」の部分が条件として甘いと思います。
三角形を含む平面による球の切り口(円になります)と三角形で判定すれば
良いのではないでしょうか。
その際、
・円の中心が三角形に含まれていれば衝突
・三角形の辺が円と交差すれば衝突
と判定できます。

できます…と書きましたが、正直自信があるわけではないので、
間違っていたら、すみません。


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

Name: こまいぬ  ..かけだし(1,815ポイント)   Date: 2006/10/21(土) 14:56   No:1266     
Title: Re:球と三角形の衝突判定    
>Justyさん
>最後のあたりの各内積は smと cpじゃなくて、三角形の法線 nと cpでやるのでは?

そうでした。ちょっと勘違いしていました。

>masさん
>三角形を含む平面による球の切り口(円になります)と三角形で判定すれば
>良いのではないでしょうか。
>その際、
>・円の中心が三角形に含まれていれば衝突
>・三角形の辺が円と交差すれば衝突
>と判定できます。

なるほど!わかりました!
言葉で表現するのが難しいので、添付ファイルで図を描いてみました。
ただ、三角形を含む平面による球の切り口で作られる円を求める方法がわかりません。
思っていたよりも難しいので、素直に線分と三角形の衝突判定で我慢したほうがいいですか?


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

Name: Justy  ..上級者(15,245ポイント)   Date: 2006/10/21(土) 16:11   No:1269     
Title: Re:球と三角形の衝突判定    
 あー、なるほど。
 たしかに判定が不足しています。
 球と三角形の衝突の場合、大雑把に書くと

・ 面で接触している
・ 辺で接触している
・ 点で接触している

 という可能性があって上に書かれた 三角形の法線 nと cpとの内積の結果から判定する処理は「面で接触している」ことだけを判定しようとしています。
 なので、残りの

・ [辺] 球の中心から三角形の辺に垂直におろした点を求めてその点が辺上に含まれるかどうか
・ [点] 三角形の頂点と球の中心との距離が、球の半径以下かどうかを調べる。

を調べてみてください。

 これで正しく判定できるかと思います。

 尚、どの辺をとか、どの頂点を調べるのかは、最初の「面の接触」チェックでの結果を利用すれば正直に3頂点・3辺をチェックしなくても済むかと。



>素直に線分と三角形の衝突判定で我慢したほうがいいですか
 用途とかにもよるので一概にいえませんが、線分と三角形とかで代用しても可能であれば検討の余地はあると思います。
 処理負荷も軽くなるでしょうし。

 球と三角形とのコリジョンだと・・・キャラクタとかを地形の上を歩かせる、とかそういう用途でしょうか?


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

Name: mas  ..かけだし(2,048ポイント)   Date: 2006/10/21(土) 16:51   No:1270     
Title: Re:球と三角形の衝突判定    
> ただ、三角形を含む平面による球の切り口で作られる円を求める方法がわかりません。

切り口で作られる円の中心は、球の中心から平面へ下ろした垂線の足で、
円の半径は、添付した図の通り球の半径と垂線の長さから求められます。


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

Name: こまいぬ  ..かけだし(2,251ポイント)   Date: 2006/10/21(土) 18:44   No:1272     
Title: Re:球と三角形の衝突判定    
>Justyさん
>・ [辺] 球の中心から三角形の辺に垂直におろした点を求めてその点が辺上に含まれるかどうか
>・ [点] 三角形の頂点と球の中心との距離が、球の半径以下かどうかを調べる。
>
>を調べてみてください。

なるほど、わかりました。
ありがとうございます。

>用途とかにもよるので一概にいえませんが、線分と三角形とかで代用しても可能であれば検討の余地はあると思います。

キャラクターと壁の衝突判定をしようとしているのですが
線分だとキャラクターが壁に半分貫通してしまうので球を使って判定する方法を取りました。
しかしよく考えてみると、壁の衝突判定用のポリゴンをキャラクターの半径分だけ前に押し出して
描画するフィールドより一回り狭いフィールドで判定すれば線分と三角形での衝突判定でも問題なさそうです。
この方法で不都合がなければ、こっちを採用したほうがいいでしょうか?

>masさん
確かに球の半径が斜辺の長さになりますね。気づきませんでした。
どうもありがとうございます。


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

Name: Justy  ..上級者(15,918ポイント)   Date: 2006/10/21(土) 19:55   No:1276     
Title: Re:球と三角形の衝突判定    
>線分だとキャラクターが壁に半分貫通してしまうので
 壁の形がシンプルなら線分でもうまくコリジョン検出できそうな気もします。
 球でやっても線分でもやっても、壁のに入ったという判定がされたら、入った分だけキャラクタの押し戻しをしていますか?


>一回り狭いフィールドで判定すれば〜〜こっちを採用したほうがいいでしょうか?
 専門家ではないので確かな事は言えませんが、作業効率・メモリ・処理コストなどが許すならそれでもいいかもしれません。

 ただ背景コリジョンモデルはそのキャラクタ専用というのならともかく、多分他のキャラクタとか用途でも使うでしょうから汎用的なフィールドと同等の大きさのものを使用した方がいいと思います。

 で、仮に線分を使って壁にめり込まないようにするには何本をどっちに飛ばすのかが重要になってきそうです。
 球なら大雑把でも全方向検知できますが、線分では飛ばしたその方向の情報しか判りません(壁の形状がシンプルであるとか、動的に飛ばす方向・数を決められるアルゴリズムがあるのならいいのですが)。
 
 と考えていくと、球の方がいいんじゃないかなぁ、と思います。

 あ、でもキャラクタが高速で移動して1フレームで壁を突き抜けてしまうことを検出する為に線分を使うのは有りだと思います。


 実際問題このあたりは内容とかコリジョン検出システムがどうなっているのか、モデルデータの状態とか処理負荷とかいろいろ見ながら検討しないと、確実な事を決められないのではないでしょうか。


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

Name: こまいぬ  ..入門者(2,536ポイント)   Date: 2006/10/21(土) 22:29   No:1288 解決!     
Title: Re:球と三角形の衝突判定    
>ただ背景コリジョンモデルはそのキャラクタ専用というのならともかく、多分他のキャラクタとか用途でも使うでしょうから
>汎用的なフィールドと同等の大きさのものを使用した方がいいと思います。

そうでした。他のキャラでも衝突判定を行う必要があることを忘れていました。やはり球の方がいいようですね。
いろいろ答えてくださってどうもありがとうございました。


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

Name: いちびっと  ..ぴよぴよ(6ポイント)   Date: 2006/10/22(日) 06:35   No:1292     
Title: 球と三角形(線)、線と線それぞれの利点    
どもども、ゲームプログラマーの卵のいちびっとです、
黒い斜めってる線が床、青い○がキャラの半径、
赤い線がそのキャラの中心から足元までのベクトルとして
超適当に絵を描いてみました。

図を見ればキャラが床に当たっている事になっていますが、
本当に当てたい(赤いベクトルの下端)場所に当たっていません、
球と線だとどうしても、私はこの場所に当たい!と思っても無理ですが、線と線だと処理が思い…
コリジョン検出って言葉が聞きなれずよくわかりませんが…
線と線でどの程度戻すかは、線AB(キャラ)と線C(面)の交点(D)を出し(Bがはみ出てるなら)線BD分線A方向に戻せばがっつり取れますd(’’)

ゲームプログラマーになれる!って謳ってる専門学校に通っているので、当たり判定ならかなり自信がありますので、(自分でもかなり乱暴に書いた自覚があるので…)オブジェクト指向みたいに抽象的すぎて解らない!と思いましたら、もっと教えろと言ってくださいませ。