C言語何でも質問掲示板


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

規約と使い方

 
   画面の操作にて、   
     ・[12168] tkmakwins15 
     ・[12170] たまー 
     ・[12172] GPGA 
     ・[12177] たまー 
   初歩的な質問なんです ....   
     ・[12162] 組木紙織 
     ・[12163] box 
     ・[12165] K-I 
   関数で複数の出力   
     ・[12151] box 
   ファイル分割について   
     ・[12140] box 
     ・[12141] C言語 
     ・[12142] C言語 
     ・[12143] box 
     ・[12144] C言語 
   弾幕の螺旋ショットに ....   
     ・[12061] 管理人 
     ・[12135] カルディ  
   DXライブラリの動作 ....   
     ・[12103] 管理人 
     ・[12132] ランゲル 
   VC++実行時の「出力」 ....   
     ・[12094] 組木紙織 
     ・[12117] keichan 
     ・[12131] noob 
   分割コンパイルについ ....   
     ・[12124] 管理人 
     ・[12128] パソピ 
   ○×ゲームで…   
     ・[12126] Hermit 
     ・[12127] G 
   (注)重要なお知らせで ....   
     ・[12051] 管理人 
     ・[12052] parapara 
     ・[12055] 管理人 
     ・[12056] tkmakwins15 
     ・[12057] Lbfuvab 
     ・[12062] 管理人 
     ・[12063] tkmakwins15 
     ・[12069] たかぎ 
     ・[12071] たかぎ 
     ・[12073] tkmakwins15 
     ・[12074] 大工 
     ・[12079] 管理人 
     ・[12081] tkmakwins15 
     ・[12093] 雷 
     ・[12102] 木霊 
     ・[12105] 管理人 
     ・[12119] tkmakwins15 
     ・[12123] 管理人 
     ・[12125] tkmakwins15 
   最後の   
     ・[12111] aaa 
     ・[12112] 管理人 
     ・[12113] aaa 
     ・[12114] 管理人 
     ・[12115] aaa 
     ・[12116] \n 
     ・[12118] やそ 
     ・[12122] 管理人 
   型変換?   
     ・[12099] Blue 
     ・[12100] Blue 
     ・[12101] -U- 
     ・[12108] Blue 
     ・[12109] -U- 
   感想   
     ・[12107] 管理人 
   課題がわかりません…   
     ・[12106] 管理人 
   タブや改行文字の削除   
     ・[12019] ベリ工 
     ・[12021] ベリ工 
     ・[12029] ひろ 
     ・[12037] ベリ工 
     ・[12091] ひろ 
     ・[12092] ひろ 
   サンプルプログラムで ....   
     ・[12078] YKT 
     ・[12080] 管理人 
     ・[12087] 藍 
     ・[12088] 管理人 
   ライフゲーム   
     ・[12084] バグ 
     ・[12085] 大工 
     ・[12086] 大工 
   文字列の移し方   
     ・[12054] box 
     ・[12058] だいちゃん 
     ・[12059] box 
     ・[12064] フリオ 
     ・[12065] フリオ 
     ・[12083] だいちゃん 
   .NETにおける多言語の ....   
     ・[12068] べり工 
     ・[12070] たかぎ 
     ・[12072] tkmakwins15 
     ・[12075] GPGA 
     ・[12076] tkmakwins15 
   質問なのですが   
     ・[12042] バグ 
     ・[12043] リラン 
     ・[12044] バグ 
     ・[12045] リラン 
     ・[12046] バグ 
     ・[12047] 管理人 
     ・[12066] リラン 
   ループ処理について・ ....   
     ・[12032] 管理人 
     ・[12035] C.P.P 
   ライフゲームという課 ....   
     ・[12003] ガブリチュウ 
     ・[12004] バグ 
     ・[12005] ガブリチュウ 
     ・[12006] バグ 
     ・[12013] ガブリチュウ 
     ・[12014] バグ 
     ・[12026] toyo 
     ・[12027] ガブリチュウ 
     ・[12028] バグ 
     ・[12034] ガブリチュウ 
   無題   
     ・[12011] 管理人 
     ・[12030] 自由の天使 
   行列の積のもとめかた ....   
     ・[11995] K 
     ・[11996] 組木紙織 
     ・[11997] K 
     ・[11998] box 
     ・[11999] 組木紙織 
     ・[12010] K 
   ネットゲームについて   
   VC2005のブレークポイ ....   
     ・[11958] 管理人 
     ・[11973] DDK 
   東方ならぬ〜四聖龍陣 ....   
     ・[11652] tkmakwins15 
     ・[11653] 管理人 
     ・[11654] 雷 
     ・[11655] バグ 
     ・[11656] 管理人 
     ・[11657] りょうちん 
     ・[11658] 管理人 
     ・[11660] 雷 
     ・[11662] 管理人 
     ・[11667] りょうちん 
     ・[11672] tkmakwins15 
     ・[11675] 管理人 
     ・[11677] tkmakwins15 
     ・[11679] 管理人 
     ・[11680] tkmakwins15 
     ・[11697] 管理人 
     ・[11703] tkmakwins15 
     ・[11705] 管理人 
     ・[11742] アニィ 
     ・[11744] 管理人 
     ・[11747] 管理人 
     ・[11748] りょうちん 
     ・[11749] mt 
     ・[11752] 雷 
     ・[11753] tkmakwins15 
     ・[11757] 管理人 
     ・[11763] tkmakwins15 
     ・[11764] 雷 
     ・[11765] 管理人 
     ・[11768] tkmakwins15 
     ・[11776] 管理人 
     ・[11777] 管理人 
     ・[11784] 雷 
     ・[11785] 管理人 
     ・[11786] 雷 
     ・[11787] 雷 
     ・[11788] tkmakwins15 
     ・[11789] 管理人 
     ・[11790] tkmakwins15 
     ・[11794] 管理人 
     ・[11808] tkmakwins15 
     ・[11815] 管理人 
     ・[11839] 雷 
     ・[11844] 管理人 
     ・[11864] ルルーシュ 
     ・[11865] みずも 
     ・[11866] 管理人 
     ・[11874] F 
     ・[11875] tkmakwins15 
     ・[11884] 奈菜氏 
     ・[11885] tkmakwins15 
     ・[11887] nanasi 
     ・[11888] 管理人 
     ・[11899] F 
     ・[11901] 管理人 
     ・[11907] tkmakwins15 
     ・[11910] ぽいち 
     ・[11912] 管理人 
     ・[11926] 雷 
     ・[11935] tkmakwins15 
     ・[11937] 管理人 
     ・[11938] tkmakwins15 
     ・[11941] やそ 
     ・[11942] バグ 
     ・[11949] やそ 
     ・[11950] 管理人 
     ・[11951] 管理人 
     ・[11952] 組木紙織 
     ・[11953] 管理人 
     ・[11954] 組木紙織 
     ・[11955] 管理人 
     ・[11956] やそ 
     ・[11957] 管理人 
     ・[11960] バグ 
     ・[11961] 管理人 
     ・[11967] tkmakwins15 
   C言語初心者で宿題が ....   
     ・[11917] box 
     ・[11918] アルフレッサ 
     ・[11919] box 
     ・[11920] アルフレッサ 
     ・[11921] box 
     ・[11922] アルフレッサ 
     ・[11923] box 
     ・[11924] アルフレッサ 
     ・[11925] box 
     ・[11933] アルフレッサ 
     ・[11939] 組木紙織 
     ・[11945] F 
     ・[11946] 組木紙織 
     ・[11948] F 
   再びn以下の素数問題 ....   
     ・[11909] box 
     ・[11927] orz 
     ・[11928] Hermit 
     ・[11929] box 
     ・[11930] maa 
     ・[11931] Hermit 
     ・[11932] orz 
     ・[11934] orz 
     ・[11936] orz 
   シューティングゲーム ....   
     ・[11650] 管理人 
     ・[11893] 探究者 
     ・[11911] 管理人 
   Tの個数   
     ・[11895] F 
     ・[11896] F 
     ・[11897] つばさ 
     ・[11898] つばさ 
   騙し絵の館   
     ・[11807] tkmakwins15 
     ・[11809] 組木紙織 
     ・[11810] へろり 
     ・[11811] 組木紙織 
     ・[11819] tkmakwins15 
     ・[11843] 管理人 
     ・[11845] へろり 
     ・[11859] 雷 
     ・[11870] 管理人 
     ・[11886] tkmakwins15 
     ・[11891] 管理人 
   C宿題   
     ・[11878] nora 
     ・[11879] バグ 
     ・[11890] 管理人 
   無題   
     ・[11882] \n 
     ・[11883] parapara 
     ・[11889] 管理人 
   const int による定義 ....   
     ・[11840] Justy 
     ・[11857] C.P.P 
     ・[11871] Justy 
     ・[11880] C.P.P 
   シューティングゲーム ....   
     ・[11868] 管理人 
     ・[11876] 鷹見 ソラ 
     ・[118601196716162] 鷹見 ソラ 
   構造体配列   
     ・[11847] バグ 
     ・[11873] がんも 
   マウスジェスチャっぽ ....   
   シューティングゲーム ....   
     ・[11869] 管理人 
   無題   
     ・[11867] 管理人 
   画像出力についての質 ....   
     ・[11828] バグ 
     ・[11858] 空 
     ・[11862] 組木紙織 
   ハイスコアランキング ....   
     ・[11823] parapara 
     ・[11824] miyaza 
     ・[11825] TKSZ 
     ・[11829] TKSZ 
     ・[11837] miyaza 
     ・[11848] バグ 
     ・[11851] TKSZ 
     ・[11856] とろとろ 
   まったくわかりません ....   
     ・[11850] obaka 
     ・[11852] バグ 
     ・[11853] バグ 
     ・[11854] TKSZ 
     ・[11855] TKSZ 
   もう一個   
     ・[11816] 管理人 
     ・[11846] sino 
   課題ができません;誰 ....   
     ・[11575] miyaza 
     ・[11576] がんも 
     ・[11577] 雷 
     ・[11578] がんも 
     ・[11579] がんも 
     ・[11580] 雷 
     ・[11583] フリオ 
     ・[11586] miyaza 
     ・[11588] フリオ 
     ・[11607] がんも 
     ・[11609] 雷 
     ・[11611] がんも 
     ・[11617] フリオ 
     ・[11635] 雷 
     ・[11640] 雷 
     ・[11641] フリオ 
     ・[11646] フリオ 
     ・[11841] がんも 
   再び課題の質問   
     ・[11830] box 
     ・[11831] YYY 
     ・[11832] box 
     ・[11833] YYY 
     ・[11834] box 
     ・[11835] YYY 
     ・[11836] box 
     ・[11838] YYY 
   文字列の分解のことで ....   
     ・[11802] box 
     ・[11804] たかぎ 
     ・[11812] しりうす〜 
     ・[11822] たまー 
   #pragmaについて   
     ・[11714] たかぎ 
     ・[11775] hamanov 
     ・[11817] JEX 
     ・[11820] hamanov 
   リストを使ったキュー   
     ・[11642] box 
     ・[11732] さっかん 
     ・[11735] box 
     ・[11779] さっかん 
     ・[11781] box 
     ・[11801] box 
     ・[11814] さっかん 
   暗号文のプログラム   
     ・[11780] たかぎ 
     ・[11782] ダメだ 
     ・[11783] 雷 
     ・[11792] ダメだ 
     ・[11805] たかぎ 
   効率的なループの方法 ....   
     ・[11724] 大工 
     ・[11725] Hermit 
     ・[11726] Justy 
     ・[11743] 管理人 
     ・[11750] tkmakwins15 
     ・[11751] tkmakwins15 
     ・[11754] GPGA 
     ・[11755] GPGA 
     ・[11756] 管理人 
     ・[11760] Hermit 
     ・[11766] Justy 
     ・[11767] 管理人 
     ・[11793] Hermit 
     ・[11795] tkmakwins15 
     ・[11803] Justy 
   Windowsアプリケーショ ....   
     ・[11773] miyaza 
     ・[11799] niki 
   無題   
     ・[11796] tkmakwins15 
     ・[11798] 自由の天使 
   パスカル言語をC言語に ....   
     ・[11770] たかぎ 
     ・[11772] たかぎ 
     ・[11774] ぱすかる 
   ポイントカードの日付 ....   
     ・[11717] 管理人 
     ・[11719] sa 
     ・[11720] 管理人 
     ・[11722] sa 
     ・[11746] 管理人 
     ・[11762] 組木紙織 
   n以下の素数列挙   
     ・[11668] orz 
     ・[11673] 管理人 
     ・[11718] Hermit 
     ・[11723] orz 
     ・[11727] Hermit 
     ・[11728] orz 
     ・[11730] orz 
     ・[11745] 管理人 
     ・[11759] Hermit 
     ・[11761] orz 
   描画の回転について・ ....   
     ・[11568] keichan 
     ・[11569] 管理人 
     ・[11628] C.P.P 
     ・[11634] C.P.P 
     ・[11643] Justy 
     ・[11758] C.P.P 
   無題   
     ・[11731] バグ 
     ・[11734] バグ 
     ・[11736] バグ 
     ・[11737] sa 
     ・[11739] バグ 
     ・[11740] sa 
     ・[11741] box 
   無題   
     ・[11687] 管理人 
     ・[11709] 自由の天使 
     ・[11712] 管理人 
     ・[11738] 自由の天使 
   0節の最後 F5を押して ....   
     ・[11482] 雷 
     ・[11496] ミオ 
     ・[11511] GPGA 
     ・[11523] ミオ 
     ・[11524] ミオ 
     ・[11526] GPGA 
     ・[11533] バグ 
     ・[11571] ミオ 
     ・[11587] GPGA 
     ・[11644] ミオ 
     ・[11733] GPGA 
   C言語でPICプログラム ....   
     ・[11674] YUKI 
     ・[11700] YUKI 
     ・[11707] 管理人 
     ・[11711] YUKI 
     ・[11713] たかぎ 
     ・[11716] 管理人 
   実行速度・・・・・   
     ・[11565] GPGA 
     ・[11681] 自由の天使 
     ・[11691] 管理人 
     ・[11708] GPGA 
     ・[11710] 管理人 
   たびたび申し訳ありま ....   
     ・[11685] YYY 
     ・[11686] miyaza 
     ・[11689] 管理人 
     ・[11690] YYY 
     ・[11692] 管理人 
     ・[11693] 管理人 
     ・[11694] YYY 
     ・[11695] 管理人 
     ・[11696] 管理人 
     ・[11698] YYY 
     ・[11699] 管理人 
     ・[11701] YYY 
     ・[11702] YYY 
     ・[11704] 管理人 
     ・[11706] YYY 
   実行結果がおかしい・ ....   
     ・[11664] box 
     ・[11665] 管理人 
     ・[11669] box 
     ・[11670] YYY 
     ・[11671] 管理人 
     ・[11676] YYY 
     ・[11678] 管理人 
     ・[11683] YYY 
     ・[11688] 管理人 

Name: たまー  ..かけだし(2,075ポイント)   Date: 2007/11/27(火) 20:30   No:12160       
Title: 画面の操作にて、    
連続の投稿になりすいません。
アプリ制作にて最初の画面でこのアプリ起動させるかの選択で、
「はい」「いいえ」以外に、もうこの画面を表示しないといったものを
作りたいのですが、どうやった書き方をすればよろしいでしょうか?
分かる方いましたらよろしくお願いします。


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


Name: tkmakwins15 [URL]  ..プログラマー(39,834ポイント)   Date: 2007/11/27(火) 22:27   No:12168     
Title: Re:画面の操作にて、    
メッセージボックスの中にはそのような機能はないです。
なので、ダイアログボックスを作ることになります。


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

Name: たまー  ..かけだし(2,204ポイント)   Date: 2007/11/28(水) 00:08   No:12170     
Title: Re:画面の操作にて、    
ダイアログボックスというのは分かってるのですが、
それで、一度決定するともう表示しなくなるようにするには
どうすればいいかと思い書きました。その場合だと、
アプリを落とした時、「もう表示しない」を選択しておくと
アプリ終了後もどこかにそのデータを残しとかなければいけないし、
立ちあげたときにはダイアログBOXより先にそっちを見に行って、
チェックの確認と、このようになると思うのですがその
やり方をしりたかったのです^^
よろしくお願いします。


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

Name: GPGA  ..熟練のプログラマー(40,058ポイント)   Date: 2007/11/28(水) 01:43   No:12172     
Title: Re:画面の操作にて、    
普通にセーブファイルを作ってフラグを書き込めばいいと思います。
以下サンプル。

#include <windows.h>
#include <stdio.h>

const char* szFileName = "conf.dat";

int CheckConf()
{
FILE* fp = NULL;
char ret = 0;

fp = fopen(szFileName, "rb");
if (fp != NULL) {
fread(&ret, 1, sizeof(char), fp);
fclose(fp);
}
return ret;
}

void SaveConf()
{
FILE* fp = NULL;
fp = fopen(szFileName, "wb");
if (fp != NULL) {
char flg = 1;
fwrite(&flg, 1, sizeof(char), fp);
fclose(fp);
}
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
if (CheckConf() == 0) {
int ret = MessageBox(NULL, "はい:通常起動\nいいえ:アプリ終了\nキャンセル:以降このメッセージボックスを表示しないに該当", "テスト", MB_YESNOCANCEL);
if (ret == IDNO) {
// いいえ
return 0;
} else if (ret == IDCANCEL) {
// キャンセル(以降表示しないに該当)
SaveConf();
}
}

// 通常のアプリプログラム
MessageBox(NULL, "通常のアプリ", "", MB_OK);
return 0;
}
 


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

Name: たまー  ..かけだし(2,259ポイント)   Date: 2007/11/28(水) 22:43   No:12177 解決!     
Title: Re:画面の操作にて、    
回答ありがとうございます^^
GPGAさんのかかれたものを参考にさせていただきます^^
まだできていませんが、解決できそうなので助かりました〜
ありがとうございます。


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



Name: K-I  ..かけだし(1,757ポイント)   Date: 2007/11/27(火) 20:30   No:12161       
Title: 初歩的な質問なんですが    

#include <stdio.h>
void main(void)
{
int a,b;

for (a=2;a<11;a++)
for (b=1;b<10;b++){
printf("%2d\n",a);
printf("%2d\n",b);
} }


結果
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
1
7
2
7
3
7
4
7
5
7
6
7
7
7
8
7
9
8
1
8
2
8
3
8
4
8
5
8
6
8
7
8
8
8
9
9
1
9
2
9
3
9
4
9
5
9
6
9
7
9
8
9
9
10
1
10
2
10
3
10
4
10
5
10
6
10
7
10
8
10
9
なんですが
これを
2
1
3
2
4
3
と表示させたいんですがどうしたらいいんでしょうか?
いろいろ試してみたんですがこの方法じゃ私がやりたいことは出来ないんでしょうか?
どなたかアドバイスお願いします。結果長くてすみません


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


Name: 組木紙織  ..プログラマー(26,153ポイント)   Date: 2007/11/27(火) 20:45   No:12162     
Title: Re:初歩的な質問なんですが    
どのように表示すれば良いかが十分分かりません。
もう少し詳しく教えて下さい。


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

Name: box  ..比類無きプログラマー(95,183ポイント)   Date: 2007/11/27(火) 21:16   No:12163     
Title: Re:初歩的な質問なんですが    
もしかして、こういうことですか?


#include <stdio.h>

int main(void)
{
int i;

for (i = 2; i <= 4; i++)
printf("%d\n%d\n", i, i - 1);
return 0;
}



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

Name: K-I  ..入門者(2,994ポイント)   Date: 2007/11/27(火) 21:24   No:12165     
Title: Re:初歩的な質問なんですが    
前ここで数独の質問をしたものなんですが

#include <stdio.h>
int map1[9][9];
/* m:Mondai */
/**int p[9][9]={{0,0,9,0,5,0,0,0,3},
{0,0,3,7,0,0,2,0,5},
{8,0,0,0,3,0,0,6,0},
{3,0,0,0,6,0,0,0,1},
{5,0,0,0,7,0,0,0,9},
{9,0,0,4,2,0,0,0,8},
{0,5,0,0,9,0,0,0,7},
{2,0,7,0,0,3,1,0,0},
{6,0,0,0,4,0,9,0,0}};
*/
int p[9][9]={{0,0,6,0,0,0,0,0,1},
{0,7,0,0,6,0,0,5,0},
{8,0,0,1,0,3,2,0,0},
{0,0,5,0,4,0,8,0,0},
{0,4,0,7,0,2,0,9,0},
{0,0,8,0,1,0,7,0,0},
{0,0,1,2,0,5,0,0,3},
{0,6,0,0,7,0,0,8,0},
{2,0,0,0,0,0,4,0,0}};
void disp()
{ int i,j;

//結果を表示//

for (i=0;i<9;i++){
for (j=0;j<9;j++){
printf("%2d",p[i][j]);
}
printf("\n");
}
}

void main(void)
{
int i,j,k;
int count_0,count_;
int x,y;
int r,s,t=3;
int a,b,c;


//map1のマスを0にし//
//正しい値の入る場所を作る//

START:
for (a=2;a<11;a++)
for (b=1;b<10;b++){
for (i=0;i<9;i++){
for (j=0;j<9;j++) map1[i][j]=0;
}

for (i=0;i<9;i++){
for (j=0;j<9;j++){
if (p[i][j] !=0) map1[i][j]=a;
if (p[i][j] ==b){ map1[i][j]=b;
for(k=0;k<9;k++){
if(map1[k][j] ==0) map1[k][j]=a;
if(map1[i][k] ==0) map1[i][k]=a;
}
}
}
}
//3*3のマスに0が一つと同じ数字が8つの場合0に正しい値を入れる//

for(x=0; x<3; x++){
for(y=0; y<3; y++){
r=x*3;
s=y*3;
count_0=0;
count_=0;
for(i=r; i<r+t; i++){
for(j=s; j<s+t; j++){
if( map1[i][j] == 0)
count_0 +=1;
else if( map1[i][j] == a )
count_ +=1;
}
}
if( (count_0 == 1) && (count_ == 8)){
for(i=r; i<r+t; i++){
for(j=s; j<s+t; j++){
if( map1[i][j] == 0){
p[i][j] = b;
if(count_0 != 0) goto START;
}
}
}
}
}}}
disp();

}


このプログラムでaに2bに1で一回りしてまた戻って次はaに3bに2と入れていきたいんですが このままだと
aに2bに1に2bに2がはいってしまうんです
説明下手ですみません いい方法はないでしょうか?


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



Name:  ..ぴよぴよ(0ポイント)   Date: 2007/11/27(火) 16:55   No:12150       
Title: 関数で複数の出力    
関数で複数、出力することは出来ますか?
出来るとすればそれはどうすればいいのですか教えてください。



Name: box  ..比類無きプログラマー(95,092ポイント)   Date: 2007/11/27(火) 16:59   No:12151     
Title: Re:関数で複数の出力    
出力とは、どういったものを指していますか?

1)printf()などの出力用関数を用いた出力
2)呼び出し元の関数に複数の値を返したい
3)その他(具体的に書いてください)

まあ、1)じゃないでしょうけれど…。


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



Name: C言語  ..ぴよぴよ(75ポイント)   Date: 2007/11/27(火) 13:25   No:12139       
Title: ファイル分割について    
ファイルの先頭から指定バイト削除するプログラムを作成しようと思うのですが、
指定バイト以降をfreadして、ファイル保存する以外に何か良い方法はないでしょうか?
この方法だとfreadのサイズが可変となるため、できれば違う方法で実現したいのですが。


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


Name: box  ..比類無きプログラマー(94,878ポイント)   Date: 2007/11/27(火) 13:50   No:12140     
Title: Re:ファイル分割について    
1バイトずつ読み書きする関数fgetc, fputcを使うと
よいかもしれません。

ファイルの先頭から指定バイト分はfgetcするだけ、
それ以降はfgetcしたらfputcする。


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

Name: C言語  ..ぴよぴよ(0ポイント)   Date: 2007/11/27(火) 13:57   No:12141 解決!     
Title: Re:ファイル分割について    
ありがとうございます。

ファイルの終端まで1バイトずつコピーしていくということですよね?
ということは、ファイルサイズが大きくなればその分コピーの回数が増えますが、
それは仕方ないですね。


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

Name: C言語  ..ぴよぴよ(38ポイント)   Date: 2007/11/27(火) 15:22   No:12142     
Title: Re:ファイル分割について    
再度質問です。

fgetcを使用したところ、4バイトずつ読み出しているのですが、
1バイトずつ読み出すにはfreadを用いるしかないでしょうか?


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

Name: box  ..比類無きプログラマー(94,924ポイント)   Date: 2007/11/27(火) 15:29   No:12143     
Title: Re:ファイル分割について    
> fgetcを使用したところ、4バイトずつ読み出している

そのときのソースコードと入力ファイルを提示できますか?
また、4バイトずつ読み出していることを、
どのような方法で確認されましたか?

なるべくでしたら、具体的に問い合わせてくださると、
回答もその分だけ具体的になります。


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

Name: C言語  ..ぴよぴよ(90ポイント)   Date: 2007/11/27(火) 15:32   No:12144 解決!     
Title: Re:ファイル分割について    
回答ありがとうございます。

単純なコーディングミスでした。
お手数をお掛けしましてすいませんでした。
また、何かあればよろしくお願い致します。


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



Name: カルディ  ..ぴよぴよ(35ポイント)   Date: 2007/11/24(土) 00:39   No:12060       
Title: 弾幕の螺旋ショットについての質問です    
自分のソース・構造体の書き方が違い、自分はC言語を始めて半年くらいなのでさっぱりわかりません。

typedef struct
{
int XPos; //X座標
int YPos; //Y座標
int Speed; //移動速度
int HP; //HP
int Damage; //ダメージ量
int BulletInterval; //弾の間隔
int SPNO; //スプライト番号
int Gno; //グラフィック番号

}ENEMY_STATUS;

typedef struct
{
bool flag; // 表示フラグ
float XPos; // X座標
float YPos; // Y座標
int Speed; // 弾のスピード
int SPNO; // スプライト番号
int Gno; // グラフィック番号
bool Grazes; // かすり
int Length; // 長さ

}S_BULLET_STATUS;

自分のソースで敵・弾の構造体はこんな感じになってます。
この構造体で弾幕の螺旋ショットのソースの書き方教えてもらえないでしょうか?


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


Name: 管理人 [URL]  ..伝説のハッカー(457,835ポイント)   Date: 2007/11/24(土) 01:25   No:12061     
Title: Re:弾幕の螺旋ショットについての質問です    
http://l.huu.cc/s/26.html
こんなのでいいですか?

フラッシュが見えない場合はこちら↓参考に


基礎的な数学の部分はOKでしょうか?
例えば角度θのx座標を求める時は
x=cos(θ)
で求まる事などはOKでしょうか?

また、ラジアンや円周率などは。

yは下が正なので、θ=PI/2が鉛直下向きになります。
例えばここから2*PI/360ずつずらして発射すれば1度ごとの螺旋になりますし、同時に発射すれば円形弾幕になります。
例えば

int n=0;
double angle=PI/2;

θ=PI/2+n*2*PI/360で発射。
n++;

10ms待つ

θ=PI/2+n*2*PI/360で発射。
n++;

10ms待つ

θ=PI/2+n*2*PI/360で発射。
n++;

こうすれば、時間差で、円形に発射しますから、螺旋に見えます。
実際にはこんな直線にプログラムを書くことはないでしょうが、イメージ的にこうなります。

発射登録はこの部分で行いますが、起動計算はまた違うところでやってください。



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

Name: カルディ  ..ぴよぴよ(5ポイント)   Date: 2007/11/27(火) 00:19   No:12135 解決!     
Title: Re:弾幕の螺旋ショットについての質問です    
なんかHPに載ってるソースとは全然違う感じで出来ました。
出来たので良かったです。親切にどうもありがとうございました


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



Name: ランゲル  ..ぴよぴよ(932ポイント)   Date: 2007/11/25(日) 21:55   No:12096       
Title: DXライブラリの動作テストプログラム    
初めまして、ランゲルです。

どうにかゲームが作りたくてDXライブラリをダウンロードしたのですが
画面中央に点を打つテストプログラムを打ち込んだ所、どこを間違えたのかエラーだらけでキチンと作動しません…(と言うか、メイクで失敗してしまいます)
何度も見直したので、書き間違いはないと思うのですが…

何時間かパソコンの前で唸って考えていましたが、どうしても理由がわかりませんでした。
長々しいですが、どうかお願いします!



#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
if( DxLib_Init() == -1 )

{
return -1 ;
}

DrawPixel( 320 , 240 , 0xffff ) ;

WaitKey() ;

DxLib_End() ;
     
     return 0 ;
}




出てきてしまうエラー(最初以降はファイルパスを中略させて頂きました)


D:\雑多1\俺ゲーム計画\プログラム制作\プログラム\test\drawpixel.cpp:
エラー E2209 D:\プログラム\test\DxLib.h 40: インクルードファイル 'windows.h' をオープンできない
エラー E2209 D:\プログラム\test\DxLib.h 41: インクルードファイル 'stdio.h' をオープンできない
エラー E2209 D:\プログラム\test\DxDirectX.h 806: インクルードファイル 'windows.h' をオープンできない
エラー E2209 D:\プログラム\test\DxDirectX.h 807: インクルードファイル 'mmreg.h' をオープンできない
エラー E2209 D:\プログラム\test\DxDirectX.h 808: インクルードファイル 'unknwn.h' をオープンできない
エラー E2303 D:\プログラム\test\DxDirectX.h 847: 型名が必要
エラー E2139 D:\プログラム\test\DxDirectX.h 847: 宣言に ; がない
エラー E2303 D:\プログラム\test\DxDirectX.h 848: 型名が必要
エラー E2238 D:\プログラム\test\DxDirectX.h 848: 'tagD_DSCAPS::DWORD' の宣言が複数見つかった
エラー E2344 D:\プログラム\test\DxDirectX.h 847: 一つ前の 'tagD_DSCAPS::DWORD' の定義位置
エラー E2139 D:\プログラム\test\DxDirectX.h 848: 宣言に ; がない
エラー E2303 D:\プログラム\test\DxDirectX.h 849: 型名が必要
エラー E2238 D:\プログラム\test\DxDirectX.h 849: 'tagD_DSCAPS::DWORD' の宣言が複数見つかった
エラー E2344 D:\プログラム\test\DxDirectX.h 848: 一つ前の 'tagD_DSCAPS::DWORD' の定義位置
エラー E2139 D:\プログラム\test\DxDirectX.h 849: 宣言に ; がない
エラー E2303 D:\プログラム\test\DxDirectX.h 850: 型名が必要
エラー E2238 D:\プログラム\test\DxDirectX.h 850: 'tagD_DSCAPS::DWORD' の宣言が複数見つかった
エラー E2344 D:\プログラム\test\DxDirectX.h 849: 一つ前の 'tagD_DSCAPS::DWORD' の定義位置
エラー E2139 D:\プログラム\test\DxDirectX.h 850: 宣言に ; がない
エラー E2303 D:\プログラム\test\DxDirectX.h 851: 型名が必要
エラー E2238 D:\プログラム\test\DxDirectX.h 851: 'tagD_DSCAPS::DWORD' の宣言が複数見つかった
エラー E2344 D:\プログラム\test\DxDirectX.h 850: 一つ前の 'tagD_DSCAPS::DWORD' の定義位置
エラー E2139 D:\プログラム\test\DxDirectX.h 851: 宣言に ; がない
エラー E2303 D:\プログラム\test\DxDirectX.h 852: 型名が必要
エラー E2238 D:\プログラム\test\DxDirectX.h 852: 'tagD_DSCAPS::DWORD' の宣言が複数見つかった
エラー E2228 D:\プログラム\test\DxDirectX.h 852: エラーあるいは警告が多すぎる
*** 26 errors in Compile ***

** error 1 ** deleting Debug\drawpixel.obj

Make End !! (Elapsed time 0:00.312)


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


Name: 管理人 [URL]  ..伝説のハッカー(458,389ポイント)   Date: 2007/11/26(月) 01:42   No:12103     
Title: Re:DXライブラリの動作テストプログラム    
コンパイラは何ですか?Borlandの無料版やVC++の無料版は別途設定が必要でSDKを入れる必要があります。
http://homepage2.nifty.com/natupaji/DxLib/dxuse.html
こちらからご自分のコンパイラにあった設定を一度よくよんでみてください。


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

Name: ランゲル  ..ぴよぴよ(809ポイント)   Date: 2007/11/26(月) 22:16   No:12132 解決!     
Title: Re:DXライブラリの動作テストプログラム    
返信ありがとうございます、Borlandの無料版を使っています。
どうやらcfgファイルの入力抜けと日本文字が入っていた事(?)が問題だったらしく
ファイル名を全て英文字に直した所、正常に機能するようになりました。

あと、三つソースコードの書き写し間違いがあったようです。
Drawpixel…Pが小文字
Waitkey…Kが小文字
Waitkey()…;が抜けている

書き写し間違いは無いはず、と言っておきながら恥ずかしい限りです・・・(汗
当面の障害は無くなった事ですし、これからどんどん頑張って行きたいと思います!


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



Name: noob  ..ぴよぴよ(482ポイント)   Date: 2007/11/25(日) 09:50   No:12090       
Title: VC++実行時の「出力」欄のメッセージについて    
初めまして、最近ゲームプログラミングをやってみたくてVC++を導入しました。
現在、入門編のソースをコピーして実行しているのですが、VC++の「出力」欄に下記のようなメッセージが表示されています。これはどの環境でも表示されるものなのでしょうか?

↓メッセージ

'DxLib.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'DxLib.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'DxLib.exe': 'C:\WINDOWS\system32\comctl32.dll' を読み込みました。シンボルが読み込まれていません。
'DxLib.exe': 'C:\WINDOWS\system32\advapi32.dll' を読み込みました。シンボルが読み込まれていません。
'DxLib.exe': 'C:\WINDOWS\system32\rpcrt4.dll' を読み込みました。シンボルが読み込まれていません。
'DxLib.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。
'DxLib.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。
'DxLib.exe': 'C:\WINDOWS\system32\winmm.dll' を読み込みました。シンボルが読み込まれていません。

他数十行ほど同じような表示がありました。
なにぶん初心者なもので、初歩的な質問かもしれませんがよろしくお願いします。

通常の実行環境と違うと思われる部分は、VCとPSDKはDドライブにインストールしています。(CドライブはOSのみ)


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


Name: 組木紙織  ..プログラマー(26,147ポイント)   Date: 2007/11/25(日) 18:14   No:12094     
Title: Re:VC++実行時の「出力」欄のメッセージについて    
>入門編のソースをコピーして実行しているのですが、VC++の「出力」欄に下記のようなメッセージが表示されています

どのような状況で実行したのでしょうか?
(プロジェクトの構成がDebugとかRelease、またはデバッグで実行したのかデバッグなしで実行したのかどうかとか。)

そのあたりを詳しく書けば解答をくれる方がおられるかもしれません。


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

Name: keichan  ..プログラマー(28,338ポイント)   Date: 2007/11/26(月) 14:54   No:12117     
Title: Re:VC++実行時の「出力」欄のメッセージについて    
デバッグモードで実行(F5を押した)時に表示されるメッセージに見えます。

「シンボルが読み込まれていません。」

というのは、デバッグに必要な情報が無いよ。と言っています。
でも、該当dll('C:\WINDOWS\system32\ntdll.dll' 等)をデバッグするわけではないので気にする必要はありません。


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

Name: noob  ..ぴよぴよ(556ポイント)   Date: 2007/11/26(月) 21:56   No:12131 解決!     
Title: Re:VC++実行時の「出力」欄のメッセージについて    
>組木紙織氏
遅くなって申し訳ありません、デバッグモードでの実行時に表示されたメッセージです。

>keichan氏
なるほど、特に気にする必要はないわけですね。どうもありがとうございます。


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



Name: パンピ  ..ぴよぴよ(576ポイント)   Date: 2007/11/26(月) 17:23   No:12121       
Title: 分割コンパイルについて    
こんにちは。私はDXライブラリを用いてシューティングゲームを制作しようと考えています。

質問なのですが、貴サイトのシューティングゲームの館を参考に進めていたところ、第6章の「先ほどのプログラムを分割してみる。」で、以下のようなエラーが出ます。


> "C:\Program Files\Borland\CBuilder6\Bin\make.exe" -fDebug\STG.mak TARGET
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -DDEBUG -nDebug -c Z:\c\STG\main.cpp
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
Z:\c\STG\main.cpp:
bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -DDEBUG -eDebug\STG.exe Debug\img_sound_load.obj Debug\initial.obj Debug\background.obj Debug\player.obj Debug\fps.obj Debug\main.obj
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
Turbo Incremental Link 5.60 Copyright (c) 1997-2002 Borland
Error: 外部シンボル '_img_sound_load' が未解決(Z:\C\STG\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_initialization' が未解決(Z:\C\STG\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_SetColor' が未解決(Z:\C\STG\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_Background' が未解決(Z:\C\STG\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_PlayerControl' が未解決(Z:\C\STG\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_Background2' が未解決(Z:\C\STG\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_FpsTimeFanction' が未解決(Z:\C\STG\DEBUG\MAIN.OBJ が参照)

** error 1 ** deleting Debug\STG.exe

Make End !! (Elapsed time 0:02.156)



このようなエラーが出ます。6章のプログラムはすべてそろえているのですが、エラーが直りませんでした。
初歩的な質問かと思いますが、どなたかご教授お願いします。


ちなみに私のパソコンの環境は
WindowsXP Pentium(R)4 CPU2.00GHz メモリ512MB
開発環境にはBCCDeveloperを使用しています。


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


Name: 管理人 [URL]  ..伝説のハッカー(459,579ポイント)   Date: 2007/11/26(月) 17:49   No:12124     
Title: Re:分割コンパイルについて    
すみません、BCCDeveloperは使ったことが無いので、使い方は存じません(_ _||)

もし最後まで解決しなければ、以下お読みください。

シューティングについては、VC++のプロジェクトを公開していますので、
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
よければフリー版VC++をお使いください。


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

Name: パソピ  ..ぴよぴよ(13ポイント)   Date: 2007/11/26(月) 20:06   No:12128 解決!     
Title: Re:分割コンパイルについて    
返答ありがとうございます。
分かりました。VC++を試してみようと思います。


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



Name: G  ..ぴよぴよ(367ポイント)   Date: 2007/11/26(月) 17:11   No:12120       
Title: ○×ゲームで…    

#include <stdio.h>

#define SIZE 3
#define NONE 0
#define MARU 1
#define BATU 2

int board[SIZE][SIZE] = { 0 };
char mark[3][3] = {"−", "○", "×"};

void print_board() {
int i, j;
for (i = 0; i < SIZE; ++i) {
for (j = 0; j < SIZE; ++j) /* line */
printf("+--");
printf("+\n");

for (j = 0; j < SIZE; ++j) /* mark */
printf("|%s", mark[board[i][j]]);
printf("|\n");
}
for (j = 0; j < SIZE; ++j) /* line */
printf("+--");
printf("+\n");
}
int check_end() {
int i, j;
for (i = 0; i < SIZE; ++i)
for (j = 0; j < SIZE; ++j)
if (board[i][j] == NONE) return 0;
return 1;
}

int valid_position(int x, int y) {
return 0 <= x && x < SIZE &&
0 <= y && y < SIZE &&
board[x][y] == NONE;
}
int main() {

int x, y;
int player = MARU;

printf("<< ○× >>\n");
print_board();

while (!check_end()) {

while (1) {
printf("Player%d Put[%s] (x, y): ", player, mark[player]);
scanf("%d %d", &x, &y);
if (valid_position(x, y)) break;
printf("Can't Put. Again.\n");
}
board[x][y] = player; /* set mark */

printf("<< ○× >>\n");
print_board();

if (player == MARU) player = BATU; /* change player */
else player = MARU;
}
printf("Game is Over.\n");
}


下のような実行例にしたいのですが混乱して○と×の位置がおかしくなってしまったので教えてください。


実行例

<< ○× >>
+--+--+--+
|−|−|−|
+--+--+--+
|−|−|−|
+--+--+--+
|−|−|−|
+--+--+--+
Player1 Put[○] (x, y): 1 1
<< ○× >>
+--+--+--+
|−|−|−|
+--+--+--+
|−|○|−|
+--+--+--+
|−|−|−|
+--+--+--+

<<中略>>

Player2 Put[×] (x, y): 2 1
<< ○× >>
+--+--+--+
|×|−|−|
+--+--+--+
|○|○|×|
+--+--+--+
|−|−|−|
+--+--+--+
Player1 Put[○] (x, y): 1 2
<< ○× >>
+--+--+--+
|×|−|−|
+--+--+--+
|○|○|×|
+--+--+--+
|−|○|−|
+--+--+--+

Player2 Put[×] (x, y): 1 2
Can't Put. Again.
<< ○× >>
+--+--+--+
|×|−|−|
+--+--+--+
|○|○|×|
+--+--+--+
|−|○|−|
+--+--+--+
Player2 Put[×] (x, y): 1 0
<< ○× >>
+--+--+--+
|×|×|−|
+--+--+--+
|○|○|×|
+--+--+--+
|−|○|−|

<<中略>>

Player2 Put[×] (x, y): 0 2
<< ○× >>
+--+--+--+
|×|×|○|
+--+--+--+
|○|○|×|
+--+--+--+
|×|○|−|
+--+--+--+
Player1 Put[○] (x, y): 2 2
<< ○× >>
+--+--+--+
|×|×|○|
+--+--+--+
|○|○|×|
+--+--+--+
|×|○|○|
+--+--+--+
Game is Over.




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


Name: Hermit  ..上級者(16,632ポイント)   Date: 2007/11/26(月) 18:26   No:12126     
Title: Re:○×ゲームで…    
void print_board(void)
のところの、
printf("|%s", mark[board[i][j]]);
を、
printf("|%s", mark[board[j][i]]);
にするだけでいいのではないでしょうか。


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

Name: G  ..ぴよぴよ(376ポイント)   Date: 2007/11/26(月) 18:39   No:12127 解決!     
Title: Re:○×ゲームで…    
ありがとうございます。

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



Name: 管理人 [URL]  ..伝説のハッカー(456,920ポイント)   Date: 2007/11/23(金) 17:09   No:12050       
Title: (注)重要なお知らせです。    
いつも当サイトをご利用いただきありがとうございます。

このサイトは有料のレンタルサーバーサービスを利用しているため、1年ずつ、料金を払って運営しています。
毎年1年ごとに料金を払ってきたのですが、先日料金の支払期日を過ぎている事に気づかず、未払いになっていました。
レンタルサーバーの会員専用ログインをしてみると「IDは削除されました」の表示が出ました。
メールに、「支払期日を過ぎて入金が無かったので、IDは削除し、レンタルサーバースペースのデータは全て削除した」という旨が書いてありました。

そして「データを復旧して欲しければ特別料金を払え、そうでないと、今後の契約は一切無効で同じURLもつかわせない」という事が書いてありました。

もうすぐ支払期日が迫っていますよ、とか、滞納になってますよ、のメールの一つも無しにこのようなメールが来るのは一種の詐欺のような気がしますが・・。

ただIDは削除されたようですが、サーバーのデータは削除したと書いてあるにもかかわらず、何故かデータは削除されてないようなので、今こうしていられるのですが、
いつ削除されてもおかしくない状態です。もしかしたら今すぐにでも削除されるのかもしれませんし、単なる処理のし忘れなのかもしれません。

万が一削除されてしまい、その特別料金を払う余裕がなければ(現在それがいくらかわからないので)
先日の龍陣録の配布ページ(別サーバーURL)から新しいURLをお知らせしようと思います。
http://pcmade.web.fc2.com/
こちらです。googleから「龍陣録」で検索しても、それとなくリンク先を示した動画サイトや誰かの個人の日記などが引っかかります。

現在パスワードが変えられているのか、l.huu.ccの方のデータがこちらでは変えられません。
万が一突然データが消されてしまうと皆様に伝達できなくなりますので、回避策として申し上げました。
その特別料金はよほどのことが無い限り頑張って払うつもりですが、あまりに法外な値段だと、払えませんので、どうかよろしくお願いしますm(_ _)m


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


Name: 管理人 [URL]  ..伝説のハッカー(456,963ポイント)   Date: 2007/11/23(金) 17:40   No:12051     
Title: Re:(注)重要なお知らせです。    
そして気づけばトータルアクセスもうすぐ100万ですね。
もしキリバン踏んだ方はよければご報告下さい^^


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

Name: parapara  ..初心者(7,392ポイント)   Date: 2007/11/23(金) 18:10   No:12052     
Title: Re:(注)重要なお知らせです。    
私もFC2使ってたことがあります。無料(制限があるけど)という理由で^^。
ホームページは当初は自宅サーバーを使ってたんですが、夜中に五月蝿いので辞めてから、
FC2使ってました。有料の人やバーナーで儲けてるとは薄々気づいていましたが、
ここまで酷いとは、横暴だ、搾取してるぞ〜〜。(*ω*)/~〜☆

毎年お金を払っていたなんて。有料だったなんて、どうりで広告が無いはず。
それのお陰で見やすく、管理人自ら迷い子に頻繁に救いの手を差し伸べていたなんて。
管理人は慈善の心でやっていたのか〜〜感動。もちろん自分のページを盛り上げたいとか
裏心はあったとしても。その心の広さ(器)に尊敬です。


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

Name: 管理人 [URL]  ..伝説のハッカー(457,489ポイント)   Date: 2007/11/23(金) 19:44   No:12055     
Title: Re:(注)重要なお知らせです。    
>paraparaさん
私もここは最初無料版でした。
ただ、アップしたいファイルがかなり大量にあるので無制限の魅力に惹かれて有料版にしました。
何より広告が入るのがちょっと・・。
一番多い時期はファイル数は6000以上、総容量5GB位あったんですが、さすがにFC2の方に迷惑をかけるかなと思い減らしました。((にしても、現在その半分位はありますが^^;
なのにこの仕打ちは!

先日教授にHPを紹介すると、広告を入れればいいのに、と勧められましたが、やはり広告があるとHPの質が下がると言うか、管理人は広告で儲けてるんだみたいな感じになるのでやめとこ〜と思ってやめましたm(_ _)m
ただ、広告の一番難しい審査の許可がもらえるかどうかだけはやってみましたがw
でも学生ゆえ、運営が厳しくなったら広告入れるかもしれません^^;
一体特別料金っていくらなんだろう・・。何回か読んで見ましたが
規約には書いてないんですよね・・。思いっきり怪しいです・・。
○万とかしたらどうしよう( ̄Д ̄;)
ただ、色んな所にリンク貼ってもらっているらしく、それらのリンクが全部エラーになってしまうかと思うとURLが変えられないんですよね・・。
googleランクもやっと上がったところなのに(T_T
FC2からの返答を待つとします・・。


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

Name: tkmakwins15 [URL]  ..プログラマー(39,274ポイント)   Date: 2007/11/23(金) 20:11   No:12056     
Title: Re:(注)重要なお知らせです。    
->管理人さん

そうでしたか、とりあえずpdfの形でゲームプログラミングの館だけはダウンロードしておきました。

とりあえずミラーサイトを作っておいてはどうでしょうか?例えばジオシティーズとかに。


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

Name: Lbfuvab  ..初心者(5,430ポイント)   Date: 2007/11/23(金) 23:26   No:12057     
Title: Re:(注)重要なお知らせです。    
iswebならCGIありですよ。(容量が少ないですが
もしくは自宅サーバー・・・


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

Name: 管理人 [URL]  ..伝説のハッカー(457,988ポイント)   Date: 2007/11/24(土) 01:29   No:12062     
Title: Re:(注)重要なお知らせです。    
>tkさん
そうですね〜無料サイトは容量制限が多いので、全部乗らなかったりして・・。
トップページだけでもミラー作っといたほうがいいですかね〜。

>Lbfuvabさん
自宅サーバーも考えたんですが、電気代がかなり上がるのと、ワンルームでサーバー付けっぱなしだとうるさくて寝られないので、やめました^^;
広い家で、お金に余裕があればいいんですが・・。
何しろ明日食べるのも精一杯(ry
とりあえずミラーを作ってみるのがいいんでしょうかね。
なんかそうすると解決したらまた戻したりして皆さんに色々登録させるようで・・。


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

Name: tkmakwins15 [URL]  ..プログラマー(39,307ポイント)   Date: 2007/11/24(土) 02:14   No:12063     
Title: Re:(注)重要なお知らせです。    
現段階でできそうなことは、

ミラーサイトを作る。
コンテンツのオフライン版を作っておく

とかでしょうか。


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

Name: たかぎ [URL]  ..上級者(18,171ポイント)   Date: 2007/11/24(土) 13:19   No:12069     
Title: Re:(注)重要なお知らせです。    
何ならうちがスポンサーになっても構いませんが、失効してしまったドメインはどうしようもありませんね。
それと、著作権侵害の可能性がある部分は是正してもらうことになります。(たとえば、このサイトのデザインはFC2ブログの公式テンプレート universe からのパクリですよね)
変更する場合には、デザインに関してはうちで手配します。


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

Name: たかぎ [URL]  ..上級者(18,259ポイント)   Date: 2007/11/24(土) 13:31   No:12071     
Title: Re:(注)重要なお知らせです。    
さっき whois で調べてみたところ、huu.cc はお名前.comで取得されたようですね。
それであれば、レンタルサーバーのアカウントを消されてもドメインは生きていますね。




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

Name: tkmakwins15 [URL]  ..プログラマー(39,545ポイント)   Date: 2007/11/24(土) 15:24   No:12073     
Title: Re:(注)重要なお知らせです。    
->管理人さん

僕は応援しますよ。万が一URL変更になってもHPからリンクします。


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

Name: 大工  ..プログラマー(26,108ポイント)   Date: 2007/11/24(土) 15:31   No:12074     
Title: Re:(注)重要なお知らせです。    
なんか大変なことになってる・・・


質問したいんやけど・・・大丈夫なんかな?

管理人さん>

頑張って!


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

Name: 管理人 [URL]  ..伝説のハッカー(458,141ポイント)   Date: 2007/11/24(土) 19:27   No:12079     
Title: Re:(注)重要なお知らせです。    
>たかぎさん
ありがとうございます。
自分のHPなので自分で出来る範囲で何とかしようと思います。
ドメインなどに関しては詳しくないのでよくわかりません。

>tkさん
ありがとうございます。
FC2と連絡をしてみるのが先決ですね。

>大工さん
この掲示板はFc2と無関係で、この掲示板も更に他の有料掲示板のレンタルです^^;
こちらの掲示板は良心的で、以前知らずに2ヶ月位滞納していましたが、何も言われませんでしたm(_ _)m


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

Name: tkmakwins15 [URL]  ..プログラマー(39,671ポイント)   Date: 2007/11/24(土) 23:40   No:12081     
Title: Re:(注)重要なお知らせです。    
->管理人さん

僕はメールフォームにFC2の無料サービスを使っているのですが、FC2がここまで醜いものだとは…
後質問ですが、FC2の有料ホームページサービスでしょうか?それともレンタルサーバーでしょうか?
レンタルサーバの場合、滞納額の年率18%の利子だそうです。

見当違いでしたら混乱を招く恐れのある文章を書いてしまってすいません。


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

Name:  ..上級者(18,348ポイント)   Date: 2007/11/25(日) 16:46   No:12093     
Title: Re:(注)重要なお知らせです。    
広告は入れても良いと思う…危険そうなのはやばいけどw

僕が使っているのはめがねクラブ(???)と言う所ですが、広告がどう可能&CGI可能…容量がとても少ないが・・・・・・・・・・・・・

トップページには最適ではないかと思いますw

御武運を!!


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

Name: 木霊  ..ぴよぴよ(901ポイント)   Date: 2007/11/26(月) 01:17   No:12102     
Title: Re:(注)重要なお知らせです。    
->管理人さん

月並みな言葉しか思いつきませんが、頑張ってください。


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

Name: 管理人 [URL]  ..伝説のハッカー(458,786ポイント)   Date: 2007/11/26(月) 01:52   No:12105     
Title: Re:(注)重要なお知らせです。    
>tkさん
滞納額の年率18%って・・。
めちゃくちゃ安いですね^^;
もっと詐欺的な法外な料金の請求とか来るのかと思っていました・・。
まぁそんな経営形態だとそこまで大きくなってないでしょうね^^;
ありがとうございます。

>雷さん
広告は色々あるようですね。
私が利用してみたのはTrustClick(トラストクリック)とマッチスマート(Matchsmart)です。
まだどうしようか迷っているので、タグは貼ってないのですが・・。
http://superguide.jp/click_jp.htmこの辺で探してみました。
多すぎてどれを利用すればいいのか解らないというのもあります・・。
お言葉ありがとうございますm(_ _)m

>木霊さん
思ってたより最悪の事態にならずにすみそうです、お騒がせしました^^;


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

Name: tkmakwins15 [URL]  ..プログラマー(39,766ポイント)   Date: 2007/11/26(月) 16:30   No:12119     
Title: Re:(注)重要なお知らせです。    
とりあえず、大丈夫そうですね。でも、特別料金が気になるところですね…

ところで、今は更新ができない状況なんですよね?
ちょっと失礼ですが、更新できるようになったら、HP表示フォントに「メイリオ」をいれてみてはどうでしょうか?
結構いいフォントです。(XPなのですが、画像で見た事があります。あれはよさそうです。)


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

Name: 管理人 [URL]  ..伝説のハッカー(459,469ポイント)   Date: 2007/11/26(月) 17:45   No:12123     
Title: Re:(注)重要なお知らせです。    
なるほど、メイリオは、Vistaを使っている人か、フォントを自ら入れている人以外にはフォントメイリオとしては見えないんでしょうか?

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

Name: tkmakwins15 [URL]  ..プログラマー(39,801ポイント)   Date: 2007/11/26(月) 17:53   No:12125     
Title: Re:(注)重要なお知らせです。    
CSSとかのフォント指定に

"メイリオ"

というのを加えるだけでいいはずです。


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



Name: aaa  ..ぴよぴよ(3ポイント)   Date: 2007/11/26(月) 11:39   No:12110       
Title: 最後の    
プログラムのダウンロードはないのでしょうか??
返答お願いいたします


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


Name: aaa  ..ぴよぴよ(21ポイント)   Date: 2007/11/26(月) 11:40   No:12111     
Title: Re:最後の    
ここのサイトのソース プロジェクトはありませんか??

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

Name: 管理人 [URL]  ..伝説のハッカー(459,092ポイント)   Date: 2007/11/26(月) 12:03   No:12112     
Title: Re:最後の    
すみません、意味がよくわかりません。
タイトルの「最後の」とは何の最後のですか?
プログラムのとは何のプログラムですか?
ここのサイトのソースとはどういう意味ですか?


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

Name: aaa  ..ぴよぴよ(46ポイント)   Date: 2007/11/26(月) 12:12   No:12113     
Title: Re:最後の    
このサイトに乗ってるプロジェクトはありますか??

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

Name: 管理人 [URL]  ..伝説のハッカー(459,217ポイント)   Date: 2007/11/26(月) 12:38   No:12114     
Title: Re:最後の    
すみません、何のプロジェクトでしょうか。何かのプログラムのプロジェクトファイルでしょうか?
それにしても、コンパイラが解らないとお答えできませんし。
いかについての補足お願いします。

・タイトルの「最後の」とは何の最後のですか?
・プログラムのとは何のプログラムですか?
・ここのサイトのソースとはどういう意味ですか?
・お使いのコンパイラは何ですか?


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

Name: aaa  ..ぴよぴよ(61ポイント)   Date: 2007/11/26(月) 13:12   No:12115     
Title: Re:最後の    
38までのもののプログラムです

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

Name: \n  ..ぴよぴよ(132ポイント)   Date: 2007/11/26(月) 13:41   No:12116     
Title: Re:最後の    
日本語が通じないのかなぁ?

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

Name: やそ  ..かけだし(2,257ポイント)   Date: 2007/11/26(月) 16:23   No:12118     
Title: Re:最後の(←憶測)    
やそです。
憶測ですが、
『シューティングゲームの館』が項番38が最後になっているのでそのことを言っているのだと思われまふ。
1から順に閲覧して、ダウンロードして、次を閲覧して・・・という労力を省きたいと言う横着者の要望ではないでしょうか?


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

Name: 管理人 [URL]  ..伝説のハッカー(459,429ポイント)   Date: 2007/11/26(月) 17:43   No:12122     
Title: Re:最後の(←憶測)    
>やそさん
ありがとうございます、そのようですね。
今現在紹介しているコードのプロジェクトはアップしているはずなんですが・・。

>aaaさん
説明はもう少しわかりやすく、厳密に書いてください。
題名が「最後の」で質問が「プログラムのダウンロードはないのでしょうか」では何のことかまったくわからないので。
また、先ほども申し上げましたが、ご自分のコンパイラについての記述もしてください。何のプロジェクトをアップすればいいのかわかりません。
また、現在アップしている33章までのVisualStudio2005で開けるプロジェクトはアップ済みです。
まだ作成していないページのプロジェクトはアップしていません。


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



Name: -U-  ..ぴよぴよ(377ポイント)   Date: 2007/11/26(月) 00:12   No:12098       
Title: 型変換?    
はじめまして。-U-と申します。

1,5,3,

という風に、カンマで区切られた文字を読み込んで、String::Splitを用いていったん配列に格納し、
次にIntに型変換し直して別の配列に格納したいのですが、上手く行きません。
どなたか宜しければ助けていただきたいです。

tempstr: String::Splitでいったん格納させるString配列
rstr: 文字列として「1,5,3,」が入っているString
lastint: 最後に数値として格納するint配列



tempstr = rstr->Split(delimiter);

IEnumerator* Enum = tempstr->GetEnumerator();

int j = 0;

while (Enum->MoveNext()) {

String* s = __try_cast<String*>(Enum->Current);
Debug::WriteLine(s);
lastint[j] = Convert::ToInt16(s);
j++;

}



コンパイルは通りますが、実行すると
System.FormatException: 入力文字列の形式が正しくありません。

というエラーが出てしまいます。
lastint[j] = Convert::ToInt16(s);の部分で引っかかっているようですが、原因が分かりません。

マニュアルも調べてみたのですが、Stringをintにすることは出来るようでした。
なぜintに変換できないのでしょうか?
宜しくお願いします。


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


Name: Blue  ..入門者(4,661ポイント)   Date: 2007/11/26(月) 00:21   No:12099     
Title: Re:型変換?    
とりあえず環境はきちんと明記しましょう。

>lastint: 最後に数値として格納するint配列
ならば
>Convert::ToInt16
ではなくて ToInt32 なのでは?
(int=Int32)

>Debug::WriteLine(s);
でちゃんとした数字になっていますか?

それと
>IEnumerator* Enum = tempstr->GetEnumerator();
>while (Enum->MoveNext()) {
普通にfor文使わないのは何か意味があるのでしょうか?

for (int j = 0; j < tempstr->Count; ++j)

{
String* s = tempstr[j];
}

# VS2005ならfor eachが使えて便利なんですけどね。


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

Name: Blue  ..入門者(4,851ポイント)   Date: 2007/11/26(月) 00:34   No:12100     
Title: Re:型変換?    
ちなみに
>「1,5,3,」
だと要素数が4の配列になります。
最後の要素は空文字になり、それに対するToInt16メソッドは失敗します。

VS2005で/clr:oldSyntaxで試したコード
int main()

{
System::String* rstr = S"1,5,3,";
System::String* tempstr[];
int lastint __gc[];

System::Char delimiter[] = {L','};
tempstr = rstr->Split(delimiter);

lastint = __gc new int __gc[tempstr->Count];
for (int j = 0; j < tempstr->Count; ++j)
{
lastint[j] = System::Convert::ToInt32(tempstr[j]);
}

return 0;
}



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

Name: -U-  ..ぴよぴよ(598ポイント)   Date: 2007/11/26(月) 00:59   No:12101     
Title: Re:型変換?    
申し訳ありませんでした。
環境はMicrosoft Visual Studio C++ 2003.NETのWindowsフォームです。

教えて頂いた通りやってみたのですが、やはり同じエラーが出てしまいました。

System.FormatException: 入力文字列の形式が正しくありません。
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Int32.Parse(String s, NumberStyles style, IFormatProvider provider)
at System.Int32.Parse(String s)
at System.Convert.ToInt32(String value)

エラーの全文です。

直前のDebug::WriteLineなどを見ても、どうやら一番最初に
lastint[j] = System::Convert::ToInt32(tempstr[j]);
がある場所でエラーが起きてしまっているようです。


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

Name: Blue  ..初心者(5,245ポイント)   Date: 2007/11/26(月) 02:27   No:12108     
Title: Re:型変換?    
もう答えは書いたつもりなんですけど。

>>「1,5,3,」
>だと要素数が4の配列になります。
>最後の要素は空文字になり、それに対するToInt16メソッドは失敗します。

空文字列は0にするのか、
それともないものとするのかどちらなんでしょうかね?

後者だと配列数が変わるので、int型配列でもつとめんどくさそうですけど。
(最初に配列数を決めてnewしているから。ArrayListだったらいいんだけど。
# .NET Framework2.0(VS2005)以降のList ジェネリック クラスならもっと簡単。 )


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

Name: -U-  ..ぴよぴよ(685ポイント)   Date: 2007/11/26(月) 11:14   No:12109 解決!     
Title: Re:型変換?    
lastintに格納するにあたって、rstrの数値が「1」「5」「3」ではなく
「1,」「5,」「3,」になっていただけでした。

手違いでお手数おかけしてすいません。ありがとうございました!


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



Name: ネイチャー  ..ぴよぴよ(20ポイント)   Date: 2007/11/25(日) 07:23   No:12089       
Title: 感想    
四聖 龍陣録をやらせてもらいました。

とても楽しかったです!
C言語であんなのが作れるんですねぇ。

僕もがんばりたいです。


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


Name: 管理人 [URL]  ..伝説のハッカー(459,047ポイント)   Date: 2007/11/26(月) 01:59   No:12107     
Title: Re:感想    
ネイチャーさん、初めまして。
遊んでいただいてありがとう御座います。
駆け出しの私が言うのもなんですが、C言語って何でも出来ますよ。
ワードだってエクセルだってCで作れますし。
3DオンラインRPGなんかも作れると思います。
ゲームは作り出すと面白いので、もし興味があれば、うちのサイトのゲームプログラミングの館などものぞいてみてくださいm(_ _)m
ご感想をお寄せいただきありがとうございました。
(もし次投稿なさる場合は他にこの話題についてのトピが別にありますので「〜四聖龍神録〜ver.2配布」よければ、そちらにお願いします。)


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



Name: かめ  ..かけだし(1,126ポイント)   Date: 2007/11/25(日) 22:29   No:12097       
Title: 課題がわかりません…    
10問のクイズを出題してその正解、不正解を表示させるプログラムを作る

最後に正解数を表示させる

という課題が出ました。

わたしはクイズを出題し、その正解、不正解を表示させるところまではできたんですが正解数を表示させる方法がわかりません。

よかったら教えてください。

#include<windows.h>

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){

TCHAR chStr[128];

int on_button;
int t;
int total_t;

on_button=MessageBox(NULL , TEXT("OKを押すとクイズを始めるよ") ,
TEXT ("スタート") ,MB_OK);
/*第1問*/
on_button=MessageBox(NULL ,TEXT("1+1=3である"),
TEXT("第1問"),MB_YESNO);

if(on_button==IDNO){
MessageBox(NULL,TEXT("正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}else{
MessageBox(NULL,TEXT("不正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}
/*第2問*/
on_button=MessageBox(NULL ,TEXT("1+1=3である"),
TEXT("第2問"MB_YESNO);
if(on_button==IDNO){
MessageBox(NULL,TEXT("正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}else{
MessageBox(NULL,TEXT("不正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}
/*第3問*/
on_button=MessageBox(NULL ,TEXT("1+1=3である"),
TEXT("第3問"),MB_YESNO);
if(on_button==IDNO){
MessageBox(NULL,TEXT("正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}else{
MessageBox(NULL,TEXT("不正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}
/*第4問*/
on_button=MessageBox(NULL ,TEXT("1+1=3である"),
TEXT("第4問"),MB_YESNO);
if(on_button==IDNO){
MessageBox(NULL,TEXT("正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}else{
MessageBox(NULL,TEXT("不正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}
/*第5問*/
on_button=MessageBox(NULL ,TEXT("1+1=3である"),
TEXT("第5問"),MB_YESNO);
if(on_button==IDNO){
MessageBox(NULL,TEXT("正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}else{
MessageBox(NULL,TEXT("不正解だよ\nOKで次の問題に進むよ"),
TEXT("判定"),MB_OK);
}

return 0;
}


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


Name: 管理人 [URL]  ..伝説のハッカー(458,890ポイント)   Date: 2007/11/26(月) 01:54   No:12106     
Title: Re:課題がわかりません…    
文字列を表示させるその中に数字を入れる方法がわからないという解釈でいいのでしょうか?
sprintf関数などで、簡単に文字を配列にいれられるので、sprintf関数について調べてみてください。
http://www.google.co.jp/search?hl=ja&q=sprintf&lr=

標準関数の使い方がわからないとき、逆引き時点が結構使えます。
http://always-pg.com/c/runtime_rd/


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



Name: ひろ  ..入門者(3,194ポイント)   Date: 2007/11/22(木) 00:25   No:12017       
Title: タブや改行文字の削除    
Visual Studio 2003.NETを使って、Visual C++でプログラムを組んでいます。

あるString文字列があるのですが、その末端に、いくつかのタブや改行文字が入ってしまい、
ファイルに保存するときに困ったので、そのタブや改行文字を消す方法を考えています。

下に、今のソースを書いてみました。この部分では、タブを消そうとしています。



String *temp; //この文字列の末端にタブや改行文字が入ってしまう。

while(temp->EndsWith("\t")){ //tempの最後がタブで終わっている限り繰り返す?
temp->Remove(temp->Length - 2, 2); //tempの文字数から2引いた位置から2文字消す(最後の2文字を消す)
}



こんな感じにしてみましたが、どうやらwhileから抜けられないらしく、フリーズしてしまいます。

このような条件文ではいけないのでしょうか?簡単な質問でしたら申し訳ないです。


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


Name: ベリ工  ..ぴよぴよ(154ポイント)   Date: 2007/11/22(木) 00:57   No:12019     
Title: Re:タブや改行文字の削除    
>String *temp; //この文字列の末端にタブや改行文字が入ってしまう。
>
>while(temp->EndsWith("\t")){ //tempの最後がタブで終わっている限り繰り返す?
>temp->Remove(temp->Length - 2, 2); //tempの文字数から2引いた位置から2文字消す(最後の2文字を消す)
>}
>
>こんな感じにしてみましたが、どうやらwhileから抜けられないらしく、フリーズしてしまいます。

temp->Remove(temp->Length - 2, 2);
ではなく
temp = temp->Remove(temp->Length - 2, 2);
では?

また、\tは2文字ではなく1文字分では?
つまり
temp = temp->Remove(temp->Length - 1, 1);
ではないですか?

また、
while(temp->EndsWith("\t"))
としてますが、whileループする必要性が見受けられません。単純に

if ( temp->EndsWith("\t") ) {
temp = temp->Remove(temp->Length - 1, 1);
}

とすれば良いのでは?


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

Name: ベリ工  ..ぴよぴよ(263ポイント)   Date: 2007/11/22(木) 01:18   No:12021     
Title: Re:タブや改行文字の削除    
訂正します。
>while(temp->EndsWith("\t"))
>としてますが、whileループする必要性が見受けられません。
は、
複数のタブが連続した場合はループする必要がありますね。
例えば
temp = "あいうえお\t\t\t";
など・・・。

まぁ、それでしたら
if ( temp->Trim()->Length > 0 ) {
temp = temp->Substring(0, temp->IndexOf("\t"));
}
でも良いかもしれませんね(未確認ですが)。


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

Name: ひろ  ..入門者(3,418ポイント)   Date: 2007/11/22(木) 11:19   No:12029     
Title: Re:タブや改行文字の削除    
ありがとうございました!無事タブが消えました。

しかし、改行文字が消えません(汗
改行は"\n"か、Environment::NewLineかと思っていたのですが、どうやら違うみたいです…。



それと、関係ないことを合わせて質問してしまって申し訳ないのですが、
ListViewでインデックスをint型でとりたい場合はどうすればいいのでしょうか?

ListBoxの、SelectedIndexのような感じです。
SelectedIndicesというメソッドでは、違う型で取得してしまうので…。
重ね重ね質問してすいません。


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

Name: ベリ工  ..ぴよぴよ(578ポイント)   Date: 2007/11/23(金) 01:45   No:12037     
Title: Re:タブや改行文字の削除    
>しかし、改行文字が消えません(汗
>改行は"\n"か、Environment::NewLineかと思っていたのですが、どうやら違うみたいです…。
以下のようにサンプル的に実行しましたが改行"\n"でもちゃんと動作しましたが?

String *strWork = S"あいうえお\n";

if ( strWork->EndsWith(S"\n") ) {
strWork = strWork->Remove(strWork->Length - 1, 1);
}


>ListBoxの、SelectedIndexのような感じです。
>SelectedIndicesというメソッドでは、違う型で取得してしまうので…。
MSDNヘルプ見ました?
以下MSDNから

選択された項目のインデックスを格納している ListView.SelectedIndexCollection 。項目が現在選択されていない場合は、空の ListView.SelectedIndexCollection が返されます。

とあります。なのでSelectedIndexCollectionを調べれば良いです。
SelectedIndexCollectionをMSDNで調べると

リスト ビュー コントロール内で選択されている項目のインデックスを格納するコレクションを表します。

と書いてあります。なのでSelectedIndexCollectionのItemの値が
ListBoxのSelectedIndexに相当すると捉えることができますよね?

あとはListViewのItemにSelectedIndexCollectionのItemを与えると
リストビューコントロール内で選択されている"値そのもの"が取得できるのではないでしょうか?
未確認なので分かりませんが、MSDN読んだ限りではそんな感じで使用するように見えました。

あとはご自分で確認されてください。


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

Name: ひろ  ..入門者(3,473ポイント)   Date: 2007/11/25(日) 16:18   No:12091     
Title: Re:タブや改行文字の削除    
返事が遅れてごめんなさい…。

早速やってみます!
分かり易い説明、本当にありがとうございました!


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

Name: ひろ  ..入門者(3,494ポイント)   Date: 2007/11/25(日) 16:18   No:12092 解決!     
Title: Re:タブや改行文字の削除    
解決にするのを忘れてました…すいません(汗)

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



Name:  ..ぴよぴよ(137ポイント)   Date: 2007/11/24(土) 16:36   No:12077       
Title: サンプルプログラムでの質問    
はじめまして藍といいます 初めて質問させてもらいます。
シューティングゲームの館の6. 先ほどのプログラムを分割してみるのところのサンプルプログラムを実行してみたところ、デバッグの時点ではサンプル通り実行できたのですが、Debugファイルの中のexeを実行してみると、FPSだけ表示され、ほかの画像が一切表示されなく真っ暗な画面という事態に陥っています。
もともとそういうプログラムなのか?それとも、私のPCとの相性がよくないのか?まったくわからない状態です。
OSはXPを使っていて、Microsoft Visual Studio 2005とMicrosoft Visual C++ 2005 Express Edition両方でやってみましたが結果は同じでした。
デバッグ時点で画像が表示されているので、ファイルの置き場所などはあっていると思っているのですが、対処方法や解決策などありましたら教えてください。お願いします。


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


Name: YKT  ..ぴよぴよ(197ポイント)   Date: 2007/11/24(土) 18:26   No:12078     
Title: Re:サンプルプログラムでの質問    
私はまだC言語も勉強したてで、回答するのも初めてなのですが、同じ事があったので既出かもしれませんが、Debugフォルダの一つ上のプロジェクト名のフォルダの中にDebug内のプロジェクト名.exeを入れたらデバックした所と同じ画面がでました。

Visual Studio 2005\Projects\○○(プロジェクト名)\Debug
                  ↑ここに.exeを移動させる
でもしかしたら他のPCではうまくいかないかもしれませんが、試してみてうまくいけば幸いです。


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

Name: 管理人 [URL]  ..伝説のハッカー(458,236ポイント)   Date: 2007/11/24(土) 19:29   No:12080     
Title: Re:サンプルプログラムでの質問    
YKTさんの仰るとおり、一つ上のフォルダにうつせば実行できます。
というのも、イメージファイルの指定場所は、プロジェクトファイルのある場所からみた相対場所ですので、実行ファイルを直接実行するときは、プロジェクトファイルがある階層におく必要があります。


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

Name:  ..ぴよぴよ(194ポイント)   Date: 2007/11/25(日) 02:47   No:12087 解決!     
Title: Re:サンプルプログラムでの質問    
YTKさん管理人さん回答ありがとうございました!無事にexeの場所を変えるとちゃんとデバッグ通りなりました! これでどんどん作っていける! 本当にお二人さまありがとうございました!

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

Name: 管理人 [URL]  ..伝説のハッカー(458,319ポイント)   Date: 2007/11/25(日) 03:06   No:12088     
Title: Re:サンプルプログラムでの質問    
画像はロードする時、-1が返って来ると、読み込めなかったことを示すので、-1が返った時にはエラーになるようにすると、このような不具合に思える現象が少なくなるかもしれません。


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



Name: 大工  ..プログラマー(26,482ポイント)   Date: 2007/11/24(土) 23:48   No:12082       
Title: ライフゲーム    
ライフゲームの質問トピがありましたが内容が違うので新しくトピを立てます.

図1

□■□□□□□
□□□□□□□
□□□□□□□
□□□□□□□
□□□□□□□
■□■□□□□
■■□□□□□

図2

□□□□□□□
□□□□□□□
□□□□□□□
□□□□□□□
□■□■□□□
□■■□□□□
□□■□□□□

図1と図2のパターンとしては一致しますが, それをどのように判定したらよいでしょうか?
生存領域(

図1だと

□■□
□□□
□□□
□□□
□□□
■□■
■■□

図2だと

■□■
■■□
□■□

です. つまり, 現在のパターンを表示するのに必要最低限の升目です.
)を確保するとこまで出来たんですが. それらをどのように一致させればいいのか分かりません・・・


ご協力ねがいます。。。


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


Name: バグ  ..比類無きプログラマー(65,461ポイント)   Date: 2007/11/25(日) 00:18   No:12084     
Title: Re:ライフゲーム    
何をもって同じと判別するのか、その基準を教えて下さい。

たとえば、比較する最小エリアは3×3マスである…とかです。

そういった判定基準がなければ、難しいと思いますよ。


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

Name: 大工  ..プログラマー(26,537ポイント)   Date: 2007/11/25(日) 00:56   No:12085     
Title: Re:ライフゲーム    
バグさん>

あー、そうですよね・・・・

現在, データ構造としては生存領域を1つ1つリスト構造のように登録しています.

ソースを添付します.

このソースでは縦と横が同じもの同士しか判定してません.


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

Name: 大工  ..プログラマー(26,634ポイント)   Date: 2007/11/25(日) 01:09   No:12086     
Title: Re:ライフゲーム    
生存領域を絞る際に最小(この場合は3*3)のものに絞る方法も考えましたが, これだと先に最小のものがなくてはならず図1→図2のような進み方(バラバラのものから→1かたまりのもの)だと1かたまりがないのでこの方法では出来ません・・・。

1から始めたほうがはやいんでしょうか?


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



Name: だいちゃん  ..ぴよぴよ(24ポイント)   Date: 2007/11/23(金) 18:29   No:12053       
Title: 文字列の移し方    
はじめまして。だいちゃんともうします。

超初心者の質問で申し訳ないのですが、ご教授お願いします。

文字列
char data[1024]
"ヤマダ タロウ 20トウキョウト シブヤク ・・・・
というデータ(csvでない)がありそのデータを

char name[20]
char age[3]
char address1[10]
char address2[20]


というような桁数を定義した項目に移して処理を行いたいのですが
dataから各項目の文字列へ一度にデータを移す方法はないでしょうか?
文字列の定義の仕方で解決できるか調べたのですが、わかりませんでした。
よろしくお願いいたします。



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


Name: box  ..比類無きプログラマー(94,180ポイント)   Date: 2007/11/23(金) 18:55   No:12054     
Title: Re:文字列の移し方    
元の文字列で、氏名、年齢、住所などの
項目の区切りを示す情報は全くないのでしょうか?


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

Name: だいちゃん  ..ぴよぴよ(50ポイント)   Date: 2007/11/23(金) 23:56   No:12058     
Title: Re:文字列の移し方    
バイト位置で判断できます
1〜20バイト目が氏名
21〜23バイトが年齢という感じです


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

Name: box  ..比類無きプログラマー(94,526ポイント)   Date: 2007/11/24(土) 00:27   No:12059     
Title: Re:文字列の移し方    
ベタな書き方をすれば、こんな感じでしょうか。



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

#define LEN_NAME (20)
#define LEN_AGE (3)
#define LEN_ADDRESS1 (10)
#define LEN_ADDRESS2 (20)

typedef struct person {
char name[LEN_NAME+1]; // +1は終端の'\0'用(以下同様)
char age[LEN_AGE+1];
char address1[LEN_ADDRESS1+1];
char address2[LEN_ADDRESS2+1];
} Person;

int main(void)
{
// 1 2 3 4 5
// 12345678901234567890123456789012345678901234567890123
char data[1024] = "山田太郎 20 東京都 渋谷区神南1-1-1 ";
Person person;

strncpy(person.name, &data[0], LEN_NAME);
person.name[LEN_NAME] = '\0';
strncpy(person.age, &data[LEN_NAME], LEN_AGE);
person.age[LEN_AGE] = '\0';
strncpy(person.address1, &data[LEN_NAME+LEN_AGE], LEN_ADDRESS1);
person.address1[LEN_ADDRESS1] = '\0';
strncpy(person.address2, &data[LEN_NAME+LEN_AGE+LEN_ADDRESS1], LEN_ADDRESS2);
person.address2[LEN_ADDRESS2] = '\0';

printf("%s\n", person.name);
printf("%s\n", person.age);
printf("%s\n", person.address1);
printf("%s\n", person.address2);
return 0;
}


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

Name: フリオ  ..上級者(16,318ポイント)   Date: 2007/11/24(土) 02:45   No:12064     
Title: Re:文字列の移し方    
 
 この掲示板は、マルチポストは禁止です。

 こんな感じでいいのでしょうか。

#include <stdio.h>

int main(void)
{
char *data = "山田太郎 20 東京都 渋谷区神南1-1-1 ";
char name[21], age[4], adress1[11], adress2[21];

sprintf(name, "%.20s", data);
sprintf(age, "%.3s", data + 20);
sprintf(adress1, "%.10s", data + 23);
sprintf(adress2, "%.20s", data + 33);
printf("%s|\n", name);
printf("%s|\n", age);
printf("%s|\n", adress1);
printf("%s|\n", adress2);
return 0;
}

 



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

Name: フリオ  ..上級者(16,553ポイント)   Date: 2007/11/24(土) 06:27   No:12065     
Title: Re:文字列の移し方    
 
 "一度に"だと、こっちの方がいいでしょうか。

#include <stdio.h>

int main(void)
{
char *data = "山田太郎 20 東京都 渋谷区神南1-1-1 ";
char name[21], age[4], adress1[11], adress2[21];

sscanf(data, "%20c%3c%10c%20c", name, age, adress1, adress2);
name[20] = age[3] = adress1[10] = adress2[20] = 0;
printf("%s|\n", name);
printf("%s|\n", age);
printf("%s|\n", adress1);
printf("%s|\n", adress2);
return 0;
}


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

Name: だいちゃん  ..ぴよぴよ(79ポイント)   Date: 2007/11/24(土) 23:50   No:12083 解決!     
Title: Re:文字列の移し方    
ありがとうございました!
教えていただいた方法でできると思います。
参考にさせていただきます。


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



Name: tkmakwins15 [URL]  ..プログラマー(39,406ポイント)   Date: 2007/11/24(土) 11:07   No:12067       
Title: .NETにおける多言語の併用    
.NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?
とりあえず併用するコードを書いて書いた言語に合わせて拡張子をつけるところまでやりましたが、
そこからどのような風にプロジェクトを組めばいいのか分かりません。教えてください。

また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?

環境はVS2005の学割版です。よろしくお願いします。


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


Name: べり工  ..ぴよぴよ(65ポイント)   Date: 2007/11/24(土) 12:51   No:12068     
Title: Re:.NETにおける多言語の併用    
>.NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?
これ(併用)の意味が分からないのですが。。。
単にC#で作ったDLLをC++/CLIからコールしたい?という意味なら
単純にDLLを参照設定するだけで使用できます。
またその逆(C++/CLIで作成したDLLをC#でコールする)でも同様です。

>とりあえず併用するコードを書いて書いた言語に合わせて拡張子をつけるところまでやりましたが
これまた意味が分かりません。
書いた言語に合わせて拡張子を付ける?
C++であれば*.hまたは*.cppですよね?C#であれば*.csですよね?

>そこからどのような風にプロジェクトを組めばいいのか分かりません。教えてください。
何がしたいのか分かりません。
単にC#とC++/CLIをソリューションプロジェクトとして管理したいという話ですか?
であればソリューションプロジェクトに追加したいプロジェクトを追加すれば
C#だろうがVB.NETだろうがC++/CLIだろうが管理できます。

>また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?
併用の意味が分かりません。C++/CLIのプロジェクトにアンマネージプロジェクトを
ソリューションプロジェクトとして追加するという意味ですか?
または、アンマネージDLLをマネージアプリケーションに取り込むという意味ですか?
そうであればC#だと[DllImport]命令、C++/CLIであれば
Win APIのLoadLibraryや#importインデクサ、取り込むアンマネージDLLがCOM仕様であれば
CoInitInstanceやATL仕様のコールで呼べます(その場合はレジストリ登録が必要です)。


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

Name: たかぎ [URL]  ..上級者(18,208ポイント)   Date: 2007/11/24(土) 13:26   No:12070     
Title: Re:.NETにおける多言語の併用    
> .NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?

異なる言語を使う場合には静的リンクができません(CとC++なら静的リンク可能です)。
したがって、一方をDLLにして、他方から参照することになります。

> また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?

C++/CLIからであれば、アンマネージドなコードと静的リンクすることができます。
ですから、普通にヘッダをインクルードして使用することができます。


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

Name: tkmakwins15 [URL]  ..プログラマー(39,521ポイント)   Date: 2007/11/24(土) 14:01   No:12072     
Title: Re:.NETにおける多言語の併用    
>単にC#とC++/CLIをソリューションプロジェクトとして管理したいという話ですか?

はい、つまり、C#で書いたコードとC++/CLIで書いたコードを同一のEXEにしたいのですが、それは無理でしょうか?ということです。

全体的に1つのプロジェクトとしてする事はできないでしょうか?


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

Name: GPGA  ..プログラマー(39,383ポイント)   Date: 2007/11/24(土) 15:50   No:12075     
Title: Re:.NETにおける多言語の併用    
一つのソリューションで行うことは可能です。
添付したファイルは、C++でDLLを作成し、C#でその中身を呼び出すプログラムのサンプルです。


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

Name: tkmakwins15 [URL]  ..プログラマー(39,556ポイント)   Date: 2007/11/24(土) 16:32   No:12076 解決!     
Title: Re:.NETにおける多言語の併用    
ということは、二つのプロジェクトをソリューションでまとめて、プロジェクトごとに呼び出し側はEXEを、呼び出されるほうはDLLを作るように設定すればいいということですね。

教えていただきありがとうございました。


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



Name: リラン  ..ぴよぴよ(77ポイント)   Date: 2007/11/23(金) 14:16   No:12040       
Title: 質問なのですが    
タイトル画面

プレー画面

ゲームクリア画面

タイトル画面

プレー画面

上のような感じで処理をしたいのですが
ゲームクリア画面からタイトル画面に戻った後に
もう1度プレーすることができません。
変数などの値が初期値に戻っていないせいだと思うのですが・・・
どうすればいいですか?


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


Name: バグ  ..比類無きプログラマー(65,250ポイント)   Date: 2007/11/23(金) 14:33   No:12042     
Title: Re:質問なのですが    
変数を初期化すればいいのではないでしょうか?

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

Name: リラン  ..ぴよぴよ(116ポイント)   Date: 2007/11/23(金) 14:49   No:12043     
Title: Re:質問なのですが    
DXライブラリを使っているのですが
while文の前で初期化しているので
無理なんです・・・


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

Name: バグ  ..比類無きプログラマー(65,297ポイント)   Date: 2007/11/23(金) 14:58   No:12044     
Title: Re:質問なのですが    
DxLib自体の初期化と、ゲームに使う変数の初期化とでは全く意味が違います。
今回の場合は後者ですから、ループの始めで初期化してやれば解決するはずです。


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

Name: リラン  ..ぴよぴよ(154ポイント)   Date: 2007/11/23(金) 15:09   No:12045     
Title: Re:質問なのですが    
while文の中で初期化するということですか?
キャラクターの位置などの初期化は
while文の前でやっているのでできないです。


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

Name: バグ  ..比類無きプログラマー(65,439ポイント)   Date: 2007/11/23(金) 16:10   No:12046     
Title: Re:質問なのですが    
初期化が不可能だという理由が全く分かりません。
まぁ、ソースコードを見ていないので、これ以上は何とも言えませんが…

タイトル画面

プレー画面

ゲームクリア画面

タイトル画面

プレー画面

少なくとも、こういう流れにしたいのならば、タイトル画面とプレイ画面の間で初期化処理をすればいいだけの話だと思いますよ。

提示されている情報だけでは、これ以上のアドバイスは不可能です。


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

Name: 管理人 [URL]  ..伝説のハッカー(456,156ポイント)   Date: 2007/11/23(金) 16:47   No:12047     
Title: Re:質問なのですが    
仰る意味はわかりますが、機能の分担をさせていたいため起こる事です。しっかりモジュールわけをしたり、きっちり切り離しが出来る書き方をしましょう。
メインループの中に全部処理をわけずに入れてしまっているからでしょう。
今の状態変数でも用意しておいて、その状態変数によって任意の関数を呼んでやるようにすれば解決します。
そうでなくても、初期化関数をiniとでもするなら、初期化させたいときにini関数を呼んでやるだけのことなので、なんら難しくないと思います。

ゲームプログラミングの館にメイン関数の書き方の例をあげています。
別に一般的なやり方なわけでなく、私の勝手な書き方ですが・・。
メイン関数内には関数の呼び出し以外の記述はなるべくかかないようにし、機能の分担をしっかりさせる事で、切り離しが可能になります。

http://l.huu.cc/g/#34

リンク先でいうならfunction_statesが0の時、初期化させるようにしておけば、初期化させたいとき、function_statesを0にするだけでOKです。


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

Name: リラン  ..ぴよぴよ(204ポイント)   Date: 2007/11/24(土) 10:56   No:12066 解決!     
Title: Re:質問なのですが    
返事遅れてすみません。

回答ありがとうございます。

プログラムを書き換えて
実行したところちゃんとできました。

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


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



Name: C.P.P  ..初心者(6,171ポイント)   Date: 2007/11/22(木) 13:01   No:12031       
Title: ループ処理について・・・    
こんにちは。いつもこちらでは大変お世話になっております☆
またまた質問です!いつも質問ばかりして申し訳ありません・・・(>_<)

今回の質問はループ処理についてです。
作成しておりますのは、街並みを作るようなソフトでありまして(まだ練習段階ですのではっきりとは決まっておりません)、マウスによってある範囲をクリックすれば家の描写をします。その家の画像をマウスによって移動しドラッグ&ドロップしたり、大きさを変えたりします。

ここまでは皆様に色々アドバイスをしていただいたおかげで進むことが出来ました。

ここで、分からないところが出てきましたので質問させていただきます。
ある範囲をクリックすれば家の画像が一つ出てきます。
その画像を一つだけでなく、クリックする度に何個も出てくるようにしたいのですが・・・
自分でなんとか試行錯誤を重ね何度やりましても上手くいきませんでした。

ヒントやアドバイスだけでも助かりますので、どうぞご教授お願いいたします。

また、質問の意味や内容が分からない場合には、ご指摘お願いいたします。


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


Name: 管理人 [URL]  ..伝説のハッカー(455,275ポイント)   Date: 2007/11/22(木) 13:45   No:12032     
Title: Re:ループ処理について・・・    
うまく行きませんでした、では、どううまく行かなかったかよくわかりませんが、
一般的に同じような情報を持ったものをいくつも扱う時は、構造体を使うと便利です。
既にお使いかもしれませんが、

x,y座標とどのような家か、表示中かという種類の情報を必ず持つのなら


#define N 30

typedef struct{
int x,y,kind,flag;
}home_t;

home_t home[N];


 
例えばこのような構造体を作ればいいでしょう。
使用中の情報にはフラグを立てるとすれば、

for(i=0;i<N;i++){
if(home[i].flag==0){
home[i].flag=1;//フラグを立てる
home[i].x=マウス.x;
home[i].y=マウス.y;
home[i].kind=種類;
break;
}
}
if(i==N)
printf("登録できませんでした\n");

このように使用することが出来ます。
iがNになっていると言う事は、if文に入らなかったと言う事を意味し、登録できなかったと言う事です。
描画部では

for(i=0;i<N;i++){
if(home[i].flag==1){
DrawGraph(home[i].x,home[i].y,.....);
}
}

 
 

こうして描画してやればいいでしょう。
回答が的外れだとすみません(_ _||)


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

Name: C.P.P  ..初心者(6,090ポイント)   Date: 2007/11/22(木) 16:45   No:12035 解決!     
Title: Re:ループ処理について・・・    
早速の返信ありがとうございます。

多少質問の内容が分かりにくかったみたいで申し訳ございません。
以後気をつけさせていただきます。

それでは早速管理人さんにいただいたアドバイス通りさせていただきます。

大変助かりました♪
ありがとうございました(^o^)


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



Name: ガブリチュウ  ..かけだし(1,077ポイント)   Date: 2007/11/21(水) 12:46   No:12002       
Title: ライフゲームという課題について    
今学校の課題でライフゲームというものがあります
ライフゲームとは・・・そのままコピペします

ライフと呼ばれるゲームがあります.1970年に英国の数学者コンウェイが考案
したもので,碁盤状の升目に初期パターンを作り,時刻とともにそれが変化する様
子を見て楽しむゲームです.
 このゲームで,パターンの現れる宇宙は縦横ともにサイズNの碁盤目状であり,時刻
t で位置(i, j)のセルは, on または off のいずれかの値を取ります.時刻 t+1 で
の位置 (i, j) にあるセルの値は,現在のセルの値およびその周囲の8セルの値によ
り,次の規則により決定されます.
(A)もし,onの値を持つ周囲のセル数が0または1なら,過疎状態のためセルの値は
off となる.
(B)もし,on の値を持つ周囲のセル数が2なら,セルの値は現在の値のままとなる
(C)もし,on の値を持つ周囲のセル数が3なら,適度の密度であるためセルの値は
on となる.
(D)もし,on の値を持つ周囲のセル数が4以上なら,過密状態のためセルの値は
off となる.
 なお規則の適用に当たっては,時刻tでのセルの値を保持したままで,すべてのセル
 の t+1時点での値を一挙に計算するものとします.
 盤のサイズを 5*5 とし,セルが off の状態を"."で, on の状態を"o"で表すと,
 例えば以下のようなパターンの変化が観察される.

..... ..... .....
..... ..o.. .....
.ooo. => ..o.. => .ooo. 周期2で振動
..... ..o.. ..... (ブリンカー)
..... ..... .....

..... ..... .....
.oo.. .oo.. .oo..
.oo.. => .o... => .oo.. 周期2で振動
...oo ....o ...oo
...oo ...oo ...oo

...o. ..... ..... ..... .....
..o.. ..o.o ..o.. ...o. ..o..
..ooo => ..oo. => ..o.o => .oo.. => .o... 周期4で左下へ移動
..... ...o. ..oo. ..oo. .ooo. (グライダー)
..... ..... ..... ..... .....

こんなゲームなんですがこの課題において
「enter キーを押す度に時刻t とその時点での盤面を表示せよ.」
とあるのですがC言語でプログラムが実行中にいつでもenterキーを押すと反応してtや盤面の表示をするにはどうすればいいですか?

scanfを使ってもscanfでプログラムの進行がいったん止まるので使えないんです

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


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


Name: ガブリチュウ  ..かけだし(1,136ポイント)   Date: 2007/11/21(水) 13:00   No:12003     
Title: Re:ライフゲームという課題について    
書き忘れていたことがひとつ
課題は初期盤面を適当にファイルから入力してその初期盤面を表示したあとはenterキーを押すたびにプログラム実行からの時間tとその時点での盤面を表示するというものです


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

Name: バグ  ..比類無きプログラマー(64,917ポイント)   Date: 2007/11/21(水) 13:01   No:12004     
Title: Re:ライフゲームという課題について    
環境はWindowsですか?

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

Name: ガブリチュウ  ..かけだし(1,147ポイント)   Date: 2007/11/21(水) 13:11   No:12005     
Title: Re:ライフゲームという課題について    
環境はWindowsのCygwinで動かしています

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

Name: バグ  ..比類無きプログラマー(64,961ポイント)   Date: 2007/11/21(水) 13:34   No:12006     
Title: Re:ライフゲームという課題について    
ごめんなさい、cygwinは分かりませんm(__)m
VisualStudioならば、conio.hの_kbhit関数でいけると思いますが…


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

Name: ガブリチュウ  ..かけだし(1,189ポイント)   Date: 2007/11/21(水) 22:20   No:12013     
Title: Re:ライフゲームという課題について    
バグさん>>これも一旦とまりそうな感じですね・・・

んー難しいみたいですね・・・
色々試してみます


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

Name: バグ  ..比類無きプログラマー(65,185ポイント)   Date: 2007/11/21(水) 22:57   No:12014     
Title: Re:ライフゲームという課題について    
試してみました?この関数だと止まりませんよ。
もし、WindowsとVisualStudioがあるならば、下記のソースを実行してみてください。

ちなみに、ここのサイトのダウンロードコーナーのカラードロップというゲームとライフゲームは私が作った物ですが、落ち物パズルのカラードロップには_kbhit関数を使用していますから、間違いありません。


#include <stdio.h>
#include <conio.h>
#include <windows.h>

void main(void)
{
char key;
while (1)
{
// 何も押されていなければ
if (_kbhit() == 0)
{
printf("何か押してや〜♪\r");
}
else
{
// キーバッファの中から押されたキー情報を取り出す
key = (char)getch();
printf("ズバリ! [%c] を押しましたね!\n", key);
}

// CPUに負担を掛けない為のWAIT
Sleep(100);
}
}


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

Name: toyo  ..初心者(5,530ポイント)   Date: 2007/11/22(木) 09:30   No:12026     
Title: Re:ライフゲームという課題について    
enterキーを押すたびに時間が1個進むという意味じゃないのかな
ライフゲームは途中経過を見るのが楽しいのであってenterキー押したら何もなかったじゃつまらないです


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

Name: ガブリチュウ  ..かけだし(1,371ポイント)   Date: 2007/11/22(木) 09:49   No:12027 解決!     
Title: Re:ライフゲームという課題について    
バグさん>>>Visual Studioは持ってないですね・・・ためしにCygwinでやってみてもはじかれました

toyoさん>>>どうもそれみたいですね。ネット上のライフゲームをためしてみたら絶えず変化しているので途中経過がわからないと課題にならないですね。

なんかものすごい勘違いをしていたみたいです(´Д`;)
バグさん勘違いに付き合ってもらってすいません
そのkbhit関数は何かに使えそうなので保存して使わせてもらいます(Visual Studioをゲットしてから)
みなさんありがとうございました


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

Name: バグ  ..比類無きプログラマー(65,232ポイント)   Date: 2007/11/22(木) 11:13   No:12028     
Title: Re:ライフゲームという課題について    
解決はしたみたいですが、簡単なサンプルを作ってみましたので、よかったら参考にしてください(^_^;)
操作方法は…

Enter … 世代を進める
S   … 現状を保存する
L   … ファイルから読み込む
E   … 終了

となっています。


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

Name: ガブリチュウ  ..かけだし(1,435ポイント)   Date: 2007/11/22(木) 15:53   No:12034 解決!     
Title: Re:ライフゲームという課題について    
バグさん>>>なんかすごい機能ついてるΣ(゚Д゚
参考にさせてもらいますm(_ _)m


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



Name: 自由の天使  ..ぴよぴよ(492ポイント)   Date: 2007/11/21(水) 12:33   No:12000       
Title: 無題    
いつもありがとうございます。

質問なのですが、”GetHitKeyStateAll( key );”のよって取得される入力バッファをクリア(初期の状態)にしたいのですが、なにか方法はありますでしょうか?

よろしくお願いします。


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


Name: 管理人 [URL]  ..伝説のハッカー(453,770ポイント)   Date: 2007/11/21(水) 21:30   No:12011     
Title: Re:無題    
GetHitKeyStateAllで入る情報はバッファにたまるわけではありません。
今の入力状態を格納するものですから、仮にエンターを100連打したとしても、関数を呼んだ瞬間エンターが押されていなければ、キーの入力はない状態になります。

バッファを利用するにはこちらを利用します。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html#R5N25


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

Name: 自由の天使  ..ぴよぴよ(508ポイント)   Date: 2007/11/22(木) 12:20   No:12030 解決!     
Title: Re:無題    
わかりました。

ありがとうございます!


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



Name:  ..かけだし(1,156ポイント)   Date: 2007/11/21(水) 08:20   No:11994       
Title: 行列の積のもとめかたについて    
大学でC言語を習い始めて約1ヶ月の超初心者です。

以下のような正方行列Aとベクトルxの積を求めたいのですがもとめかたがわかりません。
間違っていますが一応自分が書いたプログラムを載せておきます。

1.00 4.00 7.00 0.11
2.00 5.00 8.00 0.22
3.00 6.00 9.00 0.33


#include <stdio.h>

int main()
{
int i,j;
double a[3][3]={{1.00,4.00,7.00},
{2.00,5.00,8.00},
{3.00,6.00,9.00}};

double b[3]={0.11,0.22,0.33};
double c[3],sum;
sum=0.0;

 printf("Ax=\n");

for(i=0;i< 3;i++){
for(j=0;j<1;j++)
sum+=a[i][j]*b[i];
c[i]=sum;
printf("%f\n",c[i]);
}


回答よろしくお願いします。


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


Name:  ..かけだし(1,268ポイント)   Date: 2007/11/21(水) 08:39   No:11995     
Title: Re:行列の積のもとめかたについて    
すみません。
プログラムの下の方に
return 0;

}

が抜けてました。
それと正方行列Aは
1.00 4.00 7.00
2.00 5.00 8.00
3.00 6.00 9.00
でベクトルxは
0.11
0.22
0.33
をさします。わかりにくい表記ですみません。


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

Name: 組木紙織  ..プログラマー(25,537ポイント)   Date: 2007/11/21(水) 08:44   No:11996     
Title: Re:行列の積のもとめかたについて    
行列とベクトルの積の定義は分かりますか?

殆どあっているので、定義とアルゴリズムを比較すれば、想定通りの実行結果になると思います。


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

Name:  ..かけだし(1,330ポイント)   Date: 2007/11/21(水) 08:53   No:11997     
Title: Re:行列の積のもとめかたについて    
早い返信ありがとうございます。
計算式はわかってはいるのですが、それをfor文でどういじればいいのかがわかっていません。


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

Name: box  ..比類無きプログラマー(94,143ポイント)   Date: 2007/11/21(水) 08:59   No:11998     
Title: Re:行列の積のもとめかたについて    
> 正方行列Aとベクトルxの積を求めたい

まずは手計算で、Aの何行何列目とxの何行目との積の和を
求めるかを追いかけてみてください。

そうすれば、ソースコードに落とすための
一般則が見えてくるかもしれません。


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

Name: 組木紙織  ..プログラマー(25,582ポイント)   Date: 2007/11/21(水) 09:03   No:11999     
Title: Re:行列の積のもとめかたについて    
でしたら、
一行目を求めるにはいくつの項を足しますか?

そしてこのプログラムではいくつの項を足していますか?


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

Name:  ..かけだし(1,473ポイント)   Date: 2007/11/21(水) 17:58   No:12010 解決!     
Title: Re:行列の積のもとめかたについて    
返信がおそくなってすみません。
お2人のヒントのおかげで間違いに気づくことが出来ました。

よくよくみたら最後の出力の部分も関数が足りてませんでしたし、与え方も間違っていました・・
その他のところもいじっていたら結果が無事出力出来ました。

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


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



Name: りょうちん  ..かけだし(1,389ポイント)   Date: 2007/11/20(火) 21:31   No:11981       
Title: ネットゲームについて    
こんばんは。
C言語で作った4人対戦のシューティングゲームをオンライン化したいと思っているのですが、
過去に経験がないのでアドバイス頂きたいです。

アルゴリズム的には
1.クライアント側でキー入力してキー情報をサーバーに転送
2.サーバー側で処理して描画に必要な情報をクライアントに転送
3.クライアント側で描画処理

という感じで作りたいと思っています。
転送にはwinsockを使い、UDPのソケット通信をしようと思ってます。
参考にしている本には、秒当たりのフレーム数が決まっているゲームなら誤差は
考えなくていいと書いていたので、気にしない事にしようと思います。
同一LAN内でやろうと思っている(一応研究なんです)ので、転送速度は問題ないと思います。

以上で何か問題があるとか、このAPIを使ったほうがいいとか、何でもいいので
アドバイスありましたら是非教えてください。どうぞよろしくお願いしますm(- -)m
(windowsXP C言語 VS2005 Dxlib 使用してます)


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




Name: DDK  ..入門者(4,275ポイント)   Date: 2007/11/19(月) 10:14   No:11940       
Title: VC2005のブレークポイントの利用法?    
「条件」
「ヒットカウント」
「フィルタ」
「ヒット時」

に関する利用テクニックをご紹介いただきたいですが
(詳しく説明してくれる文献でもいい)

どうぞ宜しくお願いします


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


Name: 管理人 [URL]  ..伝説のハッカー(452,051ポイント)   Date: 2007/11/19(月) 23:20   No:11958     
Title: Re:VC2005のブレークポイントの利用法?    
利用テクニック・・と言うほどの物でもないのですが、というか、私自身よく知らないので^^;
私が使う条件などは
例えば、
int a[2][10];
で宣言したa[1][0]の値が代入した覚えが無いのに途中で値が変わってたとかってバグがあったとき、
条件にa[1][0]が変更された時でオプションをつけてブレイクポイントを色んな所につけて見て行きます。
するとどこかでa[1][0]が変更されているはずです。
そこを見てみると、a[0]を使ったfor文がオーバーフローしていて、a[1]の値まで変わってた・・とかってバグが解る事があります。


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

Name: DDK  ..入門者(4,307ポイント)   Date: 2007/11/20(火) 15:34   No:11973     
Title: Re:VC2005のブレークポイントの利用法?    
管理人様
大変お世話になっております。

これも強力なテクニックですね。
ブレークの「条件」に相当するのでしょう。
あとは
「ヒットカウント」

「フィルタ」

「ヒット時」
ですね。
特に「フィルタ」 って何でしょうか。
「ヒット時」?

すごいパワフルの機能みたいですね。
これでデバグの能率数倍アップではと、、、知りたいな





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



Name: 管理人 [URL]  ..伝説のハッカー(438,747ポイント)   Date: 2007/11/10(土) 22:30   No:11651       
Title: 東方ならぬ〜四聖龍陣録〜作りました。    
飽きもせずまたゲームを作っている管理人です^^;

今回は完成させる前に、体験版という形で配布させていただいています。
難易度や設定、システムのことなど、ご意見いただけたら光栄です☆

内容はシューティングです。一部写真は上のような感じです。


どこかで見たようなシューティングですね、、^^;
東方を目指して作ってみました。絵も東方をモデルに描いてみました。

本題ですが、ゲームをクリアすると、「称号」が与えられます。
是非その称号を教えていただきたいのです。その称号はプレイがどれだけうまかったかと言うランクに相当するもので、今後の作成の基準にしたいと思っています^^
もしよろしければ、是非クリアされましたら、称号を教えてください☆

体験版なので1面しかなく、すぐ終わってしまうとは思いますが、よければプレイしてみてくださいm(_ _)m 

ダウンロードはこちらから
http://pcmade.web.fc2.com/

低スペックPCではきちんと動作しない可能性があります。
画面左上にFPSが表示されますので、60前後をキープしているかどうかご確認下さい

シューティングをした事が無い人に取っては少々難しい内容になっているかもしれません。
クリア出来ないぞという指摘を受けて、急遽、イージーレベルのものも用意しました。
自分にあわないようでしたら、イージーでお楽しみ下さい☆

不具合などのご連絡もよろしくお願いします。
プレイした感想・要望・ご指摘よければ是非お寄せ下さいませ^^



11/12 15:00 v1.01更新
・リトライするとキーコンフィグが初期化されるバグを修正
・ポーズ中にF1キーを押すとフリーズするバグを修正


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


Name: tkmakwins15 [URL]  ..プログラマー(37,114ポイント)   Date: 2007/11/10(土) 23:47   No:11652     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
かなりいいと思います。早く完成版が見たいです。
今の実力では称号とか言うレベルではありません…(笑)

明日高校入試の模擬試験です…これで大体進路決まるはずです。
管理人さんもかなり忙しいようですが、もしかして学会とかの準備に追われているとかですか?
やはりこれからが本格的に忙しくなりそうです。


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

Name: 管理人 [URL]  ..伝説のハッカー(439,048ポイント)   Date: 2007/11/10(土) 23:58   No:11653     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
プレイ報告ありがとうございます^^

あら、小さな字でw
イージーではどうでしょうか?
もちろん一度のプレイでクリアは出来ない設定にしてあるつもりなので、tkさんが上手ではないとかそういうことでは全くないです!
キーボードじゃやりにくいですしね^^;

もし称号が取れたら教えてください^^

高校入試ですか〜、、相変わらずお若いですね・・。(相変わらずというのはおかしいかw

私は就職活動真っ盛りです^^;
色々説明会や講演会に行ってます。
ここで親しくしていただいた方に会社に呼んでいただいたので今度行ってみる予定です^^

>管理人さんもかなり忙しいようですが

そうなんですよ!先週の金曜日まで鬼のようでした^^;
なのでそれが終わった瞬間趣味のゲーム作りに没頭しましたw
掲示板の方おろそかで申し訳ないです;

高校入試頑張ってくださいね!
高校数学が中学生で出来たらどこでも受かりますよ・・。


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

Name:  ..上級者(17,499ポイント)   Date: 2007/11/11(日) 00:28   No:11654     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
やってみましたー
ゲームパッドです^^

越せませんでした(マテ
一様ノーマルです!!(最後の良いわけ

それと、左を押した時に押しっぱなしになってしまい、流れて死ぬことが多々あります。
速度を遅くしても同じです。
何故でしょうか?
処理速度は常に59ぐらいです。

雑魚キャラと、龍の最後の攻撃がいやですね〜

東方よりは簡単で安心しました。
東方は初めて一瞬で死にましたのでwww


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

Name: バグ  ..比類無きプログラマー(63,994ポイント)   Date: 2007/11/11(日) 00:34   No:11655     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>>雷さん
スレとは関係ないですが、ちょっと気になったので…(^_^;)

×一様(いちよう)

○一応(いちおう)


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

Name: 管理人 [URL]  ..伝説のハッカー(439,564ポイント)   Date: 2007/11/11(日) 01:07   No:11656     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>雷さん
ありがとうございます。
こちらでは全くそのような不具合は出ないのですが、何故なんでしょう><;
一応、4台のPCで確認してみたのですが、どれも同じ正常動作でした・・。
何かグラフィックボードの影響とかあるんでしょうか・・。

ご報告ありがとう御座います。何とか原因究明したいと思います><

しかしそんな重大な不具合があるのに最後までいけたのがすごいです^^;

キーボードでやってもそんなバグが出ます?
入力状態は常にチェックし、フラグとか立てて移動させてるんじゃなくて、押した時にだけ押した分だけしか移動しないようになっているので、
フラグが立ったままとかいうわけじゃないはずで、原因はもっと内部的なものだと思います・・。

でもそれならイージーは楽勝ですねw

龍なだけに、弾幕も龍っぽくしてみたんですよ^^
(ただsin波かけただけじゃんというつっこみはしないでw


>バグさん
そういえば、最近
「重複(ちょうふく」←じゅうふく、「早急(さっきゅう」←そうきゅう
誤読してるな〜と思う事が多いです・・。
ずっと違う読み方してました^^;
漢をおとこと読むのはどうなんでしょうねw


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

Name: りょうちん  ..ぴよぴよ(671ポイント)   Date: 2007/11/11(日) 02:06   No:11657     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
プレイしてみました!
以前友達に薦められてやったシューティングが東方だったのですが、
管理人さんが作ったものだったと初めて知りましたwすごい偶然です。

以前は全く気にならなかったのですが、ここで勉強したかいあって、
どんな風に作っているのかが、なんとなくイメージできるようになり、
同時に細かい気配りや、バランスがすごいなあと思いました。

動作に関しては全く問題なく、スムーズでした。少し難しかったですw
今後も管理人さんを見習って精進していきたいと思います。






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

Name: 管理人 [URL]  ..伝説のハッカー(439,920ポイント)   Date: 2007/11/11(日) 02:39   No:11658     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
いや、東方はZUNさんが作ってらっしゃいます^^;
あんなクオリティ高いゲームは作れません(汗

私は、そのゲームが好きなので、それをモデルに作りました。
ちょっと似せて作りすぎましたかね・・。絵とかもう少し違うものにしないと誤解が生まれそうですね^^;

そうそう、弾のスピードとか、後0.1ピクセル/フレームほどスピードがかわっても難易度は変わりますし、
色々と弾幕もバランス取りに苦労した場面があります。

1回でも、「よける場所がどこにもない」弾幕を作ってしまうとクソゲーになってしまうので、
単なる乱数だけで弾幕を作らないようにしています。

必ず「最低でもここだけには逃げ道がある」という状態を保つようにしています。
なので、敵が落とすアイテムも、全て指定してあるので、毎回同じです☆

やった時によって全然パワーアイテムが出てこなかったりしてもクソゲーぽいですしね^^;
本家東方も必ず逃げ道はありますし、その辺気をつけたいなと思っています。
難易度上げる=単純に弾数増やす
にはしないようにしています。


動作報告ありがとうございます。少し安心しました。
もしよければ称号も教えてください☆


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

Name:  ..上級者(17,327ポイント)   Date: 2007/11/11(日) 08:44   No:11660     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>しかしそんな重大な不具合があるのに最後までいけたのがすごいです^^;
…龍って何回出でてきます?
毎回攻撃パターンは同じですよね???

>キーボードでやってもそんなバグが出ます?
キーボードの対応が分からなかった…

>○一応(いちおう)
Σ(゚Д゚;<シマッタ
使い方を完全に間違えてましたw
指摘ありがとです!!!
ずっと一様と書いていた・・・・www


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

Name: 管理人 [URL]  ..伝説のハッカー(440,518ポイント)   Date: 2007/11/11(日) 11:44   No:11662     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
毎回攻撃パターンが同じ??

雑魚

ボス出現1回目(弾幕4種類)

強い雑魚

ボス出現2回目(弾幕8種類)

クリア

という感じです。それぞれの弾幕も、全く同じパターンにはなりませんが、ある程度のパターンはありますね。

キーボードの対応はダウンロードページでも書いていますし、ゲーム中でも「Hキーでヘルプ」と出ていると思いますが、Hキーを押すと説明が出ます。・・・という事もダウンロードページに書いてありますが解りにくかったでしょうか^^;

てか友達にやらしたんですが、何回もクリアしてるのに
エンディングがある事を知らなかった
西方龍陣録の文字が微妙に動いている事を知らなかった
と言ってました^^;


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

Name: りょうちん  ..ぴよぴよ(778ポイント)   Date: 2007/11/11(日) 13:27   No:11667     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
東方は他の方が作った物だったんですねw
内容というより、東方と比較している方がいたので勘違いしてしまいました。
西方も東方もすごいっす。

称号とりたいのですが、↑に書かれている >強い雑魚 のとこから進めませんorz
とれしだい報告したいと思います(。・Д・)ゞ


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

Name: tkmakwins15 [URL]  ..プログラマー(37,382ポイント)   Date: 2007/11/11(日) 14:05   No:11672     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
ふぅ、やっと模試終わった…。

>私は、そのゲームが好きなので、それをモデルに作りました。
>ちょっと似せて作りすぎましたかね・・。絵とかもう少し違うものにしないと誤解が生まれそうですね^^;

僕はまだひとつも作ったことがないので、早く一つでも作ってみたいものです。最初はパロゲーでもやってみるというのも一つの手段かもしれませんね。作った後自分でやって満足するみたいな、だったら全く著作権とか問題になりませんし………

と、著作権で気になったのですが、管理人さんのゲームでSEGA申請中の「BRACK」のほうはどうなったのでしょうか?


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

Name: 管理人 [URL]  ..伝説のハッカー(442,203ポイント)   Date: 2007/11/11(日) 14:12   No:11675     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>りょうちんさん
ZUNさんはwindows95の頃からゲームを販売されているようですし、超ベテランで足元にも及びません(_ _|||)
まぁプロのゲームプログラマーですし・・。

>東方と比較している方がいたので
の部分の意味がよくわかりませんでした^^;


>tkさん
お疲れです。余裕ですねw
最初から独自のゲーム作ってもみんな遊んでくれないですしね。
ある程度親しみのあるゲームに似たゲームを作った方が遊びやすいんじゃないでしょうか。
まぁ本格的に作るのなら独自じゃないとですけど。
そうそう、SEGAから全く返事来ないんですよね・・。
ダンスダンスレボリューションはゲームシステムに特許があるようなんですが、ぷよぷよには特許が無いようですし、
サウンドも絵も全部自作すれば配布しても問題にはならないんじゃないかと勝手に思ってますが、一応HPでの配布は控えています^^;


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

Name: tkmakwins15 [URL]  ..プログラマー(37,547ポイント)   Date: 2007/11/11(日) 14:25   No:11677     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
著作権という問題についてはどうか分からないですけど、特許は数年で切れるはずです。

うーん、配布については、解釈について分かれるのではないでしょうか?もし、サウンドや絵などが全て自作とすると、

・ぷよぷよというゲームシステムに著作権があるか?

ということになりそうです。ただし、点数システムなどについては、著作物にはならないと見てもよさそうです。なるとすると、経験値という概念に特許や著作権が絡んで、アドベンチャーとかRPGのようなゲームが作れなくなりますから。

後、絵のモデルがぷよぷよなので、そのあたりのことにもつながるのではないでしょうか?


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

Name: 管理人 [URL]  ..伝説のハッカー(442,561ポイント)   Date: 2007/11/11(日) 14:46   No:11679     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
そうですね〜。
特許データベースで検索したところ、そんな特許はないようでした。

配布したからといって、SEGAのぷよぷよの売り上げが下がるわけでもなく、迷惑はかけないと思うのですが・・。
商用目的じゃなければ、少々のことじゃ問題にならないんじゃないかと勝手に思ってますが、やはり思いとどまっています(_ _||)

趣味で2次作品を作ったからといって、裁判になったと言う事あまり聞いた事ありませんし、、。どうなんでしょうね。
RPGはなかなか特許が取れないと聞きました。
そうなるとFF1もドラクエ1も同じような部類に分類されてしまいますもんね。
リッジレーサーとグランツーとか・・。
でも特定のパズルゲームには特許が付く場合が多いようで‥。
こんな事で弁護士事務所とか行きたく無いですし誰にきけばいいものやらw


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

Name: tkmakwins15 [URL]  ..プログラマー(37,680ポイント)   Date: 2007/11/11(日) 14:57   No:11680     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>でも特定のパズルゲームには特許が付く場合が多いようで

例えばテトリスとか、そのあたりでしょうか。
ただ、その概念が一般的であるものはそのシステムに酷似したものを作っても大丈夫だと思います。
テトリスやぷよぷよは独自性がありますから、ただ、特許はあったとしてももう大丈夫なはずですが…

とりあえず、SEGAの回答を待つのが一番の得策でしょうか。


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

Name: 管理人 [URL]  ..伝説のハッカー(443,823ポイント)   Date: 2007/11/11(日) 19:36   No:11697     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
グンペイ・・?でしたっけ。
あれも確か特許じゃなかったでしょうか。

SEGAには電話して聞けば一番早いんでしょうが、受付の人が許可するはずもなく、ダメと言われるだけな気がしてかけられません^^;


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

Name: tkmakwins15 [URL]  ..プログラマー(37,796ポイント)   Date: 2007/11/11(日) 22:00   No:11703     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
ところで、就職活動というのはとりあえずひと段落着いたんでしょうか?僕の場合あと7年後ぐらいかな…って所です。

僕は空いてる時間には.NETの勉強とDxライブラリの組み方を勉強しているところです。勉強の息抜きにしておくと頭が回ります。


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

Name: 管理人 [URL]  ..伝説のハッカー(444,350ポイント)   Date: 2007/11/11(日) 22:16   No:11705     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
いや、今からです。
今はエントリーしたり、講演、説明会、等行ったりしています。
面接はだいたい2〜4月じゃないでしょうかね。

中学生のうちにそれだけやってると差が出るでしょうねぇ。
是非若いうちは運動クラブにも沢山参加してください、年行って弱りますからw


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

Name: アニィ  ..ぴよぴよ(478ポイント)   Date: 2007/11/12(月) 12:49   No:11742     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
就職活動・・・懐かしい響きですw
私の頃はまだ就職氷河期と言われていたので厳しかった記憶があります。
今はどの企業も新卒の囲い込みを行っているので、就職に関してはさほど心配は要らなさそうですね〜
大変なのは、会社に入ってから覚えることが沢山あるということでしょうかw
学生時代以上に勉強していますw

ゲームの方は後ほどDLさせていただこうかと思います。
シューティングが苦手なので、クリアはほぼ絶望的かと思いますが・・・
プレイしたらまた書き込みさせていただきますね。


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

Name: 管理人 [URL]  ..伝説のハッカー(445,869ポイント)   Date: 2007/11/12(月) 13:32   No:11744     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>アニィさん

ありがとうございます^^
なるほど・・、好景気ではないにしても、少子化ということもあって企業は採用に前より甘いんでしょうかね^^;
ゲーム作るのが大好きなんで、やはりその方向に進みたいなと思っています。(どうなるかはまだわかりませんがプログラムが書けたらどこでもいいかもw
大企業で指示したりパーツを組み立てたりじゃなくて、下請け現場でプログラミングばっかりって言う方があこがれます^^;
最近じゃNTTにしても、大企業じゃなかなか自分達でプログラム書かないそうですね。
色んな方に会社のお話を聞きたいものですが、なかなかネット上の会話で自分の会社名は出さないでしょうから、具体的にどこの会社がという話はネット上じゃなかなか無理ですねぇ・・。

シューティングはイージーレベルのものがあるので、では、そちらで遊んでみてください^^
設定的に「一回じゃクリア出来ない」ことを想定していますので、もちろん、一度でクリアできなかったからといって、下手とかそういうことじゃありませんので!(ノーマルは20回位のリトライを想定・・


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

Name: 管理人 [URL]  ..伝説のハッカー(446,074ポイント)   Date: 2007/11/12(月) 16:01   No:11747     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
先ほど修正版アップしました。
修正内容は随時トップの記事を変更しますのでご覧下さいm(_ _)m


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

Name: りょうちん  ..かけだし(1,088ポイント)   Date: 2007/11/12(月) 16:03   No:11748     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>>東方と比較している方がいたので
>の部分の意味がよくわかりませんでした^^;

の部分については

>東方よりは簡単で安心しました。
>東方は初めて一瞬で死にましたのでwww

という文章が前にあったので、同じ人が作ったと勘違いしてしまいましたってことです。
ややこしくしてすんませんw


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

Name: mt  ..ぴよぴよ(101ポイント)   Date: 2007/11/12(月) 17:16   No:11749     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
 やらせてもらいました。
私も同じようにSTG作ってますので、興味津々でしたよ。
ソースの配布を心待ちにしてます(冗談

 プレイ戦況:
最初はキーボでやったら酷いことになったので、むきになってパッドに……
2ミス3ボムのDでした。
グレイズ稼ごうとすると難しくなりますね、やはり。
でも称号の評価点に含まれてそうなので、狙いたくなって、被弾して……のループです;;


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

Name:  ..上級者(17,385ポイント)   Date: 2007/11/12(月) 17:56   No:11752     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>という文章が前にあったので、同じ人が作ったと勘違いしてしまいましたってことです
僕のせいか!!orz
すみません^^;


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

Name: tkmakwins15 [URL]  ..プログラマー(37,929ポイント)   Date: 2007/11/12(月) 18:04   No:11753     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
ゲームパッドってよさそうですね。どれくらい違うのでしょうか?

あればいいものなのでしょうか?


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

Name: 管理人 [URL]  ..伝説のハッカー(446,793ポイント)   Date: 2007/11/12(月) 19:10   No:11757     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>りょうちんさん
あ〜〜、なるほど、東方は私の前作で、雷さんがその前作と比較してらっしゃるとお思いになったのですね^^;
なるほど、ボケてました^^;
しかしあんな本家のと勘違いしてくだった事は光栄です、、、と喜んでいいのか、
そこまでパクリゲーになっている事に反省した方がいいのか・・^^;
本家の方もよければ遊んでみてくださいw感動しますw

>mtさん
ご報告ありがとう御座います^^
実はランクのアルファベットではなく、称号を教えてもらった方が、イージーで取ったのか、ノーマルで取ったのか解っていいシステムになっています^^;
今後の基準にしたいのでよければ教えてください☆
こんなに頑張っていただいて今更こんな事いうのも悪いのですが、
ボスの制限時間がないので、GRAZEは無限に増やす事が出来る事から、
GRAZEが称号に与える影響はかなり低くしてあります^^;
「死なずにボムを使わずに青いアイテムを出来るだけとって」が最も重要なので、
その辺参考にしてください^^
一回位死んでも、青いアイテムを沢山取れば挽回できます!

>雷さん
なるほど、そういうことですか^^;

>tkさん
ゲームパッドコンバータは電気屋に売ってますよ。
ネットでも買えますが、こんな奴です。980〜1580円位で買えます。
http://www2.elecom.co.jp/peripheral/gamepad/jc-ps101u/index.asp
PSのコントローラーありますよね?
あれをUSBにつなげます。
ボタンの設定はゲーム中に出来るので。
興味あれば買ってみてください☆
今後私の作るゲームは全部パッドに対応しますので、損はさせませんw


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

Name: tkmakwins15 [URL]  ..プログラマー(38,051ポイント)   Date: 2007/11/12(月) 21:56   No:11763     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
コンバータはちょっとまずそうです。PSのコントローラーがないです。普通のパソコン用のやつで大体いくらなんでしょうか?今度電気屋で調べてみます。

僕のほうはちょっとRPGの作成に挑戦してみようと思いまして、マップの考え方を今やっているところです。とりあえず、csvでマップの様子を記録しておいて、それを二次元配列に読み込むという方法を取ろうかと思っています。


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

Name:  ..上級者(17,440ポイント)   Date: 2007/11/12(月) 22:33   No:11764     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
http://www.amazon.co.jp/s/ref=sr_pg_1/249-4274627-5311510?ie=UTF8&rs=387434011&rh=n%3A3371351%2Cn%3A387434011&page=1
とか見てみたらどうだろ?

僕が持っているのは風龍だった気がするんだが…無いな…紅龍の系列のやつなのですがw


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

Name: 管理人 [URL]  ..伝説のハッカー(446,932ポイント)   Date: 2007/11/12(月) 22:58   No:11765     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>tkさん
PSのコントローラーを持っていないとは、何て健全な!(?)
そうなんですか〜、中学生のうちはゲームばかりしない方がいいですよねぇ。
まぁゲームパッドなんて電気屋いけばどこでも売ってますよ^^
そんなに使う機会がなければ、一番安い奴でいいと思います。

>雷さん
PSのコントローラーって色々ありますが、
やっぱPSのコントローラーが一番握りなれてるんですよね〜^^;
PSのコントローラー持ってなかったとしても私ならPSのコントローラーとコンバータをあえて買うかも・・。


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

Name: tkmakwins15 [URL]  ..プログラマー(38,115ポイント)   Date: 2007/11/12(月) 23:10   No:11768     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
持ってるただ1つのゲームがGBAです。でも十字キーが利き悪くて、今は封印状態です。というわけで、ゲームをするにはPCゲームを購入、フリーのをダウンロードするか、自分で作るという方法の2社択一になります。
ゲーム機を買うお金の余裕は全くないです。


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

Name: 管理人 [URL]  ..伝説のハッカー(447,074ポイント)   Date: 2007/11/13(火) 01:55   No:11776     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
う〜ん、無駄にゲーム機はたくさん家にあるものの、どれも使わずに放置してあります・・。
ほとんどゲームで遊ばないながら最近やったのはカルドセプトとかお姉チャンバラとかマイナーなゲーム位ですね〜^^;
やはりゲームはするより作る方が楽しいと、変人志向になりつつあります;
ゲーム機高いですよね。PS3とか、もはやオモチャの値段ではありませんしね^^;


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

Name: 管理人 [URL]  ..伝説のハッカー(447,143ポイント)   Date: 2007/11/13(火) 04:30   No:11777     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
とてつもなく画像が悪いですが、どうしてもクリア出来ない方がいらっしゃいましたら参考にどうぞ^^

中盤「え?ここで?」ってとこで死んでますが気にせずw

(略。下に新しい動画をアップしました)

この動画をキャプチャする為にこんな時間にわざわざ大学まで来ました(_ _|||)
30フレームでキャプチャしながら60FPSで動作させるには研究室にある一番スペックの高いPCでもこれが限界です^^;

動画をキャプチャする為だけに、テレビキャプチャ買ったんですが、うまくいかなかったので・・。
http://buffalo.jp/products/catalog/item/p/pc-mv7dx_u2/index.html
ビデオカードのS端子出力からこのキャプチャの映像入力に差し込んで映してみたのですが、何も映りませんでした・・。
どうすればデスクトップの映像をこのキャプチャー機器で録画出来るのか、ご存知の方がいらっしゃいましたら教えてくださいm(_ _)m

ちなみにこの映像はカハマルカの瞳で撮りました。ソフトウェアでキャプチャするのはこれが精一杯のようです。



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

Name:  ..上級者(17,598ポイント)   Date: 2007/11/13(火) 14:42   No:11784     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>とてつもなく画像が悪いですが、どうしてもクリア出来ない方がいらっしゃいましたら参考にどうぞ^^

どこだろう??


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

Name: 管理人 [URL]  ..伝説のハッカー(447,219ポイント)   Date: 2007/11/13(火) 15:03   No:11785     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
youtubeの動画を貼り付けているんですが、見れませんか?ブラウザは何を使ってます?
一応、IEとファイアーフォックスでは表示されることを確認したのですが・・。
それ以外の環境では見れないんでしょうかね??
直接のリンクはこちらです
http://jp.youtube.com/watch?v=Ll5K9Uae-Sw


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

Name:  ..上級者(17,657ポイント)   Date: 2007/11/13(火) 15:28   No:11786     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
SleipnirでActiveXは切ってあるので…^^;
上に張ってあります。とか、ActiveXをONにしてくださいとかほしかった…


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

Name:  ..上級者(17,674ポイント)   Date: 2007/11/13(火) 15:43   No:11787     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
キーの設定はできないんでしょうか?

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

Name: tkmakwins15 [URL]  ..プログラマー(38,189ポイント)   Date: 2007/11/13(火) 16:49   No:11788     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
NN7.1とかfirefoxとかインストールしてますけど、やっぱりIEを使っちゃいますね。僕はXP用の7ですけど、フリーズとかに見舞われたことは一度もないです。

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

Name: 管理人 [URL]  ..伝説のハッカー(447,408ポイント)   Date: 2007/11/13(火) 17:05   No:11789     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
>上に張ってあります。とか、ActiveXをONにしてくださいとかほしかった…

すみませんm(_ _)m
以後気をつけます。
キーの設定は出来ないです。出来るようにしたほうがいいですかね?

>tkさん
そうですか〜、IEしょっちゅう問題が発生したとかって止まるので嫌なんですよねぇ・・。
ウェブでメールとかたくさん書いてる途中にフリーズしたりしたらたまったもんじゃなく;
私の環境が悪いんですかね・・。


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

Name: tkmakwins15 [URL]  ..プログラマー(38,240ポイント)   Date: 2007/11/13(火) 17:18   No:11790     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
そういえば、NN7.1でこのページを見るとトップページがちょっとおかしいんです。なぜか右のリンクが使えないようです。
あれってJavaSprictですよね?NNのバグでしょうか?


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

Name: 管理人 [URL]  ..伝説のハッカー(447,466ポイント)   Date: 2007/11/13(火) 19:24   No:11794     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
ちょっとマシな動画に変更しましたm(_ _)m





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

Name: tkmakwins15 [URL]  ..プログラマー(38,633ポイント)   Date: 2007/11/14(水) 07:55   No:11808     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
なるほど〜
とかいっても全くクリアできてないのですが………

学校から帰ってきたら挑戦だ!!っとその前に勉強しないといけませんね…


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

Name: 管理人 [URL]  ..伝説のハッカー(447,799ポイント)   Date: 2007/11/14(水) 13:23   No:11815     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
イージーでも、難しすぎるぞという意見が結構あるようです。
東方やりすぎで一般的なレベルがどれ位なのかさっぱりわからなく・・。
でも、クリアできないという意見の方がむしろありがたいです。
「クリア出来た」という報告は胸を張って言う人がいますが、「クリアできない」という報告はわざわざしてくれる人が少ないのでどうしても、
情報が偏ってしまいますm(_ _)m
シューティングをしたことがあるか無いかだけで、ずいぶん差があるようですから、
完成版はかなり難易度に差を付けた設定にしないといけないということがわかりました。
どうもありがとうございますm(_ _)m


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

Name:  ..上級者(17,801ポイント)   Date: 2007/11/14(水) 22:38   No:11839     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
キーボードの変更があったほうがうれしいです。
友人に紹介した時、オンラインゲームをしていたことがあるので、移動が左で慣れてしまっていて…(僕もなんですがw
学校でやれないし、パッド持ってない人がやるのが大変ではないかと思います。

…キー変更よろしくお願いします!!


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

Name: 管理人 [URL]  ..伝説のハッカー(448,214ポイント)   Date: 2007/11/15(木) 04:01   No:11844     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
なるほど。了解です。
奇数弾だらけだったり、改善点は沢山あるようですm(_ _)m
そういえば私がやってたFF11は右キーが移動だったのでそれに慣れているのかもしれません^^;


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

Name: ルルーシュ  ..ぴよぴよ(342ポイント)   Date: 2007/11/15(木) 22:25   No:11864     
Title: Re:新らしくゲーム作りました。プレイしてみて下さい☆    
こんばんわ、新作ゲームプレイしてみました。
クリアの方はいまだにできず、、なのですが結構ハマッテますw
弾幕の張り方やゲームバランスなどクオリティーの高いゲームに仕上がってるなーと思いました。
ちなみなんですが、就職活動する上でこういったゲームはやっぱり評価高いんですか?(僕適にはかなり高めだと思うノデスガ)


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

Name: みずも  ..ぴよぴよ(88ポイント)   Date: 2007/11/15(木) 23:16   No:11865     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
ニコニコ動画に上がってるのに釣られてきました。
よく出来てますねー。
と言うより、DXライブラリでよくココまでできるものだなあと思いました。
自分もDXライブラリを使ったことはあるのですが、ここまで出来るものだとは。

本格的に作るとしたら、東方以外のSTGも参考にすることをお勧めしておきます。
特に風神録はCAVEの「ケツイ」に似せているところが多いので、薦めておきます。
CAVEの作品は道中が飽きないように出来てますよ。(つーか道中のほうがきつい


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

Name: 管理人 [URL]  ..伝説のハッカー(448,715ポイント)   Date: 2007/11/15(木) 23:53   No:11866     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
ニコニコ動画に上げた途端何百人もの方がプレイしてくださったようで、ありがとうございます^^;
かなりの辛口コメントばかりで、結構凹んだりしましたが、むしろ今まで辛口でコメントされたことが無かったので貴重でした。
元々、東方と比べてもらうつもりなんてサラサラなかったんですが(同じ土俵に立てる訳無い)
東方のパクリと言う事で、かなり比べられましたね^^;
クオリティの低さ、、敵の単純さなど、改善点はまだ山のようにあること痛感しました。

>ルルーシュさん
プレイして頂きありがとう御座います^^
現在リアルタイムで改善していますm(_ _)m
何回も修正しながら体験版を更新するより、さっさと完成品を作ったほうが良い気もしますが^^;
就職活動の方ですが、ゲーム会社に入るのならいくらか参考にしてもらえるのかもしれませんが、そちら方面に進む可能性が現在低いので、面接などで持参する事はないと思います。
完全な趣味という事でこれからもやっていこうと思います。
散々パクリと言われましたし、今までもパクリばっかりでしたからそろそろオリジナルに手を出さないといけませんね;

>みずも、
プレイして頂きありがとう御座います^^
「体力が多すぎる」という意見が多かったのですが、せっかく作ったのにすぐ終わったらもったいないというプログラマーの勝手な陰謀でゲームシステムが本末転倒な形に仕上がってます^^;
散々叩かれたので、温かいコメントをいただいてホッとしますm(_ _)m
東方が好きだったので、似たゲームが作りたかったのですが、あまりに似せすぎでしたね。
友達に見せる時とか、オリジナルより、知ってるゲームにそっくりな方が盛り上がるので、
そっち重視にしてしまいました。反省してます。
「ケイツ」ですか!実はシューティングは東方以外あまりやった事がないのです;
是非仰った作品を参考にし、色んなゲームも参考にしようと思います。
ありがとうございました!


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

Name: F  ..ぴよぴよ(45ポイント)   Date: 2007/11/16(金) 03:29   No:11874     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
ボンバーマンを作りたいと思いyoutube見ていたら
DixqさんのSPボムマンがありましたので来ました
今までDirectX使っていなかったので挑戦しようと思います

>どうすればデスクトップの映像をこのキャプチャー機器で録画出来るのか、ご存知の方がいらっしゃいましたら教えてくださいm(_ _)m
これは多分ビデオカードのオプションです
ビデオカード会社によって設定変わりますが、初期状態ではS端子刺しただけでは複数ディスプレイ(複数出力)にならないので、
S端子刺してからパソコンを起動しビデオカードオプションに、複数ディスプレイとか、クローン表示とか無いですか?
画面のプロパティでも設定出来たかもしれません

あとよろしければ、SPボムマンの画像データだけでも配布していただけませんか?


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

Name: tkmakwins15 [URL]  ..プログラマー(38,696ポイント)   Date: 2007/11/16(金) 07:47   No:11875     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
昨日は文章をモールス信号に変換するプログラムを作っていました。

文→モールス信号の変換です。

何か使えないかな?と思いつつ、とりあえず和文モールスに対応していました。謎解きとかに応用したいところです。


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

Name: 奈菜氏  ..ぴよぴよ(81ポイント)   Date: 2007/11/16(金) 20:19   No:11884     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
ニコニコで見かけまして、プレイしたところ、かなり面白かったです。
後、ニコニコでも、辛口でも応援してる人が結構いましたので、これからも頑張ってください。





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

Name: tkmakwins15 [URL]  ..プログラマー(38,771ポイント)   Date: 2007/11/16(金) 20:59   No:11885     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
ニコニコってなんでしょうか?

もうそろそろオリジナルというのも一ついいかもしれません。でしたら堂々と公開できますし、いろいろとメリットも大きいのでは?


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

Name: nanasi  ..ぴよぴよ(108ポイント)   Date: 2007/11/16(金) 22:20   No:11887     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
よく出来てますね〜
ニコニコから来ましたが想像以上にクオリティ高くて驚きました。

問題点があったのでこちらで報告を。
喰らいボムが出来るようですが、タイミングが遅い(?)と下画面外で発動したことになり、行動不可かつ敵の被弾を受けるしかない状況になりました。
今後の参考になればいいかなと思い、送らせていただきます


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

Name: 管理人 [URL]  ..伝説のハッカー(449,516ポイント)   Date: 2007/11/16(金) 23:01   No:11888     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
>Fさん
動画みてくださりありがとうございます☆
また、アドバイスいただきありがとう御座います、無事撮影できました♪
ただ2004年製のTVキャプチャーだからなのか、めちゃくちゃ映像が悪いようです・・。
まだMPEG4未対応の奴だからなんでしょうか、最近の奴は映像がキレイになったんでしょうかね?
SPボムマンの件ですが、大変嬉しいお言葉なのですが、ハドソンが著作権を持っている画像のデータの配布をすると問題になりかねないので、あくまでも個人の範囲で楽しむ事にしています。
キャラは全部私のオリジナルならよいのですが‥。
スーファミなどの一時停止ボタンを使ったり、色々して、フォトショで書いてみるといいと思います。

>tkさん
ニコニコとは、ニコニコ動画の事ですよ。
動画に書き込みが出来る動画サイトです。
書き込みの内容としては2チャンっぽいですかね?あまり丁寧な言葉でコメントする人は少ないですね^^;
ただ会員制で、無料登録出来るのですが、登録したばかりだったり、夜だったりすると利用制限がかかるので、
登録してすぐにはログイン出来ないかもしれません。

>奈菜氏さん
プレイしていただきありがとうございます☆
結構あそこではキツイ意見も多いですね^^;
そこまでキツイコメントをもらった事が無かったので、いい経験になりました。
そしてパロゲー方向ではなく、オリジナル方向へ路線を変えようと言う決心にもなりました。
これからも頑張っていこうと思いますので、今後ともよろしくですm(_ _)m

>nanasiさん
プレイしていただきありがとうございます☆
そうなんですよね、体験版を早く完成させようと思い、細かい部分をごまかしたままにしてしまいました。
公開するならきちんと完成させないといけなかったですね。
おっしゃる不具合や、ショボイボム、見栄えのしない弾幕、単調な基数弾など色々改善しました。
現在も毎日改善させています。
現在ご報告頂いた不具合は出ないように修正しました。ご報告いただき感謝いたします。ありがとうございました。
ボスの弾幕をどうしたら見栄えがするか現在試行錯誤中です。
カオス理論を用いて、カオスCGを表現してみようかと思っています。
カオスCGについてはこちらを
http://club.pep.ne.jp/~k.sindou/myprog/chaos/chaos.htm
何とか独自要素を沢山盛り込んで以降と思いますm(_ _)m


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

Name: F  ..ぴよぴよ(538ポイント)   Date: 2007/11/17(土) 01:17   No:11899     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
TVキャプチャーはPC内蔵型じゃないと1秒ぐらい遅れて映像届きます
Wikipedia キャプチャ (録画ソフト)
に「高画質化技術については、廉価なキャプチャカードには付随していないことが多い。高価なキャプチャカードほど高画質化技術が多く付随している傾向がある。」とありますので高い内蔵型買わないと駄目かもしれません。
パソコン2台あるのでしたらpeercastで別PCに画像を送り、それを録画するのが一般的(?)みたいです

SPボムマンの画像はDixqさんが書いたのかと思ってました。
私は絵が下手なので、RPGツクールのマップチップでも探してみる事にします


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

Name: 管理人 [URL]  ..伝説のハッカー(449,755ポイント)   Date: 2007/11/17(土) 03:13   No:11901     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
ありがとうございます。そうですか〜、内蔵型だと、家や学校で使うように持ち運べないからと思ったんですが、内蔵型の方がいいんですね。
確かに遅れていたので変な感じでした^^;
ちょっとあの画像の荒さは無いなぁ・・。

SPボムマンはじっくりみながら書きましたが、あまりにそっくりなので2次加工配布扱いになりそうなので。
私もそう諦めていたんですが、じっくりみながらパクリでもいいから書く練習していると、案外要領がわかりかけてきたりするみたいです。
・・というほどろくな画像は書いていませんが(汗
RPGツクールの最新版先日買いました。
あのマップツールは書きやすいですよね〜w
でもツクール以外に使用してはいけないらしいので、困りものです・・。
またまた個人で楽しむ範囲・・ということになりそうです(_ _|||)


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

Name: tkmakwins15 [URL]  ..プログラマー(38,935ポイント)   Date: 2007/11/17(土) 12:44   No:11907     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
->管理人さん。

ちょっとgoogleで探してみました。
ドット絵講座

余計なお世話かもしれませんがよければ参考にしてください。


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

Name: ぽいち  ..ぴよぴよ(3ポイント)   Date: 2007/11/18(日) 01:19   No:11910     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
なぜかダウンロードできません><

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

Name: 管理人 [URL]  ..伝説のハッカー(450,332ポイント)   Date: 2007/11/18(日) 02:57   No:11912     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
>tkさん
ありがとうございます。はい、そういう検索で調べると私の過去のゲームに出てくるキャラに良く似たキャラが見つかるかもしれませんw

>ぽいちさん
あらら・・、無料版のレンタルサーバーを使っていたので、zipファイルは削除されてしまったのかもしれません。
今改善中なのですが、原因不明のバグの原因究明中でして、アップ出来ません(_ _|||)
鋭意改善中なので少々お待ち下さいm(_ _)m


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

Name:  ..上級者(17,891ポイント)   Date: 2007/11/18(日) 17:13   No:11926     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    

上げても良いのかな?
ZIP残ってなかったので、再圧縮してなら可能なんですが…

どうなんでしょうか?


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

Name: tkmakwins15 [URL]  ..プログラマー(38,945ポイント)   Date: 2007/11/18(日) 23:29   No:11935     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
>管理人さん

それはfc2のサーバの規約違反になっている恐れがあるためでは?
無料版でアップできる種類の中にzipがありませんでした。

ちょっときつすぎですね。


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

Name: 管理人 [URL]  ..伝説のハッカー(450,471ポイント)   Date: 2007/11/19(月) 00:21   No:11937     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
>雷さん
バックアップは持っているのですが、絵やSEなどの問題もいろいろ指摘されたので、色々修正してからアップしようと思っています。
ありがとうございます。
もうすぐ出来るので。

>tkさん
わざわざ規約を確認していただいてありがとうございますm(_ _)m
きっと倉庫代わりにする人がいるからじゃないでしょうか^^;
人に重いファイル渡す時も、私もよく自分のHPにアップしたりするんですが、現在5GB位ファイルがアップされてるかもしれません・・。
無料版でそんな事されたら迷惑ですよね〜^^;


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

Name: tkmakwins15 [URL]  ..プログラマー(39,018ポイント)   Date: 2007/11/19(月) 01:33   No:11938     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
僕はホームページサーバを選ぶ時に一番考える事は、広告が小さいとかよりも、ファイルタイプに制限がないところをまず考えます。exeには対応していて欲しいと思っています。
容量は大体50MBあればいけるのではないかと思います。


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

Name: やそ  ..かけだし(1,919ポイント)   Date: 2007/11/19(月) 10:50   No:11941     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
こんにちわ。
ノーマルモードで挑戦しました。
結果、ランクKでした^^;
パッドがないのでキーボードのカーソルキーでやったのですが、
私だけなのかもしれませんが、「右下」への移動が出来ませんでした。
正確には右と下のキーを同時押ししても反応せず。と言う状態です。
右下以外は7方向問題なく反応しました。
残り機数1、ボム使用6回で称号は「ぴよぴよ」?みたいなヤツでした。

東方〜経験は有りませんが、ゲーセンの1942、雷電あたりはやりまくったので
縦方向シューティングもそれほど苦ではないはずだったのですが・・・。
右下にさえ反応していれば・・・(笑)

後半の自機を取り囲むように出現する敵弾は避けられます?
自機のスピードが遅くて、出現から逃げるまでに間が無い気が・・・。


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

Name: バグ  ..比類無きプログラマー(64,989ポイント)   Date: 2007/11/19(月) 12:08   No:11942     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
>>やそさん

>後半の自機を取り囲むように出現する敵弾は避けられます?

あの攻撃は敵弾が動きだす直前までは判定が無いようなので、抜けられますよ。ただ、どこから判定が発生するのかはわかりづらいですけど…(^_^;)


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

Name: やそ  ..かけだし(2,012ポイント)   Date: 2007/11/19(月) 14:56   No:11949     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
そうかぁ〜。あの弾やっぱり避けられるんだ。
敵弾発生から判定開始までのタイミングにラグがあるのは分かっていたんですが、正直自機が遅くて間に合わなかったです。
もう少し(コンマ何秒?)自機の動き出しを早くすれば抜けられるのか。
そこだけでボム使いまくっちゃったなぁ(笑)


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

Name: 管理人 [URL]  ..伝説のハッカー(450,767ポイント)   Date: 2007/11/19(月) 16:39   No:11950     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
うむむ・・。
予想出来ないようなバグが色々あるようですね・・。
右下への移動は、バグが出ないように、キー入力されていたら無条件に移動するようにプログラム書いているので、プログラムのバグではないんです。
DXライブラリかグラフィックカードの相性か・・。何かよくわかりませんが、こちらではどうにも修正出来ません;
他にも左キーが押せないという報告を受けましたが、その人だけに現れるバグというものがあるようで、困惑しています(汗
後、自機が遅すぎるということで、どうも、私が期待しているのとは違う挙動をしているのではないかと懸念しています。
プレイデモはこの辺にありますので、

↓youtubeのフラッシュ映像

↑FLASHが見れる環境でどうぞ

これと同じような動きをちゃんとしているかどうか、見てください。
仰る弾幕は
5:00〜5:20にかけての弾幕ではないかと思っているのですが。
後、画面左上にFPSが表示されるのですが、その数字は60付近で落ち着いていますか?

60Hz以上のモニタをお使いで、ウィンドウモードで起動すると、60以上になってキャラの動きが早くなってしまうことがあるようです。

・・と色々言うより動画を見てもらったほうが早いと思いますので、よければごらん下さい。
((汚い映像ですみません(汗


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

Name: 管理人 [URL]  ..伝説のハッカー(450,845ポイント)   Date: 2007/11/19(月) 16:47   No:11951     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
>バグさん

>あの攻撃は敵弾が動きだす直前までは判定が無いようなので

いえ、弾が表示された時点でたまに接触したらアウト・・になるはずなんですが、そうなりませんか?;
表示されている弾で当たっても大丈夫な弾は作ってないつもりです。
上の動画のように、弾の間をすり抜けて外に出ないといけないんですが・・。
なんだか自分のPCでは起こらないバグが色々あるようで困り物です(T_T


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

Name: 組木紙織  ..上級者(24,943ポイント)   Date: 2007/11/19(月) 20:02   No:11952     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
わたしのPCではキーボードで斜めに動くのは、右下、右上しか動かないようです。
ウインドウモードで、FPSは57.台です。
フルスクリーンモードだと60.台です。

バージョンはeasyの1.01で
OSはXP
CPUはpentiumMです。
グラフィックボードは確認していません。

#今日やっと最後のボスまでいけれた。キーボードだとちょっと難しいです。


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

Name: 管理人 [URL]  ..伝説のハッカー(450,959ポイント)   Date: 2007/11/19(月) 20:13   No:11953     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
>組木紙織さん
やそさんは「右下に動かない」のに組木紙織さんは「右下右上にしか動かない」と言う事ですか・・。
一体何が・・。
ちょっと色々と調べてみます(_ _|||)
PenMで60で動作できると言う報告は嬉しいです。ありがとうございました。


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

Name: 組木紙織  ..プログラマー(25,301ポイント)   Date: 2007/11/19(月) 20:30   No:11954     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
追記です。
ちょっと複雑な状況です
ウインドウモードでeasyのバージョン1.01で全て確認しています。

1:左側のキーを一切押さない状態(つまり十字の矢印のキーのみの状態)
8方向動きます。

2:Zキーを押し続けてている状態
 左上、左下以外の6方向動く
3:shiftキーを押し続けている状態
 左上、右上以外の6方向動く
4:shift+zキーを押し続けている状態
 左下、左上、右上以外の5方向動く
5:xキーを押し続けている状態
 左上、左下以外の6方向動く
6:shift+xキーを押し続けている状態
 左下、左上、右上以外の5方向動く
7:shift+z+xキーを押し続けている状態
 左下、左上、右上以外の5方向動く

といった状況です。

#ボスと自分が重なることが出来るということと、
#重なったときにボスが上に来ているということが
#少し気になりました。 


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

Name: 管理人 [URL]  ..伝説のハッカー(451,007ポイント)   Date: 2007/11/19(月) 21:21   No:11955     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
そ、、そんな特殊な・・・(汗

詳しいご報告ありがとう御座います。色々調べてみます!
・・しかし自分のPCで起きない不具合を直すのは、プログラムを改善してみても、試せないので難しいですね;

ボスの当たり判定は大きくしておいたほうがいいですね。描画の順番も考え直します。ありがとうございました!


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

Name: やそ  ..かけだし(1,839ポイント)   Date: 2007/11/19(月) 22:20   No:11956     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
コチラの環境は
セレロン1Ghz
メモリ248M
のソーテック製ノートPCで
Winxp sp1です。

>仰る弾幕は
>5:00〜5:20にかけての弾幕ではないかと思っているのですが。
>後、画面左上にFPSが表示されるのですが、その数字は60付近で落ち着いていますか?


FPS値はフルスクリーンで20から25くらいでした。ソレが遅い原因?
Zキーはキートップが吹っ飛んでいて押しづらいが我慢した(管理人に責任ないし(笑))
ボスとの重なりは私もチョット気になりました^^;

今日またやってみたら反応しました・・・少しだけw

どの方向(斜め)も効いたり効かなかったり右下の方にいるときは更に右下に行こうとしてもダメだったです。
(関係ない誤情報カモ)



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

Name: 管理人 [URL]  ..伝説のハッカー(451,913ポイント)   Date: 2007/11/19(月) 23:03   No:11957     
Title: Re:新しくゲーム作りました。プレイしてみて下さい☆    
FPS20はしんどいですね・・;

ううむ・・・。Zキーはプログラムで直せないのでそちらで頼みますw

色々考えてみたんですが、どうも、プログラムが悪いようには思えないのですが・・。
実際に移動を制御している関数はこちらです。

kとpに入っている定義はDXライブラリで定義されている定義です。
pad.key[configpad.slow]
のpad.keyというのは、GetHitKeyStateAllで取得するキーの入力状態のように、配列の一つ一つにパッドの入力状態が入るように自分で作った配列です。
格納は違う関数でやっています。
0が入力なし。
1が入力中。
2が今の瞬間入力された。
を示します。

他の場所もいろいろ改良したので、バージョン2.00を今日か明日配布しますので、
そちらで是非試してみてください(_ _|||)


void ch_move(int flag){//キャラの移動
double x,y,mx,my;
ch.cnt++;//キャラカウンタをカウント
if(!(flag==0 || flag==3))return;//ch.flagが0か3の時のみ移動可能
double move_x[4]={0,-3.8,3.8,0},move_y[4]={3.8,0,0,-3.8};
int k[4]={KEY_INPUT_DOWN,KEY_INPUT_LEFT,KEY_INPUT_RIGHT,KEY_INPUT_UP};
int p[4]={PAD_INPUT_DOWN,PAD_INPUT_LEFT,PAD_INPUT_RIGHT,PAD_INPUT_UP};

for(int i=0;i<4;i++){//4方向分ループ
if(key[k[i]]>0 || PadInput & p[i]){//i方向のキーボード、パッドどちらかの入力があれば
x=ch.x , y=ch.y;//今の座標をとりあえずx,yに格納
mx=move_x[i]; my=move_y[i];//移動分をmx,myに代入
if(key[KEY_INPUT_LSHIFT]>0 || pad.key[configpad.slow]>0){//低速移動なら
mx=move_x[i]/2; my=move_y[i]/2;//移動分を半分に
}
x+=mx , y+=my;//今の座標と移動分を足す
if(!(x<32+10 || x>32+384-10 || y<16+5 || y>16+448-5)){//計算結果移動可能範囲内なら
ch.x=x , ch.y=y;//実際に移動させる
}
}
}
}


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

Name: バグ  ..比類無きプログラマー(64,899ポイント)   Date: 2007/11/19(月) 23:55   No:11960     
Title: Re:東方ならぬ〜北方龍陣録〜作りました。    
最近はあまり聞かないですが、一度に一定数以上(昔は一度に2つまでしか認識できないとかザラでした)のキーを押すと認識できないキーボードがあるにはあります。
もし、これが原因ならば、完全にハードの問題になりますが、可能性は非常に薄いと思います。


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

Name: 管理人 [URL]  ..伝説のハッカー(452,114ポイント)   Date: 2007/11/20(火) 00:42   No:11961     
Title: Re:東方ならぬ〜北方龍陣録〜作りました。    
なるほど〜、では環境が古いかどうかもチェック項目に入れるべきですね。
あと、バグさんが仰ってた、たまに当たってもヒットしない期間というのは本当にありますか??


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

Name: tkmakwins15 [URL]  ..プログラマー(39,052ポイント)   Date: 2007/11/20(火) 07:46   No:11967     
Title: Re:東方ならぬ〜北方龍陣録〜作りました。    
あれ…題名変わってますね。

僕のPCではそこまで大きな問題は出ていません。


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



Name: アルフレッサ  ..ぴよぴよ(205ポイント)   Date: 2007/11/18(日) 11:42   No:11916       
Title: C言語初心者で宿題が全然分からなくて困ってます…。    
初めまして。アルフレッサと申します。
今回このサイトを訪問したのは、大学の授業でやってるC言語の授業の課題が全然分からなくて困り果てていたからです。
まだC言語を初めて1ヶ月なんですが、早くも授業のスピードについていけなくなりつつあります…。
もしよろしければ、今から書く内容のプログラムを教えて頂ければ幸いです。


1.整数型配列sqrを利用して、1から20までの数字を2乗した数のうち7で割り切れる数を画面に出力するプログラムを作成せよ。

2.西暦1年から2005年までのうるう年をもとめ、それを画面に出力するプログラムを作成せよ。


部分的には出来る箇所もあるんですが、上手く全体をつなぎ合わせることができなくて…。
よろしくお願いします。



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


Name: box  ..比類無きプログラマー(93,444ポイント)   Date: 2007/11/18(日) 11:49   No:11917     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
> 部分的には出来る箇所もある

その箇所を提示してみるお考えはありますか?


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

Name: アルフレッサ  ..ぴよぴよ(342ポイント)   Date: 2007/11/18(日) 11:58   No:11918     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
早速のご返事ありがとうございます。
1に関しては、

#include <stdio.h>

int main(void)

int i;
int sqr[20];

for(i=1; i<=20; i++){
sqr[i] = i * i;
}
printf("数 2乗 \n");

ぐらいまではなんとか分かってまして、
2に関しましては、お恥ずかしいことにうるう年を求める

n%4 == 0 && n%100 ! = 0

しか分からないんです…。
もしお時間がありましたら、これを元にどういう形にすればいいのか教えて頂けたら幸いです。


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

Name: box  ..比類無きプログラマー(93,645ポイント)   Date: 2007/11/18(日) 12:09   No:11919     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
まず、課題1を片付けましょう。
実は、課題1は配列を使わなくてもできます。
しかし、今回は配列を使うとの指示なので、それに従います。

> int sqr[20];
>
> for(i=1; i<=20; i++){
> sqr[i] = i * i;
> }

というコードには、大きな問題があります。それは、
配列sqrでアクセスできるのはsqr[0]〜sqr[19]の20要素であるため、
for文によるループの中でsqr[20]にアクセスすることはできない、
という点です。

C言語の配列を使う際の添字はゼロ始まりである点を再確認してください。

上のコードをどのように修正すればよいかはわかりますか?


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

Name: アルフレッサ  ..ぴよぴよ(300ポイント)   Date: 2007/11/18(日) 12:51   No:11920     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
お返事ありがとうございます。
ご指摘頂いたものを修正するとしたら、

int sqr[20];

for(i=0; i<=19; i++){
sqr[i] = i * i;
}

でよろしいのでしょうか?


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

Name: box  ..比類無きプログラマー(93,818ポイント)   Date: 2007/11/18(日) 13:01   No:11921     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
> for(i=0; i<=19; i++){
> sqr[i] = i * i;

これですと、0〜19の2乗を配列に入れています。
題意と食い違っています。
解決するには、2つほど方法があります。

1)配列のn番目の添字に、(n + 1) * (n + 1) を入れる。
  この場合、ループを回すのは0〜19です。

2)配列のn番目の添字に n * n を入れるために、わざと1個分
  余計に配列の要素を確保しておく。つまり、
  int sqr[21];
  と定義します。こうすると、sqr[0]〜sqr[20]の21要素に
  アクセスできます。今回、sqr[0]は使わないまま放っておくことになります。
  こちらでは、ループを回すのは1〜20です。

上記1)2)について、おわかりになりますか?
2)は、ちょっとしたテクニックです。
どちらの方法をお採りになってもかまいません。


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

Name: アルフレッサ  ..ぴよぴよ(510ポイント)   Date: 2007/11/18(日) 13:10   No:11922     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
すみません…、ホントに初心者なんでよく分かりません…。
要するに、


int sqr[20];

for(i=0; i<=19; i++){
sqr[i] = (i+1) * (i+1);
}


とすればよいのでしょうか?
理解力がなくてすみません。


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

Name: box  ..比類無きプログラマー(93,953ポイント)   Date: 2007/11/18(日) 13:17   No:11923     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
> for(i=0; i<=19; i++){
> sqr[i] = (i+1) * (i+1);

そのとおりです。
これで、
sqr[0] には 1 * 1 = 1 が、
sqr[1] には 2 * 2 = 4 が、
(中略)
sqr[19]には 20 * 20 = 400 が、それぞれ入ります。
ここまではいいですか?

理解できたら、次の段階に進みましょう。

いったん配列sqrのことは脇へ置いておきます。
ある数値 n が 7 で割り切れるかどうかを判定する方法はおわかりですか?


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

Name: アルフレッサ  ..ぴよぴよ(561ポイント)   Date: 2007/11/18(日) 13:31   No:11924     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
ありがとうございます。
ご指摘されたものですが、それは、

n%7=0

でいいのでしょうか?



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

Name: box  ..比類無きプログラマー(93,994ポイント)   Date: 2007/11/18(日) 13:40   No:11925     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
> n%7=0

「n を 7 で割った余りが 0 と等しいならば」という
内容のif文を書くとき、等号は1つでいいですか?


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

Name: アルフレッサ  ..ぴよぴよ(685ポイント)   Date: 2007/11/18(日) 22:05   No:11933     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
返事遅れて申し訳ございません。
等号の件ですが、おそらく1つでいいんではないかと…。
2つ必要ならどこで使えばいいんでしょうか?


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

Name: 組木紙織  ..上級者(24,702ポイント)   Date: 2007/11/19(月) 08:09   No:11939     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
等号一つの意味は何でしょうか?
そして等号二つ並べること(==)の意味は何でしょうか?


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

Name: F  ..かけだし(1,137ポイント)   Date: 2007/11/19(月) 13:59   No:11945     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
等号一つだと代入になります
aにbを代入
a = b

比較するときは
aと同じ a==
a以外 a<>
a以外 a!=
aより大きい a<
aより小さい a>
a以上 a<=
a以下 a>=
などが基本です


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

Name: 組木紙織  ..上級者(24,782ポイント)   Date: 2007/11/19(月) 14:12   No:11946     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
一つ目のa以外はCの仕様にはなかったと思います。

確かVBの仕様だと記憶しています。


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

Name: F  ..かけだし(1,405ポイント)   Date: 2007/11/19(月) 14:52   No:11948     
Title: Re:C言語初心者で宿題が全然分からなくて困ってます…。    
すいません
a以外 a<>はVBでした、いろいろやってるので混じりました


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



Name: orz  ..ぴよぴよ(743ポイント)   Date: 2007/11/17(土) 22:16   No:11908       
Title: 再びn以下の素数問題><    
以前教えていただいたのですが、こちらの説明がふじゅうぶんで(A;´・ω・)フキフキ
再度投稿させてもらいます。

問題は
2〜100の範囲の整数nの入力を求める。範囲外の場合再度入力を求める。
そして範囲内ならn以下の素数をすべて求めさせ表示させる問題です。

ならったものが for if while だけで ほとんど知識はないです><
voidとかもとりあえずまだうつすかんじで後でわかるといわれました。
return break とかをつかわずにするそうです。
つかってるソフトはビジュアルベイシックです。
 
自分でつくってみたのですが#include <stdio.h>
void main()
{
int i,j,Num;
printf("2〜100の範囲の自然数を入力してください\n");
scanf("%d",&Num);
if(Num < 0 || Num > 100){
printf("範囲外です.再度入力してください.\n");
scanf("%d",&Num);
}
for(i = 3; i <= Num; i++){
for(j =2; j<i/2;j++){
if (i % j != 0){
printf("%d",i);
}}}}
2がかえってくるだけでした。

答えを教えてください○┓ペコッ
おねがいします。




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


Name: box  ..比類無きプログラマー(93,422ポイント)   Date: 2007/11/18(日) 00:04   No:11909     
Title: Re:再びn以下の素数問題><    
まず、素数の定義を日本語で書いてみてください。

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

Name: orz  ..ぴよぴよ(788ポイント)   Date: 2007/11/18(日) 18:34   No:11927     
Title: Re:再びn以下の素数問題><    
素数がそれじたいと1以外ではわりきれない数ということはわかってるのですが。
どうにも進みませんorz


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

Name: Hermit  ..上級者(16,153ポイント)   Date: 2007/11/18(日) 19:34   No:11928     
Title: Re:再びn以下の素数問題><    
> つかってるソフトはビジュアルベイシックです。

一応、ここは C言語の質問掲示板なんですが・・・


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

Name: box  ..比類無きプログラマー(94,013ポイント)   Date: 2007/11/18(日) 19:41   No:11929     
Title: Re:再びn以下の素数問題><    
> 素数がそれじたいと1以外ではわりきれない数ということはわかってるのですが。

今回は2〜最大100の範囲の素数を求めますね。
いちばん小さい素数は2です。
2と、2以外の素数とでは、どういう違いがあるでしょうか?


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

Name: maa  ..ぴよぴよ(42ポイント)   Date: 2007/11/18(日) 19:50   No:11930     
Title: Re:再びn以下の素数問題><    
書いてあるプログラムはC言語なのに
つかっているソフトはビジュアルベイシックとはこれ如何に?
何か勘違いをしていませんか?


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

Name: Hermit  ..上級者(16,545ポイント)   Date: 2007/11/18(日) 21:03   No:11931     
Title: Re:再びn以下の素数問題><    
とりあえず、VB2005 Express Edition のコンソールででっちあげてみました(^^;
前回のように 100 個の配列が取れないようだったので、普通に割り算で出しています。

Module Module1
Sub Main()
Dim i As Integer
Dim input As String
Console.Write("inputno:")
input = Console.ReadLine()
i = input
If i < 2 Then
Console.WriteLine("under 2")
Console.ReadLine()
Exit Sub
End If
If i > 100 Then
Console.WriteLine("over 100")
Console.ReadLine()
Exit Sub
End If
For prime As Integer = 2 To i Step 1
Dim Start As Integer
For Start = 2 To prime - 1 Step 1
If (prime Mod Start) = 0 Then
Start = 1
Exit For
End If
Next Start
If Start <> 1 Then
Console.WriteLine(prime)
End If
Next prime
Console.ReadLine()
End Sub
End Module


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

Name: orz  ..ぴよぴよ(793ポイント)   Date: 2007/11/18(日) 22:02   No:11932     
Title: Re:再びn以下の素数問題><    
あれ(A;´・ω・)フキフキ 何か勘違いをしているのですかね。おれは><それすらわかりませ。
Hermitさん。たびたびすみませんでした。

あきらめます○┓ペコッ


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

Name: orz  ..ぴよぴよ(840ポイント)   Date: 2007/11/18(日) 22:58   No:11934     
Title: Re:再びn以下の素数問題><    
ビジュアルスタジオでした。すみませんでした○┓ペコッ
なにぶんみぎもひだりもわからないもので(A;´・ω・)フキフキ


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

Name: orz  ..ぴよぴよ(871ポイント)   Date: 2007/11/18(日) 23:52   No:11936     
Title: Re:再びn以下の素数問題><    
手も足もでなかったので。
今回は教えてほしかったのですorz


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



Name: 探究者  ..ぴよぴよ(77ポイント)   Date: 2007/11/09(金) 14:17   No:11620       
Title: シューティングゲームについて    
初めまして。シューティングゲームの館を参考にして、ゲームを作っています。といっても書いてある通りにつくっているだけなのですが・・・・
今20節まで進んでいますが、詰まってしまいました。C言語自体初めて少ししかたっていないのでとても困っています。僕が実装したいのは敵の玉と自機の当たり判定、敵と自機との当たり判定。また当たった時の、敵が消えた時と同じように、自機の消滅処理、そしてその際の画像表示です。
19節のプレイヤーと敵との当たり判定と同じようにすればいいかと思ったのですがうまくいきません。
img_sound_load.cppとGlobalVariable.h、ExternGV.hは19節を参考にプレイヤーの消滅音、構造体にrangeを付け加えました。少し急ぐ必要があったので急ピッチで作ってきたせいか、自分で付け加えるのは難しいです。
どの部分にどうやって何を付け加えればいいのか、丸投げしているようで悪いのですが、なるべく詳しく教えてください。9節と10節の内容だけは飛ばしています。どうかよろしくお願いします。


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


Name: 管理人 [URL]  ..伝説のハッカー(438,684ポイント)   Date: 2007/11/10(土) 20:39   No:11650     
Title: Re:シューティングゲームについて    
すみません、遅れました。
私も丁度シューティングを作っているところでした。
今日中にほかのとぴでアップするので、よかったら見てください☆

なんか途中になってしまっていていろんな人に迷惑かけてますんね、ごめんなさい(_ _|||)
当たり判定は
敵の情報の中にenemy[i].rangeとでもしておいて、自機との距離、弾との距離を計算すればいいでしょう。
当たり判定については
http://l.huu.cc/g/#s11
ここで紹介しているので、よければご覧下さい。

当たり判定のチェックには総当りで調査する方法と、必要な分だけ、登録、調査する方法とあると思います。
後者は少しややこしいので、前者でやってみると、
単純に、全部の弾のフラグを調査し、表示されている弾と全部の敵の表示されているフラグを調査し、敵とを比較する方法です。
たとえば、



int range(計算する座標を受け取る){
if(当たりなら)
return 1;
return 0;
}

...(略)

for(i=0;i<全弾の数;i++){
if(弾.flag==1){//弾の表示がオンなら
for(j=0;j<全敵の数;j++){
if(敵.flag==1){//敵の表示がオンなら
if(range()==1){
消滅アクション;
弾のフラグを落とす;
敵のフラグを落とす;
break;
}
}
}
}
}
 

こんな感じで調査してやれば全部の比較が出来ると思います。
この数が異様に高くなってきたら気をつけてください。
設定上、敵の最大数10000、弾の最大数10000とかにしてしまうと、総当りの調査はここだけで1億回になってしまいます。
総当りの計算は計算量が多くなってしまうので、その点注意してください。

もし余裕があれば、配列や線形リストを使ったりして登録・検索・削除出来るような形にしてみるといいと思います。


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

Name: 探究者  ..ぴよぴよ(295ポイント)   Date: 2007/11/16(金) 23:39   No:11893     
Title: Re:シューティングゲームについて    
返信してもらって申し訳ありませんが、返信してもらったのは自機の玉と敵との当たり判定で、僕が教えてほしいのは敵の玉と自機の当たり判定、そして敵と自機との当たり判定です。
また、敵は MONSTER1_X_SIZE 140.0、MONSTER1_Y_SIZE 128.0とenemy[i].sizeでサイズを定義しているのに、自機のサイズが定義されていなくて困っています。
player.cppでPLAYER_MAX_SHOT1 11 、 PLAYER_MAX_SHOT2 15を用いていますが、ENEMY_TOTAL_NUM 100
ENEMY_TOTAL_SHOT_NUM 200をそのまま用いていいのでしょうか?
また計算式とプログラムがわかってもどのソース、どの部分に付け加えればいいのかがわかりません。
たびたびすいませんがなるべく詳しくご教授よろしくお願いします。





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

Name: 管理人 [URL]  ..伝説のハッカー(450,190ポイント)   Date: 2007/11/18(日) 02:54   No:11911     
Title: Re:シューティングゲームについて    
自機の弾と敵の当たり判定も、
敵の弾と自機の当たり判定も、同じ理論です。
全ての表示されている弾と、自分との距離を計算して、範囲内ならアウトにすればいいでしょう。

自機の当たり判定はご自分で定義されたらいいと思います。
定義が書いてある場所に自分の好きな名前で定義すればいいでしょう。

#define CH_RANGE 10

など・・。
私の作るゲームでは

#define CH_RANGE 2.6

にしています。

自機の当たり判定プログラムはまだ作られていないので、別に新しく作るといいと思います。
別にどこに作ってもいいし、順番は敵の方を計算してからでも、自機の方を計算してからでも、弾を発射してからでも、前でも別にいいと思います。
一般的にはうった後だと思いますが、それが1/60秒どちらになるかだけの話ですから。

自機との距離を計算する時も、sqrtを用いてピタゴラスの定理でとけばいいと思います。
あたったら、何かモーションをつけないとおかしくなりますし、自機無敵時間も作らなければ成らなくなりますので、注意してください。
無敵時間を作らないと接触中常に当たりというエフェクトが出てしまいます。


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



Name: つばさ  ..ぴよぴよ(884ポイント)   Date: 2007/11/17(土) 00:26   No:11894       
Title: Tの個数    
今、学校の授業でファイルの入出力をやっています。
"rand.dat"には0〜1の乱数が入っています。0.5未満の時には"T"が表示されそれ以外は"H"が表示されるようにするよう指示されました。そこまではできていると思うのですが。。。
最後にTがいくつ表示されたかをカウントするプログラムを入れなければならないのですができません。
何が間違っているのか教えてください。お願いします。


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100
int main(void)
{
int i,b=0;
double y,a[N];
FILE *fp1,*fp2;
fp1=fopen("rand.dat","r");
fp2=fopen("dice.dat","w");
for(i=0;i<=N-1;i++){
fscanf(fp1,"%lf",&a[i]);
}
for(i=0;i<=N-1;i++){
// printf("\n%d,%f",i,a[i]);
if(a[i]<0.5){
fprintf(fp2,"H");
printf("H");
}
else{
fprintf(fp2,"T");
printf("T");
}
}
printf("\n");

      /* ここから先がつまづいてる部分です。 */
for(i=0;a[i]!='\0';i++){
if("a[i]=='T'"){
b++;
}
}
fprintf(fp2,"Tは%d個あります。\n",b);
printf("Tは%d個あります。\n",b);



fclose(fp1);
fclose(fp2);
return 0;
}





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


Name: F  ..ぴよぴよ(79ポイント)   Date: 2007/11/17(土) 00:47   No:11895     
Title: Re:Tの個数    
for(i=0;a[i]!='\0';i++){
if("a[i]=='T'"){
ぱっとみたところではこれがまずおかしいと思います
a[i]に入ってるのは小数点では?


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

Name: F  ..ぴよぴよ(249ポイント)   Date: 2007/11/17(土) 00:54   No:11896     
Title: Re:Tの個数    

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100
int main(void)
{
int i,b=0;
double y,a[N];
FILE *fp1,*fp2;
fp1=fopen("rand.dat","r");
fp2=fopen("dice.dat","w");
for(i=0;i<=N-1;i++){
fscanf(fp1,"%lf",&a[i]);
}
for(i=0;i<=N-1;i++){
// printf("\n%d,%f",i,a[i]);
if(a[i]<0.5){
fprintf(fp2,"H");
printf("H");
}
else{
fprintf(fp2,"T");
printf("T");
b++;
}
}
printf("\n");

fprintf(fp2,"Tは%d個あります。\n",b);
printf("Tは%d個あります。\n",b);



fclose(fp1);
fclose(fp2);
return 0;
}


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

Name: つばさ  ..ぴよぴよ(942ポイント)   Date: 2007/11/17(土) 00:56   No:11897     
Title: Re:Tの個数    
確かに。。。
a[i]に入ってるのは小数点です。
文字列の時にはこうしていたのでこれでいいんだと思っていました。
では、
(double)a[i]
こういうのをつかうんですか??


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

Name: つばさ  ..ぴよぴよ(961ポイント)   Date: 2007/11/17(土) 01:01   No:11898 解決!     
Title: Re:Tの個数    
わかりました!!!
ありがとうございました。


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



Name: 管理人 [URL]  ..伝説のハッカー(447,572ポイント)   Date: 2007/11/14(水) 03:49   No:11806       
Title: 騙し絵の館    
小学校の図書館でエッシャーの絵に出合ってから騙し絵が好きだった私は、ずっとこんなページを作りかった・・ということでこんなページを作ってみました。

騙し絵の館
http://l.huu.cc/sakushi/

お暇があれば頭の休憩にどうぞ^^


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


Name: tkmakwins15 [URL]  ..プログラマー(38,574ポイント)   Date: 2007/11/14(水) 07:49   No:11807     
Title: Re:騙し絵の館    
エッ…
なぜか面積が減ってる………

ホントに同じ図形ですよね………


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

Name: 組木紙織  ..上級者(24,001ポイント)   Date: 2007/11/14(水) 08:56   No:11809     
Title: Re:騙し絵の館    
面積が変わってるやつですね。
あれは中学校の教科書に載ってました。
初めてめてみたときはなるほどと思いました。
きちっと計算すれば、面積が変わってるように見える理由が分かると思います。

有名どころではロビンの壷といったところですか。



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

Name: へろり  ..ぴよぴよ(642ポイント)   Date: 2007/11/14(水) 09:57   No:11810     
Title: Re:騙し絵の館    
私もこの手の物が大好きで、パズルの本などを見つけては衝動買いをしてしまいます。

組木紙織さんのおっしゃるロビンの壷と言うのはどういうものでしょうか。
ロビンの壷・ロビンの壺・ロビンのツボでgoogleのイメージ検索にかけてみましたが
見つかりません。

WEB検索でもめぼしい物は引っかかりませんでした。
非常に興味をそそられています。 よろしければ教えていただけませんか。


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

Name: 組木紙織  ..上級者(24,013ポイント)   Date: 2007/11/14(水) 10:35   No:11811     
Title: Re:騙し絵の館    
訂正です
ロビン → ルビンでした。


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

Name: tkmakwins15 [URL]  ..プログラマー(38,642ポイント)   Date: 2007/11/14(水) 17:34   No:11819     
Title: Re:騙し絵の館    
トリック、分かりました。

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

Name: 管理人 [URL]  ..伝説のハッカー(448,134ポイント)   Date: 2007/11/15(木) 03:39   No:11843     
Title: Re:騙し絵の館    
あら〜・・、投稿したつもりで投稿出来ていませんでした(汗

>組木紙織さん

ルビンの壷は確か中学校の美術の教科書で見ました。
小学校の図書室で読んだ本なんて、エッシャーの本と火の鳥しか無いんですが、なんか心に残っていますw

>へろりさん

おぉ、そうですか、本を買ったのは・・。
ウォーリーを探せ位でしょうかw
錯視の本は持ってないですが、欲しいですね。ただ最近何でもネットで見れるのでなかなかそういう
本を買う機会が無いんですよね^^;
もし面白い錯視をご存知でしたら、よければご紹介下さいm(_ _)m

>tkさん

この図形教授と30分位ずっとにらめっこした覚えがありますw
私が最も好きな錯視の一つです。
一番好きなのは、あの2番目の十字架の奴かな??
どうにも灰色には見えませんよね^^;


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

Name: へろり  ..ぴよぴよ(747ポイント)   Date: 2007/11/15(木) 09:02   No:11845     
Title: Re:騙し絵の館    
ルビンの壷見つけました。
これ、ルビンの壷って言うんですね^^;
名前までは知りませんでした^^;


面白い錯覚と言えば、以前友人とドラゴンの錯覚模型にはまったことがあります。
音楽室のベートーベンみたいに、いつでも自分を見つめてくれる寂しがり屋な奴です。

簡単に組めるので一度おためしください。


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

Name:  ..上級者(17,848ポイント)   Date: 2007/11/15(木) 15:04   No:11859     
Title: Re:騙し絵の館    
黒い点がちかちかするのがとても気に入りました!
こういうのいいですよね〜

箱のやつ(オブジェ?)はどう作ったんですか?めちゃくちゃ気になります。


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

Name: 管理人 [URL]  ..伝説のハッカー(448,692ポイント)   Date: 2007/11/16(金) 00:36   No:11870     
Title: Re:騙し絵の館    
>へろりさん
ルビンの壷を見たとき、あこれかと思いました。誰でも知ってる作詞の代表ですね!
錯視の模型があるんですか??
館で紹介しているようなオブジェですかね?
確かに音楽室の絵はこっちを見ているように見えますねw

>雷さん
箱の奴は軸と線のつながりと影を見るとわかりますよ^^
確かに良く出来ていますが、10度でも見る方向が変わるとばれてしまいますw
繋がって見えるものが実は・・


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

Name: tkmakwins15 [URL]  ..プログラマー(38,855ポイント)   Date: 2007/11/16(金) 21:19   No:11886     
Title: Re:騙し絵の館    
こんなのどうでしょう?

ツェルナー錯視

ウィキペディアで見つけました。なので、著作権はあまり問題にならないとおもいます。


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

Name: 管理人 [URL]  ..伝説のハッカー(449,488ポイント)   Date: 2007/11/16(金) 23:14   No:11891     
Title: Re:騙し絵の館    
おもしろいですよね〜、いかに人間がいい加減に物を判断しているかわかりますよねw
その鈍さが逆に人間の判断を効率化させているんでしょうけど、こういう穴はあるものですねw


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



Name: nora  ..ぴよぴよ(169ポイント)   Date: 2007/11/16(金) 13:17   No:11877       
Title: C宿題    
#include <stdio.h>
#include <stdlib.h>
#define NMAX 20

/* リストの構成要素となる構造体 node_tag */
struct node_tag {
int num; /* 月を格納する整数 */
char name[NMAX]; /* 名前を格納する配列 */
??????? /* 自己参照:次のデータへのポインタ next */
};


int main(void)
{
/* 12の要素をもつ構造体配列の定義 */
struct node_tag Month[12] = { {1, "January", NULL},
{2, "February", NULL},
{3, "March", NULL} };
struct node_tag *p; /* ポインタ p */

/* 各要素をつなぐ (以下の図を参考に)*/
???????
    p=&Month[0];
while (p!=NULL){ /* p を用いてリストの表示 */
printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */
p=??????? /* p を p の next とする */
}

return 0;
}
????の部分を埋めてください
提出日が今日なのでできたら頼みます


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


Name: nora  ..ぴよぴよ(558ポイント)   Date: 2007/11/16(金) 13:18   No:11878     
Title: Re:C宿題    
#include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */
#define MAX 20
#define MMAX 100

/* リストの構成要素となるセルの構造体 node_tag */
struct node_tag {
int num; /* 配列の番号を格納する整数 */
char name[NMAX]; /* 名前を格納する配列 */
??????? /* 自己参照:次のデータへのポインタ */
};


int main(void)
{
struct node_tag Meibo[MMAX]; /* 構造体配列の定義 */
int n=0; /* 配列の番号を格納する整数 n,初期値は 0 */
struct node_tag *head, *p; /* リストの先頭を指すポインタ head,新しく追加するノードを指すポインタ p */
head=NULL;

while ( scanf("%s", ???????) != EOF ){
Meibo[n].next=???????; /* 新しく追加するノード(Meibo[n]) の next が指すものは? */
head=???????; /* 先頭データ(head)は どこを指すか? */
???????=n++; /* Meibo[n] の num に配列番号を格納する整数を入れる */
}

p=head;
while (p!=NULL){ /* リストの表示 */
printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */
p=???????; /* p を p の next とする */
}

return 0;
}
これが2問目のpログラムの穴埋めです
よろしくおねがいします


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

Name: バグ  ..比類無きプログラマー(64,944ポイント)   Date: 2007/11/16(金) 14:42   No:11879     
Title: Re:C宿題    
提出日が今日だとかはどうでもいい事なので、この課題の何が分からなくて、授業ではどの程度の事を学んだのかを書き込みして下さい。

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

Name: 管理人 [URL]  ..伝説のハッカー(449,420ポイント)   Date: 2007/11/16(金) 23:13   No:11890     
Title: Re:C宿題    
提出日が今日だと言うことで、もう見ていらっしゃらないかもしれませんが、今後の為に。
ここは課題を誰かにやってもらう場ではないので、問題を提示して「かわりにやってください」という投稿は規約違反とさせてもらっています。
どこがわからないのかは書けるはずですので、(仮に全く手も足も出ないにしても、どの辺まで経験があるとか、授業ではどこまでやったとか書けるはずですので)最低限説明をお願いします。
プログラミングの課題が出ると言う事は情報系の専攻をされているのでしょう。せっかく興味があって、その学科をお選びになったのでしょうから、今のお金を出して買っている時間を無駄にせず、頑張ってください。


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



Name: 初心者さ田中  ..ぴよぴよ(22ポイント)   Date: 2007/11/16(金) 17:07   No:11881       
Title: 無題    
ビルド開始するとファイルがありませんと!
メッセージがでてくるのですが


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


Name: \n  ..ぴよぴよ(115ポイント)   Date: 2007/11/16(金) 18:20   No:11882     
Title: Re:無題    
だからなんでしょうか?

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

Name: parapara  ..初心者(7,259ポイント)   Date: 2007/11/16(金) 19:58   No:11883     
Title: Re:無題    
説明不足過ぎ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜です。これでは何がなんだかさっぱりです。
Dixq様の作った注意事項(規約と使い方)を良く読みましょう。


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

Name: 管理人 [URL]  ..伝説のハッカー(449,263ポイント)   Date: 2007/11/16(金) 23:09   No:11889     
Title: Re:無題    
まず、環境がどうで、どうやってコンパイルしていて・・という説明が全くないと答えようが無いので、その辺はっきりお書き下さいm(_ _)m

単にコンパイルしようとしているファイルが無いのか、それともwindows.hとかをインクルードしようとしてヘッダファイルが見つからないと言っているのか、可能性は沢山考えられますので。

無料のボーランド製のコンパイラをコンソール画面から利用されているのでしょうか?
それならコンパイルしようとしているフォルダにファイルが無いのではないでしょうか。
コンソール画面でのフォルダ移動は

cd ..

で一つ上に、

cd ○○

でそのフォルダに移動します。色々知らないとやりにくい手続きもあるので、
もしよければこちらのコンパイラもお使い下さい。
ボーランドの無料のコンパイラだと環境設定など色々自分でやらないといけないので、それが出来ていないとコンパイルも出来ませんし。

http://www.microsoft.com/japan/msdn/vstudio/express/visualc/


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



Name: C.P.P  ..初心者(5,149ポイント)   Date: 2007/11/14(水) 16:26   No:11818       
Title: const int による定義についての質問    
こんにちは☆いつもお世話になっております♪

今回も質問なんですが、よろしくお願いします(^_^)

以前こちらのサイトでDXらいぶらりによるマウス操作の質問をさせていただきました。
その際に、サンプルプログラムとしていただいたプログラムの中に、

//家を囲む一片の半分の長さ
const int rangeX = home->scale * 10/2, rangeY = home->scale * 5/2;

という行があります。これは、家をDrawLine関数やDrawBox関数を用いて描いた家の絵をマウスによって移動するために、マウスのドラッグ位置をこの範囲の指定によって得るものです。

つまり、
int rangeX = home->scale*10/2, rangeY = home->scale*11/2;
if(mouseinfo->pos.x >= home->pos.x - rangeX && mouseInfo->pos.x <=pos.x + rangeX
&& mouseInfo->pos.y >= home->pos.y - rangeY && mouseInfo->pos.y <= pos.y + rangeY)
{
home->is_dragging = TRUE;
home->drag_offset.x = mouseInfo->pos.x - home->pos.x;
home->drag_offset.y = mouseInfo->pos.y - home->pos.y;
}
(これは範囲内だった場合、ドラッグ開始というプログラムです。)

このように使うのですが、このrangeXとrangeYの定義の仕方がよく分かりません・・・
rangeX = home->scale * 10/2 とする事により、半分の長さの定義になるらしいのですが、なぜhome->scale(これは家の大きさであり、初期値は5)に10/2をかけるのでしょうか?

初心者な質問で申し訳ございません・・・
よろしくお願いいたしますm(>o<)m

またその際いただいたサンプルプログラムを添付させていただきます・・・

drag_test1の方がそうです。
お願いいたします☆


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


Name: Justy  ..ハッカー(170,738ポイント)   Date: 2007/11/14(水) 22:53   No:11840     
Title: Re:const int による定義についての質問    
>このrangeXとrangeYの定義の仕方がよく分かりません・
 えーとですね。

 home->scale*10/2

 の式における home->scaleはいいですよね?
 10というのは Home_Draw()を見てもらえるとわかると思うのですが、
DrawTriangle()で、xの座標に

home->disp_pos.x+home->scale*10

 というのがあります。
 ここで 10という定数が出てきています。
 この座標はトライアングルの右端を表しており、この家を構成する座標の
最も右となります。
 逆に左端は 0なので、家の横幅は 10 - 0 で、10。
 なので、半分の 5にすれば丁度家の横幅の半分の長さとなります。


 同様に height方向も2つ目の DrawBox()で 11を掛けている座標があります。
 そこが家を構成する座標の最も下の座標になり、同様に 11を半分にすれば
高さの半分の長さとなります。


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

Name: C.P.P  ..初心者(5,688ポイント)   Date: 2007/11/15(木) 12:08   No:11857     
Title: マウスによる描画の編集    
返信ありがとうございます☆
大変分かりやすく、かなり助かりました。ありがとうございます♪

理解してみればかなり簡単すぎる質問で申し訳ございません・・・
これからやっと、前へ進めそうです☆

あの、申し訳ございませんが、昨日プログラムを組んでまして、もう一つ分からないところがありましたんでもしよろしかったら教えてください・・・

DrawLine,DrawBoxによって、書いた家の絵があります。
その家の端っこをマウスによってつかんで、伸ばしたい(大きさを変える)のですが、何かいい方法はございませんか?

今考えてやろうとしましたのは、
DrawBoxの描画関数の座標定義の際に、
DrawBox
(  home->disp_pos.x+home->scale*home->start_pos.x,
    home->disp_pos.y+home->scale*home->start_pos.y,
home->disp_pos.x+home->scale*home->end_pos.x,
home->disp_pos.y+home->scale*home->end_pos.y,
home->is_dragging? Yellow: White, TRUE
);
という感じで,start_pos,end_pos(家構造体の中に入れ2次元ベクトルで与えたもの)による座標で表し、end_posをマウスによって移動すればよいと考えているのですが・・・
なかなか上手くいきません。。。
(端っこだけを掴むという範囲指定も分かりません・・・)

なにかやり方が間違っている、もしくはこの方法以外になにかいい方法を知っている方がいらっしゃいましたら教えてください。お願いいたしますm(>o<)m


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

Name: Justy  ..ハッカー(171,098ポイント)   Date: 2007/11/16(金) 02:12   No:11871     
Title: Re:マウスによる描画の編集    
その家の端っこをマウスによってつかんで、伸ばしたい(大きさを変える)のですが、
何かいい方法はございませんか?
 start_pos/end_posが左上・右下のことを言っているのであれば
考え方としては間違っていません。
 左上と右下の座標を出して、その2点を通る矩形を考えます。

 その矩形の辺の周辺でマウスが押されたら、「移動」の為のドラッグではなく
「拡大縮小」の為のドラッグの処理を行います。

 ここで注意が必要なのは、どこを掴んだかによって処理が分かれます。
 上の辺を掴んだら下の辺はそのままに上の辺が移動します。
 右の辺を掴んだら左の辺はそのままに右の辺が移動します。
 下・左も同様です。

 この4つの処理の複合もあります。
 左上・左下・右上・右下の位置からドラッグした場合ですね。
 
 
端っこだけを掴むという範囲指定も分かりません
 矩形の辺や角にマウスが載っているいるかどうかの判定ですか?
 右上などの角であれば単純にその点からの一定の半径以内にあるかで判定できます。
 
 辺上にあるかの判定は、各辺毎に処理を行う必要があります。
 辺と考えると長さはあっても厚みはないですが、(掴みやすいように)あえて厚みのある
細長い矩形と考えれば点と矩形の判定になります。
 これを4辺で行えばOKです。


 まぁ、ゆっくり考えてみて下さい。


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

Name: C.P.P  ..初心者(5,827ポイント)   Date: 2007/11/16(金) 15:38   No:11880     
Title: Re:マウスによる描画の編集    
返信ありがとうございます☆

的確なアドバイスありがとうございますm(^_^)m
なんとかいい所までは出来て来ましたんで頑張ってみます!

DXライブラリって楽しいですね☆
最初は全く何も知らなかったところから、やればやるだけ出来るようになりますし☆

また、質問させていただくことがあると思いますが、その際にはよろしくお願いいたします!
本当にありがとうございました☆


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



Name: 鷹見 ソラ  ..ぴよぴよ(582ポイント)   Date: 2007/11/15(木) 15:48   No:11860       
Title: シューティングゲームの館の18章の質問    
はじめまして 

シューティングゲームの館を見ながらシューテングゲーム制作に挑戦しています
18章の コードなのですが少し改造して
1回のEnemyPatternで2回ショットを撃たせようと思っているのですが
るにはどうすればいいでしょうか?

void EnemyPattern(int i){
int j;
if(enemy[i].counter<50)
enemy[i].y+=4.0f;

if(enemy[i].counter==75){
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
}

if(enemy[i].counter>76 && enemy[i].counter<95)
enemy[i].x+=2.0f;

if(enemy[i].counter==100){
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
}

if(enemy[i].counter>100){
enemy[i].y-=2.0f;
}
DrawFormatString(0,0,color_White,"EnemyShot[%d]flag",EnemyShot[i].flag);
}

counterが100になる前に弾に当たってフラグを消すと
ちゃんとcounter100は実行されます








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


Name: 管理人 [URL]  ..伝説のハッカー(448,405ポイント)   Date: 2007/11/16(金) 00:28   No:11868     
Title: Re:シューティングゲームの館の18章の質問    
EnemyShot[i].EnemyShots[○].flag
で弾のフラグを上げています。
○の部分を一つずつ増やしていけばいいですよ。
EnemyShot[i].EnemyShots[0].flag=1
にすると[0]番の弾がオンになります。
EnemyShot[i].EnemyShots[1].flag=1
にすると[1]番の弾がオンになります。
登録時には初期座標など初期設定をしてやります。
後、登録部、計算部は分けた方が汎用的ですね。
ホントわかりにくいですよね。
皆さんには迷惑かけています。すみません(_ _|||)


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

Name: 鷹見 ソラ  ..かけだし(1,567ポイント)   Date: 2007/11/16(金) 11:08   No:11876     
Title: Re:シューティングゲームの館の18章の質問    
回答ありがとうございます

ひとつのパターンで 2回弾を発射させることには成功しましたが
2つの弾は発射された座標から動かずにそのまま停滞してしまいました
↓のように変えてみたのですが

/**enemy_shot.cpp**/

void EnemyShotPattern1(int i){
if(EnemyShot[i].counter==0 && enemy[i].flag==1){
EnemyShot[i].EnemyShots[m].flag=1;
EnemyShot[i].EnemyShots[m].x=EnemyShot[i].mem_ex;
EnemyShot[i].EnemyShots[m].y=EnemyShot[i].mem_ey;
EnemyShot[i].Angle[0] = atan2(EnemyShot[i].mem_py-EnemyShot[i].mem_ey,
EnemyShot[i].mem_px-EnemyShot[i].mem_ex);
PlaySoundMem(sound_enemy_shot,DX_PLAYTYPE_BACK);
m+=1;//mの値1UP
}
EnemyShot[i].EnemyShots[m].x+=PATTERN1SPEED*cos(EnemyShot[i].Angle[0]);
EnemyShot[i].EnemyShots[m].y+=PATTERN1SPEED*sin(EnemyShot[i].Angle[0]);
// DrawFormatString(0,100,color_White,"[%d]flag",m);
}

/*enemy.cpp*/

void EnemyPattern(int i){
int j;
if(enemy[i].counter<50)
enemy[i].y+=4.0f;

if(enemy[i].counter==75){
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].EnemyShots[m].flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
}

if(enemy[i].counter>76 && enemy[i].counter<95)
enemy[i].x+=2.0f;

if(enemy[i].counter==100){
for(j=0;j<ENEMY_TOTAL_NUM;j++)
if(EnemyShot[j].EnemySHot.flag==0)
break;
EnemyShot[j].mem_ex=enemy[i].x;
EnemyShot[j].mem_ey=enemy[i].y;
EnemyShot[j].mem_px=Player.x;
EnemyShot[j].mem_py=Player.y;
EnemyShot[j].counter=0;
EnemyShot[j].flag=1;
EnemyShot[j].pattern=1;
EnemyShot[j].img=0;
}
}

m は別の所で最初に0にしてあります
EnemyShot[i].EnemyShoys[m].flag の m の値を1つ1つあげてるつもりなのですが

回答お願いします


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

Name: 鷹見 ソラ   Date: 2007/12/04(火) 06:09   No:118601196716162 解決!     
Title: Re:シューティングゲームの館の18章の質問    
すみません この場所以外の所が間違っていたようです一番上のコードでも動きました
お騒がせしました本当にありがとうございます




Name: がんも  ..入門者(4,490ポイント)   Date: 2007/11/15(木) 01:10   No:11842       
Title: 構造体配列    
polygon.datというファイルがあります(添付しました)。xの座標とyの座標は11組かいてあります。
外部変数で宣言した構造体配列V[]に、このpolygon.datの内容をおさめるプログラムを作りたいと思ってます。
外部変数の定義は以下のようになってます。
typedef struct {double x, y;} Point; Point V[100]; int N;

やろうとしてることはわかるのですが、やり方がよくわかりません
まずファイルをオープンして、
fgetsを使って一文字ずつ読み込んで配列におさめればいいのでしょうか?
xとyと別々にですよね。そのあたりをどのようにしたらいいのかわからないので、どなたかヒントでもいいので教えていただけませんか?
xとyと配列におさめることができたら(例えばx[],y[]として)
V[i].x=x[] みたいに代入することは可能ですか??


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


Name: バグ  ..比類無きプログラマー(64,763ポイント)   Date: 2007/11/15(木) 10:18   No:11847     
Title: Re:構造体配列    
>>fgetsを使って一文字ずつ読み込んで配列におさめればいいのでしょうか?

フォーマットが固定されているならば、fgets関数よりもfscanf関数の方が楽ですよ。


>>V[i].x=x[] みたいに代入することは可能ですか??

変数型が同じならば問題無いと思います。ただし、添え字はきちんと記入してくださいね。


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

Name: がんも  ..入門者(4,514ポイント)   Date: 2007/11/16(金) 02:44   No:11873 解決!     
Title: Re:構造体配列    
ありがとうございます!


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



Name: さがら  ..ぴよぴよ(264ポイント)   Date: 2007/11/16(金) 02:23   No:11872       
Title: マウスジェスチャっぽいプログラム    
自分はosはxpでvisualstudio.NET2003を使っています。
質問なのですが、フラグの立て方が分かりません。
xとyの座標を保存するキューを作り、10フレーム分そこに保存し、更新していきます。
現在の座標と10フレーム前の座標とを比較し、その2点から垂線やacosを用いて角度を
求めました。そこでその角度がある一定の範囲内ならフラグを立ててカーソルを右
に移動させたらクリックというようにやりたいのですが。L字型のようなジェスチャです。
右という判断も同様に角度にしようと思っています。

よろしかったらアドバイスお願いします。



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




Name: ロコ  ..ぴよぴよ(86ポイント)   Date: 2007/11/15(木) 19:37   No:11861       
Title: シューティングゲームの館の6章について。    
はじめまして。

シューティングゲームの館でSTG制作の勉強をさせてもらっています。
凄く初歩的な質問なんですが、第6章の分割コンパイルについてなんですが
BBC Developerでメイクをすると毎回下のようなエラーが出てしまいます。

contains invalid OMF record, type 0x4c (possibly COFF)


ソースファイルの間違いかと思い、全て見てみたんですが打ち間違いはありませんでした。
ちなみに、5章まではエラーは一つも出ませんでした。

初歩的な質問で申し訳ないですが、よろしくお願いします。


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


Name: 管理人 [URL]  ..伝説のハッカー(448,529ポイント)   Date: 2007/11/16(金) 00:31   No:11869     
Title: Re:シューティングゲームの館の6章について。    
すみません、Developerは使ったことがありません;
この辺参考になるでしょうか
http://www.google.co.jp/search?hl=ja&q=Developer%E3%80%80%E5%88%86%E5%89%B2%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB&lr=

VC++は無料でも、製品版と変わらない位の機能使えますので、もしよかったらどうぞ
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/


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



Name: ムラ  ..ぴよぴよ(170ポイント)   Date: 2007/11/15(木) 21:16   No:11863       
Title: 無題    
HPのシューティングを見て、C++の勉強に役立てています。
できれば更新してもらいたい…んですけど、無理はしないでくださいw


称号は…
言っちゃっていいんですかね?w
とりあえずランクはKでした。

一応東方は結構やり込んだ方なんで、弾幕ゲームは得意なんですけど難易度高かったですw
あ、やったのはノーマルの方です。
ちょっと自分のPCのスペックが低く60fps〜40fpsを逝ったり来たりという感じで、かなりガクガクだったのも原因でしょうけど…。

あと、ゲーム中の竜神様のコメに吹きましたwww


バグってほどでもないんですけど、ボス戦の時に追跡弾が反射して戻ってくる?みたいな感じになっていたのが少々気になりました。
あとボス戦での弾の当たりエフェクトが2箇所に分かれていて、へんなところに表示されてしまっているのも気になりました。

あとはただただ感動しました!
東方風神録をほぼ完璧に再現していて、すごかったです!

これからもがんばってください(≧ω≦)b


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


Name: 管理人 [URL]  ..伝説のハッカー(448,223ポイント)   Date: 2007/11/16(金) 00:18   No:11867     
Title: Re:無題    
こんにちは、プレイしていただきありがとうございます^^
いやいやすぐにクリアできる時点でうまいですよ!
ニコニコでは、散々1面のシステムになってないといわれましたが、あれは1面から最後までを一まとめにした構造になっているつもりですm(_ _)m
ちょっと処理が重いですよね。右側ボードにもエフェクトを使っているせいもあるでしょうか。
よければスペックを教えていただけないでしょうか?

シューティングの館はフラッシュもがくがくで、直したいところだらけなんで、龍陣録を完成させて、
龍陣録のコードを公開して、みんなで龍陣録を作ってみようみたいなページにしようと思っています。
あんなクソゲーでよければ^^;

そうそう、ボスの時の反射は気になりますよね。特定カウント数、敵を追い続けるホーミングになっているんですが、ボスには弾が当たらない期間があるので、そのせいで、ホーミングが違う方向を向いてしまうんです。
単に、無敵時間にあたったら、弾のフラグを落とせばいいんで、そのバグはすぐ直せると思います。
ボスの当たりエフェクトも気になりますね^^;直しておきますm(_ _)m

お褒めの言葉ありがとうございます^^
ただ似すぎている、ただのパクリだ、しまいには東方のプログラムを改竄したんだと(どうやってする気?)言われたので、独自性も重要なんだなと痛感しました。
まだまだ勉強する事だらけなので、頑張っていこうと思います!
ありがとうございました☆


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



Name:  ..ぴよぴよ(446ポイント)   Date: 2007/11/14(水) 21:01   No:11827       
Title: 画像出力についての質問    
配列に0と1が、
11111000001111
11111000010011
11010011001111
00011101101010
というように格納されているとして(格納内容は例なのでどんなものでもよいのですが)
これを0が黒、1が白(もしくわ0が白、1が黒)のモノクロ2値の
画像として出力させたいのですがどのようにすればよいでしょうか?


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


Name: バグ  ..比類無きプログラマー(64,675ポイント)   Date: 2007/11/14(水) 21:02   No:11828     
Title: Re:画像出力についての質問    
開発環境によります。

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

Name:  ..ぴよぴよ(457ポイント)   Date: 2007/11/15(木) 13:40   No:11858     
Title: Re:画像出力についての質問    
VC++6.0を使用しておりC言語を使用しています。

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

Name: 組木紙織  ..上級者(24,152ポイント)   Date: 2007/11/15(木) 20:51   No:11862     
Title: Re:画像出力についての質問    
>画像として出力させたいのですがどのようにすればよいでしょうか?

画像形式のファイルを出力するという意味でしょうか?
ビットマップ形式ですが、こちらが参考になると思います。

wordをダウンロードするようになっているので、間違えてダウンロードしないために意図的に
頭のhをはずしています。
ttp://download.microsoft.com/download/f/8/c/f8c28e58-aeb7-4d9d-9b64-2042833e0658/gazojisshu.doc


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



Name: TKSZ  ..かけだし(1,068ポイント)   Date: 2007/11/14(水) 19:21   No:11821       
Title: ハイスコアランキングの作り方を教えてください    
c言語でシューティングゲームを作っているのですが、
ハイスコアランキングを導入しようと思い、
簡単なサンプルプログラムを作成しました。
しかし、思うように動かず困っています。
どこがおかしいのでしょうか?

具体的におかしい部分は、実行すれば分かるのですが、
SADというスコアネームが連続して表示されてしまうのです。

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

struct ScoreName{ /*スコアネーム構造体*/
    char name[3];
    int score;
};

int BubleSort(ScoreName x[ ], int n) /*バブルソート*/
{
    int i, j;
    ScoreName temp;

    for (i = 0; i < n - 1; i++) {
    for (j = n - 1; j > i; j--) {
        if (x[j - 1].score < x[j].score) { /* 前の要素の方が小さかったら */
            temp = x[j]; /* 交換する */
            x[j] = x[j - 1];
            x[j - 1] = temp;
                }
        }
    }
}

int main(void)
{
    FILE *fp; /*ファイルポインタ*/
    ScoreName test[10];/*={"T.S",0,"A.S",0,"NAS",0,"TOM",0,"BAK",0,
             "GOM",0,"VER",0,"HOK",0,"JAK",0,"BOY",0}; */
    int i,j,tmp;
    ScoreName point={"SAD",0}; /*新しい点数*/


    srand(time(NULL)); /*乱数の初期化*/

    for(i=0;i<10;i++)
    {
        /*strcat(test[i].name,"T.S");*/
        point.score = (rand()%2000)+6000; /*新しい点数に6000以上の点数を与える*/
        /*test[i].score=(rand()%3000)+5000;*/
    }

    fp=fopen("score.dat","r"); /*ファイルオープン*/
    for(i=0;i<10;i++)
    {
        fscanf(fp,"%s",test[i].name); /*fscanfでネームに文字列を代入*/
        fscanf(fp,"%d",&test[i].score); /*fscanfでスコアに点数を代入*/
    }
    fclose(fp); /*ファイルクローズ*/

    for(i=0;i<10;i++) /*バブルソート前の構造体配列(スコアネーム)を表示*/
    {
        printf("%s,%d\n",test[i].name,test[i].score);
    }

    for(i=0;i<9;i++) /*最も肝心な部分(スコアが新しいスコアより大きくて、かつ
         スコアが新しいスコアより小さければ新しいスコアを代入する*/
    {
        if(point.score>test[i+1].score && point.score<=test[i].score)
        {
            for(j=i;j<9;j++)
            {
                test[j+1].score=test[j].score;
            }
            test[i]=point;
        }
    }

    BubleSort(test,10); /*バブルソートする*/



    printf("ソートしました。\n\n"); /*ソートした旨の文字表示*/

    fp=fopen("score.dat","w"); /*ファイルオープン(書き込み)*/
        for(i=0;i<10;i++)
        {
            fprintf(fp,"%s\n",test[i].name);
            fprintf(fp,"%d\n",test[i].score);
        }
    fclose(fp);

    for(i=0;i<10;i++) /*ソート後の構造体配列の中身を表示する*/
    {
        printf("%s,%d\n",test[i].name,test[i].score);
    }

    return 0;
}




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


Name: parapara  ..初心者(7,144ポイント)   Date: 2007/11/14(水) 20:06   No:11823     
Title: Re:ハイスコアランキングの作り方を教えてください    
バブルソート自体が既に間違ってるように思うのですが・・・
気のせいでしょうか?


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

Name: miyaza  ..中級者(11,284ポイント)   Date: 2007/11/14(水) 20:06   No:11824     
Title: Re:ハイスコアランキングの作り方を教えてください    
bcc でコンパイルしたらエラーが11個警告が1個出ました。
エラーは構造体変数の宣言のときにstructがついていないのが原因ですが、
そちらの環境は何ですか?

いきなりscore.datを読み込むところから始まるのですが、こちらには存在しないのでまともに実行できません。
名前とスコアが入っていることは分かりますが・・・・・・
score.datの中身も提示して頂けるとありがたいです。



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

Name: TKSZ  ..ぴよぴよ(841ポイント)   Date: 2007/11/14(水) 20:53   No:11825     
Title: Re:ハイスコアランキングの作り方を教えてください    
paraparaさん
>>バブルソート自体が既に間違ってるように思うのですが・・・
>>気のせいでしょうか?
多分あっていると思います。ネットで検索して拝見したバブルソートのソースを
改良して使っています。

miyazaさん
>>bcc でコンパイルしたらエラーが11個警告が1個出ました。
>>エラーは構造体変数の宣言のときにstructがついていないのが原因ですが、
>>そちらの環境は何ですか?
すいません、私の環境は、WindowsMeでBCCを使っています。
あと、c言語で開発しているといいながらも、ソースファイルの拡張子は
.cppでした。多分それが、エラーの原因だと思います。

>>いきなりscore.datを読み込むところから始まるのですが、こちらには存在しないのでまともに実行できません。
>>名前とスコアが入っていることは分かりますが・・・・・・
>>score.datの中身も提示して頂けるとありがたいです。
score.datを添付しますね。


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

Name: TKSZ  ..ぴよぴよ(875ポイント)   Date: 2007/11/14(水) 21:18   No:11829     
Title: Re:ハイスコアランキングの作り方を教えてください    
zipファイルの中には、
score.dat
修正したScoreAttack.c
cpp_test.bdp
cpp_test.exe
が含まれています。


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

Name: miyaza  ..中級者(11,650ポイント)   Date: 2007/11/14(水) 22:19   No:11837     
Title: Re:ハイスコアランキングの作り方を教えてください    
スコアリストの途中に新しいスコアを入れてその分ずらしていく部分がおかしいと思いました。

ScoreName構造体をもう一個用意してなるべくもとを変えないようにつくってみました。
(構造体をもう一個使ってる時点でもとを変えている気がしますが)
以下一部

BubleSort(test,10); /*バブルソートする*/
memcpy(test2,test,sizeof(ScoreName)*10);

for(i=0;i<10;i++){
if(point.score>test[i].score){
for(j=i;j<9;j++) test[j+1]=test2[j];
test[i]=point;
break;
}
}


ScoreName test2[10]としてももう一個構造体を用意しました。
まず、先にバブルソートします。
それからtestをtest2へコピーします。
if文でtest[i].scoreよりpoint.scoreの方が大きかったら
そこから一個ずつずらしていきます。
その後test[i]にpointを入れてループを抜けます。

たぶんこれでいけると思いますが・・・・・・
そもそも意図と違ったらすみません。

SADが二回表示されるというのが良く分かりませんでした。




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

Name: バグ  ..比類無きプログラマー(64,804ポイント)   Date: 2007/11/15(木) 10:22   No:11848     
Title: Re:ハイスコアランキングの作り方を教えてください    
名前が3文字ならば、構造体のchar型配列はもう1つ要素を増やしておいた方がいいのではないでしょうか?

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

Name: TKSZ  ..ぴよぴよ(946ポイント)   Date: 2007/11/15(木) 11:08   No:11851 解決!     
Title: Re:ハイスコアランキングの作り方を教えてください    
miyazaさん
ありがとうございます。
これで、上手くいきそうです。
もっと精進します。

バグさん
そうですね。何故か、重なるバグと格闘中に
そうしてしまいました。



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

Name: とろとろ  ..ぴよぴよ(448ポイント)   Date: 2007/11/15(木) 11:56   No:11856     
Title: Re:ハイスコアランキングの作り方を教えてください    
初めまして。
とりあえず、バグを3つほどあげます。
・バグ1

for(j=i;j<9;j++)
{
test[j+1].score=test[j].score;
}

において、例えばi=5の場合
test[6].score=test[5].score;
test[7].score=test[6].score;
test[8].score=test[7].score;
test[9].score=test[8].score;
が実行され、結果として
test[9].score=test[8].score=test[7].score=test[6].score=test[5].score;
となり、同じスコアが並んでしまう結果となる。

・バグ2
↑の処理ではスコアネーム構造体の要素、名前とスコアの内、スコアしか処理してません。

・バグ3
/*最も肝心な部分(スコアが新しいスコアより大きくて、かつ
スコアが新しいスコアより小さければ新しいスコアを代入する*/
とあるfor文の中にあるfor(j=i;j<9;j++) は、
たぶん1度だけ実行されることを考えてると思いますが、
その処理が終わった後もfor(i=0;i<9;i++)が実行されるので、
何回も実行される可能性があります。

解決案として3つあげます。

・解決案1

for(j=i;j<9;j++)
{
test[j+1].score=test[j].score;
}
test[i]=point;



for(j=9;j>i;j--)
{
test[j]=test[j-1];
}
test[j]=point;
break;

とかえる。

・解決案2
ScoreName test[10]をScoreName test[11]と配列を大きくして、
test[10]にScoreName point={"SAD",9999}; /*新しい点数*/ を入れて
BubleSort(test,11)とする。

for(i=0;i<9;i++) /*最も肝心な部分(スコアが新しいスコアより大きくて、かつ
         スコアが新しいスコアより小さければ新しいスコアを代入する*/
{
if(point.score>test[i+1].score && point.score<=test[i].score)
{
for(j=i;j<9;j++)
{
test[j+1].score=test[j].score;
}
test[i]=point;
}
}

は削除します。
つまり、スコアネーム構造体に空きを作ってそこに新しいスコアネームをいれて、
バブルソートすればいいのではないでしょうか。

・解決案3
/*最も肝心な部分(スコアが新しいスコアより大きくて、かつ
スコアが新しいスコアより小さければ新しいスコアを代入する*/
という、
既にソートしてある配列に新しく要素をいれてまたソートする処理は、
「挿入ソート」とよばれる処理がよいのではないでしょうか。


・解決案2の補足
例えば、
test[0].score=90;
test[1].score=80;
test[2].score=70;
test[3].score=60;
test[4].score=50;
test[5].score=40;
test[6].score=30;
test[7].score=20;
test[8].score=10;
test[9].score=0;/*名前は省略*/
という所に、新しいスコアであるpoint.score=35をいれるとしよう。
その場合、ScoreName test[10]をScoreName test[11]と配列を大きくして、
test[10]=point;と代入すれば、

test[0].score=90;
test[1].score=80;
test[2].score=70;
test[3].score=60;
test[4].score=50;
test[5].score=40;
test[6].score=30;
test[7].score=20;
test[8].score=10;
test[9].score=0;
test[10].score=35;/*名前は省略*/
となる。
そしてtest[0]〜test[10]までをソートすれば、
test[0].score=90;
test[1].score=80;
test[2].score=70;
test[3].score=60;
test[4].score=50;
test[5].score=40;
test[6].score=35;/*新しいスコアであるpoint*/
test[7].score=30;
test[8].score=20;
test[9].score=10;
test[10].score=0;
とハイスコア更新処理が完了する。
ハイスコア更新処理のたびにソートするのは処理がかかりそうですが、
10件ぐらいならたいして時間はかからないでしょう。


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



Name: obaka [URL]  ..ぴよぴよ(43ポイント)   Date: 2007/11/15(木) 10:22   No:11849       
Title: まったくわかりません。    
#include <stdio.h>

int main(void) {

char input[100]; // input line from keyboard for fgets

int shou;
int amari;


printf("xを入力してください\n",shou);
fgets(input,sizeof(input),stdin);
sscanf(input,"%d",&shou);

printf("yを入力してください\n",amari);
fgets(input,sizeof(input),stdin);
sscanf(input,"%d",&amari);

printf("%d÷%dは商%d余り%dです\n",shou,amari);

return 0;
}

までしかわかりません



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


Name: obaka  ..ぴよぴよ(44ポイント)   Date: 2007/11/15(木) 10:31   No:11850     
Title: Re:まったくわかりません。    
ちなみに問題はURLの記載してあります

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

Name: バグ  ..比類無きプログラマー(64,884ポイント)   Date: 2007/11/15(木) 11:20   No:11852     
Title: Re:まったくわかりません。    
リンク先にはファイルから値を取得するようなことは書いてないのですが、ソースを見る限りでは、ファイルからXとYの値を取得するような内容になっているのですが、それは間違いないですか?

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

Name: バグ  ..比類無きプログラマー(64,905ポイント)   Date: 2007/11/15(木) 11:30   No:11853     
Title: Re:まったくわかりません。    
あ、失礼しました。stdinを指定されていたんですね(^_^;)

割り算の商を求めるには下記のような感じで記述します。

c = a / b

余り残は下記のような感じで記述します。

c = a % b

どちらもbの中身が0だと例外が発生しますので、注意してください。


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

Name: TKSZ  ..かけだし(1,162ポイント)   Date: 2007/11/15(木) 11:36   No:11854     
Title: Re:まったくわかりません。    
#include<stdio.h>

int main(void)
{
  int x,y;
  printf("xを入力してください。:"); scanf("%d",&x);
  printf("yを入力してください。:"); scanf("%d",&y);
  if(y==0)
  {
    printf("0で割ることはできません。\n");
  }else{
  printf("%d÷%d=商%d余り%dです。\n",x,y,x/y,x%y);
  }
return 0;
}


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

Name: TKSZ  ..かけだし(1,222ポイント)   Date: 2007/11/15(木) 11:38   No:11855     
Title: Re:まったくわかりません。    
上のでも、一応コンパイルできると思いますが、
すいません、stdinを指定しているなら、
そのとおりに書き直してください。


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



Name: sino  ..ぴよぴよ(50ポイント)   Date: 2007/11/14(水) 11:31   No:11813       
Title: もう一個    
ゲーム中、プレイしているメインのウインドウ以外にもう一個、Dxライブラリを使ったウィンドウを開きたいのですが、何か方法はあるでしょうか。

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


Name: 管理人 [URL]  ..伝説のハッカー(447,861ポイント)   Date: 2007/11/14(水) 13:25   No:11816     
Title: Re:もう一個    
そういう機能はDXライブラリには無いんじゃないでしょうか?
自分で作るか、、、詳しくは本家で聞いてみてください。

http://homepage2.nifty.com/natupaji/DxLib/


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

Name: sino  ..ぴよぴよ(84ポイント)   Date: 2007/11/15(木) 10:00   No:11846     
Title: Re:もう一個    
レスありがとうございます。
う〜ん、やっぱりないですか…そうしてみます。



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



Name: がんも  ..入門者(2,842ポイント)   Date: 2007/11/07(水) 23:15   No:11574       
Title: 課題ができません;誰かアドバイスを!    
課題で、プログラムを作ったのですが、どこが間違ってるのかわかりません;
ぜひ教えてください。

(問題)

関数char3plus() とstr rev()(←この2つの関数は前の問題で作りました),および文字列の長さを返すライブラリ関数strlen() を引用して,str plus() を作成せよ.
ただし,その最初の行を:void str plus(char s1[], char s2[], char s3[])
とする.この関数を引用すれば,2 個の文字列s1 とs2 に対して,両者の和を表わすs3 が得られると
する.例えば,s1 とs2 がそれぞれ”2134” と”81” であれば,s3 には”2215” が入る.ただし,文字
列の長さはs1 の方がs2 より長いとする.
(ヒント)まず適当な大きさの文字配列t1,t2,t3 を用意し,このうちt1 とt2 にそれぞれs1 とs2
を反転した文字列を入れる.また,それぞれの文字列の長さn1 とn2 を(strlen() を用いて)得る.次
に,t1[i] とt2[i] の和を(繰り上げも考慮して) t3[i] に入れる操作を,i=0,1<=i<n2,n2<=i<n1
の各場合に分けて順に行ない,最後の繰り上げを処理したうえでt3 の反転をs3 に入れる.


(プログラム)
#include<stdio.h>

void str_rev(char s[], char t[])
{
int i = 0, n, k;

while(s[i] != '\0')i++;

k = i;

for(n = 0; n < k; n++)
{

i--;

t[n] = s[i];

}


}

void char3plus(char a0, char a1,char a2, char *b0, char *b1)
{
char n;

n = a0 - '0' + a1 - '0' + a2 - '0';

*b0 = n/10 + '0';

*b1 = n%10 + '0';

}


void str_plus(char s1[], char s2[], char s3[])
{
char t1[100] = "\0", t2[100] = "\0", t3[100] = "\0", k0, k1;
int n1, n2, i;


n1 = strlen(s1);

n2 = strlen(s2);

str_rev(s1,t1);

str_rev(s2,t2);

for(i = 0; i < n1; i++){

if(i = 0) char3plus(t1[i],t2[i],0,&k0,&t3[i]);

else if(i >= 1 && n2 > i) char3plus(t1[i],t2[i],k1,&k0,&t3[i]);

else char3plus(t1[i],0,k1,&k0,&t3[i]);

k1 = k0;

}

str_rev(t3,s3);

}



int main(void)
{
char s1[100], s2[100], s3[100] = "\0";

scanf("%s %s", s1, s2);

str_plus(s1, s2, s3);

printf("%s\n",s3);

}




実行しようとすると、
文字列を2つ入力するととまってしまいます;;


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


Name: miyaza  ..中級者(10,888ポイント)   Date: 2007/11/07(水) 23:46   No:11575     
Title: Re:課題ができません;誰かアドバイスを!    
まず、最初にstrlen()を使うためにstring.hをインクルードして下さい。
コンパイル時に警告はでませんでしたか?



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

Name: がんも  ..入門者(2,873ポイント)   Date: 2007/11/07(水) 23:57   No:11576     
Title: Re:課題ができません;誰かアドバイスを!    
警告でませんでした;
今、インクルードしてみましたが、やはり2つ文字列を入力した時点でとまってしまいます。


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

Name:  ..上級者(16,525ポイント)   Date: 2007/11/08(木) 00:00   No:11577     
Title: Re:課題ができません;誰かアドバイスを!    
まず、
規約と使い方
を読みましょう。
使っているのはGCCですか?BCCですか?

GCCなら知りません。

BCCなら

警告 W8065 test_ganmo.c 33: プロトタイプ宣言のない関数 'strlen' の呼び出し(関数str_plus )
警告 W8065 test_ganmo.c 34: プロトタイプ宣言のない関数 'strlen' の呼び出し(関数str_plus )
警告 W8060 test_ganmo.c 38: おそらく不正な代入(関数 str_plus )
警告 W8070 test_ganmo.c 53: 関数は値を返すべき(関数 main )

を解決してください。(行数は変わっています。)

この問題を解決すると…
E:\C++\2007-11-07>test_ganmo.exe
12
45
1/

E:\C++\2007-11-07>test_ganmo.exe
itirou
jirou
.(60/0

E:\C++\2007-11-07>test_ganmo.exe
jaja
jak
1830

という実行結果が出てきます。
したいことは、一体どの様なことか分からなかったので、したいことを教えてください。
とりあえず、プログラムはコンパイルしてみてください。
多分GCCでもエラーが出るのではないかと思うのですが…どうなんでしょうか???


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

Name: がんも  ..入門者(3,172ポイント)   Date: 2007/11/08(木) 00:13   No:11578     
Title: Re:課題ができません;誰かアドバイスを!    
すみません。まず自分の環境なんですが、
プログラミングは習い始めてまだ6ヶ月くらいの初心者です。
BCCかGCCかということですが、正直なんのことかよくわかりません;すみません。
使っているコンパイラはcygwinです。


何がしたいかというのは、
最終は「きわめて大きな2 進数を10 進数に変換するプログラム」を作りたいんです。
「この場合,整数型変数を用いて処理しようとすれば桁あふれが生ずる.( int 型変数があつかうことのできる2 進数の上限は31 桁である.)
そこで,変換したい2 進数を文字配列におさめ,文字配列上の処理のみを行なって目的とする10 進数
に変換することを考える」という課題です。
今はその途中段階で、2つの文字列をたす関数を作ってるんです。
この説明でわかっていただけますか?;;


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

Name: がんも  ..入門者(3,236ポイント)   Date: 2007/11/08(木) 00:14   No:11579     
Title: Re:課題ができません;誰かアドバイスを!    
もしよかったらhttp://www.comm.info.eng.osaka-cu.ac.jp/~sugi/report/10_26.pdf
を見てください(>_<;)


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

Name:  ..上級者(16,652ポイント)   Date: 2007/11/08(木) 01:14   No:11580     
Title: Re:課題ができません;誰かアドバイスを!    
確認用を入れまくってますが…
//要変更箇所
n = a0 - '0' + a1 - '0' + a2 ;

if( n>(9*2) )
n = n - '0';
//ここまで

ここに注目してください。
かなり無理やりやってますが…
もっと良い方法があると思いますが、これ以上思いつきませんでした。

i == 0
の時はa2は存在しないのに、'0'を引いているので問題が生じている。
i >= 1
の時は問題が無い
else
の時はa1が存在しないので、これも i == 0 と同じ状態です。

これを解消するとOKだと思います。

この存在しない時のa1,a2を判別する式が分かれば確実なのが出来るのですが…

/*
123
12

最終回答:135
*/
と回答はなりました。
bcc32を使用しています。


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

Name: フリオ  ..中級者(14,339ポイント)   Date: 2007/11/08(木) 02:42   No:11583     
Title: Re:課題ができません;誰かアドバイスを!    
 
 gccだと #include <string.h> がなくてもエラーが出ませんね。

 とりあえず、気づいたことだけ、

> if(i = 0) char3plus(t1[i],t2[i],0,&k0,&t3[i]);
~ ~
> else char3plus(t1[i],0,k1,&k0,&t3[i]);
~

あと、これを修正しても、
999 1
000
の様に、最後の桁上がりが無視されることがあります。
 


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

Name: miyaza  ..中級者(10,917ポイント)   Date: 2007/11/08(木) 07:45   No:11586     
Title: Re:課題ができません;誰かアドバイスを!    
a2が存在しなくて'0'を引くのが問題であれば、
0ではなく'0'を引数として渡せばいいとおもいます。


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

Name: フリオ  ..上級者(15,257ポイント)   Date: 2007/11/08(木) 12:39   No:11588     
Title: Re:課題ができません;誰かアドバイスを!    
 
 いろいろな考え方があると思いますが、私なりに修正してみました。

#include <stdio.h>
#include <string.h> /* 追加 */

void str_rev(char s[], char t[])
{
int i = strlen(s) - 1, n; /* 修正 */

/*while(s[i] != '\0') i ++;*/ /* 修正 */
/*k = i;*/ /* 修正 */
for(n = 0; n <= i; n ++){ /* 修正 */
/*i --;*/ /* 修正 */
t[n] = s[i - n]; /* 修正 */
}
}

void char3plus(char a0, char a1, char *b0, char *b1) /* 修正 */
{
char n;

n = a0 - '0' + a1 - '0' + *b0 - '0'; /* 修正 */
*b0 = n / 10 + '0';
*b1 = n % 10 + '0';
}

void str_plus(char s1[], char s2[], char s3[])
{
char t1[100] = "\0", t2[100] = "\0", t3[100] = "\0", k0 = '0'; /* 修正 */
int n1, n2, i;

n1 = strlen(s1);
n2 = strlen(s2);
str_rev(s1, t1);
str_rev(s2, t2);
for(i = 0; i < n1; i ++){
if(i == 0) char3plus(t1[i], t2[i], &k0, &t3[i]); /* 修正 */
else if(i >= 1 && n2 > i) char3plus(t1[i], t2[i], &k0, &t3[i]); /* 修正 */
else char3plus(t1[i], '0', &k0, &t3[i]); /* 修正 */
/*k1 = k0;*/ /* 修正 */
}
if(k0 != '0') t3[i] = k0; /* 追加 */
str_rev(t3, s3);
}

int main(void)
{
char s1[100], s2[100], s3[100] = "\0";

scanf("%s %s", s1, s2);
str_plus(s1, s2, s3);
printf("%s\n", s3);
return 0; /* 追加 */
}

 
 以下は、私が考えたものです。参考になれば。

void cha_plus(char c1, char c2, char *c3, int *r)
{
*r += c1 - '0' + c2 - '0';
*c3 = *r % 10 + '0';
*r /= 10;
}

void str_plus(char *s1, char *s2, char *s3)
{
char t1[100], t2[100], t3[100];
int r, i, j;

rev_str(s1, t1);
rev_str(s2, t2);
for(r = i = 0; t1[i] && t2[i]; i ++) cha_plus(t1[i], t2[i], &t3[i], &r);
j = i;
for( ;t1[i]; i ++) cha_plus(t1[i], '0', &t3[i], &r);
for( ;t2[j]; j ++) cha_plus('0', t2[j], &t3[j], &r);
i = i < j ? j : i;
if(r) t3[i ++] = r + '0';
t3[i] = '\0';
rev_str(t3, s3);
}



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

Name: がんも  ..入門者(4,097ポイント)   Date: 2007/11/08(木) 23:39   No:11607     
Title: Re:課題ができません;誰かアドバイスを!    
みなさんのおかげで、なんとかできました!ありがとうございます。
そしてたびたび申し訳ないですが、もうひとつアドバイスを!

http://www.comm.info.eng.osaka-cu.ac.jp/~sugi/report/10_26.pdf
の問題の4問目までいきました。
2進数を10進数になおすプログラムを作ることができたのですが
次の課題ができません;;
2進数の書いてあるbinary.datファイルから読み込み
10進数に変換して、decimal.datに書き出すプログラムです。

コンパイルはできました。decimal.datの中を見てみると、かなり変な文字列になってしまいます;;
どなたかぜひ教えてください!


#include<stdio.h>
#include<string.h>
#define MAX 800

void str_rev(char s[], char t[])
{
int i = strlen(s) - 1, n;

for(n = 0; n <= i; n++) t[n] = s[i - n];

}


void char3plus(char a0, char a1,char a2, char *b0, char *b1)
{
char n;

n = a0 - '0' + a1 - '0' + a2 - '0';

*b0 = n/10 + '0';

*b1 = n%10 + '0';

}


void str_plus(char s1[], char s2[], char s3[])
{
char t1[100] = "\0", t2[100] = "\0", t3[100] = "\0", k0 = '0';
int n1, n2, i;

n1 = strlen(s1);

n2 = strlen(s2);

str_rev(s1,t1);

str_rev(s2,t2);

for(i = 0; i < n1; i++){

if(i == 0) char3plus(t1[i],t2[i],'0',&k0,&t3[i]);
else if(i >= 1 && n2 > i) char3plus(t1[i],t2[i],k0,&k0,&t3[i]);
else char3plus(t1[i],'0',k0,&k0,&t3[i]);
if(k0 != '0') t3[i+1]=k0;
}

str_rev(t3,s3);


}


char *char_str(char c)
{
static char s[2];

s[0] = c; s[1] =0;

return s;
}


void bin_deci(char bin[], char deci[])
{
char s[1000000];
int i, n;

strcpy(s, char_str(bin[0]));

n = strlen(bin) - 1;

for(i = 0; i < n; i++)
{
str_plus(s,s,deci);str_plus(deci,char_str(bin[i+1]),s);

}

strcpy(deci,s);

}

int main(void)
{
FILE *fp1, *fp2;
char s[MAX], t[MAX];

fp1 = fopen("binary.dat","r");
fp2 = fopen("decimal.dat","w");

if(fp1 == NULL) { printf("Error!\n"); exit(1); }

while(fgets(s, MAX-1, fp1) != NULL){

bin_deci(s,t);

fputs(t,fp2);

}

}




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

Name:  ..上級者(16,845ポイント)   Date: 2007/11/08(木) 23:53   No:11609     
Title: Re:課題ができません;誰かアドバイスを!    
・・・まず、利用規約をもう一度呼んでください。
fcloseしてください。
binary.datのファイル添付してください。

どこが悪いと思いますか?
どこで書き込んでいますか?


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

Name: がんも  ..入門者(4,147ポイント)   Date: 2007/11/09(金) 00:10   No:11611     
Title: Re:課題ができません;誰かアドバイスを!    
何度も何度もマナー違反のようで、本当にすみません!!;;

main関数以外はちゃんと動くのを確認しましたので、main関数の中がおかしいとおもうのですが…
fgetsの使い方がおかしいのでしょうか・・・

どこで書き込んでるか、というのはファイルに書き込むってことですか?


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

Name: フリオ  ..上級者(15,319ポイント)   Date: 2007/11/09(金) 10:51   No:11617     
Title: Re:課題ができません;誰かアドバイスを!    
 
 "fgets"は、改行まで読み込み、"fputs"は、改行をつけません。

 それと、文字列の終端は、初期化に頼るのではなく、
それぞれの処理ごとに '\0' をつけるようにしたほうがいいと思います。
 


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

Name:  ..上級者(16,883ポイント)   Date: 2007/11/09(金) 19:04   No:11635     
Title: Re:課題ができません;誰かアドバイスを!    
>マナー違反のようで…
マナー違反と言うか…<pre></pre>つけてないと見にくすぎて、、、ね?(ぇ

--追加
…このプログラムは一回一回違う…10進数に本当に出来ていますか?

--追加
このプログラムはうまく10進数にはなっていません。

--実行結果--
8169--'-58-,
1421254,(+(*135*)*
101554732994..'0),.8'*16-/-0721*
13209090981479772*0./+*,-)*680+3640+.
121682478924980663867*)-',-.0(0/*7773931+-+),(+490+,8.-1)(-.2(
--End--

これが改行無しで書き込まれています。
確認用にprintfなどを使っていれば、それを消さずにUPしてください。


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

Name:  ..上級者(17,336ポイント)   Date: 2007/11/09(金) 22:07   No:11640     
Title: Re:課題ができません;誰かアドバイスを!    

2進数から10進数への変換
文字から数字に直行しています。
これを数字から文字に直せばOKかな…
課題の方法と違う気がするのですが…

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

int keisan(int set)
{
printf("set:%d\n",set);
if(set == 0)
return 2;
return 2*keisan(set-1);
}

void TwoToTen(char number[])
{
int i, longer, ans=0,sum=0;

longer = strlen(number)-1;
printf("longer:%d\n",longer);

for(i=0; i<=longer; i++){
printf("\nnumber[%d] - '0':%d\n", i, number[longer-i]-'0');
printf("-ans:%d\n",ans);
if(i==0)
ans = 1 * (number[longer-i]-'0');
else
ans = keisan(i-1) * (number[longer-i]-'0');
printf("+ans:%d\n",ans);
sum += ans;

}
printf("TwoToTen:sum : %d\n",sum);

}


int main ()
{
char number[]={"110"};

TwoToTen(number);

return 0;
}



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

Name: フリオ  ..上級者(15,979ポイント)   Date: 2007/11/09(金) 23:02   No:11641     
Title: Re:課題ができません;誰かアドバイスを!    
 
 とりあえず、これで期待通りに動きます。


#include<stdio.h>
#include<string.h>
#include <stdlib.h> /* 追加 */

#define MAX 800

void str_rev(char s[], char t[])
{
int i = strlen(s) - 1, n;

for(n = 0; n <= i; n ++) t[n] = s[i - n];
t[n] = '\0'; /* 追加 */
}

void char3plus(char a0, char a1,char a2, char *b0, char *b1)
{
char n;

n = a0 - '0' + a1 - '0' + a2 - '0';
*b0 = n / 10 + '0';
*b1 = n % 10 + '0';
}

void str_plus(char s1[], char s2[], char s3[])
{
char t1[100] = "\0", t2[100] = "\0", t3[100] = "\0", k0 = '0';
int n1, n2, i;

n1 = strlen(s1);
n2 = strlen(s2);
str_rev(s1, t1);
str_rev(s2, t2);
for(i = 0; i < n1; i ++){
if(i == 0) char3plus(t1[i], t2[i], '0', &k0, &t3[i]);
else if(i >= 1 && n2 > i) char3plus(t1[i], t2[i], k0, &k0, &t3[i]);
else char3plus(t1[i], '0', k0, &k0, &t3[i]);
if(k0 != '0') t3[i + 1] = k0;
}
str_rev(t3, s3);
}

char *char_str(char c)
{
static char s[2];

s[0] = c;
s[1] = 0;
return s;
}

void bin_deci(char bin[], char deci[])
{
char s[1000000];
int i, n;

strcpy(s, char_str(bin[0]));
n = strlen(bin) - 1;
for(i = 0; i < n; i ++){
str_plus(s, s, deci);
str_plus(deci, char_str(bin[i+1]), s);
}
strcpy(deci, s);
}

int main(void)
{
FILE *fp1, *fp2;
char s[MAX], t[MAX];
int l; /* 追加 */

fp1 = fopen("binary.dat", "r");
fp2 = fopen("decimal.dat", "w");
if(fp1 == NULL || fp2 == NULL){ /* 修正 */
printf("Error!\n");
exit(1);
}
while(fgets(s, MAX-1, fp1) != NULL){
if(s[l = strlen(s) - 1] == '\n') s[l] = '\0'; /* 追加 */
bin_deci(s, t);
fputs(t, fp2);
fputc('\n', fp2); /* 追加 */
}
return 0; /* 追加 */
}

 
 ファイルに、もうちょっといじったのを置いておきます。
 


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

Name: フリオ  ..上級者(15,989ポイント)   Date: 2007/11/10(土) 08:43   No:11646     
Title: Re:課題ができません;誰かアドバイスを!    
 
 "fclose"を忘れてました。
 


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

Name: がんも  ..入門者(4,247ポイント)   Date: 2007/11/14(水) 23:46   No:11841 解決!     
Title: Re:課題ができません;誰かアドバイスを!    
お礼が遅れました!
みなさんのおかげでなんとか理できて、課題をだすことができました!
ありがとうございます


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



Name: YYY  ..かけだし(2,399ポイント)   Date: 2007/11/14(水) 20:57   No:11826       
Title: 再び課題の質問    
課題で文字列というものに大変苦戦しております。それで早速質問なんですがこちらがアルファベットで名前を入力した時に逆さまに表示させる方法がわからないのです。自分の書いたプログラムは
#include <stdio.h>

int main(void)
{
int moji;
int i;
char name[100];

printf("Your name: ");
gets(name);

moji = 0;
while (name[moji] != '\0') {
printf("%2d moji me : '%c'\n", moji, name[moji]);
moji++;
}
printf("%s wa zenbu de %d moji\n", name, moji);
printf("Your name : %s\n",name);

i = name[moji];
for (i = moji - 1; i >=0; i--){
printf("Reversed: %c ",i);
}
return 0;
}
で、実行結果は
Your name: araya
0 moji me : 'a'
1 moji me : 'r'
2 moji me : 'a'
3 moji me : 'y'
4 moji me : 'a'
araya wa zenbu de 5 moji
Your name : araya
Reversed:  Reversed:  Reversed:  Reversed:  Reversed:

意図する結果は
Your name: araya
0 moji me : 'a'
1 moji me : 'r'
2 moji me : 'a'
3 moji me : 'y'
4 moji me : 'a'
araya wa zenbu de 5 moji
Your name : araya
Reversed: ayara
です。最後のReversedの部分でfor文の構成はあっていると思われますが%c,%sの使い方さらに
printfで表示させたい変数が何か分からなくなってしまいました。
助けをください。


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


Name: box  ..比類無きプログラマー(92,931ポイント)   Date: 2007/11/14(水) 21:26   No:11830     
Title: Re:再び課題の質問    
> printf("%2d moji me : '%c'\n", moji, name[moji]);

この文で、1文字ずつ表示するために正しくname[moji]を使っているのに、

> printf("Reversed: %c ",i);

なぜここでname[]を使わないのでしょうか?
なお、逆順に表示する直前の

> i = name[moji];

これは不要です。


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

Name: YYY  ..かけだし(2,424ポイント)   Date: 2007/11/14(水) 21:39   No:11831     
Title: Re:再び課題の質問    
name[moji]ですか?それで実行してもReversed:が繰り返されるだけなんですがどうすればいいでしょうか?

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

Name: box  ..比類無きプログラマー(93,089ポイント)   Date: 2007/11/14(水) 21:43   No:11832     
Title: Re:再び課題の質問    
> for (i = moji - 1; i >=0; i--){

このfor文で、i を 文字列の最後の(moji-1)番目から1つずつ減らして、
文字列の先頭の0番目まで順番に出力しようとしていますね?
ということは、

> printf("Reversed: %c ",i);

ここで出力しなければならないのは、i でも name[moji] でもなく、
何でしょうか?


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

Name: YYY  ..かけだし(2,485ポイント)   Date: 2007/11/14(水) 21:55   No:11833     
Title: Re:再び課題の質問    
多分できたかな?name[i]ですか?
一応意図する形にはなったんですがこのままだとReversed:まで繰り返されますよね?
そうならない方法ってあるんでしょうか?forの外に出すと処理されないし中に入れっぱなしだとどうしても繰り返されますよね?


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

Name: box  ..比類無きプログラマー(93,227ポイント)   Date: 2007/11/14(水) 22:04   No:11834     
Title: Re:再び課題の質問    
> forの外に出すと処理されないし

おっしゃっている意味がよくわからないです。
文字列を逆順に出力する前に一度だけ「Reversed: 」と
出力したいのであれば、for文の外に書くしかありません。

for文の外に出すと処理しなかったのでしたら、
そのときのコードを見せていただけますか?


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

Name: YYY  ..入門者(2,711ポイント)   Date: 2007/11/14(水) 22:10   No:11835     
Title: Re:再び課題の質問    
#include <stdio.h>

int main(void)
{
int moji;
int i;
char name[100];

printf("Your name: ");
gets(name);

moji = 0;
while (name[moji] != '\0') {
printf("%2d moji me : '%c'\n", moji, name[moji]);
moji++;
}
printf("%s wa zenbu de %d moji\n", name, moji);
printf("Your name : %s\n",name);

for (i = moji - 1; i >=0; i--){
}
printf("Reversed: %c ",name[i]);

return 0;

}

の結果が
Your name: araya
0 moji me : 'a'
1 moji me : 'r'
2 moji me : 'a'
3 moji me : 'y'
4 moji me : 'a'
araya wa zenbu de 5 moji
Your name : araya
Reversed:
となります。


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

Name: box  ..比類無きプログラマー(93,320ポイント)   Date: 2007/11/14(水) 22:14   No:11836     
Title: Re:再び課題の質問    
> for (i = moji - 1; i >=0; i--){
> }
> printf("Reversed: %c ",name[i]);

う〜ん、どうしてこういうコードになりますか…。
せっかくfor文のループを書いているのに、中で何もしていないですよ。

for文の「前」に "Reversed: " を一度だけ出力して、
for文によるループの「中」で name[i] を出力してください。


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

Name: YYY  ..入門者(2,713ポイント)   Date: 2007/11/14(水) 22:33   No:11838 解決!     
Title: Re:再び課題の質問    
できました。ありがとうございます。頭が固すぎましたね・・・。そんな単純でしたとは・・・。
どうも分けると改行されちゃうというイメージが出ちゃうんですよね。
文字列をもう少し深く勉強します。


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



Name: たまー  ..かけだし(1,778ポイント)   Date: 2007/11/13(火) 22:07   No:11800       
Title: 文字列の分解のことで。    
文字列の分解をしたいのですが、普通にやろうとしたら、
環境的にstrtokが使えない状況なので、どうすればいいのかちょっと
わかりません><
使わないで同じようにやる方法をお教えください^^;
環境はBREWでやるので、使える範囲内のものだと助かります><


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


Name: box  ..比類無きプログラマー(92,917ポイント)   Date: 2007/11/13(火) 22:14   No:11802     
Title: Re:文字列の分解のことで。    
柴田望洋さんという、特にCやJavaなどの入門書の世界で
有名な人のサイトの中(下記参照、先頭の'h'は意図的に外しています)に
「C言語標準ライブラリ関数」の一覧があります。

ここの「strtok」の項を見ると、実装例が載っています。
もしかすると役に立つかもしれません。

ttp://www.bohyoh.com/CandCPP/C/Library/index.html


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

Name: たかぎ [URL]  ..上級者(17,719ポイント)   Date: 2007/11/13(火) 23:10   No:11804     
Title: Re:文字列の分解のことで。    
> 環境的にstrtokが使えない状況なので

なければ自分で実装するのが C/C++ の基本です。
ついでに strtok の不便さも解消することをお勧めします。

ヒントですが、strcspn を使えば比較的簡単に実装できるかと思います。
(規格どおりの strtok を実装するなら strcspn は使えません)


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

Name: しりうす〜  ..かけだし(1,237ポイント)   Date: 2007/11/14(水) 11:09   No:11812     
Title: Re:文字列の分解のことで。    
BREWとのことなので。
内部的にAECHARの配列を持つような形で、STLやJAVAのStringみたいに実装するのが手っ取り早いですよ。
多少のお金を出す気があるなら、最近発売されたBREWプログラミング関係の書籍にライブラリが付いてたりしますがw

もしくは、上の人にソフィアのフレームワークでもおねだりするとか・・・>_<


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

Name: たまー  ..かけだし(1,826ポイント)   Date: 2007/11/14(水) 19:21   No:11822 解決!     
Title: Re:文字列の分解のことで。    
大変参考になりました^^
お勧めされたものも見てみたいと思います^^
ありがとうございましたー


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



Name: hamanov  ..ぴよぴよ(52ポイント)   Date: 2007/11/11(日) 06:21   No:11659       
Title: #pragmaについて    
こちらの掲示板を利用するのは初めてですのでよろしくお願いします。

#pragmaについて教えてください
自分はC言語でプログラムの勉強をしてる者です。所有してる参考書とインターネットを頼りに色々調べてみたのですが、命令文等の詳しく説明してるところが見つけられませんでした。
参考書によると#pragmaはANSI C標準では規定されて無いらしく、コンパイラのマニュアルを参考にするよう書いてありました。
自分はBorlandのフリーのコンパイラを使ってまして、コンパイラのヘルプファイルなど調べてみましたがよく解りません。Borlandのコンパイラで規定された#paragmaの命令分はどのようなものがあるのでしょうか?

どなたかできるだけ詳しく教えてもらえないでしょうか?宜しくお願いします。


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


Name: たかぎ [URL]  ..上級者(17,492ポイント)   Date: 2007/11/12(月) 00:21   No:11714     
Title: Re:#pragmaについて    
Turbo C++ Explorer をインストールすれば、詳しいドキュメントが付いてきます。
http://www.turboexplorer.com/jp/cpp


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

Name: hamanov  ..ぴよぴよ(62ポイント)   Date: 2007/11/13(火) 01:12   No:11775 解決!     
Title: Re:#pragmaについて    
たかぎさん情報ありがとうございます。

コンパイラのインストールに手間取ってしまって、お返事遅くなってしまいました。
#pragma命令について非常に詳しく書かれていましたので大変参考になります。自分のレベルでは今の所#pragmaを使うようなことはなさそうですが、どのような動作をするのか前から気になっていたので解決できて良かったです。
紹介していただいたTurbo C++ Explorerは今使ってるフリーの開発環境ツールより色々出来ていい感じです。
このツールが使いこなせるよう色々勉強していきたいです。どうも有難う御座いました!


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

Name: JEX [URL]  ..ぴよぴよ(257ポイント)   Date: 2007/11/14(水) 13:59   No:11817     
Title: Re:#pragmaについて    
もう解決されたかもしれませんが、4つの例を挙げます。

#pragma とはその場しのぎの、とか実用的なとかいう意味の英語です。


#pragma once;
と.hファイルの先頭にでも書けば重複インクルードを防いでくれるようになりますし、


#pragma warning(disable: 警告番号)
などとかけばその番号の警告をしないようになります。


#define PI 3.14159
#ifdef PI
#pragma message("PIを定義しました")
#endif
などと書けばPIを定義した場合に開発環境の出力メッセージの欄に
その部位が読み込まれるたびに PIを定義しました と表示するようになります。


そのほかにも
#pragma comment(lib, "ライブラリファイル名.lib")
などと言う形式でWinAPIやDirectXなどのライブラリファイルの読み込みを
行うことが出来ます。(ライブラリファイルとはソースコードの塊みたいなもの)


色々なpragmaがあるのですが代表的な使い方は上記の通りです。
尚、上に上げた例は全てVisual Studio2003以降で私が確認したpragmaであり、
コンパイラ毎にpragmaは違うので気を付けてください。


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

Name: hamanov  ..ぴよぴよ(305ポイント)   Date: 2007/11/14(水) 18:43   No:11820 解決!     
Title: Re:#pragmaについて    
JEXさん、とても詳しい解説ありがとうございます!勉強になります。

コンパイラごとにプラグマの規定された指令が違うんですね!
ゲーム作成入門のサイトで #pragma comment このコードを前に見たことがあり、かなり気になっていまして、ライブラリファイルの読み込みを行うとは見当もつきませんでした。
「ライブラリ」を使う場合だと新しく追加されたヘッダファイルをインクルードするだけなのかと勘違いしてました(^^;)悩みが解決できて良かったです。自分ももう少しCを勉強してからゲームを作りたい思ってますので、またこちらのお世話になるかもしれません。その時はよろしくお願いします〜。


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



Name: さっかん  ..初心者(7,175ポイント)   Date: 2007/11/09(金) 17:24   No:11631       
Title: リストを使ったキュー    
こんにちは。課題の質問なのですが、リストを使ったキューの基本操作で、
data.datというファイル(「ABCDE」が入っている)から一文字ずつ読み取って、キューに格納してそのキューの内容を表示します。そしてキーボードから文字を入力する際に
・0を入力した場合、プログラム終了
・1を入力した場合、一文字Dequeueした後、Dequeueした文字とキューの内容を表示
・その他の文字を入力した場合、その文字をEnqueueした後、キューの内容を表示
というプログラムを作ったのですが・・・
#include <stdio.h>

struct queue{
char key;
struct queue *before;
} ;

struct queuehead{
struct queue *top, *rear;
} q;
init_queue(){
q.top = NULL;
q.rear = NULL;
}

int en(char c, struct queuehead *q){
struct queue *temp;
struct queue *w;
temp = (struct queue *)malloc(sizeof(struct queue));
temp->key = c;
temp->before = NULL;
w = q->rear;
if(q->top==NULL){
q->rear = temp;
q->top = temp;

}
else{
w->before = temp;
q->rear = temp;
}
}
int de(char c, struct queuehead *q){
struct queue *temp;
struct queue *w;
free(q->top);
q->top = q->top->before;
}
main()
{
init_queue();
FILE *fp1;
char c,enter;
if ((fp1 =fopen("data.dat","r"))==NULL){
printf("file open error!!\n");
exit(1);
}
while((c = fgetc(fp1))!=EOF){
en(c,&q);
}
print_queue_list( q );
while(c!='0'){
printf("\nInput data:");
scanf("%c%c",&c,&enter);
if(c=='0'){
}
else if(c=='1'){
printf("Dequeue:%c\n",*q.top);
de(c,&q);
print_queue_list( q );
}
else{
en(c,&q);
print_queue_list( q );
}
}
fclose(fp1);
return 0;
}
このプログラムを更に拡張して、その他の文字を入力した場合、その文字がキューの中にあるか探索して、中にあればその文字を消して、なければその文字をEnqueueするプログラムを作ってみたのですがエラーばかりでコンパイルすらできません;修正お願いします。探索する方法としてはキューを2個用意して予備の方に一度一文字ずつ入れていく時に違う文字がないか探索して、もう一度もとのキューに一文字ずつ戻していくという方法にしなければなりません。頭がこんがらがってしまいぐちゃぐちゃなプログラムになってしまったので、わかり難かったらまるごと修正してもらってかまいません。よろしくお願いします。
#include <stdio.h>
int i=0,j=0;
struct queue{
char key;
struct queue *before;
} ;

struct queuehead{
struct queue *top, *rear;
} q,q1;
init_queue(){
q.top = NULL;
q.rear = NULL;
}

int en(char c, struct queuehead *q){
struct queue *temp;
struct queue *w;
temp = (struct queue *)malloc(sizeof(struct queue));
if(i==0){
temp->key = c;
temp->before = NULL;
w = q->rear;
if(q->top==NULL){
q->rear = temp;
q->top = temp;

}
else{
w->before = temp;
q->rear = temp;
}
}
else if(i==1){
temp->key =c ;
temp->before = NULL;
if(q1->top==NULL){
q1->rear = temp;
q1->top = temp;
}
else{
w->before = temp;
q1->rear = temp;
}
}
else if(i==2){
temp->key = *q1->top ;
temp->before = NULL;
if(q->top==NULL){
q->rear = temp;
q->top = temp;
}
else{
w->before = temp;
q1->rear = temp;
}
}
}
int de(char c, struct queuehead *q){
struct queue *temp;
struct queue *w;
free(q->top);
q->top = q->top->before;
}
main()
{
init_queue();
FILE *fp1;
char c,enter;
if ((fp1 =fopen("data.dat","r"))==NULL){
printf("file open error!!\n");
exit(1);
}
while((c = fgetc(fp1))!=EOF){
en(c,&q);
}
print_queue_list( q );
while(c!='0'){
printf("\nInput data:");
scanf("%c%c",&c,&enter);
if(c=='0'){
}
else if(c=='1'){
printf("Dequeue:%c\n",*q.top);
de(c,&q);
print_queue_list( q );
}
else{
while(q.top='\0'){
i=1;
&c=*q.top;
en(c,&q1);
i=0;
de(c,&q);
if(c==*q.top){
free(q.top);
j=1;
q.top = q.top->before;
}
}
while(*(q.rear.before)!='\0'){
i=1;
de(c,&q1);
i=2;
en(c,&q);
}
if(j!=1){
i=0;
en(c,&q);
}
print_queue_list( q );
j=0;
}
}
fclose(fp1);
return 0;
}


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


Name: box  ..比類無きプログラマー(91,522ポイント)   Date: 2007/11/09(金) 23:08   No:11642     
Title: Re:リストを使ったキュー    
最初の方のプログラムは正しく動いていますか?

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

Name: さっかん  ..初心者(7,214ポイント)   Date: 2007/11/12(月) 09:55   No:11732     
Title: Re:リストを使ったキュー    
すいません投稿できていませんでした。一つ目のプログラムはちゃんと動きますよ!

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

Name: box  ..比類無きプログラマー(91,769ポイント)   Date: 2007/11/12(月) 10:35   No:11735     
Title: Re:リストを使ったキュー    
2つ目のコードは1つ目のコードを拡張されているとのことですので、
念のため1つ目のコードの動きを確認しようと思いました。

このとき、1つ目のコードにprint_queue_list関数のコードがないため、
リンクができませんでした。

同関数のコードを見せていただけますか?


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

Name: さっかん  ..初心者(7,268ポイント)   Date: 2007/11/13(火) 10:45   No:11779     
Title: Re:リストを使ったキュー    
print_list_queue.oは先生が用意してくれたものでして、emacsで見たらぐちゃぐちゃだったんですがどうしましょう??

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

Name: box  ..比類無きプログラマー(91,987ポイント)   Date: 2007/11/13(火) 12:34   No:11781     
Title: Re:リストを使ったキュー    
*.o は *.c をコンパイルしてできるオブジェクトファイルです。
テキストファイルではなくてバイナリファイルですので、
エディタで見ても中身は全然わからないです。

仕方がないので、1つ目と2つ目のコードを動作確認してみるときは、
print_list_queue関数の中身をこちらで適当に見繕ってみます。

なお、回答に際しては、そのものズバリのコードを提示するかもしれませんし、
ヒントだけを提示するかもしれません。
どちらになるかは、そのときの当方の気分がからんできます。

また、課題の提出期日(いつであるかはわかりませんけれど)に
間に合うように回答できるかどうか、お約束はできません。
技術系掲示板でのやり取りはそういうものであることを、
あらかじめおわかりになっていてください。


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

Name: box  ..比類無きプログラマー(92,878ポイント)   Date: 2007/11/13(火) 22:08   No:11801     
Title: Re:リストを使ったキュー    

実は、print_queue_list()の件でリンクができなかったときから
気づいてはいたのですが、1個目のコードにprint_queue_list()のダミーコードを
付け加えた後、C++ではなくCとしてBorland C++ Compilerでコンパイルすると、
こんな風にコンパイルエラーや警告が出るのです。


警告 W8065 D:\My Programs\C\temp1\temp1.c 22: プロトタイプ宣言のない関数 'malloc' の呼び出し(関数 en )
警告 W8070 D:\My Programs\C\temp1\temp1.c 34: 関数は値を返すべき(関数 en )
警告 W8065 D:\My Programs\C\temp1\temp1.c 40: プロトタイプ宣言のない関数 'free' の呼び出し(関数 de )
警告 W8070 D:\My Programs\C\temp1\temp1.c 42: 関数は値を返すべき(関数 de )
警告 W8080 D:\My Programs\C\temp1\temp1.c 42: 宣言された 'w' は使われていない(関数 de )
警告 W8057 D:\My Programs\C\temp1\temp1.c 42: パラメータ 'c' は一度も使用されない(関数 de )
警告 W8057 D:\My Programs\C\temp1\temp1.c 46: パラメータ 'q' は一度も使用されない(関数 print_queue_list )
エラー E2140 D:\My Programs\C\temp1\temp1.c 51: ここでは宣言はできない(関数 main )
エラー E2140 D:\My Programs\C\temp1\temp1.c 52: ここでは宣言はできない(関数 main )
警告 W8065 D:\My Programs\C\temp1\temp1.c 56: プロトタイプ宣言のない関数 'exit' の呼び出し(関数 main )
警告 W8071 D:\My Programs\C\temp1\temp1.c 58: 変換によって有効桁が失われる(関数 main )
警告 W8074 D:\My Programs\C\temp1\temp1.c 68: 構造体が値で渡されている(関数 main )
*** コンパイル中に 2 個のエラーが発生しました ***


51行目と52行目のエラーは、main()の変数定義の前にinit_queue()を呼び出しているためです。
警告の中にも、無視できないものがあります。例えば68行目の警告は

printf("Dequeue:%c\n", *q.top);

のところなのですが、*q.top というのは何を出力しようとしているのか、
今一つつかみきれないでいます。

こういった状態を確認していたことが、11月9日23:08の投稿につながりました。


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

Name: さっかん  ..初心者(7,724ポイント)   Date: 2007/11/14(水) 12:03   No:11814     
Title: Re:リストを使ったキュー    
質問しておいて大変失礼かもしれませんが、自分はプログラミングの知識がまだまだ浅いため、質問にうまく答えられないかもしれませんが、よろしくお願いします。一個目のプログラムは学校ではちゃんと動いていたのですが、環境が違うとエラーが起きるのでしょうか?その辺が残念ながらよくわかりません。それが決定的で解決を断念せざるを得なかったらここまで考えてもらって大変失礼かもしれませんが、断念していただいて結構です。なんか失礼な言い方ですよね;すいません;;
ちなみに
printf("Dequeue:%c\n", *q.top);
は1を入力した際にデキューした文字を表すためにデキューする寸前にq.topの内容を出力するためのものなのでして、実際に実行したら何事もなく出力されていたのですが、書き方がまずかったでしょうか?
ちなみに参考になるかわかりませんが、print_queue_listで表示される内容は
--- Contents of Queue ---
E< -- Rear
D
C
B
A< -- Top
-------------------------
このような感じです。(qの中がABCDEの時)
あと、課題の方はこれは自習課題でして、特に期限もありませんので大丈夫です♪


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



Name: ダメだ  ..ぴよぴよ(227ポイント)   Date: 2007/11/13(火) 09:24   No:11778       
Title: 暗号文のプログラム    
忙しい中失礼します。プログラムに関する質問です。
現在C言語で暗号文のプログラムを作成しています。プログラムの過程は以下の通りです。

1.ユーザーに 1暗号化/2標準化/3中止(何もしない)を選択させる
2.ABC(標準文)→DEF(暗号文)に変換[3文字ずらす] 最大入力80文字
3.DEF(暗号文)→ABC(標準文)に変換[3文字戻す] 最大入力80文字

というようにプログラムを組むものです。
で、質問です。

質問. どうすれば、1.文の中で1(暗号化)を選択した後、2.の処理を行ってもらえるのでしょうか? 
補足質問. 2.と3.において、どうすれば最大入力80文字を設定することが出来るのでしょうか?

アドバイス等あれば回答願います。


1.文のプログラム printf("You select encrypt.\n"); 部分に作成した2.文(下記文参照)を入れても、2.の処理を行ってもらえません。

ソフト使用環境:Borland C ?? (多分最新版です。C、C++使用可)
パソコン環境:Windows XP

1.文のプログラム
#include <stdio.h>
#include <stdlib.h>

int main()
{
int num1;

printf("What do you want? Select the number\n");
printf(" 1.encrypt(暗号化) Cange decryption letters into encryption letters\n");
printf(" 2.decrypt(標準化) Cange encryption letters into decryption letters\n");
printf(" 3.quit You don't need to write letters.\n");

printf("Enter the number: ");
scanf("%d", &num1);

if(num1 == 1)
{
printf("You select encrypt.\n"); ←ココに2.文のプログラムを入れようとしています。
}

else if(num1 == 2)
{
printf("You select decrypt.\n");
}

else
{
printf("You don't do anything.\n");
}


system("PAUSE");
return 0;
}

2.文のプログラム
int main(void)
{
char *upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int c, i;

while((c = getchar()) != '\n'){

for(i = 0; upper[i]; i++)
{
if(c == upper[i])
{
c = upper[(i + 3) % 26];
break;
}
}
putchar(c);
}
system("pause");
return 0;
}


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


Name: たかぎ [URL]  ..上級者(17,622ポイント)   Date: 2007/11/13(火) 11:17   No:11780     
Title: Re:暗号文のプログラム    
> 質問. どうすれば、1.文の中で1(暗号化)を選択した後、2.の処理を行ってもらえるのでしょうか? 

system 関数を使うのが一番簡単です。

> 補足質問. 2.と3.において、どうすれば最大入力80文字を設定することが出来るのでしょうか?

最大文字数が決まっているのであれば、
char s[80+1];

scanf("%80[A-Z]", s);


のようにするのが一番簡単です。
fgets を使ってもよいのですが、改行文字を除去するのが面倒です。


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

Name: ダメだ  ..ぴよぴよ(62ポイント)   Date: 2007/11/13(火) 13:27   No:11782     
Title: Re:暗号文のプログラム    

早速の回答ありがとうございます。
2.と3.について質問があります。

char s[80+1];
scanf("%80[A-Z]", s);

の文ですが、2.文のプログラムのどこに その文 を(訂正して?)入れれば良いのでしょうか?
想像すらつきません。
お手数かと思いますが、もう少し詳しく教えて頂きますか?
system関数ですか?? ネットで調べてみます。アドバイスありがとうございました。


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

Name:  ..上級者(17,496ポイント)   Date: 2007/11/13(火) 14:39   No:11783     
Title: Re:暗号文のプログラム    
配列にコピーするときに数字を足していったら良いんじゃないかな?

test[i] = moji[i] + 3;

これはできなかったっけ・・・?
とりあえず、配列のコピーでその間をいじればいいかと思います。


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

Name: ダメだ  ..ぴよぴよ(32ポイント)   Date: 2007/11/13(火) 19:15   No:11792 解決!     
Title: Re:暗号文のプログラム    
分かりました。
何とかやってみます。
アドバイスありがとうございました。


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

Name: たかぎ [URL]  ..上級者(17,763ポイント)   Date: 2007/11/14(水) 02:25   No:11805     
Title: Re:暗号文のプログラム    
> test[i] = moji[i] + 3;
>
> これはできなかったっけ・・・?

できますが、'Z' を超えたときの処理が必要です。
なお、これが「できる」のは処理系が特定されているからであって、厳密な意味での移植性はありません。


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



Name: 管理人 [URL]  ..伝説のハッカー(444,736ポイント)   Date: 2007/11/12(月) 01:03   No:11721       
Title: 効率的なループの方法について    
単純な話なのですが、いつも、ここだけキレイに書けないので、どうしたらいいものかと思っています。

歩く画像をループさせるときとか、よく
0->1->2->3->0->1->2->3...というループを作りたい時があります。
これは

for(i=0;i<12;i++)
printf("%d\n",i%LOOP);

こう書けば出来ますが、カウンタがマイナスになったときは

for(i=3;i>-4;i--)
printf("%d\n",abs(i)%LOOP);

実行結果

3
2
1
0
1
2
3

こうなってしまいます。
うまくスマートに同じようにループさせる方法ないでしょうか?


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


Name: 大工  ..プログラマー(26,063ポイント)   Date: 2007/11/12(月) 01:27   No:11724     
Title: Re:効率的なループの方法について    

#include <stdio.h>

int main(void) {

int i, cnt;

for(i = 0, cnt = 0; cnt < 12; i++, cnt++) {

printf("%2d\n", i);
if(3 == i) i = -1;
}

printf("-------------------------\n");

for(i = 3, cnt = 0; cnt < 12; i--, cnt++) {

printf("%2d\n", i);
if(0 == i) i = 4;
}

return 0;
}


パッと思いついたソースですが、どうぞ

意味を取り違えてたらすみません><。


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

Name: Hermit  ..上級者(15,540ポイント)   Date: 2007/11/12(月) 01:31   No:11725     
Title: Re:効率的なループの方法について    
普通は下駄履きさせるか、- にならないようにするか、

for(i = LOOP; i > 0;) printf("%d\n",--i);
の様に1周固定にして、回す回数を、ループさせると思いますが・・・

こんなのでもいいかも。

#define LOOP 4

for(i=3;i>-4;i--) {
int j = i;
while ( j < 0) j += LOOP * 100;
printf("%d\n",j % LOOP);
}

0,1,2,3 だけであれば、abs(i) じゃなくて、(unsigned) i でもいいかも。


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

Name: Justy  ..ハッカー(169,974ポイント)   Date: 2007/11/12(月) 01:34   No:11726     
Title: Re:効率的なループの方法について    
 3 2 1 0 3 2 1 0
 のようにパターンを連続させたいんですよね?

 (i+3)%LOOPなら そんなかんじになりますが。
 LOOPが 4なら (i+3)%LOOP + 1ってところでしょうか。



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

Name: 管理人 [URL]  ..伝説のハッカー(445,563ポイント)   Date: 2007/11/12(月) 13:24   No:11743     
Title: Re:効率的なループの方法について    

>大工さん
ありがとうございます^^
そうですね、仰るとおりです。ただ、私はカウンタとして使う変数を別途用意せず、
単純に1行の更に少ない部分だけで実現する方法が無いか探していましたm(_ _)m
変に短く書こうとするよりキレイに書いたほうがいいかもしれませんね^^;

>Hermitさん
ご回答ありがとう御座います。
なるほど、unsignedすればいいんですね。
私がしたかったのは、例えば、FF1やドラクエ1のように、
RPGマップ上をキャラがテクテク歩く場面のことで、
32ピクセルずつ区切られた区間は更に4つに区切られ、
最初の8ピクセルにいる時は、0の画像
 次の8ピクセルにいる時は、1の画像
 次の8ピクセルにいる時は、2の画像
 次の8ピクセルにいる時は、3の画像
これを繰り返す事でテクテク歩くように見えると思います。
img[4]で用意して、それぞれにキャラが歩く画像が入っているとすると
img[(ch.x%32)/8]
で簡単に書けると思います。
ただ、キャラが区間の途中で止まるようなゲームは足が上がった状態でとまったりすると思うので、
とういうのには使えませんが。
この件ではキャラがマイナスの座標にくると、マイナスの要素をさしたり、順番が狂ったりしてしまうと言う事でした。

他の件で、特にこのことを考えたのは、他トピ「ポイントカードの日付について」のプログラムを書いていたときです。
12月ループするカレンダーは次の月になるとき、
month = (++month)%12
で表せますが、戻る時、
month = (--month)%12
では表せないので、似たような表現が出来ないかと考えたからでした。

、、でHermitさんの仰るプログラムを書いてみたんですが、よくわからない状態に・・。

#include <stdio.h>

int main(void){

unsigned short int num1 = -1;
unsigned int num2 = -1;

printf( "num1 = %d\n", num1 );
printf( "num2 = %d\n", num2 );

return 0;
}

実行結果

num1 = 65535
num2 = -1

なんでunsigned intがマイナスになるんでしょう;
とんでもない勘違いをしてたらすみません(_ _||)

>Justyさん
ご回答ありがとう御座います。
なるほど、それは(i+3)%LOOPの部分がiをプラスにしているということでしょうか?
つまり
for(i=10;i>-10;i--)
なら
(i+10)%LOOPと言う事でしょうか?



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

Name: tkmakwins15 [URL]  ..プログラマー(37,916ポイント)   Date: 2007/11/12(月) 17:46   No:11750     
Title: Re:効率的なループの方法について    
>管理人さん。

unsigned int型の整数を出力する時は%dでは無く%uで指定します。でなければ、printf内では同bit列を持つint型整数とみなして出力します。

1111 1111

これは基本的にintなら-1,unsignedなら65535となります。

間違ってたらすいません。


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

Name: tkmakwins15 [URL]  ..プログラマー(37,895ポイント)   Date: 2007/11/12(月) 17:50   No:11751     
Title: Re:効率的なループの方法について    
すいません。上のbitについてはsizeof(int)=2である事を前提にしています。

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

Name: GPGA  ..プログラマー(39,217ポイント)   Date: 2007/11/12(月) 18:10   No:11754     
Title: Re:効率的なループの方法について    
表示がおかしいのはprintfの書式の問題です。
%dでなく%uを使用すれば問題ないでしょう。


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

Name: GPGA  ..プログラマー(39,323ポイント)   Date: 2007/11/12(月) 18:18   No:11755     
Title: Re:効率的なループの方法について    
うぐ、しばらく放置してから書いたら、とっくに答えだされてた。

別の回答で、インクリメントのループを

const int mx = 12;
int n = 0;
n = (n + 1) % mx;
 
とした場合、デクリメントは

const int mx = 12;
int n = 0;
n = (n + (mx - 1)) % mx;
 
で行うことができます。
あんまり似てませんかね^ ^


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

Name: 管理人 [URL]  ..伝説のハッカー(446,135ポイント)   Date: 2007/11/12(月) 18:54   No:11756     
Title: Re:効率的なループの方法について    
あ〜そうでした、もうすっかり使わない表記を忘れました、ありがとうございます(_ _||)

そうか、内部的なビット配列は変わらないんですね。符号ビットをどのように捉えるか、その違いだけですね。
じゃ
int i=-1;
int dat[2][2の32乗];

dat[1][(unsigned)i]
と書くと・・。どこを指すんでしょう・・。
dat[0][2の32乗-2]
を指すんでしょうか、それとも
dat[1][2の32乗-1]
を指すんでしょうか・・。まぁこんな事しませんが^^;


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

Name: Hermit  ..上級者(16,104ポイント)   Date: 2007/11/12(月) 19:41   No:11760     
Title: Re:効率的なループの方法について    
>dat[1][(unsigned)i]
>と書くと・・。どこを指すんでしょう・・。
試してみればいいのでは(^^;

この場合、int が 4byte void * が 4byte の事が多いので、
同じ場所であると思いますが、
(unsigned short) でキャストすれば、結果は出て来そうです。


PS、
前のやつで、
#define LOOP 4

for(i=3;i>-4;i--) {
int j = i % LOOP;
if ( j < 0) j += LOOP;
printf("%d\n",j % LOOP);
}

の方が、スマートだった気がします。


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

Name: Justy  ..ハッカー(170,364ポイント)   Date: 2007/11/12(月) 23:01   No:11766     
Title: Re:効率的なループの方法について    
# 管理人さん
それは(i+3)%LOOPの部分がiをプラスにしているということでしょうか
 そうです。それで負にならないようにしています。


この件ではキャラがマイナスの座標にくると
 こういう用途なら、座標からでなく、アニメーションカウンタを別途に持った方が
いいと思います。

 そういう方式であれば、アニメーションを管理する構造体なりクラスなりを
作ってアニメーションそのものを汎用的にすることもできますし。


# Hermitさん
方が、スマートだった気がします
 iが -1の時とか、i%LOOPで負の剰余計算になるのですが、
(古いC言語だと、環境によって値が変わるので)これって微妙じゃないですか?


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

Name: 管理人 [URL]  ..伝説のハッカー(446,943ポイント)   Date: 2007/11/12(月) 23:01   No:11767     
Title: Re:効率的なループの方法について    
2の32乗の要素を持った配列は用意しようと思いませんでした(_ _||)
え〜と、、大体4億3千万位だから・・。
4,300,000,000Bで4GBですか^^;

なるほど、ありがとうございます。
是非今後に活かしていきたいと思います。


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

Name: Hermit  ..上級者(16,134ポイント)   Date: 2007/11/13(火) 19:22   No:11793     
Title: Re:効率的なループの方法について    
>  iが -1の時とか、i%LOOPで負の剰余計算になるのですが、
> (古いC言語だと、環境によって値が変わるので)これって微妙じゃないですか?

そうなんですか? 
i が -1 の時は、i%4 は、-1 か、3 だと思うのですが、
他の数値になる可能性があるのでしょうか?

有る様だったら、その手は使えませんね!


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

Name: tkmakwins15 [URL]  ..プログラマー(38,386ポイント)   Date: 2007/11/13(火) 19:31   No:11795     
Title: Re:効率的なループの方法について    
除算は

B(A/B)+A%B==A

が成り立つように結果がでます。なおかつ、abs(A%B)がBよりも小さい用に定義されます。だから、-1か3になるはずです。


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

Name: Justy  ..ハッカー(170,452ポイント)   Date: 2007/11/13(火) 22:55   No:11803     
Title: Re:効率的なループの方法について    
i が -1 の時は、i%4 は、-1 か、3 だと思うのですが、
 あー、そうか、どちらの値でも動くわけですね。
 失礼しました。


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



Name: niki  ..ぴよぴよ(205ポイント)   Date: 2007/11/13(火) 00:15   No:11771       
Title: Windowsアプリケーション2    
OSはWindowsXP、コンパイラはBorland C++を利用し、C言語を使ってWindowsプログラミングを作成中です。ポインタやファイル入出力、構造体等の基本的なことは学習したので、レベル7くらいだと思います。

枠を作成し、パスワードを入力させる画面を作っている途中です。
パスワードを入力したときに、入力した文字が見えなくなるような処理(網掛け等のカモフラージュ)を行いたいのですが、どのようにすれば良いでしょうか?


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


Name: miyaza  ..中級者(11,120ポイント)   Date: 2007/11/13(火) 00:25   No:11773     
Title: Re:Windowsアプリケーション2    
エディットボックスのスタイルにES_PASSWORDを追加すれば表示が*になります。


hFont0,hFont1がHWNDなのは、まずいと思います。
HFONTにしましょう。


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

Name: niki  ..ぴよぴよ(233ポイント)   Date: 2007/11/13(火) 21:02   No:11799 解決!     
Title: Re:Windowsアプリケーション2    
ありがとうございました。入力文字は*にすることができました。
HFONTのご指摘ありがとうございます。


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



Name: 自由の天使  ..ぴよぴよ(438ポイント)   Date: 2007/11/13(火) 19:15   No:11791       
Title: 無題    
先日「atan2(アークタンジェント)」について教えていただいたのですが・・・・・。
インターネットで使い方を調べたりしているのですがいまいちよく分からないんです・・・・・。

そのような使われ方をしているのでしょうか??


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


Name: tkmakwins15 [URL]  ..プログラマー(38,540ポイント)   Date: 2007/11/13(火) 19:47   No:11796     
Title: Re:無題    
アークタンジェントとはまずこんな感じの時にθを求める計算です。

というわけで、使い道としては、ある座標を基準(原点)にしたとき、そこから引いた線がどのくらい傾いているかを示す値を返します。だから、傾きを求める時に使います。
基本的に数学は応用範囲が大きいのでさまざまな用途に使えます。


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

Name: 自由の天使  ..ぴよぴよ(454ポイント)   Date: 2007/11/13(火) 20:34   No:11798 解決!     
Title: Re:無題    
分かりました!

ありがとうございます!


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



Name: パスカル  ..ぴよぴよ(128ポイント)   Date: 2007/11/12(月) 23:39   No:11769       
Title: パスカル言語をC言語に    
レポートでパスカルをCになおせと言う問題が出まして
1.リストの先頭へのデータ挿入
proceder inserthead(val :datatype);
var q:list;
begin
new(q);
with q↑ do
begin
element:=val;
next:=listhead;
end;
listhead:=q;
end;

2.リストの先頭からデータの削除
proceder deletehead;
var q:list;
begin
q:=listhead;
listhead:=q↑.next;
dispose(q);
end;
を繋げてCにする問題が出ました
参考書をみてポインタと構造体を使うことは分かったのですがdeletehead と insertheadをCに置き換えるならどうすればいいかわかりません

初めての構造体 のレポートなのでわかり兼ねるところもあり非常に困っています
お願いします助けて下さい


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


Name: たかぎ [URL]  ..上級者(17,536ポイント)   Date: 2007/11/13(火) 00:14   No:11770     
Title: Re:パスカル言語をC言語に    
課題は本来自分で考えるのが筋ですが、それを放棄するなら、いっそのこと
http://www.garret.ru/~knizhnik/ptoc/Readme.htm
のようなものを使うのも一つの手です。


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

Name: たかぎ [URL]  ..上級者(17,587ポイント)   Date: 2007/11/13(火) 00:17   No:11772     
Title: Re:パスカル言語をC言語に    
ちなみに、Windows用のバイナリは
http://www.garret.ru/~knizhnik/ptoc356.zip
から入手できます。


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

Name: ぱすかる  ..ぴよぴよ(268ポイント)   Date: 2007/11/13(火) 00:25   No:11774     
Title: Re:パスカル言語をC言語に    
/* リストへのデータの挿入をする関数 */
void inserthead()
{
int val;

printf("データを入力してください → ");
scanf("%d",&val);

q=(struct list*)malloc(sizeof(struct list));

if(q==NULL){
fprintf(stderr,"メモリ不足\n");
exit(1); /* プログラムを終了する */
}

q->element=val;
q->next=listhead;
listhead=q;
}

/* リストからのデータの削除をする関数 */
void deletehead(void)
{
q=listhead;

listhead=q->next; /* 先頭のデータを削除する */
free(q);
}
自分的にこのようにできました

皆さんの意見を参考に仕手できました

御迷惑お掛けしました


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



Name: sa  ..ぴよぴよ(202ポイント)   Date: 2007/11/12(月) 00:25   No:11715       
Title: ポイントカードの日付について    
構造体で日付を入力したときに、例えば4月1日なら、3月31日を期限にしたいとき、構造体の日付から1ひいたら31にはなりませんよね??そうなるようにするにはどうしたらようでしょうか??

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


Name: 管理人 [URL]  ..伝説のハッカー(444,538ポイント)   Date: 2007/11/12(月) 00:45   No:11717     
Title: Re:ポイントカードの日付について    
なんか汚いかもしれませんが、こんなのどうでしょう。
その月によって日は結構バラバラなので、個別に指定するしか私にはパッと思いつきません。

プログラムの月は0が1月で11が12月である事に注意してください。0から始まっているので。
最初初期設定は4月1日としています。


#include <stdio.h>

typedef struct{
int month,day;
}dat_t;

int main(void){
int i,month_day[12]={31,28,31,30,31,30,31,31,30,31,30,31},back;
dat_t dat;
dat.month=4-1;//最初4月とする
dat.day=1;//最初1日とする。
printf("何日戻りますか?\n");
scanf("%d",&back);
for(i=0;i<back;i++){//戻る日分ループ
dat.day--;//1日前に戻る
if(dat.day<=0){//その日が0日以下なら
dat.month=dat.month-1;//前の月に戻す
if(dat.month<=0)//その月が0以下なら
dat.month=11;//去年に戻す
dat.day=month_day[dat.month];//決定した月の日にちを格納
}
}
printf("%d月%d日です\n",dat.month+1,dat.day);
}
 


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

Name: sa  ..ぴよぴよ(342ポイント)   Date: 2007/11/12(月) 00:54   No:11719     
Title: Re:ポイントカードの日付について    
ありがとうございます。入力された日付が今日の日付で、毎日日付はかわりますよね。日にちが31日より小さくて2日より大きかったら、引けば出ますが、1日の場合30日と31日がありますよね?その場合はどのようにしたらよいのでしょうか??30日までの月と31日の月とに分けてプログラムを作ればよいのでしょうか??

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

Name: 管理人 [URL]  ..伝説のハッカー(444,542ポイント)   Date: 2007/11/12(月) 00:57   No:11720     
Title: Re:ポイントカードの日付について    
上にサンプルプログラムを書きましたが読んでいただけましたでしょうか??
month_day配列にその日にちの情報が入っています。
説明も全て注釈に書いてありますのでよければ読んでください。


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

Name: sa  ..ぴよぴよ(409ポイント)   Date: 2007/11/12(月) 01:19   No:11722     
Title: Re:ポイントカードの日付について    
配列に12ヶ月分の日付のデータが入っているので、その配列の要素が月ということになるんですよね??配列の添え字は0からですよね??

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

Name: 管理人 [URL]  ..伝説のハッカー(446,033ポイント)   Date: 2007/11/12(月) 13:39   No:11746     
Title: Re:ポイントカードの日付について    
そういうことです。
実行してみて自分の思う結果ではなかったでしょうか?
コードでどこか意味がわかりませんでしたでしょうか?
これが最もよいコードかどうかはわかりませんが、参考までに。


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

Name: 組木紙織  ..上級者(23,880ポイント)   Date: 2007/11/12(月) 20:47   No:11762     
Title: Re:ポイントカードの日付について    
日付を扱うときには一月一日からの日にちを基準にして計算するという考え方もあります。
確か気象学や天文学で使われている考え方だったと思います。
一月一日が0だったか、1だったは忘れましたが、以下では一月一日を1として考えてあります。
以下サンプルプログラム。cで記述
エラー処理一切なし。

#include<stdio.h>

const int monthDay[12]={31,28,31,30,31,30,31,31,30,31,30,31};


struct tg_dat{
int month, day;
};

typedef struct tg_dat dat_t;

dat_t getCallenderDay(int);
int getWideDay(dat_t);

int main()
{
dat_t nowDay,beforeDay;
int back;
printf("今日は何月ですか?: ");
scanf("%d",&nowDay.month);

printf("今日は何日ですか?: ");
scanf("%d",&nowDay.day);

printf("何日戻りますか?: ");
scanf("%d",&back);
beforeDay =getCallenderDay(getWideDay(nowDay)-back);

printf("%d月%d日です",beforeDay.month,beforeDay.day);

return 0;
}

dat_t getCallenderDay(int wideDay)
{
int i=0;
dat_t dat;
dat.month=1;

while(wideDay>monthDay[i]){
wideDay -=monthDay[i];
dat.month++;
i++;
}

dat.day = wideDay;
return dat;
}


int getWideDay(dat_t dat)
{
int i=0;
int wideDay=0;

while(dat.month>1){
wideDay+=monthDay[i];
i++;
dat.month--;
}
wideDay+=dat.day;
return wideDay;
}

最近はずっとfortranやVBでプログラミングしていたので、cで書く感覚を忘れてしまって、
時間がかかってしまいました。
本当はエラー処理もするつもりでしたが、気力が潰えてしまい出来ませんでした。


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



Name: orz  ..ぴよぴよ(116ポイント)   Date: 2007/11/11(日) 13:26   No:11666       
Title: n以下の素数列挙    
明日までの提出とかなり切羽詰ってます><

プログラムは2〜100の範囲の自然数nを入力して2〜nの範囲の素数を
すべて表示させるというものです。範囲外なら再度入力もとめるようです。
primeなしです><
試し割り法ってので挑戦してみましたorz

#include <stdio.h>
void main()
{
int i,j,Num;
printf("2〜100の範囲の自然数を入力してください\n");
scanf("%d",&Num);
if(Num < 0 || Num > 100){
printf("範囲外です.再度入力してください.\n");
scanf("%d",&Num);
}
for(i = 3; i <= Num; i++){
for(j =2; j<i/2;j++){
if (i % j != 0){
printf("%d",i);
}}}}

こんなのうったらわけわかめのものがでてきました汗
よろしければ救済お願いしますorz


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


Name: orz  ..ぴよぴよ(162ポイント)   Date: 2007/11/11(日) 13:30   No:11668     
Title: Re:n以下の素数列挙    
ビジュアルスタジオってのつかってます><8のじみたいなのです

書き忘れました><


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

Name: 管理人 [URL]  ..伝説のハッカー(441,872ポイント)   Date: 2007/11/11(日) 14:06   No:11673     
Title: Re:n以下の素数列挙    
http://www.tsg.ne.jp/TT/tsg/c/mansaku/P01.html
この辺参考になるでしょうか。

要は、「全部割れなかったら」素数なわけでして、一回の比較で割れなかったからと言って素数とは限りません。

例えば15は2では割れませんが、3では割り切れます。


for(j=@ ; j<A ; j++){
if(条件)break;
}
 
 

において、breakが行われなかったかどうかは、for文を抜けた後に、iがAになっているかどうかでわかります。

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

でまわった時、最後までfor文が行われたら括弧から出た時、iは10になっています。
それまでに条件にマッチして抜けたのなら10にはなりません。
これを利用して全部割れなかったかどうか判断してください。


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

Name: Hermit  ..上級者(15,444ポイント)   Date: 2007/11/12(月) 00:47   No:11718     
Title: Re:n以下の素数列挙    
例えば、小さい数の方から、倍数を消去していく方法もあります。
何とかのふるいって言うんだけど・・・なんだっけ(^^;



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

Name: orz  ..ぴよぴよ(214ポイント)   Date: 2007/11/12(月) 01:23   No:11723     
Title: Re:n以下の素数列挙    
すみません。breakとかもよくわかりません><
(。-`ω-)ンー わかりませんorz
ヒントいただいたのですがヾ(;´Д`●)ノぁゎゎ


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

Name: Hermit  ..上級者(15,725ポイント)   Date: 2007/11/12(月) 02:00   No:11727     
Title: Re:n以下の素数列挙    
エラトステネスのふるいの方法ではこんな感じかな。
極力簡単に書いたつもりでは有るけど・・・

#include <stdio.h>


#define MAX 100

int main() {
static char buff[MAX+1];
int i;
buff[0] = buff[1] = 1;
for (i = 2; i <= MAX; i++) {
int j;
for (j = i + i; j <= MAX; j += i)
buff[j] = 1;
}
for (i = 0; i <= MAX; i++)
if ( buff[i] == 0)
printf("%d\n",i);

return 0;
}

範囲外の処理は出来そうだったので(良くは見ていないが(^^;)
自分でくっつけてください。


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

Name: orz  ..ぴよぴよ(303ポイント)   Date: 2007/11/12(月) 02:16   No:11728     
Title: Re:n以下の素数列挙    
ありがとうございます。これで何とかのりきれます。ただ、見てもまったくわからないじぶんがorz
あとでがんばってみます><
forとわりざんのよじょうこう?%でがんばろうとしたんですがしっぱいしました

夜更けにありがとうございました。


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

Name: orz  ..ぴよぴよ(362ポイント)   Date: 2007/11/12(月) 05:15   No:11730     
Title: Re:n以下の素数列挙    
本当は for if (eise) while くらいをつかってどうにかしたかったのですが><
まにあいそうにないのでどうにかしてみます。


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

Name: 管理人 [URL]  ..伝説のハッカー(445,957ポイント)   Date: 2007/11/12(月) 13:38   No:11745     
Title: Re:n以下の素数列挙    
昨日は1時位には寝てしまったので拝見できませんでした、今日提出だったのにすみません(_ _||)
breakはループ文から抜けるという意味です。

簡単な構文については、
「C言語 入門」 でググルと沢山参考になるサイトが出てきますので、そちらをご覧下さい。
仰るようにforとifだけで出来ますよ。breakは難しいものじゃないですし。

Hermitさんのコードもforとifだけですし、まぁ次の課題で頑張ってください^^;


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

Name: Hermit  ..上級者(15,943ポイント)   Date: 2007/11/12(月) 19:23   No:11759     
Title: Re:n以下の素数列挙    
ホントはこれくらいにしたかったのだけど、
分かるかどうか不安だったので(^^;
#include <stdio.h>

#define MAX 100
int main() {
static char buff[MAX+1];
int i;
buff[0] = buff[1] = 1;
for (i = 2; i <= MAX; i++) {
int j;
if (buff[i] == 0)
if ((j = i * i) <= MAX)
do
buff[j] = 1;
while ((j += i) <= MAX);
}
for (i = 0; i <= MAX; i++)
if ( buff[i] == 0)
printf("%d\n",i);

return 0;
}

<= MAX の部分も、 < sizeof buff の方が好きなんだが・・・変更しにくくなりそうなので。


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

Name: orz  ..ぴよぴよ(418ポイント)   Date: 2007/11/12(月) 20:47   No:11761     
Title: Re:n以下の素数列挙    
なんどもおしえていただきありがとうございました。
方法がわかったので助かりました><
つぎからがんばってみます'`ィ(´∀`∩




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



Name: C.P.P  ..初心者(5,131ポイント)   Date: 2007/11/07(水) 12:28   No:11566       
Title: 描画の回転について・・・    
こんにちは☆
こちらのサイトではいつもいつも丁寧に教えていただいており、大変助かっております!

また質問です。質問ばかりですいません・・・

現在、DrawBoxやDrawLineを用いて描いた画像を構造体として一まとめにしているんですが、その画像をマウスのダブルクリックによって回転さたい(一回ダブルクリックする度に90度右に回転)んですが何かいい方法はございませんでしょうか?

ご教授お願いいたしますm(v_v)m


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


Name: keichan  ..プログラマー(28,200ポイント)   Date: 2007/11/07(水) 14:02   No:11568     
Title: Re:描画の回転について・・・    
その構造体に角度パラメータを持たせてあげて、ダブルクリックされたら90度分角度変更させてあげればいけそうな気がします。

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

Name: 管理人 [URL]  ..伝説のハッカー(439,416ポイント)   Date: 2007/11/07(水) 14:06   No:11569     
Title: Re:描画の回転について・・・    
その「画像を」回転すると仰っていることから、それを画像として扱っていいのならキャプチャーして固定画像にしてやるという手っ取り早い方法もあります。

http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html#R3N12

描画されている画像を写真に撮ったみたいに画像にすることができます。そうすれば後はいくらでも回転が簡単です。

そうではなくて、座標変換をしたいのでしたら、若干数学的な話になります。
・・といっても、90度というキリのいい数字でしたら中学生でも簡単にわかる計算です。
(もっと簡単な方法があったらごめんなさい)


3Dのプログラムを書くとき、よく線形代数を使って回転させるのですが
http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/basic3d.html
この辺わかりやすいです。今回は2Dなので、その上の所だけでOKです。

もし線形代数がわかりにくければ、単に2つの式を書くだけでOKです。
移動先の座標をダッシュであらわすとこのようになると書いてありましたね。

x' = x * cosθ - y * sinθ
y' = x * sinθ + y * cosθ

別にこれは難しい式ではなく、たとえばsin90°は1で、cos90°は0ですから、90°回転するときはこの式は

x' = - y
y' = x

というめちゃくちゃ簡単な式になります。180°ならsinは0,cosは-1になるので、これまた簡単な式になります。

もし90°単位ではなく、微妙な角度で回転したいなら、θにあたる部分をラジアンで渡してやってください。
円周率は約3.14159265ですから、これをdefineで最初に

#define PI 3.14159265

とでもしておいて、1°なら

sin(2*PI/360)

350°なら

sin(2*PI * 350/360)

このようにかけます。この時注意しないといけないのは、int型とdouble型の概念です。
私たちは
2 * 6 / 3
でも
6 / 3 * 2
でも同じ計算結果になると知っています。しかし、プログラムの場合、そうはいかず、

sin(350/360 * 2*PI)

先にint型で計算して、double型に変換すると、350/360=0の時点で答えが変わってしまい、期待する結果になりません。
これはPIがdouble型であることから、PIが計算に加わった時点でdouble型にキャストされるからです。

え〜どうでもいいことで長くなりましたが、ご参考までにm(_ _)m


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

Name: C.P.P  ..初心者(6,047ポイント)   Date: 2007/11/09(金) 16:14   No:11628     
Title: Re:描画の回転について・・・    
遅くなりまして申し訳ございません;;
keichanさん、管理人さん返信ありがとうございます☆

大変丁寧な説明で、座標変換かなり理解できました!

そこで自身で座標変換をやってみようとプログラムを組んでいたんですが、私のプログラムでは描画する際、
DrawBox(x1,y1,x2,y2,Color_Flug,TRUE)やDrawLine(x1,y1,x2,y2,Color_Flug,TRUE)などというという書き方ではなく、
DrawBox
(
home->disp_pos.x+home->scale*1, home->disp_pos.y+home->scale*3,
home->disp_pos.x+home->scale*9, home->disp_pos.y+home->scale*11,
home->is_dragging? Yellow: White, TRUE
);
と、いった関数で、描画しています。(これは、以前こちらのサイトで教えていただいた、マウスによって画像を移動し、マウスホイールによって拡大縮小するためです。)

普通にDrawLine(x1,y1,x2,y2,Color_Flug,TRUE)で座標移動しようとするならば、

DrawLine(x1,y1,x2,y2,Color_Flug,TRUE);
で画像を描いた後に、

if(描画された画像の範囲内でダブルクリックする){
int x1' = - y1;
int y1' = x1;
int x2' = - y2;
int y2' = x2;

DrawLine(x1,y1,x2,y2,Color_Flug,TRUE) → 表示フラグをFALSE
DrawLine(x1',y1',x2',y2',Color_Flug,TRUE) → 表示フラグをTRUE
}

という感じでやればいいと考えているのですが、(間違ってたらすいません・・・m(X.X)m)

DrawBox
(
home->disp_pos.x+home->scale*1, home->disp_pos.y+home->scale*3,
home->disp_pos.x+home->scale*9, home->disp_pos.y+home->scale*11,
home->is_dragging? Yellow: White, TRUE
);
のような関数で描画したときに、この関数を座標変換するにはどうしたらよいのでしょうか??

説明下手でもうしわけございません・・・
ヒントやアドバイス、何でも助かりますのでよろしくお願いいたします☆

また、質問の意味、内容が理解できない場合、気軽に言ってください・・・
本当によろしくお願いいたします☆


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

Name: C.P.P  ..入門者(4,784ポイント)   Date: 2007/11/09(金) 18:04   No:11634     
Title: Re:描画の回転について・・・    
申し訳ございません!
自己解決しました!(おそらくですけど・・・)

今回は、座標変換のやり方がなかなか難しかったので、
一回元の画像を消し、新しく90度回転した画像を書き出すといったプログラムを作成しました☆

プログラムとしては
/**********************************************************************************/
// 線描画
static void Line_Draw(const Line *line)
{
// 非表示ならスキップ
if(!line) return;
if(!line->is_display) return;


DrawLine
(
line->disp_pos.x+line->scale*2, line->disp_pos.y+line->scale*3,
line->disp_pos.x+line->scale*12, line->disp_pos.y+line->scale*3,
line->is_dragging? Yellow: White, TRUE
);
}

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

// 回転された線描画
static void Line2_Draw(const Line *line)
{
// 非表示ならスキップ
if(!line) return;
if(!line->is_display2) return;


DrawLine
(
line->disp_pos.x+line->scale*3, line->disp_pos.y+line->scale*2,
line->disp_pos.x+line->scale*3, line->disp_pos.y+line->scale*12,
line->is_dragging? Yellow: White, TRUE
);
}

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

この2つの画像を描くプログラムを作成して、
WinMain関数で

//線情報更新・描画
Line_Update(&line,&mouseInfo);
Line_Draw(&line);
Line2_Draw(&line);

というように呼び出します!
呼び出す条件としては
//90度回転する
if(line->is_display)
{
if(IsClickMouseRight(mouseInfo)
&& mouseInfo->pos.x >= line->pos.x - SrangeX
&& mouseInfo->pos.x <= line->pos.x + SrangeX
&& mouseInfo->pos.y >= line->pos.y - SrangeY
&& mouseInfo->pos.y <= line->pos.y + SrangeY)
{
line->is_display = FALSE;

if(IsClickMouseRight(mouseInfo)
&& mouseInfo->pos.x >= line->pos.x - SrangeX
&& mouseInfo->pos.x <= line->pos.x + SrangeX
&& mouseInfo->pos.y >= line->pos.y - SrangeY
&& mouseInfo->pos.y <= line->pos.y + SrangeY)
{
line->is_display2 = TRUE;
}
}

を線情報更新のところに挿入し、右クリックをダブルクリックする事で、90度回転した画像が出てきます☆

ここまではなんとか順調だったんですが、この新しく出てきました画像(90度回転された画像)をマウスによって移動しようとした場合、うんともすんとも言わなくなってしまいました・・・

なにかいい方法はありませんでしょうか?
また、上記プログラム悪いところがありましたらご指摘ください・・・

まだまだ初心者すぎて、このサイトやみなさんにはお世話になってばかりです。
申し訳ございません・・・
よろしくお願いしますm(v_v)m


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

Name: Justy  ..ハッカー(169,972ポイント)   Date: 2007/11/09(金) 23:11   No:11643     
Title: Re:描画の回転について・・・    
画像をマウスのダブルクリックによって回転さたい
 基本的には keichanさんの書かれているとおり、角度のパラメータを保持し、
イベントに応じて回転させるという処理の流れになります。

 ただ、回転の方法はこの場合数種類の方法があります。

1 座標変換〜家を構成する全ての頂点を回転させた座標を計算して表示
−> 数が多くなってくると処理が重くなります。

2 GetDrawScreenGraphでキャプって家を部分だけをテクスチャにして回転
−> この関数はこの時点で描かれている絵をテクスチャにするものなので、
描いたときに既に背景があったりするとそれも含めてテクスチャ化されます。
 しかも描いたあと、消さないと回転前の画像が残ってしまいます。

3 テクスチャに家を描画
 空テクスチャを作って、そのテクスチャに対して家を描いて
そのテクスチャを回転して表示する。


 3番目が一番楽です。
 手順としては

1 レンダリング可能なテクスチャを MakeScreen()で作成。
2 描画先を SetDrawScreen()でそのテクスチャに変更する
3 家を描く。
4 描画先を元(DX_SCREEN_BACK)に戻す
5 2で作ったテクスチャを DrawRotaGraph()などで回転させて表示、

 となります。


 サンプルは2種類用意しました。
 drag_test3a.cppは従来の操作に加えて、マウス右を押しながらホイール回転で
画像が回転します。
 こちらは毎フレーム家のテクスチャを作り直しています。
 
 対してdrag_test3b.cppは最初にテクスチャを作ったら基本的に
そのままのテクスチャを使います(右+左クリックで作り直せます)。

 この違いはホイール回転による拡大縮小をしてみると
わかると思います。



うんともすんとも言わなくなってしまいました
 よくわかりませんが、あたり判定の座標と表示の座標がずれているのでは
ないでしょうか



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

Name: C.P.P  ..入門者(4,562ポイント)   Date: 2007/11/12(月) 19:14   No:11758 解決!     
Title: ありがとうございました☆    
ありがとうございます☆大変丁寧なサンプルまでつけていただき、大変助かりました♪

おかげ様でやっと、マウスによる移動 → 画像の回転という念願の処理が実現できました☆

本当にありがとうございます(^w^)v

まだまだ私は初心者で、質問の仕方や説明など至らなかったにもかかわらず、丁寧に教えていただきました、管理人さん、Justyさん、keichanさん、また大勢の方々、本当にありがとうございました☆

また、分からなかったら教えてください☆
お願いいたします☆ 


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



Name: www  ..ぴよぴよ(408ポイント)   Date: 2007/11/12(月) 02:19   No:11729       
Title: 無題    
どこがおかしいか教えてください(;_;)

#include <stdio.h>

void main()
{
typedef struct kokyaku_data
{
int k_code; // 顧客コード
short h_nen,h_tsuki,h_hi; // 発行年月日
short k_nen,k_tsuki,k_hi; // 使用期限
}KOKYAKU;

KOKYAKU kokyaku;

printf("顧客コードを入力してください\n");
scanf("%d",&kokyaku.k_code);

// 顧客構造体へ日付をセットする
printf("今年の西暦入力してください(YYYY MM DD):");
scanf("%d %d %d",&kokyaku.h_nen,&kokyaku.h_tsuki,&kokyaku.k_hi);

if(kokyaku.h_tsuki == 4 || kokyaku.h_tsuki ==6 || kokyaku.h_tsuki == 9 || kokyaku.h_tsuki == 11){
kokyaku.k_hi=30;
kokyaku.h_tsuki=1;
}
kokyaku.k_tsuki=kokyaku.h_tsuki;
}else
if((kokyaku.h_tsuki==3) && (kokyaku.h_hi==1)){
if((kokyaku.k_nen) % 400 ==0 || (kokyaku.k_nen)%4==0 && (kokyaku.k_nen)%100!=0){
kokyaku.k_tsuki=kokyaku.h_tsuki-1;
kokyaku.k_hi=29;
}else{
kokyaku.k_tsuki=kokyaku.h_tsuki-1;
kokyaku.k_hi=28;
}
}else{
kokyaku.k_hi=30;
if(kokyaku.h_tsuki = 1){
kokyaku.k_tsuki=12;
}
}
printf("%d %d %d",kokyaku.k_nen,kokyaku.k_tsuki,kokyaku.h_hi);

}

FILE *ds;

ds=fopen("../datafile/d_stock","w");




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


Name: バグ  ..比類無きプログラマー(64,023ポイント)   Date: 2007/11/12(月) 08:54   No:11731     
Title: Re:無題    
メイン関数の外にあるファイルポインタは、何の為にあるのでしょうか?

それから、{}の数が一致していません。


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

Name: バグ  ..比類無きプログラマー(64,586ポイント)   Date: 2007/11/12(月) 10:33   No:11734     
Title: Re:無題    

#include <stdio.h>

// 年月日格納用構造体
typedef struct tag_YMD
{
short Year;
short Month;
short Day;
} YMD;

// 顧客管理用構造体
typedef struct tag_KOKYAKU
{
int Code; // 顧客コード
YMD Public; // 発行日
YMD Limit; // 使用期限
} KOKYAKU;

// メイン関数
void main()
{
KOKYAKU Kokyaku;

// 顧客コードの入力
printf("顧客コードを入力してください");
scanf("%d",&Kokyaku.Code);

// 発行年月日の入力
printf("今年の西暦入力してください(YYYY MM DD):");
scanf("%d %d %d",&Kokyaku.Public.Year, &Kokyaku.Public.Month, &Kokyaku.Public.Day);

// 使用期限年の計算
Kokyaku.Limit.Year = Kokyaku.Public.Year + 1;

// 発行日が1日だった場合の処理
if (Kokyaku.Public.Day == 1)
{
// 末日の計算
if (Kokyaku.Public.Month == 5 || Kokyaku.Public.Month == 7 || Kokyaku.Public.Month == 10 || Kokyaku.Public.Month == 12)
{
// 入力された月が、5、7、10、12月だった場合、1ヶ月前の末日は30日となる
Kokyaku.Limit.Day = 30;
}
else if (Kokyaku.Public.Month == 3)
{
// 入力された月が3月だった場合は、前月が2月なので閏年の計算を行う
if ((Kokyaku.Limit.Year % 400 == 0 || Kokyaku.Limit.Year % 4 == 0) && Kokyaku.Limit.Year % 100 != 0)
{
Kokyaku.Limit.Day = 29;
}
else
{
Kokyaku.Limit.Day = 28;
}
}
else
{
Kokyaku.Limit.Day = 31;
}

// 使用期限月の計算
if (Kokyaku.Public.Month == 1)
{
// 1月だった場合の処理
Kokyaku.Limit.Year--;
Kokyaku.Limit.Month = 12;
}
else
{
Kokyaku.Limit.Month = Kokyaku.Public.Month - 1;
}
}
else
{
Kokyaku.Limit.Month = Kokyaku.Public.Month;
Kokyaku.Limit.Day = Kokyaku.Public.Day - 1;
}

printf("使用期限 : %04d年 %02d月 %02d日\n", Kokyaku.Limit.Year, Kokyaku.Limit.Month, Kokyaku.Limit.Day);
}


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

Name: バグ  ..比類無きプログラマー(64,649ポイント)   Date: 2007/11/12(月) 10:35   No:11736     
Title: Re:無題    
上記のプログラムですが、入力時の不正値チェックなどは何もしていません。
保存もしていませんので、必要であれば付け足してください。


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

Name: sa  ..ぴよぴよ(440ポイント)   Date: 2007/11/12(月) 11:15   No:11737     
Title: 無題    
ありがとうございます。このファイルのデータのみを違うファイルに保存するには、どのように書けばよいのでしょうか??

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

Name: バグ  ..比類無きプログラマー(64,668ポイント)   Date: 2007/11/12(月) 11:52   No:11739     
Title: Re:無題    
保存にはfprintf関数を、読み込みにはfscanf関数を使用すれば楽だと思いますよ。

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

Name: sa  ..ぴよぴよ(468ポイント)   Date: 2007/11/12(月) 12:02   No:11740     
Title: 無題    
開いているファイルと違うファイルに書き込むころができますか??

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

Name: box  ..比類無きプログラマー(91,785ポイント)   Date: 2007/11/12(月) 12:46   No:11741     
Title: Re:無題    
その、書き込みを行いたいファイルについて、
 ・オープン処理
 ・書き込み処理
 ・クローズ処理
のコードを書いてください。


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



Name: 自由の天使  ..ぴよぴよ(277ポイント)   Date: 2007/11/11(日) 16:02   No:11682       
Title: 無題    
今、シューティングゲームを作っているのですが、マウスの位置まで、腕も回転させたりしたいのですが、どのように、プログラムを組めばいいか分かりません。どうか、よろしくお願いします。

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


Name: 管理人 [URL]  ..伝説のハッカー(442,738ポイント)   Date: 2007/11/11(日) 18:29   No:11687     
Title: Re:無題    
前回のご質問でGPGAさんが仰いましたが、質問は具体的にしていただかないと回答も憶測でしか出来ず、自分の希望する回答がなかなか得られないと思います。

シューティングと腕の回転がどのように関係あるのかよくわかりませんし、どのような物体を回転させたいのかもわかりません。
DXライブラリにおいての話だとして、単なる画像の回転ならゲームプログラミングの館にあるとおりの回転できる関数を使えばOKです。
腕と言うことで、関節も含めて回転させたいならまた違ったアルゴリズムが必要でしょう。

X,Y座標は回転させたい半径にcos,sinをかければすぐに座標が計算出来ます。
3Dであっても同様です。

グーグルは何よりも確かな先生だったりします
http://www.google.co.jp/search?hl=ja&q=%E5%BA%A7%E6%A8%99%E3%80%80%E5%9B%9E%E8%BB%A2&lr=



回転させる方法がわからないのか、それともマウスによる情報の取得の方法がわからないのか、または他のアルゴリズムがわからないのか明確にした方が回答は得やすいと思います。


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

Name: 自由の天使  ..ぴよぴよ(328ポイント)   Date: 2007/11/11(日) 23:03   No:11709     
Title: Re:無題    
すみませんでした。

具体的には次のようにマウスとキーボードを使ったゲームを作ってみたいんです。
http://www.vector.co.jp/soft/win95/game/se271698.html


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

Name: 管理人 [URL]  ..伝説のハッカー(444,373ポイント)   Date: 2007/11/11(日) 23:46   No:11712     
Title: Re:無題    
地味に面白いゲームですね〜w
私が考えていたのと全然違いましたが、よくわかりました。
これはアークタンジェントを使えばいいと思います。
数学嫌いな人は耳をふさぐ言葉かもしれませんが、sin,cos,tanそしてアークタンジェントはシューティングとかだと良く使いますし、全く難しい事ではないです。

atan2の関数を使います。
http://www.google.co.jp/search?hl=ja&q=atan2&lr=
グーグルで調べてみてください。

2点から勝手に角度を計算してくれるとても便利な関数です。
これを使えば、マウスがある座標と自機座標から角度を計算する事が出来ます。
角度さえ計算できれば、回転して表示する関数で
http://l.huu.cc/g/#51
表示するだけです。


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

Name: 自由の天使  ..ぴよぴよ(340ポイント)   Date: 2007/11/12(月) 11:46   No:11738 解決!     
Title: Re:無題    
はい!
ありがとうございました!


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



Name: ミオ  ..ぴよぴよ(13ポイント)   Date: 2007/11/02(金) 22:14   No:11476       
Title: 0節の最後 F5を押しても    
はじめまして。過去のログをみてもよくわからなかったので改めて質問します。

書かれている手順道理にいれたのですが
はじめは「選択されたファイルはVisual Studio ソリューションファイルではありません」
とでてきたので過去のログを見て
DxLib.dsw を開いてそのあとフォルダから直接
DxLib.sln を開いたら上の「選択された・・・・」がでてこなくなったので
あらためてF5を押したのですが押してもまったく反応がありませんでした。
どうすればいいのでしょうか?

OSはXPです。
DirectXのバージョンはDirectX9.0cです

あとところどころわからない単語があったのでこれも質問します
コンパイラって何を指すのでしょうか?
VC++というのは Visual C++ のことなんでしょうか?


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


Name:  ..上級者(15,270ポイント)   Date: 2007/11/03(土) 13:30   No:11482     
Title: Re:0節の最後 F5を押しても    
コンパイラ : コンパイルするためのもの…説明は無理です(;;
>VC++というのは Visual C++ のことなんでしょうか?
その通りです。

>あらためてF5を押したのですが押してもまったく反応がありませんでした。
改めてと言われても、その前に押したと言う記述はありません。
もう少し細かくお願いします。
何を押して何をして…そして、何か押してもこう思っていると売りにはならない
みたいな感じで…(分かりづらいorz


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

Name: ミオ  ..ぴよぴよ(235ポイント)   Date: 2007/11/04(日) 02:08   No:11496     
Title: Re:0節の最後 F5を押しても    
1.はじめにDxLib.slnを開いたら
「選択されたファイルはVisual Studio ソリューションファイルではありません」
とでてきた
2.次にDxLib.dswをおした。
3.DxLib.dswを一度閉てもう一度DxLib.slnを開いた
4.今度は「選択された・・・」がでてこなかった
5.F5を押しても反応がなかった。

これで通じるでしょうか?
文章の説明が下手ですいません。
一応再起動なりいろいろしてみましたがやはり無反応でした。
F5キーそのものは異常はありませんでした。


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

Name: GPGA  ..プログラマー(38,174ポイント)   Date: 2007/11/05(月) 10:44   No:11511     
Title: Re:0節の最後 F5を押しても    
ミオさんの使用しているコンパイラがVS2005と仮定した場合、メニューの
ツール→オプション→環境→キーボード
にて「次の追加キーボードキーマップスキームを適用」の項目が
「Visual C++ 6」になっているかどうかを確認してください。

VS2002もしくは、VS2003の場合ですと、私自身がコンパイラを保持していませんのでわかりません。


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

Name: ミオ  ..ぴよぴよ(252ポイント)   Date: 2007/11/05(月) 23:49   No:11523     
Title: Re:0節の最後 F5を押しても    
貼り付けた画像と違ってるのはなんででしょう?

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

Name: ミオ  ..ぴよぴよ(408ポイント)   Date: 2007/11/05(月) 23:49   No:11524     
Title: Re:0節の最後 F5を押しても    
貼ってある画像とは違う表示でした
これってOSやVSC++のバージョンで変わるものなんですか?

ちなみに私のおはVisual Studio6.0です
キーボードキーマップスキームは
・既定の設定
・Depeloper Studio 5 and 6
・Visual Basic 5 and 6
・Visual C++ 2

の4つがありました

ためしに全部選択してF5を押しましたが反応がありませんでした。
ここまで来ると私には無理なのかと思えてきます。


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

Name: GPGA  ..プログラマー(38,299ポイント)   Date: 2007/11/06(火) 03:11   No:11526     
Title: Re:0節の最後 F5を押しても    
VC6.0の場合、DxLib.dswが実行ファイルとなりDxLib.slnは一切使用しません。
DxLib.dswを実行した後に、F5を押せばプログラムの実行となるはずです。


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

Name: バグ  ..比類無きプログラマー(63,795ポイント)   Date: 2007/11/06(火) 13:55   No:11533     
Title: Re:0節の最後 F5を押しても    
VC++6.0ならば…

@VC++6.0を起動する
A左上のファイルをクリックする
Bワークスペースを開くをクリックする
CDxLibを展開した箇所にあるDxLib.dswをダブルクリックする
DF5キーを押す

でいいかと思いますよ。


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

Name: ミオ  ..ぴよぴよ(481ポイント)   Date: 2007/11/07(水) 18:56   No:11571     
Title: Re:0節の最後 F5を押しても    
2人の方に回答をもらいましたが両方とも

LINK : fatal error LNK1104: ファイル "DxLib.lib" を開けません。
link.exe の実行エラー

というのがでてきました。


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

Name: GPGA  ..プログラマー(38,794ポイント)   Date: 2007/11/08(木) 10:33   No:11587     
Title: Re:0節の最後 F5を押しても    

メニューの
プロジェクト→設定
で、添付した設定ウインドウが開きます。
赤丸で囲ってあるように、タブを「リンク」に合わせ
カテゴリを「インプット」にし
追加ライブラリのパスに「Lib/」を追加します。

この追加ライブラリのパスはDxLib.dswからDxLib.libが入っているフォルダへの相対パスを記述します。
デフォルトでは以下のディレクトリ構成になっていると思われるため、「lib/」とすることで
DxLib.libファイルへのリンクが可能になります。

──────────────────────────────────────────────────
DxLib
├ Lib
│ ├ DxLib.lib
│ ├ DxUseCLib.lib
│ ├ libjpeg.lib
│ ├ libpng.lib
│ ├ ogg_static.lib
│ ├ vorbis_static.lib
│ ├ vorbisfile_static.lib
│ └ ZLIB.LIB
└ DxLib.dsw
──────────────────────────────────────────────────
 


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

Name: ミオ  ..ぴよぴよ(616ポイント)   Date: 2007/11/09(金) 23:28   No:11644     
Title: Re:0節の最後 F5を押しても    
「Lib/」を入れたのですがそのあとどうすればいいか良くわかりません。
設定の対象は[Win32 Debug]でしています
元々はすべての構成でした。

とりあえずF5は押しましたがやはりエラーがでてきました。

LINK : fatal error LNK1104: ファイル "DxLib.lib" を開けません。
link.exe の実行エラー

とでてきました。

「〜追加します。」以降の文章
「この追加ライブラリの〜」からの文章が今一私には理解できませんでした。
私に理解力がたりないのかな?


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

Name: GPGA  ..プログラマー(39,190ポイント)   Date: 2007/11/12(月) 10:24   No:11733     
Title: Re:0節の最後 F5を押しても    
DxLib.dwsからDxLib.libへのパスはLib/DxLib.libであっていますか?
このあたりのことがわからないのであれば、現状のプロジェクトのフォルダ構成を
全て提示してください。

このツールを使用すると簡単にフォルダ構成を作成できます。
上記のフォルダ構成もこのツールを使用しました。


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



Name: YUKI  ..かけだし(1,512ポイント)   Date: 2007/11/11(日) 10:46   No:11661       
Title: C言語でPICプログラムのシミュレート    
こんにちは。YUKIと言います。
現在PICプログラミングをやっているのですが、シミュレートが上手くいかず困っています。
コンパイラはMPLAB IDE v7.52を使っています。コンパイルは成功したのですが、シミュレートで思ったとおりの動作になりません。スイッチ操作をしてLEDの点灯パターンを変化させるという単純なプログラムですが、
スイッチのHigh/Lowの擬似入力をしてシミュレートしてもスイッチの状態が無視されてしまいます。
プログラムが悪いのかシミュレート方法が間違っているのかわかりませんが、取りあえずプログラムに誤りがあるか見ていただきたいです。
RB0~3がLED,RB4がブザー,RB6~9がスイッチです。
尚、シミュレートする際はwait時間を減らしています。
シミュレートしてて、おかしかった所はif文やgo to文がスイッチ操作しても無視されてしまうところです。
プログラミング初心者なので見苦しいかもしれませんが、以下がソースです。
//Clock 117920000[Hz]
//一秒間に行う命令数約3000万
#include<p30f2012.h>

void main(void)
{
unsigned i, j,a,b,c,d,cnt;
//全LED出力に設定
TRISBbits.TRISB0 = 0;
TRISBbits.TRISB1 = 0;
TRISBbits.TRISB2 = 0;
TRISBbits.TRISB3 = 0;
//ブザー出力に設定
TRISBbits.TRISB4 = 0;
PORTBbits.RB4 = 0; //ブザー消音
//全LED点灯
PORTBbits.RB0 = 1; //LED1
PORTBbits.RB1 = 1; //LED2
PORTBbits.RB2 = 1; //LED3
PORTBbits.RB3 = 1; //LED4
//全SW入力に設定
TRISBbits.TRISB6 = 1; //SW1
TRISBbits.TRISB7 = 1; //SW2
TRISBbits.TRISB8 = 1; //SW3
TRISBbits.TRISB9 = 1; //SW4


for(i=0;i<60000;i++){ //経過時間判定
for(j=0;j<500*5;j++){
;
if(PORTBbits.RB6 ==1 || PORTBbits.RB7 ==1
|| PORTBbits.RB8 ==1 || PORTBbits.RB9 ==1)
goto _exit; //スイッチ操作したら_exitにジャンプ
}
}
while(1){ //0.5s毎にLED全点滅
for(i=0;i<60000;i++){
for(j=0;j<50*5;j++){
;
}
}
PORTBbits.RB0 = ~PORTBbits.RB0;
PORTBbits.RB1 = ~PORTBbits.RB1;
PORTBbits.RB2 = ~PORTBbits.RB2;
PORTBbits.RB3 = ~PORTBbits.RB3;
if(PORTBbits.RB6 == 1 || PORTBbits.RB7 ==1 //スイッチ操作したら脱出
|| PORTBbits.RB8 == 1 || PORTBbits.RB9 ==1)
break;
}


while(1){
_exit:;
cnt = 0;
/***チャタリング除去開始***/
while(cnt<10){
a = PORTBbits.RB6; //各スイッチの状態記憶
b = PORTBbits.RB7;
c = PORTBbits.RB8;
d = PORTBbits.RB9;
for(i=0;i<60000;i++){
;
}
if(a == PORTBbits.RB6 || b == PORTBbits.RB7
|| c == PORTBbits.RB8 || d == PORTBbits.RB9 )
cnt++;
else
cnt = 0;
}
/***チャタリング除去終了***/
if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 0
|| PORTBbits.RB8 == 0 || PORTBbits.RB9 == 0){ //SW(ON:1 OFF:2,3,4)
PORTBbits.RB0 = 0; //LED(ON:2,3,4 OFF:1)
PORTBbits.RB1 = 1;
PORTBbits.RB2 = 1;
PORTBbits.RB3 = 1;
}
else if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 1
|| PORTBbits.RB8 == 0 || PORTBbits.RB9 ==0){ //SW(ON:1,2 OFF:3,4)
PORTBbits.RB0 = 0; //LED(ON:3,4 OFF:1,2)
PORTBbits.RB1 = 0;
PORTBbits.RB2 = 1;
PORTBbits.RB3 = 1;
}
else if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 1
|| PORTBbits.RB8 == 1 || PORTBbits.RB9 == 0){ //SW(ON:1,2,3 OFF:SW4)
PORTBbits.RB0 = 0; //LED(ON:4 OFF:1,2,3)
PORTBbits.RB1 = 0;
PORTBbits.RB2 = 0;
PORTBbits.RB3 = 1;
}
else if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 1
|| PORTBbits.RB8 == 1 || PORTBbits.RB9 == 1){ //SW(ON:1,2,3,4)
PORTBbits.RB0 = 0;//LED(OFF:1,2,3,4)
PORTBbits.RB1 = 0;
PORTBbits.RB2 = 0;
PORTBbits.RB3 = 0;
}
else {
a = PORTBbits.RB6; //各スイッチの状態記憶
b = PORTBbits.RB7;
c = PORTBbits.RB8;
d = PORTBbits.RB9;
PORTBbits.RB4 = 1; //ブザー音開始
for(i=0;i<60000;i++){
for(j=0;j<500*5;j++){
;
}
}
PORTBbits.RB4 = 0; //ブザー音停止
while(1){
for(i=0;i<60000;i++){
for(j=0;j<50*5;j++){
;
}
}
PORTBbits.RB0 = ~PORTBbits.RB0;
PORTBbits.RB1 = ~PORTBbits.RB1;
PORTBbits.RB2 = ~PORTBbits.RB2;
PORTBbits.RB3 = ~PORTBbits.RB3;
if(a != PORTBbits.RB6 || b != PORTBbits.RB7
|| c != PORTBbits.RB8 || d != PORTBbits.RB9 )
break;
}
}
}
}


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


Name: YUKI  ..かけだし(1,582ポイント)   Date: 2007/11/11(日) 14:08   No:11674     
Title: Re:C言語でPICプログラムのシミュレート    
入力ポートと出力ポートを別の変数にしたら、取りあえず
if文、goto文はうまく判別するようになりました。
あとは出力の確認をするところですが、シミュレートがうまくできない状態です。


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

Name: YUKI  ..かけだし(1,606ポイント)   Date: 2007/11/11(日) 21:24   No:11700 解決!     
Title: Re:C言語でPICプログラムのシミュレート    
すいません、質問しといて申し訳ないのですが
自己解決できました。
わざわざ記事を読んでくれた方がおりましたら、無駄な時間を使わせてすいませんでした。
また分からないことがあったらよろしくお願いします。


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

Name: 管理人 [URL]  ..伝説のハッカー(444,423ポイント)   Date: 2007/11/11(日) 22:22   No:11707     
Title: Re:C言語でPICプログラムのシミュレート    
力及ばずすみません(_ _||)
ただ待機する部分は無駄なfor文ではなく、Sleep関数を使えばいいのではないでしょうか。
#include <windows.h>
を書いて、
sleep(int n);
nはミリ秒です。1000で一秒です。違う意味のfor文でしたらすみません(_ _|||)


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

Name: YUKI  ..かけだし(1,710ポイント)   Date: 2007/11/11(日) 23:46   No:11711     
Title: Re:C言語でPICプログラムのシミュレート    
返信ありがとうございます。
waitする関数はもう作りました。
上記のプログラムは色々と誤りがあったようで、それを治したら入力に関するシミュレートはできました。
あとはプログラムの問題では無く、MPLABでの出力のシミュレートの仕方だけが分からないだけなので、
なんとか自力で頑張ってみます。


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

Name: たかぎ [URL]  ..上級者(17,433ポイント)   Date: 2007/11/12(月) 00:18   No:11713     
Title: Re:C言語でPICプログラムのシミュレート    
解決したようで何よりです。
ところで、

> 管理人さん
> ただ待機する部分は無駄なfor文ではなく、Sleep関数を使えばいいのではないでしょうか。
> #include <windows.h>
> を書いて、
> sleep(int n);
> nはミリ秒です。1000で一秒です。違う意味のfor文でしたらすみません(_ _|||)

PICはごく小さなマイクロコントローラなので、Windowsはもちろん、OSが搭載されることは稀です。
(PICシリーズの比較的ハイエンドなものであれば、μITRONぐらいなら載ります。)
一応、下記も参照してみてください。
http://ja.wikipedia.org/wiki/PIC_(%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9)
↑リンクが上手くいかないようなので、コピペしてください。


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

Name: 管理人 [URL]  ..伝説のハッカー(444,294ポイント)   Date: 2007/11/12(月) 00:33   No:11716     
Title: Re:C言語でPICプログラムのシミュレート    
そうなのですか、p30f2012.hが何をするライブラリなのかも知らなかったので、回答違いな発言をしてしまったようですみません(_ _|||)
なるほど、こんな小さなチップをコントロールするものだったんですね。
これはOSが搭載される事はほとんどなさそうですね;


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



Name: 自由の天使  ..ぴよぴよ(184ポイント)   Date: 2007/11/07(水) 00:16   No:11563       
Title: 実行速度・・・・・    
たびたび、申し訳ありません。
今、卒業研究を製作していて、当サイトを参考にさせていただいています!
で、自分でも参考にしながら、プログラムでゲームを作成しているのですが、実行速度が恐ろしいほど遅いのですが、どのようにすればいいのでしょうか?
プログラムは現在、メインプログラムからタイトル画面(選択や音楽)を作成しているところです。
関数の使いすぎなのでしょうか??
パソコンのメモリはしっかりあるのですが・・・・。
よろしくお願いします。


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


Name: GPGA  ..プログラマー(38,353ポイント)   Date: 2007/11/07(水) 10:24   No:11565     
Title: Re:実行速度・・・・・    
実行速度の話を行う場合、使用しているPCのOS、CPU、残メモリ量、残HDD量/総HDD量、グラフィックカードの提示と
作成しているゲームの画面サイズ、一画面に表示している画像の総合面積等を明記してください。

ただ、「タイトル画面(選択や音楽)を作成」や「パソコンのメモリはしっかりある」などのあいまいな情報提示では、回等側も憶測レベルの回等しかできません。

憶測レベルで回答するならば
ゲームで処理速度が遅い場合、基本的に描画周りで、関数呼び出しなどの通常処理では
for文を1万回ほど回すなどというような、よほど負荷の高い処理を行う場合以外はほとんどありません。


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

Name: 自由の天使  ..ぴよぴよ(193ポイント)   Date: 2007/11/11(日) 16:00   No:11681 解決!     
Title: Re:実行速度・・・・・    
ありがとうございました!!

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

Name: 管理人 [URL]  ..伝説のハッカー(442,738ポイント)   Date: 2007/11/11(日) 19:01   No:11691     
Title: Re:実行速度・・・・・    
解決でいいのでしょうか?

DXライブラリをお使いでしたら、遅くなる要素は色々考えられます。

・画面をキャプチャする関数を何度も呼んでいる。
・フォント変更関数を毎回呼んでいる。
・何度も何度も画像をαブレンドしている。
・画面全体を常にαブレンドしている。
・待機をSleepなどではなく、whileで回して待機している。
・1秒間にかなりの回数の描画をしている。

などなど・・。

後、60FPSでは、1万回程度の計算なら処理は重くならないのではないでしょうか?
1万回描画するなら別ですが・・。
シューティングだとよく100x100の比較など何度もするので・・。

恐らくGPGAさんの仰った意味は具体的な量ではなく「多い」という代名詞的言い方だったのでしょうが、
質問者さんがシューティングを作っていると言う事で、
比較回数を今後気になさると思ったので、言わせていただきました。


私の環境では、10億回の足し算の計算は0.6秒でした。もちろん単純にフルに使ってしまうと重くなるでしょうけど、
こちらのプログラムで計算速度が計測できますので、実行してみてください。


#include <stdio.h>
#include <time.h>

int main(void){
int i,ans=0;
clock_t start;
start = clock();
printf("計算開始\n");
for(i=0;i<1000000000;i++)
ans+=i;
printf("処理に%.3f秒かかりました。結果%d\n", (clock()-start)/1000.0, ans);
return 0;
}


 
ansは無駄な計算で、結果の確認には関係ありません。コンパイラの最適化によって計算が省かれる事を防ぐ為にいれてあります。


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

Name: GPGA  ..プログラマー(39,308ポイント)   Date: 2007/11/11(日) 22:49   No:11708     
Title: Re:実行速度・・・・・    
>管理人さん
こんばんは

for文一万回に関してですが、補足説明が足りませんでした。
最近各掲示板を見ていて思ったのが、DXライブラリを使用している方々のPCでは
いまだにWindow98などのマシンを使用している方が少なくないということです。

このあたりのOSのCPUの性能は300MHz〜800MHzくらいだと思います。
今回、質問者の方がタイトルで重くなるということを言っているあたり
かなり低スペックPCを使用していると考えました。

また、for文の中の処理について何も記述していなかったのですが
ゲームということで、シューティングの弾一万個分の移動および、当たり判定を行うくらいの
処理を想定して、書きました。

説明が不足し、混乱させてしまったこと、誠に申し訳ありませんでした。


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

Name: 管理人 [URL]  ..伝説のハッカー(444,209ポイント)   Date: 2007/11/11(日) 23:35   No:11710     
Title: Re:実行速度・・・・・    
補足ありがとうございます。
そうですね、ノートPCでPenIIIとか、デスクトップでもセレロン等を使っている人が思いの他多い事最近知りました。
重くなる・・というスペック的な要素が絡む質問はご自分のスペックを示してもらうのが一番ですね。
1万回の計算と言う意味はそういうことだったんですね。
1万個一度に画面に弾が表示されるとすごいことになりそうですね^^;
それだと重くなると思いますm(_ _)m
ボムだったり、何かのアイテム変化だったり、自機以外の見方だったり、色々な要素が増えてくると単純に弾と自機だけの比較ではなくなってきますものね。
こちらこそ変に言葉尻捉えるような事を言ってしまいすみませんm(_ _)m


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



Name: YYY  ..かけだし(1,118ポイント)   Date: 2007/11/11(日) 16:28   No:11684       
Title: たびたび申し訳ありません。    
これだけ聞いてばかりだと自分の力にならないような気がしますが・・どうしてもわからないので教えてください。私が意図する出力は、
2001 .234
2002 .332
2003 .320
2004 .343
2005 .300
2006 .256
2007 .323

なんですが以下のプログラム


#include <stdio.h>

int main(void)
{
int at_bats[7];
int base_hit[7];
int year;
float average;
int number;

at_bats[0]=692; base_hit[0]=242;
at_bats[1]=647; base_hit[1]=208;
at_bats[2]=679; base_hit[2]=212;
at_bats[3]=704; base_hit[3]=262;
at_bats[4]=679; base_hit[4]=206;
at_bats[5]=695; base_hit[5]=224;
at_bats[6]=678; base_hit[6]=238;

average = base_hit[number]/at_bats[number];


printf("year\n");
for(year = 2001; year < 2008 ; year++){
printf("%2d\n", year);
for(number = 0; number < 7 ; number++){
printf("%2d\n", average);

}
}



という風に入力すると
year
2001
0
0
0
0
0
0
0
2002
0
0
0
0
0
0
0
2003
0
0
0
0
0
0
0
2004
0
0
0
0
0
0
0
2005
0
0
0
0
0
0
0
2006
0
0
0
0
0
0
0
2007
0
0
0
0
0
0
0
となります。
0になる原因は分かっているので無視してもいいですが意図するようにならないので困ります。
{}の位置とかを変えてforの外に出してしまうと
2001
2002
2003
2004
2005
2006
2007
0
0
0
0
0
0
と下側に表示されてしまいます。意図する動作に出力される方法を教えてください。
お願いします。


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


Name: YYY  ..かけだし(1,174ポイント)   Date: 2007/11/11(日) 16:30   No:11685     
Title: Re:たびたび申し訳ありません。    
すみません。配列の数字とaverageの値は合いませんが気にしないでください。

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

Name: miyaza  ..中級者(11,097ポイント)   Date: 2007/11/11(日) 18:25   No:11686     
Title: Re:たびたび申し訳ありません。    
そもそもソースをコンパイルできません。
括弧の数が足りなくて。

average = base_hit[number]/at_bats[number];
は、7回計算する必要がありますね。

average = base_hit[number]/at_bats[number];
int型同士を割ってその結果をaverageに入れていますね。
例えば 242/692では0.35となりますが、int型なので0となりそれがaverageに入ります。
ですから0となります。

printf("%2d\n", average);
averageはfloat型なので%dではまずいですね。

意図した出力というのが数字だけでは良く分かりません。
文章で説明してください。

問題点をならべてみましたが・・・・・・どうでしょう?



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

Name: 管理人 [URL]  ..伝説のハッカー(443,257ポイント)   Date: 2007/11/11(日) 18:41   No:11689     
Title: Re:たびたび申し訳ありません。    
先ほどのトピで気になったのですが、括弧の対応や有効範囲の対応は理解されていますか?


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

@;
for(i=0;i<3;i++){
A;
}
B;

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

@;
for(i=0;i<3;i++)
A;
B;

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


for(i=0;i<3;i++){
@;
A;
}
B;


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


 
この3種類ともどのように処理が行わるかはっきりわかりますか?
ソースファイルのコピペで括弧をコピーし忘れただけならいいのですが、
括弧の始まりの数だけ終わりの括弧も必要です。
括弧は有効範囲を示します。
括弧の外に出したり入れたりして、偶然うまく行くのを待つのではなく、
どのように書けばどのような処理が出来るか考えてから正確なコードを
書くことが解決への最短経路だと思います。

year -> average -> year -> average -> year -> average -> の順番で表示したいのなら、
どちらかだけループに入れてしまったのでは無理ですね。


for(i=0;i<2;i++){
@;
for(j=0;j<3;j++){
A;
}
B;
}

このプログラムはどのような順序で処理されるか、考えてみてください。


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

Name: YYY  ..かけだし(1,306ポイント)   Date: 2007/11/11(日) 18:54   No:11690     
Title: Re:たびたび申し訳ありません。    
一番最初の奴は@が実行されAでループし条件を満たしたらBが実行される。
次の奴はコンパイル不可能?
最後の奴は@、A、Bすべてでループでしょうか?
やはり適当は駄目ですよね・・・。反省します。

簡単に言ってしまうと。
年度の右に値を表示させたいだけです。for文の中に入れて前は解決できたんですがね・・。
やはりアベレージを7回計算しないとダメなんでしょうか?0〜6を次々に入れてfor文で
書けないんですかね?


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

Name: 管理人 [URL]  ..伝説のハッカー(442,941ポイント)   Date: 2007/11/11(日) 19:06   No:11692     
Title: Re:たびたび申し訳ありません。    
仰った答えは3つとも不正解です。

やはり括弧の対応というのは、プログラムを書く上で基本中の基本で、それがわかってないとかけないので、
ここで質問するより先に、入門サイトで勉強された方が近道だと思います。

1番は意味は解っていらっしゃるのかもしれませんが、言葉が違います。

厳しい事を言うようですが、ここで、仮に有力な回答や、答えを聞いても、結局理解には繋がらないと思います。

先ほども私が言いましたとおり、括弧は有効範囲を示します。
3において、括弧閉じているBがループ処理される事はありません。

最低限if文の書き方、for文の書き方、括弧の有効範囲だけは、先ほどお伝えしたサイトなどで勉強してください。


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

Name: 管理人 [URL]  ..伝説のハッカー(443,123ポイント)   Date: 2007/11/11(日) 19:11   No:11693     
Title: Re:たびたび申し訳ありません。    


@;
for(i=0;i<3;i++){
A;
}
B;

このプログラムは
@ AAA B
の順で行われます。

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

@;
for(i=0;i<3;i++)
A;
B;

括弧を書かなかったら「次のセミコロンまで」が条件文の有効範囲と成りますので、Aまでがforの有効範囲です。
つまり
1と同じ処理順序になります。

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


for(i=0;i<3;i++){
@;
A;
}
B;

単純に字下げをしなかったバージョンです。括弧の有効範囲は括弧の始まりから終わりまでですから
forの有効範囲は@Aの2つ。Bは有効範囲ではないので、ループされません。
よって
@A@A@A B
となります。
 
for文にしてもwhile文にしても、「条件を満たしている間」ループします。
つまり条件を満たさなくなったらループを出ます。
for(i=0;i<2;i++){
は何を意味しているか、

for(@;A;B)

@は初期設定
Aは継続可能条件
Bは変数内容の変更

を意味します。もちろん違う書き方も出来ますが。
Aの継続可能条件を満たさなくなったら終了です。
i<2を終了する時、iは2になっているでしょう。

では

for(i=0;i<2;i++){
@;
for(j=0;j<3;j++){
A;
}
B;
}

の順番を考えてみてください。
また、ループを抜けた時の、iとjの値は何になっているか考えてみてください。


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

Name: YYY  ..かけだし(1,391ポイント)   Date: 2007/11/11(日) 19:18   No:11694     
Title: Re:たびたび申し訳ありません。    
有効範囲ですか。分りました。
それでは私のプログラムではyear、averageのいずれもがループしてしまうんですね。
しかしfor文の括弧を閉じ、そのあとまたfor文を書くとyearの下にaverageが表示されるんですよね。
何とかaverageをyearの右に表示させたいです。それさえわかればこのプログラムはできそうです。


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

Name: 管理人 [URL]  ..伝説のハッカー(443,399ポイント)   Date: 2007/11/11(日) 19:22   No:11695     
Title: Re:たびたび申し訳ありません。    
私の回答は脱線しているわけではないです。
最初からよくお読みになったら解ると思いますが、答えを自分で導き出していただく為にこのような事を書いています。
私が答えを書く事は簡単ですが、それでは意味が無いので。
面倒でしょうが、考えてみましょう。


for(i=0;i<2;i++){
@;
for(j=0;j<3;j++){
A;
}
B;
}

この順番がわかれば

for(i=0;i<2;i++){
printf("A");
for(j=0;j<3;j++){
printf("B");
}
printf("C");
}

これで何が表示されるかわかりますよね?


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

Name: 管理人 [URL]  ..伝説のハッカー(443,723ポイント)   Date: 2007/11/11(日) 19:34   No:11696     
Title: Re:たびたび申し訳ありません。    
>それさえわかればこのプログラムはできそうです。

miyazaさんが仰っていますが、まだおかしな場所は沢山あり、それだけでは解決しません。

特に
アベレージの部分は
numberには何も入っていない、むしろ参照してはいけないものが入っている要素をさす形になっているので、非常にまずいです。

プログラムを書く前に、平均ってどうやって計算して出すか、考えてみてください。

9 10 11 9 11

の平均は10だとわかりますが、それはどう計算したからでしょうか。こんな簡単な数字だとみてすぐフィーリングで解ると思うなら

25.2981 438.21 8372.48

などの数字ならどうやって平均を出すか考えてみてください。
それから、
「小数を扱う事が出来ない数」と「小数点を扱う事が出来ない数」の計算結果は「小数点を扱う事が出来ない数」 でしかありません。
miyazaさんの仰った事を良く見てください。


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

Name: YYY  ..かけだし(1,510ポイント)   Date: 2007/11/11(日) 19:46   No:11698     
Title: Re:たびたび申し訳ありません。    
実行した結果・・・。@ループの中にAのループが入り込んでいました。
Aのループは{}で囲まれているため普通に実行。まず@のところに0が代入され、そのあとAが
実行、その後は1とCが同時に出力。
ここまでは分かったんですがその後に0、1、2、Cが出力されるのが分りませんでした。
もうAのループの実行は終わったのでは?


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

Name: 管理人 [URL]  ..伝説のハッカー(444,132ポイント)   Date: 2007/11/11(日) 21:18   No:11699     
Title: Re:たびたび申し訳ありません。    
 


>実行した結果・・・。@ループの中にAのループが入り込んでいました。

こういうのを2重ループと言います。ループの中にループが入っています。

>ここまでは分かったんですがその後に0、1、2、Cが出力されるのが分りませんでした。

では、言い方を変えてみましょう

for(i=0;i<2;i++){
@;
A;
B;
}

これの実行の順番はもう解りますよね?

@AB@AB

です。では、このAにあたる部分がfor文だとしたら?


for(i=0;i<2;i++){
@;
for(j=0;j<3;j++){
A;
}
B;
}

処理はどうなるはずですか?

 

これが解れば、プリントの仕方がわかるはずです。


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

Name: YYY  ..かけだし(1,700ポイント)   Date: 2007/11/11(日) 21:54   No:11701     
Title: Re:たびたび申し訳ありません。    
実行結果はまず0が表示その中にAの結果012が出力次にBが出力その隣に1が出力。
その後再びABと出力されるって感じでしょうか?仕組みは分かったんですがなぜ1が下に
入力されず隣に行くのでしょうか?これが問題解決のヒントになっているのでしょうか?


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

Name: YYY  ..かけだし(1,752ポイント)   Date: 2007/11/11(日) 21:55   No:11702     
Title: Re:たびたび申し訳ありません。    
ちなみに少数の計算ですが例えばi/jだったらiの前に(float)をつけますね。
そうすれば小数点以下の値も出すことができます。


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

Name: 管理人 [URL]  ..伝説のハッカー(444,275ポイント)   Date: 2007/11/11(日) 22:14   No:11704     
Title: Re:たびたび申し訳ありません。    
各数字はiの内容なのかjの内容なのかわかりませんが、printf文は\nを書かない限り改行はされません。
これで問題解決になったのではないでしょうか。
処理の順番もこうやって調べてみるとよくわかりますね。
今度はfor文を使うとどのような処理になるかその流れを予測して課題の完成につなげてください。


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

Name: YYY  ..かけだし(1,795ポイント)   Date: 2007/11/11(日) 22:17   No:11706     
Title: Re:たびたび申し訳ありません。    
すみませんね。最初はiの0、次はjの012、次はiの1です。
分りました。改行しなければ横に並ぶんですね。課題はもうあきらめました。
でもfor文が分かったのが収穫ですね。ありがとうございました。


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



Name: YYY  ..ぴよぴよ(79ポイント)   Date: 2007/11/11(日) 12:51   No:11663       
Title: 実行結果がおかしい・・    
1 月の平均気温は 5.8 度です。
2 月の平均気温は 6.1 度です。
3 月の平均気温は 9.3 度です。
4 月の平均気温は 14.4 度です。
5 月の平均気温は 18.4 度です。
6 月の平均気温は 21.8 度です。
7 月の平均気温は 25.3 度です。
8 月の平均気温は 26.7 度です。
9 月の平均気温は 23.7 度です。
10 月の平均気温は 18.5 度です。
11 月の平均気温は 13.4 度です。
12 月の平均気温は 8.3 度です。

ここから最も暑い月とその最高気温を求めたいんですけど・・・。
やり方としては
最大値を格納する変数(ここではmaxとする)を定義する


暫定的に、1月の気温をmaxに代入する(=1月が最高気温だと仮定する)


2月から12月までの各月について、以下の処理を行う{
    もし、いま着目している月の気温が max よりも高ければ、
       その月の気温をmaxに代入する(=その月が最高気温だと仮定する)

このように書いてありました。
なのでそれに従ったつもりで私はif(maxkion < kion[month]){
maxkion = kion[month];
maxmonth == month;
printf("最も暑い月は%d月でその時の気温は%.1f℃です。\n", maxmonth, maxkion);
と書きましたが そうすると
最も暑い月は0月で最高気温は8.3℃です。とでてしまいます。
ちなみに私が書いたプログラムは
#include<stdio.h>
int main(void)
{
float kion[13];
int month;
int maxkion=kion[1];
int maxmonth;
kion[1] = 5.8;
kion[2] = 6.1;
kion[3] = 9.3;
kion[4] = 14.4;
kion[5] = 18.4;
kion[6] = 21.8;
kion[7] = 25.3;
kion[8] = 26.7;
kion[9] = 23.7;
kion[10] = 18.5;
kion[11] = 13.4;
kion[12] = 8.3;

for(month = 1 ; month<13 ; month++){

printf("%d 月の平均気温は%.1f℃です。\n", month, kion[month] );
}
if(maxkion < kion[month]){
maxkion = kion[month];
maxmonth == month;
printf("最も暑い月は%d月でその時の気温は%.1f℃です。\n", maxmonth, maxkion);
}
return 0;
}

それで予定としては最も暑い月は8月でその時の気温は26.7℃です。
と出力されるようにしたいのですが・・・。
ちなみに使用ソフトはMeadow、OSはWindowsです。
お願いします。


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


Name: box  ..比類無きプログラマー(91,588ポイント)   Date: 2007/11/11(日) 13:08   No:11664     
Title: Re:実行結果がおかしい・・    

> int maxkion=kion[1];

int型ではまずいです。

> if(maxkion < kion[month]){
> maxkion = kion[month];
> maxmonth == month;

この3つの文は、for文のループの中に入れてください。
それから、3つ目の文の等号は2つあるとまずいです。

> printf("最も暑い月は%d月でその時の気温は%.1f℃です。\n", maxmonth, maxkion);

この文は、for文のループの外に出してください。



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

Name: 管理人 [URL]  ..伝説のハッカー(441,559ポイント)   Date: 2007/11/11(日) 13:17   No:11665     
Title: Re:実行結果がおかしい・・    
まず、コンパイル時に出るエラーメッセージ、警告などをよく読むことが大事です。
上のプログラムをコンパイルするとこのように出ます。


1>.\test.cpp(7) : warning C4244: '初期化中' : 'float' から 'int' への変換です。データが失われる可能性があります。
1>.\test.cpp(9) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(10) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(11) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(12) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(13) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(14) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(15) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(16) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(17) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(19) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(20) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
1>.\test.cpp(27) : warning C4244: '=' : 'float' から 'int' への変換です。データが失われる可能性があります。
1>.\test.cpp(28) : warning C4553: '==' : 演算子にプログラム上の作用がありません。'=' を意図しましたか?
1>リンクしています...
1>コード生成しています。
1>c:\documents and settings\\my documents\visual studio 2005\projects\test\test.cpp(7) : warning C4700: 初期化されていないローカル変数 'kion' が使用されます
1>c:\documents and settings\\my documents\visual studio 2005\projects\test\test.cpp(29) : warning C4700: 初期化されていないローカル変数 'maxmonth' が使用されます
1>コード生成が終了しました。

まず、floatで格納したものをintに格納しなおしています。
つまり少数扱い可能箱にいれたデータを少数扱い不可能箱に入れなおしているので。データが失われます。
少数を扱うのならint型ではなく、floatかdoubleにしてください。
floatは扱う利点があまりないので、より高精度なdouble型を使ってください。

3.4 などと書くとそれはdouble型を意味します。float型で3.4を表す時は 3.4f と書きます。

そして、プログラムというものは上から下に処理がなされます。

@float kion[13];
Aint month;
Bint maxkion=kion[1];
Ckion[1] = 5.8;


これは@で、領域が用意され、その中には何も入っていません。何も入っていないわけではなく、そのまま扱ってはいけないデータが入っています。変数は用意したら初期化が必要です。
Aで、変数が用意されます。
Bで変数を用意し、先ほど何も入ってないといった、そのままでは扱ってはいけないデータをいれています。
Cデ扱いたいデータを代入しています。

つまりBの処理は行いたい処理が出来ていません。
処理の順番を考えて書き直してみてください。

後普通配列は0から使います。0〜11まで使うのが普通でしょう。

そして、for文はprintしかしていません。
12回文字を表示しているだけです。

投稿されている記事の原文を確認しても、字下げした形跡が見られませんでした。
プログラムは字下げをして、どこの括弧がどこに対応しているか確認しながら書かないと間違いを引き起こすので字下げしてください。
こんな感じです。


#include<stdio.h>
int main(void){
int (略)maxmonth;
for(month = 1 ; month<13 ; month++){
printf("%d 月の平均気温は%.1f℃です。\n", month, kion[month] );
}
if(maxkion < kion[month]){
maxkion = kion[month];
}
return 0;
}


さらに、@==Aは比較しか行えないので、条件文以外に書く機会はほぼありません。

プログラムをキレイに書き直して、対応と、処理の順番を考えてもう一度書いてみてください。


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

Name: box  ..比類無きプログラマー(91,714ポイント)   Date: 2007/11/11(日) 13:32   No:11669     
Title: Re:実行結果がおかしい・・    
> 後普通配列は0から使います。0〜11まで使うのが普通でしょう。

月のように1で始まるデータを扱うとき、n月分のデータが配列の(n-1)番目の要素に
入っていると直感的にわかりにくい場合があります。

そこで、わざと1つ余計に配列の要素を確保し、
先頭要素を使わないことで、n月分のデータが配列のn番目の要素に入るという、
人間にとって非常にわかりやすい状態にすることがあります。


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

Name: YYY  ..ぴよぴよ(216ポイント)   Date: 2007/11/11(日) 13:55   No:11670 解決!     
Title: Re:実行結果がおかしい・・    
>boxさん本当にありがとうございました。
この通りにやったらできました。

>管理人さん
コンパイルでエラーは出ませんでしたけど実行ソフトがおそらく違うんでしょうかね?ちなみに
私はCygwinでやってますがそのソフトは何でしょうか?そちらのソフトの方がエラーが見つけやすそうなので
教えてくれるとありがたいですね。質問に答えていただきありがとうございます。


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

Name: 管理人 [URL]  ..伝説のハッカー(441,678ポイント)   Date: 2007/11/11(日) 13:57   No:11671     
Title: Re:実行結果がおかしい・・    
Cygwinは使った事が無いですが、設定で警告の出る程度が決められるのではないでしょうか。
私が使っているのはVC++でシェアソフトですが、無料版もありますので、よければお使い下さい。

http://www.microsoft.com/japan/msdn/vstudio/express/visualc/

配列は絶対0から使わないといけないって決まりは無いので、その辺は自由ですが、何も使わない領域を確保するというのは何だかすっきりしない気がしましたので。
プログラムは可読性なども重要なので、その辺は自由に書いていいですね。


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

Name: YYY  ..ぴよぴよ(31ポイント)   Date: 2007/11/11(日) 14:13   No:11676     
Title: Re:実行結果がおかしい・・    
>管理人さん成程・・・0から入力すると0が1月で1が2月で
という風にずれが生じるから、それによって勘違いするらしいって言ってましたね。
1が1月の方がわかりやすいからだと思います。

ところでboxさんの言っている風にやるとできるのに私がやるのではなぜできないんでしょうかね?
かっこの外に出したり、かっこの中から外に出すというちょっとした変更で全然違う答えになるんですね。
しっかりと理解したいので誰かわかる範囲でお願いします。いまだにかっこの中に入れれば
いいのか外に出さなければいけないというのが分らない今日この頃・・・。今までは適当にやったら
できたって感じであったのですが、今回もこれで済ますと何もならないのでどうしてなのか学びたいです。


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

Name: 管理人 [URL]  ..伝説のハッカー(442,224ポイント)   Date: 2007/11/11(日) 14:34   No:11678     
Title: Re:実行結果がおかしい・・    
いやいや、括弧の中にあるか外に有るかは大違いですよ。
ちょっとした変更ではありません。


for(i=0;i<100;i++){
@;
}
A;

これと

for(i=0;i<100;i++){
@;
A;
}
 
 


これでは処理の順番がどうであるか、答えられますか?
Cというものは基本的に括弧で始まり括弧で終わります。
有効範囲を示します。

プログラムというものはif文さえあればある程度かけますが、有効範囲がどこまでなのかわからないものなら作れません。

ネットでもかなり勉強できるのでこういうところを覗いてみて下さい。
http://www.google.co.jp/search?hl=ja&q=C%E8%A8%80%E8%AA%9E%E3%80%80%E5%85%A5%E9%96%80&lr=


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

Name: YYY  ..ぴよぴよ(246ポイント)   Date: 2007/11/11(日) 16:09   No:11683 解決!     
Title: Re:実行結果がおかしい・・    
ありがとうございます。もう一度勉強し直したいと思います。

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

Name: 管理人 [URL]  ..伝説のハッカー(442,804ポイント)   Date: 2007/11/11(日) 18:31   No:11688     
Title: Re:実行結果がおかしい・・    
先ほど示したforの処理の順番は答えられますか?
他のトピでも質問されているので、今後の回答の基準にしたいと思いますのでよければお答え下さい。


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +