C言語何でも質問掲示板


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

 
   scanf,配列につい ....   
     ・[35350] Mist 
     ・[35351] non 
     ・[35361] dic 
   起動中に起動させる方 ....   
     ・[35200] GPGA 
     ・[35202] ねこ 
     ・[35346] niconico 
     ・[35353] GPGA 
     ・[35354] GPGA 
     ・[35355] niconico 
   無題   
     ・[35203] ねこ 
     ・[35352] 初心者 
   CSVファイル読み込みの ....   
     ・[35300] ねこ 
     ・[35323] yskey 
     ・[35324] yskey 
     ・[35327] ねこ 
     ・[35349] yskey 
   ゲームの画像について   
     ・[35343] BEMANI 
     ・[35344] cman 
   初心者です   
     ・[35329] ねこ 
     ・[35334] レル 
   無題   
     ・[35294] ユーリ 
     ・[35295] ユーリ 
     ・[35301] ねこ 
     ・[35305] やっくん 
     ・[35306] やっくん 
     ・[35310] 夢夢 
     ・[35317] non 
     ・[35319] やっくん 
     ・[35320] non 
     ・[35321] やっくん 
     ・[35325] ユーリ 
   横スクロールアクショ ....   
     ・[35260] Justy 
     ・[35304] ken 
   無題   
     ・[35259] やっくん 
     ・[35261] ランド 
     ・[35266] pooka 
     ・[35287] ユーリ 
     ・[35288] やそ 
     ・[35289] ユーリ 
     ・[35290] non 
   Dxlibで画面サイズの取 ....   
     ・[35284] BEMANI 
     ・[35286] usami 
   スコア関係について   
     ・[35282] BEMANI 
   スクロールの考え方   
     ・[35017] ねこ 
     ・[35022] Kou 
     ・[35046] Justy 
     ・[35051] やっくん 
     ・[35063] やっくん 
     ・[35064] ねこ 
     ・[35069] Justy 
     ・[35132] やっくん 
     ・[35170] やっくん 
     ・[35173] ねこ 
     ・[35176] Justy 
     ・[35177] やっくん 
     ・[35180] ねこ 
     ・[35184] やっくん 
     ・[35269] やっくん 
     ・[35273] Justy 
     ・[35274] やっくん 
     ・[35275] Justy 
     ・[35276] やっくん 
   Lua と アドベンチャ ....   
     ・[35142] 御津凪 
     ・[35264] りーくん 
     ・[35267] 御津凪 
     ・[35268] りーくん 
   ポインタを用いたプロ ....   
     ・[35209] non 
     ・[35265] Justy 
   構造体へのポインタに ....   
     ・[35227] たくや 
     ・[35231] non 
     ・[35235] たくや 
     ・[35253] non 
   ゲームの処理が遅くな ....   
   ゲームプログラマーに ....   
     ・[35205] ねこ 
     ・[35206] 御津凪 
     ・[35213] やっくん 
     ・[35228] たいちう 
     ・[35230] ねこ 
     ・[35239] やっくん 
     ・[35243] たいちう 
     ・[35247] やっくん 
   無題   
     ・[35165] ねこ 
     ・[35218] Be helped 
     ・[35225] Dixq (管理人) 
   文章読み込みの良いや ....   
     ・[35194] やっくん 
     ・[35196] 御津凪 
     ・[35198] やっくん 
     ・[35199] 御津凪 
     ・[35204] やっくん 
     ・[35220] yskey 
     ・[35224] Dixq (管理人) 
   ポインタと配列につい ....   
     ・[35212] 御津凪 
     ・[35215] toyo 
     ・[35217] box 
     ・[35221] やそ 
     ・[35223] たくや 
   文字コードについて   
     ・[35216] YuO 
     ・[35219] bitter_orange 
   マップデータを3次元 ....   
     ・[35175] たいちう 
     ・[35178] box 
     ・[35210] やそ 
   ビルドでエラー(初心者 ....   
     ・[35207] 御津凪 
   再帰関数のオーバーフ ....   
     ・[35181] 御津凪 
     ・[35183] ねこ 
     ・[35185] ねこ 
     ・[35186] tieria 
     ・[35187] tieria 
     ・[35188] tieria 
     ・[35189] box 
     ・[35190] tieria 
     ・[35191] たかぎ 
     ・[35193] tieria 
   コンパイル時の定数項 ....   
     ・[35160] b 
     ・[35162] 御津凪 
     ・[35164] 御津凪 
     ・[35167] ねこ 
     ・[35168] チルチル 
     ・[35182] たかぎ 
   逆ポーランドについて   
     ・[35172] non 
   デバッグをお願いした ....   
     ・[35112] ねこ 
     ・[35113] box 
     ・[35169] ... 
     ・[35171] ... 
   配列とポインタについ ....   
     ・[35129] Mist 
     ・[35134] たくや 
     ・[35136] 御津凪 
     ・[35137] たくや 
     ・[35139] 御津凪 
     ・[35141] たくや 
     ・[35143] 御津凪 
     ・[35144] non 
     ・[35145] たくや 
     ・[35146] たくや 
     ・[35147] non 
     ・[35148] toyo 
     ・[35149] ねこ 
     ・[35150] たくや 
     ・[35151] Mist 
     ・[35153] non 
     ・[35154] たくや 
     ・[35155] たくや 
     ・[35156] たくや 
     ・[35157] non 
   doubly linked listの ....   
     ・[35138] 御津凪 
     ・[35152] toshi 
   龍神録の2章で困って ....   
     ・[35122] pooka 
     ・[35125] ミトリ 
     ・[35126] ねこ 
     ・[35127] ミトリ 
     ・[35130] pooka 
     ・[35131] ねこ 
     ・[35133] ミトリ 
   (double)や(int)   
     ・[35124] 初級者 
   2Dアクションシューテ ....   
     ・[35095] ねこ 
     ・[35107] 256bit 
   また少し改良して   
     ・[33293] BEMANI 
     ・[33294] ひよこ 
     ・[33295] めいらる 
     ・[33299] バグ 
     ・[33312] ひよこ 
     ・[33445] Tatu 
     ・[33446] Tatu 
     ・[33460] BEMANI 
     ・[33491] ひよこ 
     ・[33501] すずめ 
     ・[33502] ひよこ 
     ・[33506] すずめ 
     ・[33531] チルチル 
     ・[33534] ひよこ 
     ・[33537] situmon 
     ・[33538] situmon 
     ・[33539] ひよこ 
     ・[33540] situmon 
     ・[33542] チルチル 
     ・[33550] ひよこ 
     ・[33568] situmon 
     ・[33575] ひよこ 
     ・[33592] situmon 
     ・[33596] ひよこ 
     ・[33598] situmon 
     ・[33600] ひよこ 
     ・[33601] situmon 
     ・[33604] ひよこ 
     ・[33606] チルチル 
     ・[33607] ひ 
     ・[33608] ひよこ 
     ・[33616] situmon 
     ・[33620] ひよこ 
     ・[33626] situmon 
     ・[33641] ひよこ 
     ・[33699] situmon 
     ・[33909] ひよこ 
     ・[33949] チルチル 
     ・[33969] ひよこ 
     ・[33974] Tatu 
     ・[33975] ひよこ 
     ・[33978] BEMANI 
     ・[33981] situmon 
     ・[33982] ひよこ 
     ・[33983] チルチル 
     ・[34032] situmon 
     ・[34052] ひよこ 
     ・[34113] チルチル 
     ・[34138] ひよこ 
     ・[34212] ひよこ 
     ・[34353] ひよこ 
     ・[34355] チルチル 
     ・[34357] ひよこ 
     ・[34360] Justy 
     ・[34388] ひよこ 
     ・[34462] チルチル 
     ・[34463] ひよこ 
     ・[34505] ひよこ 
     ・[34571] チルチル 
     ・[34728] ひよこ 
     ・[34737] チルチル 
     ・[34738] ひよこ 
     ・[34740] チルチル 
     ・[34757] ひよこ 
     ・[34762] チルチル 
     ・[34783] ねこ 
     ・[34786] テヌー 
     ・[34788] ひよこ 
     ・[34797] チルチル 
     ・[34802] ひよこ 
     ・[34812] yu 
     ・[34834] ひよこ 
     ・[34840] テヌー 
     ・[34846] ひよこ 
     ・[35099] テヌー 
     ・[35104] ひよこ 
   画像の有無を調べる?   
     ・[35023] pooka 
     ・[35026] チルチル 
     ・[35034] チルチル 
     ・[35036] ねこ 
     ・[35037] Justy 
     ・[35038] tkmakwins15 
     ・[35041] チルチル 
     ・[35042] tkmakwins15 
     ・[35044] チルチル 
     ・[35048] チルチル 
     ・[35050] ねこ 
     ・[35054] チルチル 
     ・[35055] tkmakwins15 
     ・[35057] チルチル 
     ・[35067] ねこ 
     ・[35068] チルチル 
     ・[35085] yu 
     ・[35087] Justy 
     ・[35094] yu 
     ・[35101] チルチル 
   Javaでのfor文   
     ・[35093] ねこ 
     ・[35097] nn 
     ・[35098] sizuma 
     ・[35100] sizuma 
   long型とか・・・   
     ・[34936] 御津凪 
     ・[34939] Mist 
     ・[34948] たかぎ 
     ・[34961] nn 
     ・[34964] ねこ 
     ・[34969] sizuma 
     ・[34972] たかぎ 
     ・[34998] toyo 
     ・[35096] nn 
   Process Message   
     ・[35043] conio 
     ・[35053] hume 
     ・[35084] YES 
   はじめの一歩   
     ・[35029] hume 
     ・[35070] Justy 
     ・[35077] hume 
     ・[35080] Justy 
     ・[35083] hume 
   無題   
     ・[35033] たいちう 
     ・[35035] tieria 
     ・[35047] たいちう 
     ・[35076] tieria 
   VC2005プロジェクトの ....   
     ・[35012] tkmakwins15 
     ・[35049] Justy 
     ・[35056] tkmakwins15 
     ・[35062] Justy 
     ・[35074] tkmakwins15 
   「東方靈異伝」のよう ....   
     ・[34966] こめかみ 
     ・[34970] こめかみ 
     ・[34986] kazuoni 
     ・[34988] Dixq (管理人) 
     ・[34989] yu 
     ・[34991] Tatu 
     ・[35010] やっくん 
     ・[35018] ひよこ 
     ・[35045] Tatu 
     ・[35071] Mato 
   敵を動かす   
     ・[34784] ねこ 
     ・[35066] クロウ 
   更新不要になる   
     ・[35060] MNS 
     ・[35065] だんご 
   格ゲー   
     ・[35061] yu 

Name: apple  ..ぴよぴよ(176ポイント)   Date: 2009/06/18(木) 17:00   No:35347       
Title: scanf,配列について質問です    



scanfで文字と数字を読み取って数字部分を計算して変更する
というプログラムを作りたいのですがうまくいきません。
読み取りは
char kan[50];
scanf("%s",&kan);
と書いています。

たとえば
x2jjj
と入力したら
x3jjj
と出力するようにしたく

今は計算を
kan[1] = kan[1] + 1;
と書いていますが実行してもx2jjjなどと入力すると例外となって止まってしまいます。

どうすれば数字と文字を読み取って数字部分を計算して出力することができるでしょうか?





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


Name: Mist  ..熟練のプログラマー(65,190ポイント)   Date: 2009/06/18(木) 17:57   No:35350     
Title: Re:scanf,配列について質問です    
配列に格納する場合は&いらないです。

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

Name: non  ..熟練のプログラマー(48,335ポイント)   Date: 2009/06/18(木) 18:05   No:35351     
Title: Re:scanf,配列について質問です    
例えば、
x23jjjの場合は
x34jjjでしょうか?それともx24jjjでしょうか?
符号はどうなりますか?




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

Name: dic  ..上級者(24,165ポイント)   Date: 2009/06/18(木) 21:33   No:35361     
Title: Re:scanf,配列について質問です    
仕様を決めてしまってから
決まった文字順に処理するのが考えられますし、
将来的にはポーランド記法というもので調べものをすれば参考になるかと思います


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



Name: niconico  ..入門者(2,714ポイント)   Date: 2009/06/16(火) 00:29   No:35197       
Title: 起動中に起動させる方法    
シューティングを作っているのですが、一面から二面に移行、二面から三面に移行、……
さらに、イージー、ノーマル、ハードとか、すべて繋げてしまうとあまりに文章が長くなってしまう(できないことはないんですが……)ので、プログラム中にプログラムを差し替えることができないかということなんですが……
たとえば、プログラムAがタイトルだとしたら、
ハードでプログラムB
ノーマルでプログラムC
イージーでプログラムD
という風に起動させていくことはできないでしょうか?


調べるにしてもどのように調べればいいのかもわからなくて……

ありえないことを聞いていると思いますし、言葉で伝えるのは難しいのでもしかしたら足りてない部分もあるかもしれないですのですが、よろしくお願いします


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


Name: GPGA  ..熟練のプログラマー(63,712ポイント)   Date: 2009/06/16(火) 00:48   No:35200     
Title: Re:起動中に起動させる方法    
できますけど、結構面倒ですよ。
境内電話やDSなど、メモリがあまりないハードでないと、今時ではやらないと思います。

環境がわかりませんが、Windows系なら「DLLファイル」、UNIX系なら「ELFファイル」で
検索してください。



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

Name: ねこ  ..初心者(6,215ポイント)   Date: 2009/06/16(火) 01:45   No:35202     
Title: Re:起動中に起動させる方法    
ん〜なんだか1ファイルにずっと書いてて、ファイル分割するのがやりたいことなんじゃない?って思ったのですが
ほぼ同じ内容のDLLをリンクするならファイル増やして管理すればいいだけでは?と思うんです。

例えば
Stage1e.cpp
Stage1n.cpp
Stage1h.cpp
Stage2e.cpp
Stage2n.cpp
Stage2h.cpp
・・・

というようにファイル分割する方法じゃダメなんでしょうか?


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

Name: niconico  ..入門者(2,725ポイント)   Date: 2009/06/18(木) 16:01   No:35346     
Title: Re:起動中に起動させる方法    
返信ありがとうございます

DLLファイルで検索をかけて調べてみたのですが、どうもプログラムを共有しているAとBを同時に実行することのできることであって、Aを実行することによって、その結果Bが実行されるorCが実行されるのではないように思えたのですが、これであってますか?

あと、やっぱゲームなので、そういうことしたらゲーム画面って変わってしまいますよね....?

ねこさんの方法に似たようないまちょうどやっているいますね
とりあえず、
hard.cpp
normal.cpp
easy.cpp
で中身をcase文を使って面ごとにわけるつもりです
一面ごとに分けてたら、それだけでもファイルの数が多くなってしまうので


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

Name: GPGA  ..熟練のプログラマー(63,249ポイント)   Date: 2009/06/18(木) 18:20   No:35353     
Title: Re:起動中に起動させる方法    
>DLLファイルで検索をかけて調べてみたのですが、どうもプログラムを共有しているAとBを同時に
>実行することのできることであって、Aを実行することによって、その結果Bが実行されるorCが
>実行されるのではないように思えたのですが、これであってますか?
ある意味間違っていませんが、それだとexeファイルを2つ用意しているような感覚ですね。

私が言いたいのは、画像と同じ扱いをプログラムでも行うということです。
例えば、タイトルに入ったらタイトルで必要な画像を読み込み、タイトルからゲームへ遷移したら
タイトルで使用していた画像を解放して、ゲームの画像を読み込みますよね。

同じように、タイトルに入ったらタイトルで使用するプログラムを読み込んで実行し
ゲームへ遷移したら、タイトルのプログラムを解放してゲームのプログラムを読み込み、実行するということです。

この読み込むプログラムと言うのがDLLファイルに該当します。

DLLファイルを使用して状態遷移を行うサンプルプロジェクトを添付しました。
プロジェクトの構造を見てもらえば、言わんとしていることがなんとなくわかると思います。
また、普通のファイル分割よりも面倒であることもわかると思います。

そのかわり、DLLを使用したプロジェクトは、プログラムの余計なメモリは食いませんし
DLL内のプログラムで変更があった場合、DLLのプロジェクトのみをリビルドすれば
そのほかのプログラムは一切いじる必要がありません。


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

Name: GPGA  ..熟練のプログラマー(63,284ポイント)   Date: 2009/06/18(木) 18:33   No:35354     
Title: Re:起動中に起動させる方法    
開発環境を忘れました

OS:Windows XP Professional SP3
コンパイラ:Visual Studio 2008 Standerd Edition SP1




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

Name: niconico  ..入門者(2,945ポイント)   Date: 2009/06/18(木) 19:28   No:35355 解決!     
Title: Re:起動中に起動させる方法    
サンプルプログラムをわざわざ作ってくれるとは・・・・・・
本当にありがとうございます

実行してみましたが、こういうことなのだな、と理解できました
これからこれを解析していきたいなんとかしていきたいと思います
GPGAさんありがとうございました


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



Name: 初心者  ..プログラマー(34,198ポイント)   Date: 2009/06/16(火) 00:22   No:35195       
Title: 無題    
このサイトで紹介されている
VisualC++2008というコンパイラは無料ですか?


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


Name: ねこ  ..初心者(6,244ポイント)   Date: 2009/06/16(火) 01:47   No:35203     
Title: Re:無題    
いくつかバージョンがありますが、ExpressEditionというのなら無料です。

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

Name: 初心者  ..プログラマー(34,211ポイント)   Date: 2009/06/18(木) 18:09   No:35352 解決!     
Title: Re:無題    
ありがとうございました

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



Name: yskey  ..ぴよぴよ(978ポイント)   Date: 2009/06/17(水) 18:05   No:35298       
Title: CSVファイル読み込みの方法    
yskeyですどうもお世話になっています。m(_ _)m
先日、文章読み込みのことで質問させてもらいましたが、今度はcsvファイル読み込みのところで詰まってしまいました。
まだまだ、勉強不足です(;´Д`)
なるべく自己解決が望ましいので、CやC++の良い参考書があれば是非紹介してもらえないでしょうか。
(と言ってもあまり高いのは買えませんが)
開発環境はVC++でDxLib、OSはWinXpです。

今、龍神録第11章にあるエクセル読み込みを参考にしてcsvの文章を読み込もうとしています。
ソースコードは

char String[][512];

void load_story(int gyou){ //gyouに入れた数字のところの行を読み込む
int n,num,i,fp;
char fname[32]={"dat/sent/sent.csv"};
int input[512];
char inputc[512];

fp = FileRead_open(fname);//ファイル読み込み
if(fp == NULL){
MB("read error\n");
return;
}
for(i=0;i<gyou-1;i++)//gyou=読み込む行番号
while(FileRead_getc(fp)!='\n');

n=0 , num=0;
while(1){
for(i=0;i<512;i++){
inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
if(inputc[i]=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input[i]=='\n' || input[i]==EOF){//カンマか改行なら
inputc[i]='\0';//そこまでを文字列とし
goto EXFILE;
}
}
}
strcpy(String,inputc);
EXFILE:
FileRead_close(fp);
}

これで実行すると

error C2664: 'strcpy' : 1 番目の引数を 'char [][512]' から 'char *' に変換できません。(新しい 機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

となります。なにがだめなのか今の知識ではさっぱりです・・・


グローバル関数Stringには、たとえば

String[][512]={
  "文章",
  "文章",
  "文章",
};

のような形で文章をコピーしたいので(字下げとか改行とかの意味でなく)
CSVの中身は

"文章","文章","文章"

のような形でできています。
これらの上記のプログラムでコピー出来るのでしょうか?
また、inputc[512]を512個の配列として宣言しているとString[][512]の二次元配列には入らないような気がするんでうが。
もしかしてそれが原因なのでしょうか・・・

String[][512]に何とかcsvをコピーする方法はないでしょうか?


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


Name: ねこ  ..初心者(6,527ポイント)   Date: 2009/06/17(水) 18:32   No:35300     
Title: Re:CSVファイル読み込みの方法    
ん〜とりあえず詳細処理は置いといて・・・
strcpyの第一引数はchar*が正確ですのでString[0]とかになりますね。
それでひとまずエラーは消えるはずです。


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

Name: yskey  ..ぴよぴよ(989ポイント)   Date: 2009/06/17(水) 23:19   No:35323     
Title: Re:CSVファイル読み込みの方法    
char* とはどんな意味でしょうか?

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

Name: yskey  ..かけだし(1,008ポイント)   Date: 2009/06/17(水) 23:20   No:35324     
Title: Re:CSVファイル読み込みの方法    
と言うか、字下げされてませんね(;´Д`)
すいません。


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

Name: ねこ  ..初心者(7,216ポイント)   Date: 2009/06/18(木) 00:16   No:35327     
Title: Re:CSVファイル読み込みの方法    
文字列ポインタです。分からなかったら検索なりで色々出てくるはずです。

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

Name: yskey  ..かけだし(1,035ポイント)   Date: 2009/06/18(木) 17:53   No:35349 解決!     
Title: Re:CSVファイル読み込みの方法    
すいません、しばらくがんばってみます。
ご回答ありがとうございますm(_ _)m


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



Name: cman  ..ぴよぴよ(172ポイント)   Date: 2009/06/18(木) 14:12   No:35342       
Title: ゲームの画像について    
初めまして
いきなりですが
ゲームのキャラの画像って皆さん何で作られていますか?
アクションゲームを作ろうと思っているのですが(キングダムハーツのような)
ドット絵でやってるのですが根気がいる作業なのでどうしても途中で失敗します。
使っているソフトはEDGEなんですけども;
三頭身や二頭身のキャラがもっと書きやすいものがあれば教えていただけるとありがたいです。


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


Name: BEMANI  ..プログラマー(34,712ポイント)   Date: 2009/06/18(木) 14:32   No:35343     
Title: Re:ゲームの画像について    
>>cmanさん
作りたいモデルは2Dでいいのでしょうか・・・。
一応2Dだとして、このサイトでよく見かける名前のフリーソフトに「GIMP」「Pixia」と言うものがあります。
GIMPの機能的にはPhotoShopに近いそうです。
Pixiaは何に近いかよく解りません・・・
ドットならEDGEでいいと思います。

有料なら5000円くらいのSAIがお勧めです。
機能的にはぺインターに近い感じです。

自分はドットだろうと何だろうとPhotoShop7.0で描いてます。


>三頭身や二頭身のキャラがもっと書きやすいものがあれば教えていただけるとありがたいです。
描きやすいか描きにくいかは実際に使ってみないと何とも言えない所があります。
ですが、レイヤー機能の付いているソフトは絶対使いやすいと思います。

お金を払ったソフトだからいいという訳ではありませんので、フリーで済むならフリーでいいと思います。
ただ、有料のソフトには便利な機能が沢山付いていますので(沢山付き過ぎて重たいソフトもありますが)
お金を出す価値が全くない訳ではありません。


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

Name: cman  ..ぴよぴよ(176ポイント)   Date: 2009/06/18(木) 14:46   No:35344 解決!     
Title: Re:ゲームの画像について    
ありがとうございます。
レイヤーを使って書いてみます。


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



Name: レル  ..ぴよぴよ(172ポイント)   Date: 2009/06/18(木) 00:03   No:35326       
Title: 初心者です    
自分は初心者で今、龍神録プログラミングの館のものを一括DLして勉強させてもらってます

その一括DLしたやつをc++のを使って進めています

どうしたら、c++の無しで作った物を起動できますか?

デバックフォルダのEXEやら開いてみましたが駄目でした

アプリケーションのを開いてもread errorと出ておしまいです

どうしたら良いのか教えてください

初心者ですので状況がうまく説明できてないと思いますがよろしくお願いいします


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


Name: ねこ  ..初心者(7,259ポイント)   Date: 2009/06/18(木) 00:22   No:35329     
Title: Re:初心者です    
生成したexeファイルをソリューションファイル(拡張子がslnのファイル)と同じ場所に移動して実行したらきっと動きます。

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

Name: レル  ..ぴよぴよ(199ポイント)   Date: 2009/06/18(木) 08:43   No:35334     
Title: Re:初心者です    
ねこsありがとうございます

訂正でexe自体が開けないんですがどうすればいいでしょうか?


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



Name: ユーリ  ..かけだし(1,303ポイント)   Date: 2009/06/17(水) 10:40   No:35291       
Title: 無題    
学校の課題です。
0〜99の整数を10個入力する。
0〜9、10〜19・・・90〜99がそれぞれ何回ずつ入力されたかを数値とヒストグラムで表示する
プログラムを作成しなさい。
カウント数は配列に格納しなさい。
という問題なのですが
ヒントをくれませんか
まったくちんぷんかんぷんです


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


Name: ユーリ  ..かけだし(1,483ポイント)   Date: 2009/06/17(水) 11:22   No:35294     
Title: Re:無題    
 #include <stdio.h>
 main()
  {

int data[10];
int a,b,i,h;

for(i=0;i<10;i++){
printf("値を入力してください",i+1);

scanf("%d",a);

if(a==0||a<=99){
printf("もう一回入力しようよ");
}

}

ここまで作ってみたのですがこの後どのようにしたらいいですかね?


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

Name: ユーリ  ..かけだし(1,959ポイント)   Date: 2009/06/17(水) 11:55   No:35295     
Title: Re:無題    
  #include <stdio.h>
  main()
  {

int data[10];
int a,b,i,h,j;

for(i=0;i<=10;i++){
printf("値を入力してください",i+1);

scanf("%d",a);

if(a==0||a<=99){
printf("もう一回入力しようよ");
}

}
for(h=0;h<=10;h++){
b=a%10;
  for(j=1;j<=10;j++){
printf("*",b);


switch(h)
{
  case 0:
  printf("*",b);
  break;

  case 1:
  printf("*",b);
  break;

  case 2:
  printf("*",b);
  break;

  case 3:
  printf("*",b);
  break;

  case 4:
  printf("*",b);
  break;

  case 5:
  printf("*",b);
  break;

  case 6:
  printf("*",b);
  break;

  case 7:
  printf("*",b);
  break;

  case 8:
  printf("*",b);
  break;

  case 9:
  printf("*",b);
  break;
  }
   }
 }
  return 0;
 }
作ってみたのですがうまくいきませんなぜでしょう


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

Name: ねこ  ..初心者(6,653ポイント)   Date: 2009/06/17(水) 18:40   No:35301     
Title: Re:無題    
読みずらいのでPreタグ使って下さいorz

printfの使い方が根本的に間違ってます。教科書を引き直して下さい・・・。

1.10回ループして10個の数字を「取得」する
2.取得した0〜9,10〜19のどの範囲になるか「判定」してその範囲の数字の個数を1「加算」する。
3.範囲の個数に対応した*なり☆なりを表示する。

こんな大分類で少しずつ考えてみてください。


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

Name: やっくん  ..中級者(9,796ポイント)   Date: 2009/06/17(水) 18:52   No:35305     
Title: Re:無題    
昨日も言いましたが、きちんとインデントをしてソースを<Pre> </Pre>で囲んで投稿しなきゃ見にくいですよ。

ユーリさんのソースで細かな点の指摘をさせてもらいます。

・scanfで入力した数値を入れたい変数には&を付けてください。

・if(a==0||a<=99)とありますが、これだと「aが0」または「aが99以下」の時となります。

・b=a%10ここは何をしたいのかわかりませんが、
 「aを10で割った余りをbに入れる」って操作になっているのでこの課題では関係ないかと思います。

・一番大きなミスなのは、printf("*",b)のように書いてる部分ですね。
多分、ユーリさんは「*をb回表示させる。」といった意味で使ったのでしょうが、
 printfで変数を扱う場合は

printf("%d",b);

のように変数がint型なら%dを書かなければなりません。この%dと書いたところにbの値が入ります。
 ただ、bの値が入るだけなので仮にb=3とすると,

printf("%d×*", b);

 のように記述しても、「3×*」と出力されるだけです。
 %dのようなものを書式指定子といってC言語では重要なので復習してみてはどうでしょうか?


ちなみに以下が課題の答え?になると思います。


#include <stdio.h>

int main(void) {

int data[10]; //入力保存用(0-99)

//0-9,10-19,・・・,90-99のカウント用(カウンターなので初期値0)
int counter[10] = {0,0,0,0,0,0,0,0,0,0};

int i = 0,j;//ループで使う。

printf("値を入力してください\n"); //入力を促す

do{
printf("%d:", i + 1);
scanf("%d",&data[i]);

if(data[i] < 0 || data[i] > 99){
printf("0-99までの値を入れてください\n");
continue; //もし入力値が0-99に含まれて居ないなら、while(i<10)に飛ぶ。
}
i++;
} while(i < 10);

for(i = 0; i < 10; i++){
if(data[i] >= 0 && data[i] <= 9) counter[0]++; //data[i]が 0- 9なら+1
else if(data[i] >= 10 && data[i] <= 19) counter[1]++; //data[i]が10-19なら+1
else if(data[i] >= 20 && data[i] <= 29) counter[2]++; //data[i]が20-29なら+1
else if(data[i] >= 30 && data[i] <= 39) counter[3]++; //data[i]が30-39なら+1
else if(data[i] >= 40 && data[i] <= 49) counter[4]++; //data[i]が40-49なら+1
else if(data[i] >= 50 && data[i] <= 59) counter[5]++; //data[i]が50-59なら+1
else if(data[i] >= 60 && data[i] <= 69) counter[6]++; //data[i]が60-69なら+1
else if(data[i] >= 70 && data[i] <= 79) counter[7]++; //data[i]が70-79なら+1
else if(data[i] >= 80 && data[i] <= 89) counter[8]++; //data[i]が80-89なら+1
else if(data[i] >= 90 && data[i] <= 99) counter[9]++; //data[i]が90-99なら+1
}

//0-9 → 10-19 → ・・・ → 90-99の順に*の数を表示
for(i = 0;i < 10; i++){
printf("%2d - %2d:", i * 10, (i+1)*10-1);
for(j = 1; j <= counter[i];j++) printf("*");
printf("\n");
}
return 0;
}


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

Name: やっくん  ..中級者(9,833ポイント)   Date: 2009/06/17(水) 18:54   No:35306     
Title: Re:無題    
ごめんなさい、「ヒントを」って書いてるのに答え?を書いちゃいましたorz
たぶん自分のでも不十分かもしれないので参考程度にしてください。


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

Name: 夢夢  ..ぴよぴよ(385ポイント)   Date: 2009/06/17(水) 19:54   No:35310     
Title: Re:無題    
すんごい単純ですけど、参考になれば。
※数字以外を入れるとおかしくなります。

#include <stdio.h>
#include <windows.h>//Sleep関数のみ

int main(void)
{
int a=0;
int i=0;
int ii=0;
int data[10]={0};
while(i<10){
printf("0~99を入力しろ。 %d回目",i+1);
scanf("%d",&a);
if(a>=0&&a<=99){
//ちゃんと入力した
for(ii=0;ii<10;ii++){
if(a>=ii*10&&a<=ii*10+9){
i++;
data[ii]++;
break;
}
}
}
}

//結果表示
for(i=0;i<10;i++){
printf("%d~%d:%d回\t",i*10,i*10+9,data[i]);
for(ii=0;ii<10;ii++){
if(data[i]>ii) printf("☆");
}
printf("\n");
}

Sleep(10000);

return 0;
}


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

Name: non  ..熟練のプログラマー(48,280ポイント)   Date: 2009/06/17(水) 21:26   No:35317     
Title: Re:無題    
やっくんさんにしても夢夢さんにしても、カウントするのになんでそんな面倒なことしてるのかなぁ?
data[a/10]++;
でいいんじゃないの?もしかして、わざと?

それにしても、みんなやさしいねぇ。


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

Name: やっくん  ..中級者(9,921ポイント)   Date: 2009/06/17(水) 21:48   No:35319     
Title: Re:無題    
わざとじゃなく自分はまだあまり多く経験つんでないので回りくどい処理書いたりしますね。
カウントを一つ一つばらしてるのはわかり易くするためですが。
お恥ずかしい(^^;


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

Name: non  ..熟練のプログラマー(48,289ポイント)   Date: 2009/06/17(水) 21:56   No:35320     
Title: Re:無題    
やっくんさんへ
それは、失礼しました。

それなら、アドバイス
>int counter[10] = {0,0,0,0,0,0,0,0,0,0};
0で初期化する場合は
int counter[10]={0};
でOKです。



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

Name: やっくん  ..中級者(9,962ポイント)   Date: 2009/06/17(水) 22:00   No:35321     
Title: Re:無題    
>nonさん
そうすると、手間が省ける&ミスが少なくなりますね。
ありがとうございます(^^)


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

Name: ユーリ  ..かけだし(2,010ポイント)   Date: 2009/06/17(水) 23:43   No:35325 解決!     
Title: Re:無題    
みなさんありがとうございます。
大変勉強になります。
それと投稿の際は気をつけます。
みなさん本当にありがとうございました。


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



Name: ken  ..入門者(3,095ポイント)   Date: 2009/06/16(火) 22:50   No:35254       
Title: 横スクロールアクションゲームにおける動く足場や敵キャラクタの出現について    
横スクロールアクションゲームにある「動く足場」(六つの金貨のラストステージにあるような一定の距離間を左右に動く物…わかりにくかったら申し訳ありません)や敵キャラクタの実装の仕方について悩んでいます。

// マップを描く
for( i = offsetY / 32 ; i < (offsetY+480 + 32)/32 ; i ++ ) //スクロール時の描画をスムーズにするために画面外のマスも一個分描画(+32)
{
for( j = offsetX / 32; j < (offsetX + 640 + 32)/32 ; j ++ ) //スクロール時の描画をスムーズにするために画面外のマスも一個分描画(+32)
{
if( MapData[ i ][ j ] == 1 ) //1のとき通常足場ブロック描画
{
DrawGraph( j * MAP_SIZE - offsetX , i * MAP_SIZE - offsetY , imageMap , FALSE ) ;
}
if( MapData[ i ][ j ] == 2 ) //2のとき即死トゲ
{
DrawGraph( j * MAP_SIZE - offsetX , i * MAP_SIZE - offsetY , imageMap2 , TRUE ) ;
}
if( MapData[ i ][ j ] == 3 ) //3のとき動く足場
{
DrawGraph( j * MAP_SIZE - offsetX , i * MAP_SIZE - offsetY , imageMap3 , TRUE ) ;
}
}
}

上記のように、マップチップ読み込み時にそれぞれの要素に対し条件分けし、チップデータの要素が3の時にその場に動く足場を出現させようと思ったのですが、
そこからどうすればいいのか見当付きませんでした。

動く足場や敵キャラクタの出現方法に関し、御助言いただけるとうれしいです。

*現段階でのソースコードです。pass:test
http://down11.ddo.jp/uploader/download/1245159982/attach/actiontest.zip


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


Name: Justy  ..伝説なるハッカー(375,304ポイント)   Date: 2009/06/16(火) 23:30   No:35260     
Title: Re:横スクロールアクションゲームにおける動く足場や敵キャラクタの出現について    

>チップデータの要素が3の時にその場に動く足場を出現させようと思ったのですが、
>そこからどうすればいいのか見当付きませんでした

 静的なデータであるマップデータと動くオブジェクトであるギミックを今の方法で混在させるのは
なかなか大変です。
 ギミックはギミックとして分離して考えた方がいいでしょう。

 マップデータとは別に、そのステージのギミックを定義したデータを用意して
その定義に基づいてギミックを稼働させ、更新・表示を行うようにすればいいと思います。

(マップが大きくギミックの数もたくさんあるなら、各ギミックの起動・終了条件も
指定できるようにしておくといいでしょう)


 と、静的なマップとは別扱いなので、コリジョンチェックもマップとは別に行う必要があります。


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

Name: ken  ..入門者(3,164ポイント)   Date: 2009/06/17(水) 18:51   No:35304 解決!     
Title: Re:横スクロールアクションゲームにおける動く足場や敵キャラクタの出現について    
なるほど。。
マップデータ用の配列だけでなくギミック用の配列も作成したほうがいいのですね。
大変そうですが、光が見えてきました。

ありがとうございます。


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



Name: ユーリ  ..かけだし(1,128ポイント)   Date: 2009/06/16(火) 23:08   No:35258       
Title: 無題    
学校の課題なのですが、配列に格納された10個の整数の中から、最大値、最小値を表示するというプログラムです。
  #include <stdio.h>

   main(void)

  {

int d[10]={11,64,98,56,34,77,23,82,42,48};
int i,j,w;

for(i=0;i<9;i++){
for(j=9;j>=i+1;j--){

if(data[j]<data[j-1]){
w=data[i];
data[i]=data[j];
data[j]=w;
     }
    }
}
for(i=0;i<10;i++){
printf("data[%2d]=%5d\n",i,data[i]);
    }
  

    return 0;
   }
ここまで作ってみたのですが、どのように最少、最大を表示すればいいですかね


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


Name: やっくん  ..初心者(8,259ポイント)   Date: 2009/06/16(火) 23:28   No:35259     
Title: Re:無題    
とりあえず、まず修正点です(打ち間違えかもしれませんが。)
int d[10] → int data[10]

それと全角のスペースがところどころ混じっていますね。
ソースを投稿する際は
ソースを

<Pre>

#include <stdio.h>

main(void) {

</Pre>

と、<Pre>〜</Pre>で囲むと綺麗にインデントしますよ。<>←半角で。


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

Name: ランド  ..入門者(4,491ポイント)   Date: 2009/06/16(火) 23:35   No:35261     
Title: Re:無題    
昇順(小さい順)に並べようとしているのでしょうか?
だとすると、

if(data[j]<data[j-1]){
w=data[i];
data[i]=data[j];
data[j]=w;
}

にてj番目とj-1番目を比較しているのに、j番目とi番目を交換しているので不可解な結果が表示されます。
後は、並べ替えた結果、最小と最大の値が何番目に来ているかを考えればわかるはずです。


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

Name: pooka [URL]  ..初心者(5,601ポイント)   Date: 2009/06/16(火) 23:58   No:35266     
Title: Re:無題    
>w=data[i];
>data[i]=data[j];
>data[j]=w;
この処理がどういうものか理解していますか?
少なくとも今の課題では必要ないかと思います。

例えば最大値を考えると

int max;
max = data[0];
for(i=1;i<10;i++)
if(max < data[i])
max = data[i];
printf("max:%d\n",max);

こんな感じに、if文でmaxの値より大きいときmaxにその時の値を代入するようにしていき、
最後にmaxの値を表示するようにすればいいと思います。

やっくんさんの
><Pre>〜</Pre>で囲むと綺麗にインデントしますよ。<>←半角で。
に追加で、もとのプログラムがきちんとインデントされていないとプレタグで囲んだだけではきれいに表示されません。


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

Name: ユーリ  ..かけだし(1,169ポイント)   Date: 2009/06/17(水) 09:20   No:35287     
Title: Re:無題    
配列に格納された十個の中から最大と最小を出すには
どういった感じでやればいいのでしょう
ヒントをお願いします


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

Name: やそ  ..比類無きプログラマー(90,862ポイント)   Date: 2009/06/17(水) 09:25   No:35288     
Title: Re:無題    
用意された配列の並びを変更してよいなら、
ソート(小さい順などに)して両端の数が最少、最大になっているはずなので
それを表示すれば良いと思います。
変えてはいけないのなら、作業用に同じ大きさの配列でも用意しておけば可能ですかね。


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

Name: ユーリ  ..かけだし(1,186ポイント)   Date: 2009/06/17(水) 10:20   No:35289 解決!     
Title: Re:無題    
ありがとうございました
解決しました


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

Name: non  ..熟練のプログラマー(48,186ポイント)   Date: 2009/06/17(水) 10:29   No:35290     
Title: Re:無題    
課題を出した先生の立場から考えると、これは、ソートの課題なのでしょうか?
ユーリさんは、このソートで解く方法を自分で考えたのでしょうか?
第3者の立場で見ますと、自分で考えたとは思えません。なぜならノーヒントで
ソートの方法を考えられるのであれば、このような質問はしません。

とすると、授業でソートについて習ったかどうかが重要だと思います。習いましたか?
しかし、課題の問題文だけを読むと、ソートをした後でというニュアンスがありません。
結論から言えば、先生はソートをせずに最大と最小を求めろという課題を出したのだと
思います。

やり方についてはpookaさんが答えを示されています。そのメッセージをスルーして
いるのはなぜでしょうか?





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



Name: usami  ..ぴよぴよ(437ポイント)   Date: 2009/06/17(水) 07:01   No:35283       
Title: Dxlibで画面サイズの取得    
画面サイズの習得方法、あるいはそれに類似する方法があれば教えてください。

たとえば、画像の中心座標を引数として受け取とり、画像を表示する
centerメソッドを考えたとします。
そのうえで、ゲーム開始時のキャラクターの表示場所を、
startメソッドで指定するとして、
このとき、画面サイズ/クライアント領域などを取得できないかと考えています。


#define CONSTSIZE 32

//画像の表示のための構造体
typedef struct _grect{
int x,y,cx,cy;
}grect_t;

//指定した座標を中心に画像を表示するメソッド。
void center(int x, int y, int hGraph){
grect_t grect;

grect.x=x-(CONSTSIZE/2);
grect.y=y-(CONSTSIZE/2);
grect.cx=x+CONSTSIZE;
grect.cy=y+CONSTSIZE;

DrawExtendGraph(grect.x, grect.y, grect.cx, grect.cy, hGraph, true);
}

//一番初めのキャラクター表示とかに利用するメソッド。
void start(){
int x, int y;

//
/*ここでクライアント領域、または画面サイズなどを取得する*/
//
RECT rect=???; //←ここをどうにかする方法があれば教えてください。
            //変数は適当なので、
//画面サイズの習得方法でもその他のやり方でもこだわりはありません。

x=(rext.right-CONSTSIZE)/2;
y=(rect.bottom-CONSTSIZE)/2;

center(x,y); //これで、画面の中央に画像が表示される?

}


何かいい方法があればぜひお願いします。


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


Name: BEMANI  ..プログラマー(34,355ポイント)   Date: 2009/06/17(水) 07:10   No:35284     
Title: Re:Dxlibで画面サイズの取得    
>>usamiさん
DxLibを使わないのでこれで行けるか解りませんが、検索するとこんなものが出てきました。
ttp://studiokingyo.fc2web.com/dxlib/kaibou/k_shiyou.html

このURLにある7番目の項目「7.Get XX 系関数は使えるかも!?」にサイズを取得するような関数がありました。


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

Name: usami  ..ぴよぴよ(771ポイント)   Date: 2009/06/17(水) 08:56   No:35286 解決!     
Title: Re:Dxlibで画面サイズの取得    
ありがとうございます。
解決いたしました。
何分初心者なので、あまりものを知らないので、
初歩的な質問をしてしまったようですが、

http://studiokingyo.fc2web.com/dxlib/kaibou/k_shiyou.html

教えていただいたURLの、1番初めの「1.Windowハンドルを得る」方法さえ分かれば、
あとは簡単だったみたいです。

RECT rect;
GetClientRect(GetMainWindowHandle(),&rect);

あとは、BEMANIさんのいわれるように、
7番目の項目「7.Get XX 系関数は使えるかも!?」の関数を利用するか、
rectのメンバを利用すれば
明示的に(300,240)のように、座標を指定しなくても、
キャラクターの配置が可能になるみたいですね。

お世話になりました。


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



Name: ワッチ  ..ぴよぴよ(92ポイント)   Date: 2009/06/17(水) 04:34   No:35279       
Title: スコア関係について    
50章を色々いじってるんですが
ハイスコアとスコア、プレイヤーの人数、グレイズ、
お金(パワーがフルパワーの時、パワーアップアイテムはお金のアイテムに変換される)の実装の仕方が
まったく分かりません。知ってる方いたら教えてください><


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


Name: BEMANI  ..プログラマー(34,264ポイント)   Date: 2009/06/17(水) 06:36   No:35282     
Title: Re:スコア関係について    
>>ワッチさん

>ハイスコア・スコア
敵を倒す・得点アイテムを取得する・・・など、Scoreとしと言う適当な変数を用意し、
得点が加算される場面でScoreを加算すればいいと思います。

ハイスコアは、HiScoreというこれも適当な変数を用意し、
Score と HiScore を比較して、Scoreが大きければHiScoreを更新すればいいです。


>プレイヤーの人数
敵の弾に当たるなどして自機がやられてしまった場合に Playerという変数を用意しておき
それを一つ減算すれば自機が減る処理を作れます。
自機が0以下になればゲームオーバーという処理も併せて作れば大丈夫と思われます。


>グレイズ
自機の当たり判定とは別にグレイズ用の当たり判定とGrazeという変数を用意しておき、
グレイズ当たり判定内であれば、Grazeを加算すればいいです。
自機と敵弾の当たり判定処理と一緒なのでちょこっと改変するだけです。


>お金
龍神録さんはフルパワーが5.0・・・でしたっけ。
Powerという現在のパワーを表す変数を用意し、5.0以上ならお金を出現させると言う風に実装すればいいと思います。


一応開発環境(コンパイラやOS・ライブラリなど)を明記しておいた方がいいと思います。


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



Name: やっくん  ..入門者(3,935ポイント)   Date: 2009/06/13(土) 15:44   No:35013       
Title: スクロールの考え方    
DXライブラリを用いRPG製作をております。
現在マップのスクロールについて悩んでいます。

ttp://www.play21.jp/board/formz.cgi?action=res&resno=11226&page=&lognum=35&id=dixq&rln=11335

上の過去ログを参考にしようと思ったのですが、

Justyさんの「カメラの概念」とあります。

「カメラの概念」がよくわからないのでこれについて質問させていただきます。

ここで例えなんですが、
当たり判定を考える次の変数を作ります。
(次が1であるとキャラが進めない)


int map01[4][6] = {{1,1,1,1,1,1},
{1,0,0,0,0,1},
{1,0,0,1,1,1},
{1,1,1,1,1,1},
}


画面に表示するマップは4×4までとします。

つまり、はじめはこんな状態。(◇がキャラが進める)
■■■■   //→表  ■■
■◇◇◇   //→示  ◇■
■◇◇■   //→な  ■■
■■■■   //→し  ■■

ここでキャラ(画像)自体の座標をずっと右に動かそうとすると画面外に出てしまい、
表示されなくなってしまいます。

したがって「カメラの概念」とは、
キャラ(画像)を動かさず、
画面に表示するマップ自体(&当たり判定)を表示する際に値を増減してずらしていくっていうことでしょうか?


わかり辛い説明ですみません^^;


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


Name: ねこ  ..入門者(4,504ポイント)   Date: 2009/06/13(土) 18:02   No:35017     
Title: Re:スクロールの考え方    
キャラを動かす、というのはその都度勝手が変わるんですが
キャラの位置からカメラの位置を計算するという感じですね。

昔のドラクエなんかだとキャラの位置はウィンドウの中心に居るでしょう?
キャラの位置が決まればそこから
キャラのX−2〜キャラのX+2
キャラのY−2〜キャラのY+2のような範囲のマップ情報を描画すれば画面がどんどんスクロールしていきます。
マップ内でのキャラの位置(X,Y)は変わっても表示するのは真ん中、って感じです。

分かりずらい解説ですいませんorz


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

Name: Kou  ..入門者(4,540ポイント)   Date: 2009/06/13(土) 19:09   No:35022     
Title: Re:スクロールの考え方    
マップのスクロール自体は、表示するマップを実際の画面サイズより若干大きめに描画し、
画面に表示する位置をずらして行く事で出来るわけですが、キャラが常に中心に居るドラクエタイプと、
画面の一定以上端にキャラが来た場合にスクロールさせる場合があると思いますが、
ドラクエタイプなら、ねこさんが言われたみたいにキャラ位置は中心固定で、移動している方向に対して
マップをスクロール(マップのx、y座標の増減)で済みますが、トピ主さんのはおそらく後者ですよね?
その場合、キャラが画面内で移動できる座標範囲を決めて、その座標で更に移動キーが押されていれば、
キャラ位置はそのままで、マップのみをスクロールさせる事で出来ると思います。
おそらくキャラが消えるのは、移動可能範囲を設定していないためでしょう。

ただしこの方法の場合、移動可能範囲は画面ギリギリにするのではなく、2〜3キャラ分内側に設定しないと、
画面に表示されていない移動不可能な場所が表示されず、なぜ移動できないのかプレーヤーが分からない事が
あるので、気を付けてください。

キャラの移動自体出来るのであれば、マップスクロールはそれほど難しい処理ではないので、後は組み合わせるだけです。

長文失礼しました。頑張ってください。


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

Name: Justy  ..伝説なるハッカー(373,481ポイント)   Date: 2009/06/14(日) 00:40   No:35046     
Title: Re:スクロールの考え方    

>キャラ(画像)を動かさず、
>画面に表示するマップ自体(&当たり判定)を表示する際に値を増減してずらしていくっていうことでしょうか?

 キャラが動かなくて済むかどうかは別として、マップの表示の際に位置をずらすという点においては
結果的にはそういうことになります。


 あのスレで言っているカメラの概念は、現実世界のカメラと同じ考え方です。

 走ってる車の横を同スピードで併走してカメラを向ければ、そのカメラの映像は
背景は流れていても車は止まっています。

 でも実際には背景は動かないけど車は動いているわけで、カメラが車と一緒になって
動くことで動かないはずの背景が動き、動いているはずの車が止まって見えるわけです。

 これと同じことを背景はマップに車はキャラクタに置き換えてコード上で実現したのが
添付したソースだったのですが。
 まぁ、もう消えてますね(必要なら探して再アップしますが)。

 この原理を使えば、表示の時だけ一工夫必要なだけで、あたり判定を含めた内部処理は
通常通りの処理で問題ないですし、イベントなどで画面を揺らしたい場や
主人公以外のところを画面の中心に持ってきたい場合等にも使えます。

 とはいえ、ゲームに内容によってはこんな大層なものは必要なく、
先の方々がおっしゃっているような手法で十分かもしれません。


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

Name: やっくん  ..入門者(4,139ポイント)   Date: 2009/06/14(日) 02:07   No:35051     
Title: Re:スクロールの考え方    
自分の説明がわかりにくいものなのに、
皆様回答してくださってありがとうございます><

>ねこさん
とりあえず、自分なりにねこさんの方法で試してみます。

>Kouさん
自分はドラクエタイプの物を作ろうと思ってますね。
説明不足ですみません。
ですが、自分が考えている物にはKouさんがおっしゃるようなタイプのものも必要となりますので参考になります(^^)

>Justyさん
ありがとうございます。なんとなくですが理解できましたが完璧ではありません。
もしよろしければ過去に添付したソースの再アップをお願いしたいです。

-----------------------------

とりあえず試行錯誤して結果をもう一度書かせてもらうことにします。


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

Name: やっくん  ..入門者(4,619ポイント)   Date: 2009/06/14(日) 13:00   No:35063     
Title: Re:スクロールの考え方    
とりあえず、ドラクエ風も目標にしているのでねこさんの方法を考えようとしました。

以下の処理の前処理(前提)として、
・キャラをマップの中心に固定させた場合。(スクロール無しverは上手く作れています。)
・map01関数は画面に表示されるより大きめに取った当たり判定の関数です。
・map01[]はマップチップのハンドルです
・x,yはキャラ画像の位置情報?です。(初期設定でx=288,y=224)
・マップ一マスを32×32としてます。(よって画面は20×15分割)
・上下左右キーを1回押すとxとyの座標が32増減するようにしています。
・当たり判定は別に行っています。

ごちゃごちゃですみません^^;

見て欲しいのは以下の部分なのですが、
ねこさんの言ったように次の処理でキャラを中心にマップを描こうとしたつもりですが、
うまくいきません。(ちゃんと表示されず、表示の仕方が変)
これ以外にも試行錯誤をずっとやっているのですが中々上手く行かない状況です。
<Pre>

/*壁を描画*/
int i,j;
for(i=0;i<15;i++){
for(j=0;j<20;j++){
         //↓↓ここでねこさんの言ってることをやったつもりです
if(map01[y/32-7+i][x/32-9+j]==1){
DrawGraph((x/32-9+j)*32,(y/32-7+i)*32, map01[1], TRUE);
}
else if(map01[i][j]==0){
DrawGraph((x/32-9+j),(y/32-7+i)*32, map01[0], TRUE);
}
}
}

DrawGraph( 288 , 224 , image , TRUE ) ;//自キャラ画像を描画(中心固定)

<Pre>

全てソースを載せるとごちゃごちゃになってるため見づらいかと思い、
診断して欲しい部分を載せています。
もしこれだけでは判断できないならば他の部分も載せますので言ってください。

>Justyさんへ
カメラの概念を使うときはキャラ移動(画像の位置x,yの増減)とカメラ移動を同時に行わなければうまくいきませんか?


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

Name: ねこ  ..入門者(4,483ポイント)   Date: 2009/06/14(日) 13:26   No:35064     
Title: Re:スクロールの考え方    
DragGraph関数のx,y値が変な気がします。
外枠足りない気がしますが、とりあえずイメージに近い描画をするにはDrawGraphの引数のx/32-9とy/32-7が不要ですね。
DrawGraph( j * 32, i * 32, map01[1], TRUE);

後Preタグの2個目は半角スラッシュが足りません「/Pre」


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

Name: Justy  ..伝説なるハッカー(374,109ポイント)   Date: 2009/06/14(日) 15:09   No:35069     
Title: Re:スクロールの考え方    
 当時のコードを見つけて、ちょっとだけ改良してアップしました。
 
 実行には
 ttp://dixq.net/g/img/char.png
 こちらのキャラクタデータが必要になります。

 実行したら上下左右でキャラが歩きますが(LSHIFT併用で高速移動)、
標準の状態ではカメラがプレイヤーの位置と同じになるよう設定
されています(自動追尾モード)ので、常に画面中央にキャラクタが
表示されるようになっています。

 Zボタンを押すと自動追尾モードが解除されマニュアルモードになります。
 AWDXの各ボタンでカメラを操作できます。
 この状態で Qを押すと再び自動追尾モードになります。

 一部空白に触れるとマップが切り替わりますが、元からそういう仕様です。

 画面上のデバッグ表示を見るとわかりますが、ch.posの位置と cameraの位置が
一致するとキャラクタは中央に表示されます。


 本格的なカメラになると、回転や拡大縮小にも対応することになりますが、
そこまではこのサンプルではやっていません。


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

Name: やっくん  ..入門者(4,778ポイント)   Date: 2009/06/15(月) 12:21   No:35132 解決!     
Title: Re:スクロールの考え方    
>ねこさん
ありがとうございます。
何とかキャラ中心とした移動をできるようになりました。
これから「キャラが一定以上端に着たらキャラ中心からキャラ自体を移動させる」などに発展させていこうと思います。

>Justyさん
添付ありがとうございます。
とりあえず形はできたのですが、
カクカク画面が動いていたので比較させていただきました。
カメラの概念が何となくしか理解できていなかったけれど、これで理解できたと思います。
他の人が作ったソースと自分のを比べると「ここまで全然違うのか」って驚きました。
Justyさんのソース綺麗でしたので見やすいですし・・・。
とても参考になりました(^^)


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

Name: やっくん  ..初心者(5,064ポイント)   Date: 2009/06/15(月) 20:36   No:35170     
Title: Re:スクロールの考え方    
解決を押しておきながらログを上に上げるのは申し訳ないのですが、
Justyさんの添付ソースを何回も見ています。
今の自分には書けるようなものではありませんでした。
ソースを見て疑問に思ったことがあるのでよければ答えてもらえないでしょうか?

constを使う理由とは何でしょうか。
「変数の中身を変えれないようにしミスを防止する」
ってくらいの知識しかもっておらず、
だけど何でこんなに多く使っているのだろうと疑問に思いました。
多くて1000〜2000行のコードしか書いたことなく、
そのときでさえ一回も自分はconst使わなかったので気になります。


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

Name: ねこ  ..初心者(6,003ポイント)   Date: 2009/06/15(月) 21:00   No:35173     
Title: Re:スクロールの考え方    
constは「定数」として変更不可の定義を行うとともに
「共通値」として大きな変更を行う際の修正の簡易性を上げる事が出来ます。

例えば今回のやっくんさんのソースで「共通値」を挙げるなら
・1マスの横幅 32
・1マスの高さ 32
・表示する横マス数 20
・表示する縦マス数 15
等があります。

これらをあらかじめ「定数」として使用してコードを記述しておくと
マスのサイズを24x24に変えよう、というような修正をする際この定数の値を24に変えるだけで
直接「32」と書いていた箇所が全て24になるため、修正漏れ等が無くなりますし手間も一瞬です。
またマスの数も「640/1マスの横幅」等で代入していると、関係する項目がある程度連動してくれます。
※勿論変更に伴って必要最低限の修正はあるでしょうが。

このようにあらかじめ同じ値を何度も書いたりする場合、定数としておくと後からの変更が容易になります。

というのが僕の知っている大きな利点です。

他にもswitch文で「0,1,2」とcaseを書くよりは
const int MODE_TITLE = 0;
const int MODE_MENU = 1;
const int MODE_MAIN = 2;
として変数名だけで大体意味が分かるようにしておけば
「1って何だっけ?」というような確認の手間を省けたりしますね。

他にもビットフラグを定義する時・・・ってキリがないのでこんなところでw


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

Name: Justy  ..伝説なるハッカー(375,270ポイント)   Date: 2009/06/15(月) 21:07   No:35176     
Title: Re:スクロールの考え方    

>constを使う理由とは何でしょうか

 主な理由としては途中で変更されるもの、されないものを明確に区別する、
というのがありますが、どこについている constなのか、で少し意味合いが
変わってきます。


1) 関数の外の const
 変数ではなく定数にしたかった為

2) 関数の外の配列についている const
 変更されたくない・する必要がない、ということと、
データを ROM領域に配置されることを期待して。

3) 関数の引数の const
 データを変更されたくない・する必要がない、ということと、
変数がポインタの場合関数の入出力の方向を明確にする為

 といったところでしょうか。


 2)の ROM領域に関してはこちらを。

Cプログラミング専門課程/第4章メモリ/const修飾子
ttp://www.pro.or.jp/~fuji/mybooks/cpro/cpro.4.6.1.html

 Windosとかだとあまり大きな意味は持たないかもしれませんが、
ROMと RAMが明確に分かれている環境だと大きな違いになることがあります。


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

Name: やっくん  ..初心者(5,156ポイント)   Date: 2009/06/15(月) 21:27   No:35177     
Title: Re:スクロールの考え方    
単純に簡易性をあげるための共通値として意味を持たせる場合はconstを付けなくてもかまわなくはないですか??

標準関数ではprintfなどに「変更不可」にしたい部分にconstが使われてたりするようですが、
これは外部から手を加えられないようにってことなのかな。




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

Name: ねこ  ..初心者(6,080ポイント)   Date: 2009/06/15(月) 22:11   No:35180     
Title: Re:スクロールの考え方    
<単純に簡易性をあげるための共通値として意味を持たせる場合はconstを付けなくてもかまわなくはないですか??
構いません。ただ直値の置き換えはconstを付けるのが普通ってだけです。
ただわざわざ付けないという事は「差し替えられる危険性を残す」というデメリットしか残らないと考えます。


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

Name: やっくん  ..初心者(5,181ポイント)   Date: 2009/06/15(月) 22:23   No:35184     
Title: Re:スクロールの考え方    
なるほど。
納得できました!!
ありがとうございます。


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

Name: やっくん  ..初心者(8,419ポイント)   Date: 2009/06/17(水) 00:23   No:35269     
Title: Re:スクロールの考え方    
Justyさん、constについてわざわざ答えてくださっていただいたのにお礼を言わず、すみませんでした。
コメントしていただいてたことに気づいていませんでした;;
ところで、Justyさんの添付したファイルを見ているとまた気になった点がありました。
bool型なのですが、これはCには無い型ですよね?
当たり前のように使われていたので他のCのソースで使おうとしたところ使えなくて、
調べてみたところC++で実装されているものらしいですね。
そこで使い方の質問なのですが、


typedef struct{
int a,b,c;
bool tf;
}TF;

TF TF1 = {1,2,3,true};

if(TF1) //処理;



Justyさんの添付ファイルを見てみるとこのような使い方をしている部分がありました。
ifの中身に構造体を渡しているような感じ(?)なのですがこれは「構造体の中のbool値が真なら処理を行う」といったものでしょうか。
それと、C言語はこのように構造体をif文に受け渡すことはできるのでしょうか?


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

Name: Justy  ..伝説なるハッカー(375,443ポイント)   Date: 2009/06/17(水) 00:43   No:35273     
Title: Re:スクロールの考え方    

>bool型なのですが、これはCには無い型ですよね?

 無いですね。C99には似たような型がありますが、それとは別物ですし。
 一応このコードは C++コンパイラでることを想定して書かれています。



>てみるとこのような使い方をしている部分がありました

 あれ? どこでしょう?
 見直してみましたが、そういうところは見つかりませんでしたが。
 
 ひょっとして、それは構造体のポインタではないですか?



>C言語はこのように構造体をif文に受け渡すことはできるのでしょうか?

 Cでは構造体を直接 ifで評価することはできません。


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

Name: やっくん  ..初心者(8,657ポイント)   Date: 2009/06/17(水) 00:48   No:35274     
Title: Re:スクロールの考え方    
>あれ? どこでしょう?


static void CameraUpdate(camera_t *camera, const KeyBufferType key, const ch_t *ch)
{
if(!camera) return;
//略
}


この部分です。

この部分のif(!camera)がよくわかりませんでした。
自分の中では勝手に「構造体の中のbool値がfalseならばreturn」と解釈しましたが正しいでしょうか?


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

Name: Justy  ..伝説なるハッカー(375,573ポイント)   Date: 2009/06/17(水) 00:55   No:35275     
Title: Re:スクロールの考え方    

>この部分です

 この camera変数は camera_t * であり、camera_t型のポインタです。
 なので、if文はポインタ値に対する評価を行います。

 この場合はポインタが NULLかどうかのチェックであり、メンバの評価はしていません。


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

Name: やっくん  ..初心者(8,689ポイント)   Date: 2009/06/17(水) 01:00   No:35276     
Title: Re:スクロールの考え方    
そのような意味だったのですか(^^;
全く勘違いしていたようです。
ありがとうございました。


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



Name: りーくん  ..ぴよぴよ(431ポイント)   Date: 2009/06/14(日) 19:04   No:35088       
Title: Lua と アドベンチャーゲーム    
いつも拝見させていただいています。

早速質問をさせていただきます。

『スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践』
http://www.ecgeo.com/ds/-/5778505/

この書籍を最近購入しまして、この書籍を読みながらアドベンチャーゲームの作成に挑戦しようと思いました。

よくインターネット上で講義されている方法としては
『C++ソース』⇔『シナリオファイル(txtファイル)』
という形で、シナリオファイルを直接C++側から直接読み込んで行うというものです。

これをLua等のスクリプト言語も加えて行うとするのであれば、
どのような構造にすれば良いのでしょうか。

『C++』⇔『Lua(スクリプト言語)』⇔『シナリオファイル』
というスタイルになるのでしょうか・・・?

まだLuaを始めて日が浅いので、Luaの利点自体を正確に捉えることができていません故、
それらのことも同時に回答のほうをしていただくと嬉しく思います。

それでは、失礼します。








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


Name: 御津凪 [URL]  ..比類無きプログラマー(94,647ポイント)   Date: 2009/06/15(月) 14:38   No:35142     
Title: Re:Lua と アドベンチャーゲーム    
スクリプト言語(Lua)をシナリオファイルとして扱うことも可能ですし、
> 『C++』⇔『Lua(スクリプト言語)』⇔『シナリオファイル』
とすることも出来ます。
(要はどこでシナリオを処理するかにあります)

Lua 等のスクリプト言語の利点としては、容易にフラグの管理や計算を行うことが出来る点にあります。
直接シナリオファイルにそのような処理を入れると、C++側でそれを解析・処理する必要があり、なかなか大変です。
(ただし単純な命令・操作だけならば Lua 無しでも比較的簡単に出来ます)

まずは Lua を学ぶという点で、
本などを熟読し、 Lua を弄り回してから考えるといいでしょう。


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

Name: りーくん  ..ぴよぴよ(615ポイント)   Date: 2009/06/16(火) 23:44   No:35264     
Title: Re:Lua と アドベンチャーゲーム    
>御津凪 様
返信ありがとうございます。そして、挨拶が遅れて申し訳ないです。

もう1つ失礼します。
>スクリプト言語(Lua)をシナリオファイルとして扱うことも可能ですし

とありますが、Luaに例えば画面に文字を出力する関数textが定義されているとして、

text("始めまして")

と記述するということになるのでしょうか?

分かり難い例で申し訳ないです。

それでは、失礼します。





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

Name: 御津凪 [URL]  ..比類無きプログラマー(95,880ポイント)   Date: 2009/06/17(水) 00:03   No:35267     
Title: Re:Lua と アドベンチャーゲーム    
そうですね。

さらに、
text("こんにちは。", "○○")
みたいにキャラクターの名前とかを引数に追加したり、
分岐も容易に使う事も出来るので、そういう形として
Lua をシナリオスクリプトとして扱うことが出来るはずです。


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

Name: りーくん  ..ぴよぴよ(737ポイント)   Date: 2009/06/17(水) 00:12   No:35268 解決!     
Title: Re:Lua と アドベンチャーゲーム    
>御津凪 様
返信ありがとうございます。

なるほど!
確かにそうすればシナリオスクリプトとして扱うことが出来ますね。

おかげさまで、疑問を解決することができました。
『解決』とさせていただきます。

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

また機会があれば宜しくお願いします。




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



Name: ほのか  ..初心者(5,142ポイント)   Date: 2009/06/16(火) 10:25   No:35208       
Title: ポインタを用いたプログラム    
お世話になっております。
今回またポインタの勉強をしているのですが、基礎的な知識の部分はネットや本で学習したため、何か簡単なプログラムを作りたいと思っています。

以前は住所録プログラムを作成したのですが、今回はあまり時間がないため、それと同じぐらいかそれより難易度の少し低いものを作成したいのですが、どのようなものを作成したら良いでしょうか?;
よろしければご意見お願いいたします。


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


Name: non  ..熟練のプログラマー(47,982ポイント)   Date: 2009/06/16(火) 10:41   No:35209     
Title: Re:ポインタを用いたプログラム    
自分で作りたいものを作るのが一番いいと思いますが、課題が欲しいのでしたら、
住所録プログラムを作成したのですから、このデータを配列でもたせるのではなく
リスト構造にしてみたらどうでしょうか?
ポインタと構造体、ファイル入出力をすでに学んでいるので、課題としてはちょう
どよいかと思います。


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

Name: Justy  ..伝説なるハッカー(375,373ポイント)   Date: 2009/06/16(火) 23:51   No:35265     
Title: Re:ポインタを用いたプログラム    
 nonさんと同じく、折角作ったこの住所録の機能を充実させるのがいいですね。
 例えば、名前、電話番号などの一部を入力すると一致するものを検索して、
リストとして表示するとか。


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



Name: たくや  ..かけだし(1,850ポイント)   Date: 2009/06/16(火) 19:44   No:35226       
Title: 構造体へのポインタについて(初心者です)    
度々お世話になります。

また課題につまずいているのでお力お貸しください。


以下のプログラムを構造体へのポインタを用いるように書き換えよ. その際, それぞれの学生の成績の合計点と各科目の平均点は, それぞれ関数を 用いて計算するようにせよ.

#include<stdio.h>
#include<math.h>

typedef struct {
char name[20];
int logi;
int math;
int ecom;
} grade_t;


int main (void){


grade_t x[4] = {
{"miki",90,80,90},
{"masami",70,85,85},
{"haruna",90,70,80},
{"rio",80,90,70},
};



int a[4];
int i;
for (i=0;i<4;i++) {
a[i] = x[i].logi + x[i].math + x[i].ecom;

printf("%sの合計点は%dです。\n", x[i].name,a[i]);

}
typedef struct {

int logi;
int math;
int ecom;
} grade_s;


grade_s A = {90,80,90};
grade_s B = {70,85,85};
grade_s C = {90,70,80};
grade_s D = {80,90,70};

double ave;

ave = A.logi + B.logi + C.logi + D.logi;
ave = ave /4;
printf("logiの平均は%lfです。\n",ave);

ave = A.math + B.math + C.math + D.math;
ave = ave /4;
printf("mathの平均は%lfです。\n",ave);


ave = A.ecom + B.ecom + C.ecom + D.ecom;
ave = ave /4;
printf("ecomの平均は%lfです。\n",ave);
}


という課題に対して以下のようにプログラムを作りましたが、


#include<stdio.h>
#include<math.h>

typedef struct {
char name[20];
int logi;
int math;
int ecom;
} grade_t;

void print_tensu(grade_t* p,int n);
int main (void){



grade_t x[4] = {
{"miki",90,80,90},
{"masami",70,85,85},
{"haruna",90,70,80},
{"rio",80,90,70},
};
grade_t* p = x;
print_tensu(p,4);

return 0;
}
void print_tensu(grade_t* p,int n){
int i;
int sum;
for (i=0;i<4;i++) {
sum = ((p+i)->logi) + ((p+i)->math) + ((p+i)->ecom);

printf("%sの合計点は%dです。\n", (p+i)->name,sum);

}
typedef struct {

int logi;
int math;
int ecom;
} grade_s;

grade_s miki = {90,80,90};
grade_s masami = {70,85,85};
grade_s haruna = {90,70,80};
grade_s rio = {80,90,70};

double ave;

/*ここから下がわかりません*/

ave = A.logi + B.logi + C.logi + D.logi;
ave = ave /4;
printf("logiの平均は%lfです。\n",ave);

ave = A.math + B.math + C.math + D.math;
ave = ave /4;
printf("mathの平均は%lfです。\n",ave);


ave = A.ecom + B.ecom + C.ecom + D.ecom;
ave = ave /4;
printf("ecomの平均は%lfです。\n",ave);
}



A.logiやB.logiなどをどのようにポインタで表現すればよいかわかりません。
何かヒントがあればご指摘いただけるとありがたく思います。







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


Name: たくや  ..かけだし(2,490ポイント)   Date: 2009/06/16(火) 19:50   No:35227     
Title: Re:構造体へのポインタについて(初心者です)    
すみません、自分で作ったプログラムを訂正させていただきます。



#include<stdio.h>
#include<math.h>

typedef struct {
char name[20];
int logi;
int math;
int ecom;
} grade_t;

void print_tensu(grade_t* p,int n);
int main (void){



grade_t x[4] = {
{"miki",90,80,90},
{"masami",70,85,85},
{"haruna",90,70,80},
{"morio",80,90,70},
};
grade_t* p = x;
print_tensu(p,4);

return 0;
}
void print_tensu(grade_t* p,int n){
int i;
int sum;
for (i=0;i<4;i++) {
sum = ((p+i)->logi) + ((p+i)->math) + ((p+i)->ecom);

printf("%sの合計点は%dです。\n", (p+i)->name,sum);

}

int main(void){
typedef struct {

int logi;
int math;
int ecom;
} grade_s;


grade_s A = {90,80,90};
grade_s B = {70,85,85};
grade_s C = {90,70,80};
grade_s D = {80,90,70};

double ave;

/*ここからの処理がわかりません*/

ave = A.logi +B.logi + C.logi + D.logi;
ave = ave /4;
printf("logiの平均は%lfです。\n",ave);

ave = A.math + B.math + C.math + D.math;
ave = ave /4;
printf("mathの平均は%lfです。\n",ave);


ave = A.ecom + B.ecom + C.ecom + D.ecom;
ave = ave /4;
printf("ecomの平均は%lfです。\n",ave);
}





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

Name: non  ..熟練のプログラマー(48,061ポイント)   Date: 2009/06/16(火) 21:07   No:35231     
Title: Re:構造体へのポインタについて(初心者です)    
>以下のプログラムを構造体へのポインタを用いるように書き換えよ.
この、以下のプログラムというのは、先生から与えられたプログラムなのでしょうか?
2つの構造体、grade_tとgrade_sの2つがあるのはどういう意味ですか?
たくやさんの後のプログラムでmainが2つあるのはなぜ?


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

Name: たくや  ..入門者(2,993ポイント)   Date: 2009/06/16(火) 21:33   No:35235     
Title: Re:構造体へのポインタについて(初心者です)    
>nonさん

ご回答ありがとうございました。それは先生が作ったのではなく過去の課題で私が作った(と言うより友達が作った)プログラムです;;

先生は今回の課題に対して以下のようなサンプルを付けたのでちょっと自分なりに真似してみたつもりなのですが…
実は何度勉強してもmain関数の使い方もよくわからないんです。その辺りのことも助言して頂けるとありがたいです。

<pre>
#include<stdio.h>

typedef struct phys_tag{
char name[20];
int height;
double vision;
} phys_t;

void print_phys( phys_t* p, int n );

int main ( void ) {
int i;
phys_t x[8] = {
{"AKANE Kouichi ", 170, 2.0},
{"TOKUTOMI Shyuji", 173, 1.5},
{"NISHIDA Taro ", 170, 0.5},
{"TSUJINO Jiro ", 175, 0.4},
{"MATSUO Keiji ", 167, 0.6},
{"OHYAMA Kazuhiro", 168, 0.2},
{"KITAYAMA Takuya", 179, 0.6},
{"TANAKA Rina ", 158, 0.9},
};

phys_t* p = x;
print_phys(p,8);

return 0;
}

void print_phys( phys_t* p, int n ){
int i;
for ( i = 0; i < 8; i++ ) {
printf("%s \t %d \t %g\n", (p+i)->name, (p+i)->height, (p+i)->vision);
}
}

<pre/>


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

Name: non  ..熟練のプログラマー(48,156ポイント)   Date: 2009/06/16(火) 22:48   No:35253     
Title: Re:構造体へのポインタについて(初心者です)    
どうりで、最初のプログラムは訳がわからないと思いました。

すると、課題はこのプログラムに、それぞれの学生の成績の合計点と各科目の平均点を,
それぞれ関数を 用いて計算するようにせよ.ということですね。

それなら、最初に、この2つの関数のプロトタイプを考えて、書いてみてください。



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



Name: うめじそ  ..ぴよぴよ(107ポイント)   Date: 2009/06/16(火) 22:34   No:35250       
Title: ゲームの処理が遅くなる    
こんばんは。プログラミング初心者です。
僕は現在VC++でタワーディフェンスと呼ばれるような防衛戦略ゲームの作成をしています。
具体的には自発的に攻撃する大砲をプレイヤーが設置し、迫ってくる敵を倒すというものです。

とりあえず大砲が敵を認知して攻撃する部分、敵が歩いてくる部分をそれぞれ作ったのですが
武器を2つ以上設置する(武器の関数を2回以上使う)と、弾が飛んでいる状態での全体の処理が遅くなってしまいます。
弾を飛ばすアルゴリズムは龍神録を参考にして作り、骨格も拝借しているので、そこまで重い処理ではないと思うのですが・・
ちなみにPCの性能も市販のゲームが十分動く程度なので問題はないと思います。
弾が飛んでいるときだけ重くなるので、弾を動かす所で無駄な処理をしているのかと考えたのですが、悪い箇所が分かりません。
是非アドバイスをお願いします。
以下汚いですが、弾を飛ばすアルゴリズムです

(chが大砲の、enが敵の構造体です。)

		if(ch[j].tama.flag==0 && rate==0 && ch[j].range*ch[j].range > pow(en.X-ch[j].X,2)+pow(en.Y-ch[j].Y,2)){

//弾フラグ0,ディレイ後、敵が攻撃範囲内のとき
ch[j].tama.flag = 1;
ch[j].tama.x = ch[j].X;
ch[j].tama.y = ch[j].Y;
rate = ch[j].delay; //最低攻撃間隔 ch[j].delay(ms)
break;
}
if(rate > 0 && ch[j].range * ch[j].range > pow(en.X - ch[j].X,2)+pow(en.Y - ch[j].Y,2)){//敵が範囲内のとき
rate--;
}

if(ch[j].tama.flag==1) {//弾フラグが1のとき弾を移動させる
ch[j].tama.spd = 10;
DrawGraph((int)ch[j].tama.x-16,(int)ch[j].tama.y-16,img[1],TRUE);
ch[j].tama.angle = atan2(en.Y-ch[j].tama.y,en.X-ch[j].tama.x);
ch[j].tama.x += cos(ch[j].tama.angle) * ch[j].tama.spd;
ch[j].tama.y += sin(ch[j].tama.angle) * ch[j].tama.spd;
}


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




Name: やっくん  ..初心者(6,007ポイント)   Date: 2009/06/16(火) 01:16   No:35201       
Title: ゲームプログラマーになるには?    
就職についての疑問なのですが。

今、大学の工学部(情報系)の2年なのですが将来できればゲームプログラマーになりたいと思っています。

自分の大学で習うことは主に
・数学基礎知識(微積、線形代数、etc)
・コンピュータの構造
・情報理論(論理演算)
・信号処理(フーリエ変換が主)
・C言語
・etc

2年前期までで主にこれくらいです。

各ゲーム製作企業の募集要項を色々見てみますと、
「ゲーム提出」という項目があるのですが、
自分の大学ではゲーム作りなどすることはありません。

言語を学ぶといってもたしなみ程度?で教授に聞くと、
「プログラミングをそこまで深く講義でするつもりは無いよ」
といっています。
大学は純粋なプログラマーを生み出させるわけじゃないのでこれはわかります。
プログラミングは道具でそこから何か利用するってくらいでしょうか。

なので自分は1年ほど前からJAVAやCの基礎を学び、
今はC(DXライブラリ使用)を使いゲーム製作をしています。

ここで質問です。
1.大学卒でも普通に企業は受け入れてくれるのか。(資格や特別な知識が要る?)
2.ゲーム会社に提出するゲームとはDXライブラリで作ったような物でも可能か?
  (純粋にDirectXやAPIを使って作成しなきゃいけないのか。)
3.どの程度のゲームを作ればいいのか?(提出する際、恥ずかしい物は作りたくないので)
4.会社によるでしょうが受け入れるかどうかは、
  ゲーム提出はほぼ関係なく経歴や大学の成績に依存してしまうのか?
5.何か今のうちにすべきことは?大学の勉強は怠っていません。

ちなみに自分が希望している企業はC、C++、JAVAなどの知識が必要とありました。

質問多いですが答えれる方お願いいたしますm(__)m


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


Name: ねこ  ..初心者(6,537ポイント)   Date: 2009/06/16(火) 02:02   No:35205     
Title: Re:ゲームプログラマーになるには?    
ゲーム業界に居るわけではないので知ってる限りで

<1.大学卒でも普通に企業は受け入れてくれるのか。(資格や特別な知識が要る?)
大卒の方が専門卒よりは優遇されると思って下さい。
ゲームによっては数学や物理の知識が必要な物もあるので、基本学力は必須です。

<2.ゲーム会社に提出するゲームとはDXライブラリで作ったような物でも可能か?
会社によって提出するゲームエンジンが決められてる処もあれば自由な処もあります。
ある程度は独自のエンジンを持っている会社が多いはずなのでDirectXの関数を直接触れる方が優位にはなれるはずです。(C++の場合)

<3.どの程度のゲームを作ればいいのか?(提出する際、恥ずかしい物は作りたくないので)
とりあえずシナリオノベルとか簡易テトリス等、そこらの参考書読めば出来る程度は論外っぽいです。
後、シューティングも原理的には簡単なのでシューティングを売りにしてないところだと避けた方が良いかも
※このへんは現職の人に同じ内容の質問した回答まんまです。

<5.何か今のうちにすべきことは?大学の勉強は怠っていません。
一杯本を読む事ですね。システム構築・アルゴリズム・グラフィック
色んな知識の下地を持っておくと新しい事に挑戦する時に感覚は掴みやすいです。


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

Name: 御津凪 [URL]  ..比類無きプログラマー(95,890ポイント)   Date: 2009/06/16(火) 10:16   No:35206     
Title: Re:ゲームプログラマーになるには?    
高卒(+1年後)で現在ゲーム会社に勤めている者です。

ゲームプログラミングの技術はもちろんですが、
ゲームに対する発想や、おっと言わせるような技術を提出プログラムに盛り込むと好感が持てるとおもいます。

「ゲームが作れます」じゃ見向きもしない会社もありますので。

最低限必要なのは、仕事のやる気とコミュニケーション能力です。
現場では他の方との連絡が絶えず必要で、かつ場合によっては連日残業を余儀なくされることもあります。

あと、いっぱい本を読むのもいいですが、それの実践・応用をしないと身につきませんし、
他人の真似だけになってしまいます。

ちなみにいろんなゲームをやって、この部分はどう処理をしているかというのを常に考えておくと、
後に役立つはずです。(面接とか)

ちなみに私の場合、 C++ で組むはずの DirectX を、 C で作ったパズルゲームを提出しました。


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

Name: やっくん  ..初心者(6,368ポイント)   Date: 2009/06/16(火) 16:22   No:35213 解決!     
Title: Re:ゲームプログラマーになるには?    
ねこさん、御津凪さん回答していただきありがとうございます。
自分の今やっていること(大学での勉強や自学でゲーム作成)が役に立つとわかり一層努力しようと思いました。
やはりどなたもおっしゃりますが本をたくさん読むことは重要のようですね。
自分の興味のあるものしか読んでいませんでしたが、これから意識して読み、知識を蓄えていこうと思います。

<最低限必要なのは、仕事のやる気とコミュニケーション能力です。
大学の教授もコミュニケーション能力は重要だといつも言って「ふ〜ん、そうなんだ」程度にしか思っていませんでしたが、実際に働いてる方から言われると響き方違いますね


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

Name: たいちう  ..プログラマー(32,229ポイント)   Date: 2009/06/16(火) 19:57   No:35228     
Title: Re:ゲームプログラマーになるには?    
> やはりどなたもおっしゃりますが本をたくさん読むことは重要のようですね。
> 自分の興味のあるものしか読んでいませんでしたが、これから意識して読み、知識を蓄えていこうと思います。

本というのが技術書を指しているのならば、御津凪さんも書いていますが読むだけじゃだめですよ。
実際に試して応用して、自分のものにして下さい。


1〜4の質問は会社によるでしょうね。新卒とはいえ、それなりの力を持った人以外
採用しない会社もあるでしょうし、優秀そうな人なら未経験でも採用する会社もあります。

5については、基礎力を身につけることと、少々のアピールの意味で、
基本(できれば応用)情報技術者試験を受けるのも良いでしょう。
就職後はじっくり勉強する時間を取りにくいので、基礎を固めるなり話題の技術に手を出すなり、
好きなようにしたらよいと思いますが、「就職活動のため」ではなく、
「将来素晴らしいゲームを作るため」という視点で、勉強する分野を選ぶと良いのではないかと。
結果的にそれが評価されるかもしれません。


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

Name: ねこ  ..初心者(6,634ポイント)   Date: 2009/06/16(火) 21:00   No:35230     
Title: Re:ゲームプログラマーになるには?    
すいません、何か読みまくる事で応用を軽視したみたいな書き方になっちゃってましたね。
初めに色々読んでおくと自分で何かする時、参考にしたサイトや書籍での理解度も上がるので
最初に浅く色々知っておくと効率が良いような感覚で発言しました。

<コミュニケーション能力
どのソフトウェア開発でもそうですが、現場で求められるのは個人の技術能力より全体を見て動ける応用能力です。
大学や専門で必死に勉強した、と言っても現場の先輩方はそれを軽く超える能力を持っています。
資格や技術を頑張ってそのへん軽視した人が多いですねぇ。


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

Name: やっくん  ..初心者(6,715ポイント)   Date: 2009/06/16(火) 21:44   No:35239     
Title: Re:ゲームプログラマーになるには?    
たいちうさん
>本というのが技術書を指しているのならば、御津凪さんも書いていますが読むだけじゃだめですよ。
実際に試して応用して、自分のものにして下さい。

今まで「この部分は難しいから後回し」って感じで本(技術書)を読んでた部分がありました。
そのようなところこそやっていかなければいかないですよね。

>「就職活動のため」ではなく、 「将来素晴らしいゲームを作るため」という視点で

最初は人に楽しいって思われるゲームを作ろうって心がけてたところが、最近就職のことを頭に置きだすとそれが「就職活動のため」って変わってしまった部分がありました。
初心を忘れないようにがんばります



ねこさん
>最初に浅く色々知っておくと効率が良い

一理ありますね。この分野は多くのことが連動して動いているのである一つの物だけに目を向けて勉強していってて他のことがでてきてアレ?って思うことがありました。う〜ん、だけど自分はあれこれ中途半端に手を着けるのが苦手なので一つずつこなしていくことにします。


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

Name: たいちう  ..プログラマー(32,289ポイント)   Date: 2009/06/16(火) 21:59   No:35243     
Title: Re:ゲームプログラマーになるには?    
> 今まで「この部分は難しいから後回し」って感じで本(技術書)を読んでた部分がありました。
> そのようなところこそやっていかなければいかないですよね。

それが理想ですが私の言いたいことと違います。
簡単な部分でも読むだけにしないで、実際に試してください、ということです。
読んだだけで理解したつもりになって、実は理解していない人(事)のなんと多いことか、と。


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

Name: やっくん  ..初心者(7,775ポイント)   Date: 2009/06/16(火) 22:15   No:35247     
Title: Re:ゲームプログラマーになるには?    
>簡単な部分でも読むだけにしないで、実際に試してください

その点は今のところ初心者だからか大丈夫だと思います。
ひたすら簡単なところでも反復をするように心がけてます・・・が、どんどん知識が増えてくるとそうなるかもしれないですね。(過去の自分を思い返すとそうなりがち)
ここは簡単そうだから見るだけで行けそうだ〜って思うようになるかもしれません。
そういうことがないように常に初心を忘れないようにします。姿勢


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



Name: Be helped  ..ぴよぴよ(226ポイント)   Date: 2009/06/15(月) 19:13   No:35163       
Title: 無題    
このプログラムの、
#include "DxLib.h"

int i=0,j,ch_i=0,counter=0,White;
char Key[256],oldKey[256]={},disp[80]="",ch[5][80]={
"プログラムを習得するには、実際に自分で書いてみることが大事。",
"参考書を読むことも重要だが、数学のように演習を通して、",
"体に身につけるようにしよう。",
"きっと、よりはっきりと、関数の使い方、",
"プログラムの書き方がわかるだろう。"
};


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK ) ;

White=GetColor(255,255,255);

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){

※ここから! for(j=0;j<256;j++){
if(oldKey[j]==0 && Key[j]==1)
Key[j]=2;
oldKey[j]=Key[j];
}

if(Key[KEY_INPUT_RETURN]==2){ // 前回押されてなくて、今回押されていたら
i=0; // iを初期値に戻し
ch_i++; // 表示する配列を1つずらす
if(ch_i==5) // これ以上表示する配列がなくなったらbreak;
break;
}※ここまで!

// 配列の終端-2以下で、今回コピーするiまでの配列要素のi番目が\0じゃなくカウンターが5の倍数なら
if(i<=80-2 && ch[ch_i][i]!='\0' && counter%5==0){
i+=2; // 全角文字なので配列要素2つずつカウントアップ
strncpy(disp,ch[ch_i],i);// iバイトまでの配列要素をdisp配列にコピー
disp[i]='\0'; // 終端記号を代入
}

DrawFormatString(10,420,White,"%s",disp);//disp配列の文字データを表示

counter++;
ScreenFlip() ;

}

DxLib_End() ;
return 0 ;
}
※〜※のところがよくわかりません。 どなたか解説をよろしくお願いします。
(とくに、oldKeyのある意味と、Enterを押したときになぜ2なのか?)


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


Name: ねこ  ..初心者(5,382ポイント)   Date: 2009/06/15(月) 19:37   No:35165     
Title: Re:無題    
プログラムの中ではキーボードを押している判定を「今押されているか否か」しか判定できません。
そのため「押された瞬間」を判定するには「前回押されていない」かつ「今回押されている」時の1回のみになります。
このプログラムでは
・押されてない⇒0
・押されている⇒1
・押された瞬間⇒2
というように振り分けています。
前回押されているかどうかを判定するためにoldKeyがあります。


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

Name: Be helped  ..ぴよぴよ(260ポイント)   Date: 2009/06/16(火) 17:19   No:35218 解決!     
Title: Re:無題    
ありがとうございます^^
これは前回からずっとおされていても次に行かないようにしてるのですね。


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

Name: Dixq (管理人)  ..ウィザード(1,027,947ポイント)   Date: 2009/06/16(火) 18:43   No:35225     
Title: Re:無題    
今押された瞬間かどうか判定する関数についても別の章で解説していますのでよければそちらもご覧下さいm(_ _)m

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



Name: yskey  ..ぴよぴよ(213ポイント)   Date: 2009/06/15(月) 23:35   No:35192       
Title: 文章読み込みの良いやり方    
こんばんは。
ただいまSGLゲームを作っているのですが、アドベンチャーパートではノベルゲームのように会話を入れようと思っています。
そこでなんですが、文章を読み込むときどのような方法をとればよいのですか?
シナリオライターとソースコード担当(私)で分担作業をしていて、シナリオにはソースコードとは別のエクセルやNotePadとかに書いてにもらい、それをプログラムから読み込む形をとるか。
それとも文章をコピペしてソースコードに直接書くのか・・・
どちらが良いのでしょうか?


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


Name: やっくん  ..初心者(5,300ポイント)   Date: 2009/06/16(火) 00:16   No:35194     
Title: Re:文章読み込みの良いやり方    
自分は現在製作中のRPGを同じくシナリオライターとプログラムのソース担当で分業してますが、ソースコードに直接書き込んでいますね。エクセルやNotePadの読み込みでやったことないのでわからりませんが、直接書き込んだ方がいろいろと勝手が良い様な気がするので。

yskeyさんが実際にやってみて簡単にできる方にしてみてはどうですか??


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

Name: 御津凪 [URL]  ..比類無きプログラマー(95,340ポイント)   Date: 2009/06/16(火) 00:26   No:35196     
Title: Re:文章読み込みの良いやり方    
シナリオライターが書いたシナリオを、プログラマが手作業でコピペする作業だと、
シナリオライターから修正してほしい箇所が後にぽつぽつ出てきた場合、
その箇所をプログラマがいちいち手作業で修正する羽目になるため、
プログラマが本来の作業の邪魔になりえます。

出来れば、シナリオライターにはある形式に合わせて書いてもらい、
プログラムでそのファイルを読み込んで処理する方が、双方とも非常に楽になります。


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

Name: やっくん  ..初心者(5,317ポイント)   Date: 2009/06/16(火) 00:30   No:35198     
Title: Re:文章読み込みの良いやり方    
>御津風さん
defineで何かを定義するような考え方ですね。
後々そこを変えるだけで全部が変わるような。
RPG作っている自分も参考になりました。ありがとうございます


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

Name: 御津凪 [URL]  ..比類無きプログラマー(95,557ポイント)   Date: 2009/06/16(火) 00:45   No:35199     
Title: Re:文章読み込みの良いやり方    
> defineで何かを定義するような考え方ですね。

少し、違いますね。
RPG の場合、アイテム名や必殺技及びそれらの説明文など、調整のために変更する可能性があるデータがところどころにあります。
これらは、ソースコードに埋め込まず、自身が定めた形式で書き、それをプログラムが読み込むだけで反映される
ようにする、という考え方です。

こうすれば、いちいちコンパイルしなくても、
プログラマー以外はデータを差し替えるだけでチェックが出来ます。
これは、シナリオのテキストや、他の部位(画像など)のデータにおいても同様です。


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

Name: やっくん  ..初心者(6,089ポイント)   Date: 2009/06/16(火) 01:59   No:35204     
Title: Re:文章読み込みの良いやり方    
全く知らなかったです。
RPGの戦闘部分の基盤は完成していたのですが、
全てソースに埋め込んでいるため、
変更&修正の時に大変な思いをしています。
その手間が省けると思うと・・・♪


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

Name: yskey  ..ぴよぴよ(293ポイント)   Date: 2009/06/16(火) 17:20   No:35220 解決!     
Title: Re:文章読み込みの良いやり方    
なるほど、返信ありがとうございました。
外部ファイルを読み込むほうが良いみたいなのでそうしようと思います。
龍神録プログラミングの館の11章にあるExcelで読み込むようなやり方でやってみようと思います。


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

Name: Dixq (管理人)  ..ウィザード(1,027,911ポイント)   Date: 2009/06/16(火) 18:38   No:35224     
Title: Re:文章読み込みの良いやり方    
パラメータやテキストなどのデータは出来るだけ外部ファイルに置いた方がいいと思いますよ。

理由は既に出ているので省きますが、私も昔初めてゲームを作った頃、それこそあらゆるパラメータやテキストをソース内に書いて後からすごく苦労しました。

ただ外部ファイルにすると改竄されたり、ネタばれしたりする可能性が高まるので、必要があれば暗号化したりするといいかもしれませんね。

なお、実行ファイルの中に書いても見られてしまうことがある件は館に書いてあるのでよければご覧下さい。


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



Name: たくや  ..入門者(2,582ポイント)   Date: 2009/06/16(火) 14:25   No:35211       
Title: ポインタと配列について(初心者です)2    
昨日こちらでお世話になったものです。
初心者の僕にも分かるよう親切に解説してくださり助かりました。みなさまに感謝しております。
昨日に引き続き質問させていただきます。

昨日の問題の続編として以下のような課題が出されました。


int 型の二次元配列 a[3][4] を定義し, 以下のようにポインタ p, q, r にアドレスを代入して p, q, r を使って配列 a の各要素の値とポインタ (p+i), (q+i), (r+i) のアドレスを 表示せよ. ただし, 配列 a の各要素を表示するときはポインタ表現をつかい p[i][j] などという表現は使ってはいけない.
また問題ごとに用いたポインタ表現について, なぜそのようなポインタ表現を用いると配列の値が表示されるのか考察で述べよ.

int *p = &a[0][0]
int *q = a[0]
int (*r)[4] = a

そこで


#include <stdio.h>

int main(void){

int a[3][4]={{11,12,13,14},
{21,22,23,24},
{31,32,33,34}};
int *p ;

p=&a[0][0];
printf("a[0][0]の値=%d,a[0][0]のアドレス=%p\n",*p,p);
printf("a[0][1]の値=%d,a[0][1]のアドレス=%p\n",*(p+1),p+1);
printf("a[0][2]の値=%d,a[0][2]のアドレス=%p\n",*(p+2),p+2);
printf("a[0][3]の値=%d,a[0][3]のアドレス=%p\n",*(p+3),p+3);
printf("a[1][0]の値=%d,a[1][0]のアドレス=%p\n",*(p+4),p+4);
printf("a[1][1]の値=%d,a[1][1]のアドレス=%p\n",*(p+5),p+5);
printf("a[1][2]の値=%d,a[1][2]のアドレス=%p\n",*(p+6),p+6);
printf("a[1][3]の値=%d,a[1][3]のアドレス=%p\n",*(p+7),p+7);
printf("a[2][0]の値=%d,a[2][0]のアドレス=%p\n",*(p+8),p+8);
printf("a[2][1]の値=%d,a[2][1]のアドレス=%p\n",*(p+9),p+9);
printf("a[2][2]の値=%d,a[2][2]のアドレス=%p\n",*(p+10),p+10);
printf("a[2][3]の値=%d,a[2][3]のアドレス=%p\n",*(p+11),p+11);

int *q;
q=a[0];
printf("a[0][0]の値=%d,a[0][0]のアドレス=%p\n",*q,q);
printf("a[0][1]の値=%d,a[0][1]のアドレス=%p\n",*(q+1),q+1);
printf("a[0][2]の値=%d,a[0][2]のアドレス=%p\n",*(q+2),q+2);
printf("a[0][3]の値=%d,a[0][2]のアドレス=%p\n",*(q+3),q+3);
printf("a[1][0]の値=%d,a[1][0]のアドレス=%p\n",*(q+4),q+4);
printf("a[1][1]の値=%d,a[1][1]のアドレス=%p\n",*(q+5),q+5);
printf("a[1][2]の値=%d,a[1][2]のアドレス=%p\n",*(q+6),q+6);
printf("a[1][3]の値=%d,a[1][3]のアドレス=%p\n",*(q+7),q+7);
printf("a[2][0]の値=%d,a[2][0]のアドレス=%p\n",*(q+8),q+8);
printf("a[2][1]の値=%d,a[2][1]のアドレス=%p\n",*(q+9),q+9);
printf("a[2][2]の値=%d,a[2][2]のアドレス=%p\n",*(q+10),q+10);
printf("a[2][3]の値=%d,a[2][3]のアドレス=%p\n",*(q+11),q+11);

int (*r)[4];
r=&a[0];

printf("a[0][0]の値=%d,a[0][0]のアドレス=%p\n",*(*r),*r);
printf("a[0][1]の値=%d,a[0][1]のアドレス=%p\n",*(*r+1),*r+1);
printf("a[0][2]の値=%d,a[0][2]のアドレス=%p\n",*(*r+2),*r+2);
printf("a[0][3]の値=%d,a[0][3]のアドレス=%p\n",*(*r+3),*r+3);
printf("a[0][0]の値=%d,a[1][0]のアドレス=%p\n",*(*r+4),*r+4);
printf("a[0][1]の値=%d,a[1][1]のアドレス=%p\n",*(*r+5),*r+5);
printf("a[0][2]の値=%d,a[1][2]のアドレス=%p\n",*(*r+6),*r+6);
printf("a[0][3]の値=%d,a[1][3]のアドレス=%p\n",*(*r+7),*r+7);
printf("a[0][0]の値=%d,a[2][0]のアドレス=%p\n",*(*r+8),*r+8);
printf("a[0][1]の値=%d,a[2][1]のアドレス=%p\n",*(*r+9),*r+9);
printf("a[0][2]の値=%d,a[2][2]のアドレス=%p\n",*(*r+10),*r+10);
printf("a[0][3]の値=%d,a[2][3]のアドレス=%p\n",*(*r+11),*r+11);

return 0;
}



というプログラムを作り、実行結果も正解と同じ値が得られました。
しかし、このプログラムでは単純すぎると思い、腑に落ちません。
この他に正解が得られるポインタの使い方があればご指摘願います。






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


Name: 御津凪 [URL]  ..比類無きプログラマー(95,960ポイント)   Date: 2009/06/16(火) 14:48   No:35212     
Title: Re:ポインタと配列について(初心者です)2    
この問題文において、

> なぜそのようなポインタ表現を用いると配列の値が表示されるのか考察で述べよ.

ここが重要です。
なぜ、そのようにして表示できたのかを考え、文章にする必要があります。


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

Name: toyo  ..プログラマー(36,320ポイント)   Date: 2009/06/16(火) 16:51   No:35215     
Title: Re:ポインタと配列について(初心者です)2    
別解ですがrの場合は配列の要素がそのまま使えますね

printf("a[1][0]の値=%d,a[1][0]のアドレス=%p\n",*(*(r+1)+0),*(r+1)+0);
printf("a[1][1]の値=%d,a[1][1]のアドレス=%p\n",*(*(r+1)+1),*(r+1)+1);
printf("a[1][2]の値=%d,a[1][2]のアドレス=%p\n",*(*(r+1)+2),*(r+1)+2);
printf("a[1][3]の値=%d,a[1][3]のアドレス=%p\n",*(*(r+1)+3),*(r+1)+3);



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

Name: box  ..ハッカー(141,167ポイント)   Date: 2009/06/16(火) 16:54   No:35217     
Title: Re:ポインタと配列について(初心者です)2    
>質問者さん

> しかし、このプログラムでは単純すぎると思い、腑に落ちません。

プログラムは単純であればあるほど、
読む人が理解しやすく、後から修正しやすいと思いませんか?

単純に書けるところをことさらややこしくする必要は、全くないと思います。
いかがでしょうか。


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

Name: やそ  ..比類無きプログラマー(90,744ポイント)   Date: 2009/06/16(火) 17:28   No:35221     
Title: Re:ポインタと配列について(初心者です)2    
皆さんの言うとおり、プログラムは単純であればあるほど良いです。

見やすいし、わかりやすくて先生思いのプログラムじゃないかな(笑)

で、この問題の一番の肝は御津凪さんも言われているとおりで、

> なぜそのようなポインタ表現を用いると配列の値が表示されるのか考察で述べよ.

を考え、文章に出来るくらいには理解しているかどうかを見たいのだと思います。

いろんな本やネットなどの説明や、ここの諸先輩がたの回答を参考に整理して考えてみてください。


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

Name: たくや  ..入門者(2,650ポイント)   Date: 2009/06/16(火) 18:15   No:35223     
Title: Re:ポインタと配列について(初心者です)2    
>>みなさま


ありがとうございました。こんな簡単に出来たことがないので不安だったのですが、この問題の肝は考察の部分ですね。

これからじっくり文章を仕上げたいと思います!


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



Name: bitter_orange  ..かけだし(2,163ポイント)   Date: 2009/06/16(火) 16:32   No:35214       
Title: 文字コードについて    
お世話になっております。
C言語と DirectX 9.0c で現在ゲーム制作をしています。
DirectX の文字表示は重いため、テクスチャーに描画して絵として表示しようと思っているのですが、
2バイトコードの変換時に失敗してしまい、文字化けしてしまいます。
なお、以下の引数で添付した関数を呼んでいます。

LPDIRECT3DTEXTURE9 string_tex = NULL;

StrTex_DrawText("あいうえお\nGAME" , &string_tex);

これを添付したプログラムで呼んでいます。
添付したプログラムは一番下の関数から順に呼んでいます、
「あいうえお」は文字化けしているのですが、「GAME」は正しく表示されている状態です。
なのでユニコードの変換の仕方を教えていただきたいです。

OSは[Windows Vista]で開発環境は[Microsoft Visual C++ 2008 Express Edition]です。

よろしくお願いします。


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


Name: YuO  ..プログラマー(30,442ポイント)   Date: 2009/06/16(火) 16:52   No:35216     
Title: Re:文字コードについて    
UTF-16は0x0000〜0x00FFの範囲について,ISO-8859-1と一致しますが,それ以外の範囲は,他の文字コードと基本的に一致しません。
そのため,単純にShift_JISの文字を変換することはできません。
Shift_JIS → UTF-16であれば,MultiByteToWideChar APIなどを使って変換することができます。


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

Name: bitter_orange  ..かけだし(2,201ポイント)   Date: 2009/06/16(火) 17:20   No:35219 解決!     
Title: Re:文字コードについて    
YuO様のご指摘通り、 MultiByteToWideChar 関数を使うことで解決しました。
本当に助かりました。
YuO様ありがとうございました。


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



Name: yama  ..初心者(6,615ポイント)   Date: 2009/06/15(月) 21:04   No:35174       
Title: マップデータを3次元配列で    
今まで2次元配列で持っていたデータをまとめて3次元で持とうかと思います。

int Data_01[3][3] = {
{0,0,0},
{0,0,0},
{0,0,0}
};

int Data_02[3][3] = {
{0,0,0},
{0,1,0},
{0,0,0}
};

これをまとめて
int Data[2][3][3] = {
{
{0,0,0},
{0,0,0},
{0,0,0}
},
{
{0,0,0},
{0,a,0},
{0,0,0}
}
};



みたいに書いたときアクセスの仕方は

Data[num][y][x]
Data[y][x][num]

のどちらになるのでしょうか?


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


Name: たいちう  ..プログラマー(32,030ポイント)   Date: 2009/06/15(月) 21:07   No:35175     
Title: Re:マップデータを3次元配列で    
調べたり試したり考えたりしないのには理由があるのでしょうか。

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

Name: box  ..ハッカー(141,100ポイント)   Date: 2009/06/15(月) 21:48   No:35178     
Title: Re:マップデータを3次元配列で    

> int Data[2][3][3] = {
> みたいに書いたときアクセスの仕方は

こういう風に書けた、ということは、
どういう風にアクセスすればいいかが
わかっているのではないのでしょうか?

最初の [2] の意味合いは?
次の [3] の意味合いは?
最後の [3] の意味合いは?



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

Name: やそ  ..比類無きプログラマー(90,434ポイント)   Date: 2009/06/16(火) 11:43   No:35210     
Title: Re:マップデータを3次元配列で    

int Data[2][3][3] = {
{
{1,2,3},
{4,5,6},
{7,8,9}
},
{
{10,11,12},
{13,14,15},
{16,17,18}
}
};

として、printf()で順に表示してみれば分かるんじゃないでしょうか?


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



Name: taroujirou  ..ぴよぴよ(341ポイント)   Date: 2009/06/15(月) 19:47   No:35166       
Title: ビルドでエラー(初心者)    
ソースファイルをコンパイルしたいんですが、ビルドすると

1>------ ビルド開始: プロジェクト: 3-3.c, 構成: Debug Win32 ------
1>コンパイルしています...
1>cl : コマンド ライン error D8016 : コマンド ライン オプション '/RTC1' と '/clr' は同時に指定できません
1>ビルドログは "file://c:\Users\tamba\Documents\Visual Studio 2008\Projects\3-3.c\3-3.c\Debug\BuildLog.htm" に保存されました。
1>3-3.c - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

とエラーになってしまいます。

プロパティで'/RTC1'や'/clr'を別の物に替えるとerror C1083と成ってしまいます。
この場合はどうやったら対処できるのでしょうか?
どうぞよろしくお願いします。


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


Name: 御津凪 [URL]  ..比類無きプログラマー(95,944ポイント)   Date: 2009/06/16(火) 10:21   No:35207     
Title: Re:ビルドでエラー(初心者)    
エラーの詳しい内容(D8016)と解決方法が下記に載っています。
ttp://msdn.microsoft.com/ja-jp/library/t0cs92zx(VS.80).aspx

これを対処すれば解決できるはずです。


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



Name: tieria  ..入門者(2,553ポイント)   Date: 2009/06/15(月) 21:56   No:35179       
Title: 再帰関数のオーバーフロー    
初心者です

常駐型のプログラムを考えています

このコードは、無限ループになりますので万が一にでも実行されないよう
#の前に*をおいてます。実行しないでください(私は実行していません)

お尋ねしたかったのは、
aは解放されないため、いずれはオーバーフローとなることはわかりますが、
b,c,e,dはどうなのでしょうか?
comparefuncが終わった時点でreturnされているため、解放されると思っているのですが・・・

もし、解放されないとしたら、すべてグローバルにしても、
strcmpなどの標準関数の実装例での変数はローカルですから、いずれはオーバーフローしてしまうことになりますよね?つまり、グローバルにしても解決にはならず、いずれは か・な・ら・ず・起こってしまうのでしょうか?

愚問すいません よろしくお願いします


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

int loopfunc(void);
int comparefunc(int b);

int main(void)
{
loopfunc();
return 0;
}
int loopfunc(void)
{
int a = 0;
a++;
comparefunc(a);
loopfunc();
return 0;
}
int comparefunc(int b)
{
char c[] = "abcdefg";
char d[] = "abcdefgh";
int e;

e = strcmp(c, d);
printf("%d, %d\n", b, e);
return 0;
}


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


Name: 御津凪 [URL]  ..比類無きプログラマー(95,148ポイント)   Date: 2009/06/15(月) 22:15   No:35181     
Title: Re:再帰関数のオーバーフロー    
これは再帰関数の無限ループによるスタックオーバーフローですね。

基本、関数を呼び出すだけでもスタックを使う(戻り先を保存するため)ので、
int func(){return func();}
でもスタックオーバーフローします。

だからローカル・グローバル関係なく再帰関数の無限ループなら必ずなります。


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

Name: ねこ  ..初心者(6,104ポイント)   Date: 2009/06/15(月) 22:18   No:35183     
Title: Re:再帰関数のオーバーフロー    
1回目と2回目のloopfunc関数で宣言される「a」はメモリ上別物です。

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

Name: ねこ  ..初心者(6,039ポイント)   Date: 2009/06/15(月) 22:24   No:35185     
Title: Re:再帰関数のオーバーフロー    
しまた、良く読んでなかった。
スタックオーバーフローの事でしたか。

御津凪のおっしゃる通り、無限ループしてるのでいずれクラッシュしますね。
変数云々でなく「無限ループ」で、です


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

Name: tieria  ..入門者(2,573ポイント)   Date: 2009/06/15(月) 22:34   No:35186 解決!     
Title: Re:再帰関数のオーバーフロー    
ねこさん、ありがとうございました。






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

Name: tieria  ..入門者(2,641ポイント)   Date: 2009/06/15(月) 22:36   No:35187 解決!     
Title: Re:再帰関数のオーバーフロー    
あ・・・投稿されてない・・・

御津凪さん、ねこさん、ありがとうございました

これで、おもいきってmallocに書き換える決心がつきました!


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

Name: tieria  ..入門者(2,747ポイント)   Date: 2009/06/15(月) 22:45   No:35188     
Title: Re:    
いや・・・ちょっと待ってください

スタック・ヒープの問題ではなく、

御津凪さん曰く
int func(){return func();}
でもスタックオーバーフローします。
ってことは、無限ループ自体が問題なのですから、mallocにしても・・・

ちょっとよく考えます


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

Name: box  ..ハッカー(141,112ポイント)   Date: 2009/06/15(月) 22:48   No:35189     
Title: Re:再帰関数のオーバーフロー    
> これで、おもいきってmallocに書き換える決心がつきました!

無限ループの話と、mallocにするかどうかという話とは、関係ないです。


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

Name: tieria  ..入門者(2,760ポイント)   Date: 2009/06/15(月) 22:55   No:35190     
Title: Re:再帰関数のオーバーフロー    
>>Boxさん
 ご指摘のとおりです






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

Name: たかぎ [URL]  ..ハッカー(105,405ポイント)   Date: 2009/06/15(月) 22:55   No:35191     
Title: Re:再帰関数のオーバーフロー    
loopfuncの返却値をなくすか、

int loopfunc(void)
{
int a = 0;
a++;
comparefunc(a);
return loopfunc();
}

のようにすれば、スタックオーバーフローを回避できる可能性があります。


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

Name: tieria  ..入門者(2,872ポイント)   Date: 2009/06/15(月) 23:40   No:35193     
Title: Re:再帰関数のオーバーフロー    
>> たかぎ さん ありがとうございます

書きなおしていたのですが、
ソースコード上では、void loopfunc(void)として、変数もグローバルとしても(こうなると
関数が関数ではなく簡略記法のコードみたになってしまいますが・・・)
標準関数を使用すると、どうしてもスタックが発生してしまいます
なので・・・あきらめたくないのですが・・・あきらめま。

みなさん、ありがとうございました!





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



Name: チルチル  ..プログラマー(26,696ポイント)   Date: 2009/06/15(月) 19:01   No:35159       
Title: コンパイル時の定数項 その2    
前回の質問で

DATA( 1+(2+4)*((((((4+5))))))-5 );

はコンパイル時に

DATA( 50 );

になると知ったんですが

定数項以外の要素がある式でも、ある程度統合してくれるのでしょうか?

例えば

DATA( 5+3+i );



DATA( 8+i );

見たいな感じで・・

マクロとかを入れても大丈夫でしょうか・・

#define P 9

DATA( 8+P+i );



DATA( 17+i );

みたいに・・

このような事が可能だとしたら

順番は関係あるのでしょうか?

DATA( 2+i+8 );



DATA( 10+i );

とか・・

順番によって変わってくるとしたら

定数項を一纏めにしておいた方が良いって事になりますね・・

あと定数項の式が0になる場合はどうなるんでしょうか?

DATA( 1-1+i );



DATA( 0+i );



DATA( i );

のどっちになるのでしょうか?

質問が長くなってすいません・・


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


Name: b  ..ぴよぴよ(596ポイント)   Date: 2009/06/15(月) 19:08   No:35160     
Title: Re:コンパイル時の定数項 その2    
少しは自分で調べてみましょう。

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

Name: 御津凪 [URL]  ..比類無きプログラマー(95,041ポイント)   Date: 2009/06/15(月) 19:10   No:35162     
Title: Re:コンパイル時の定数項 その2    
最近のコンパイラは頭がいいので、最適化できる定数項、マクロは全て最適化できます。

最適化なので、意味のない文も削除されます。

なので、
DATA( 1-1+i );
は、
DATA( i );
になります。

また、
{

int i = 0;
i = 1;
i = 2;
}

は、最適化により {} で囲まれた部分丸ごと省かれます。
(もちろんコンパイラの能力によりますが)


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

Name: 御津凪 [URL]  ..比類無きプログラマー(95,060ポイント)   Date: 2009/06/15(月) 19:14   No:35164     
Title: Re:コンパイル時の定数項 その2    
最適化できる細かい内容は Wikipedia の コンパイラ最適化 に書かれています。

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

Name: ねこ  ..初心者(5,592ポイント)   Date: 2009/06/15(月) 19:53   No:35167     
Title: Re:コンパイル時の定数項 その2    
とりあえずですね、本題とは関係ないんですがチルチルさんの気にされている事は

車で進んでる道に蟻が居ないかチェックしながら進む、みたいな事です。

仮に2GHzのCPUで処理していたとして、演算処理なんて数十クロックです。
0.000○ミリ秒の誤差を気にしてる事になります。
物凄い複雑な3D計算でもしない限りCPUによる処理落ちなんてしませんし
そんな事気にするくらいならより良いアルゴリズムを考えた方が100倍マシです。


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

Name: チルチル  ..プログラマー(26,703ポイント)   Date: 2009/06/15(月) 20:10   No:35168 解決!     
Title: Re:コンパイル時の定数項 その2    
う〜ん最近のコンパイラは高性能ですね・・

よく考えたら確かに気にするほどの事では無かったですね・・

どうもお騒がせしました。


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

Name: たかぎ [URL]  ..ハッカー(105,295ポイント)   Date: 2009/06/15(月) 22:15   No:35182     
Title: Re:コンパイル時の定数項 その2    
定数式かどうかについては効率以外の問題もあるので、きちんと理解していることは無意味ではありません。
それに対して、定数式ではなく、式に変数等が混在する場合は、コンパイル結果の確認を行うときなどを除けば、まず気にすることは無いでしょう。

ちなみに、定数式かどうかについては、列挙子の値、caseラベル、配列の要素数、テンプレート実引数等に使えるかどうかに関わってきます。


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



Name: Q  ..ぴよぴよ(775ポイント)   Date: 2009/06/15(月) 19:09   No:35161       
Title: 逆ポーランドについて    
今スタックを用いて逆ポーランドを作っています。
しかし、起動はするのですがうまく起動しなく困っています。
C言語初めて2ヶ月です。
よろしくお願いします。
  #include <stdio.h>
  #include <stdlib.h>
  #define MAX 100

    int stack[MAX];
    int n;

   void init(void);
   void push(int);
   int pop(void);

   int main(void)
 {
  char c;
  int x, a, b;
  init();

   while (scanf("%c", &c), c != '\n') {
  
   if (isdigit(c)) {
  x = atoi(&c);
  push(x);
   } else {

    switch (c) {
  case '+' :
  b = pop(); a = pop();
push(a + b);
break;

   case '-' :
 b = pop(); a = pop();
  push(a - b);
 break;

   case '*' :
b = pop(); a = pop();
push(a * b);
break;

   case '/' :
b = pop(); a = pop();
push(a / b);
break;

    case '=' :
printf("%d\n", pop());
return 0;
 case ' ' :
  case '\n' :
  case '\t' :
 break;
  default :
printf("不正な文字!!\n");
exit(1);
}
}
}

  printf("数式が完成していません\n");
  return 1;
  }

  void init(void)
 {
 n = 0;
 }

 void push(int x)
  {
  if (n >= MAX) {
  printf("スタックが満タン\n");
 exit(1);
 }
  stack[n] = x;
   n++;
  }

   int pop(void)
  {
  if (n <= 0) {
    printf("スタックは空\n");
    exit(1);
    }
   n--;
   return stack[n];
   }


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


Name: non  ..熟練のプログラマー(47,878ポイント)   Date: 2009/06/15(月) 20:43   No:35172     
Title: Re:逆ポーランドについて    
こんな、デコボコのインデントにしたソースを載せないでください。
読みにくいし、もしかして、全角スペースでインデントしたのでは?
規約にソースの載せ方があるので読んで、貼り直してください。

>起動はするのですがうまく起動しなく困っています。
なにをいいたいのかわかりません。

>x = atoi(&c);
この使い方は恐らく間違ってます。まだ、プログラムはみてませんけど・・・



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



Name: ...  ..ぴよぴよ(993ポイント)   Date: 2009/06/14(日) 21:47   No:35109       
Title: デバッグをお願いしたいのですが、、、    
いくら見ても原因がわかりません。。。
誰かわかりますか??
問題のところはGlobalAlloc()のところです。
デバッグ情報ではちゃんと表示されているし、NULLでもないのにメモリが確保されません。

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <wininet.h>
#define Enterstop while(1){if (getch()==13) break;}

int main (void)
{
//Variable declaration
HINTERNET hInet,shFile;
LPTSTR buffer;
DWORD dwFree,dwfSize;
HANDLE dhFile;

//Open the URL
hInet=InternetOpen(
"Rewrite",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0
);
shFile=InternetOpenUrl(
hInet,
"http://space.geocities.jp/classcircle/rewrite/mylib.c",
NULL,
0,
INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_RELOAD,
0
);

//Get file size
dwFree=sizeof(dwfSize);
HttpQueryInfo(
shFile,
HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER,
&dwfSize,
&dwFree,
0
);

//Secure memories & Load file of Internet
buffer=(LPTSTR)GlobalAlloc(GPTR,sizeof(TCHAR)*(dwfSize+1));
if (sizeof(buffer)<dwfSize)
{
printf("Error %d\n",GetLastError());
printf("Failed secure memories.\n");
if (buffer==NULL) printf("buffer==NULL\n");
printf("dwfSize:sizeof(buffer) = %d:%d\n",dwfSize,sizeof(buffer));
printf("sizeof(LPTSTR) = %d\n",sizeof(LPTSTR));
printf("sizeof(TCHAR)*(dwfSize+1) = %d\n",sizeof(TCHAR)*(dwfSize+1));
Enterstop;
return 1;
}
InternetReadFile(
shFile,
buffer,
sizeof(buffer),
&dwFree
);

//Write to file of local
dhFile=CreateFile(
"\\MyFolder\\Borland\\MyLibrary\\mylib.c",
GENERIC_WRITE,
0,
0,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL
);
WriteFile(dhFile,buffer,sizeof(buffer),&dwFree,NULL);

//Showing user the file
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),buffer,sizeof(buffer),&dwFree,NULL);
printf("\ndwfSize = %d",dwfSize);

//The disposal of end
InternetCloseHandle(shFile);
InternetCloseHandle(hInet);
CloseHandle(dhFile);
GlobalFree(buffer);
Enterstop;
return 0;
}


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


Name: ねこ  ..初心者(5,244ポイント)   Date: 2009/06/14(日) 22:05   No:35112     
Title: Re:デバッグをお願いしたいのですが、、、    
<メモリが確保されません
というのは指定しているサイズより小さいという意味ですか?
それともアドレスはあるのにメモリ操作等するとエラーになるという意味ですか?

GlobalAlloc関数の戻り値ポインタをsizeofしてますが、ポインタのサイズで常に4が表示されます。
その後のInternetReadFileでもその値を使っているためsizeof(buffer)の箇所を
sizeof(TCHAR)*(dwfSize+1)にする必要があると思われますが、それで解決しないでしょうか?



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

Name: box  ..ハッカー(140,999ポイント)   Date: 2009/06/14(日) 22:08   No:35113     
Title: Re:デバッグをお願いしたいのですが、、、    
>buffer=(LPTSTR)GlobalAlloc(GPTR,sizeof(TCHAR)*(dwfSize+1));
>if (sizeof(buffer)<dwfSize)

このif文で両者を比較している意味合いは、どういったものですか?

また、「ちゃんと表示されている」というデバッグ情報の内容を示していただけますか?

GlobalAlloc() で確保した領域のサイズと、
その先頭アドレスを格納するポインタ変数のサイズ(こちらは環境によって固定値のはず)
との区別が付いていないように見えます。


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

Name: ...  ..かけだし(1,397ポイント)   Date: 2009/06/15(月) 20:22   No:35169     
Title: Re:デバッグをお願いしたいのですが、、、    
>>ねこサン
>><メモリが確保されません
>>というのは指定しているサイズより小さいという意味ですか?
>>それともアドレスはあるのにメモリ操作等するとエラーになるという意味ですか?
InternetReadFile()で4バイトしか読み込めてないということです。

>>boxサン
デバッグ情報は
Error 0
Failed secure memories.
dwfSize:sizeof(buffer) = 6496:4
sizeof(LPTSTR) = 4
sizeof(TCHAR)*(dwfSize+1) = 6497
↑こんな感じです。

>>GlobalAlloc() で確保した領域のサイズと、
>>その先頭アドレスを格納するポインタ変数のサイズ(こちらは環境によって固定値のはず)
>>との区別が付いていないように見えます。
そうみたいです。申し訳ありません。


改めて、問題点はInternetReadFile()で4文字しか読み込みがされていない。ということです。
これはLPTSTR型の変数のサイズなのでメモリが確保されてないと思ったのですが違うみたいですね。
とりあえずInternetReadFile()ですべての内容を読み込みたいのですが。。。
ファイルサイズは取得できているので、それを使ってメモリを動的に確保、ファイルを読み込む。といったことがしたいのです。
アドバイスをよろしくお願いします。


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

Name: ...  ..かけだし(1,431ポイント)   Date: 2009/06/15(月) 20:40   No:35171 解決!     
Title: Re:デバッグをお願いしたいのですが、、、    
申し訳ありません。
ねこサンのアドバイスをよく読んだら解決いたしました。
二人ともありがとうございました。


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



Name: たくや  ..ぴよぴよ(527ポイント)   Date: 2009/06/15(月) 10:20   No:35128       
Title: 配列とポインタについて(初心者です)    
初心者でところどころ伝わりにくい表現があるかと思いますが、その場合はご指摘お願いします。


要素数 3 の int 型の配列 a を定義し, 以下のようにポインタ p, q, r にアドレスを代入して 配列 a の各要素の値とアドレスを p, q, r を使って表示せよ. ただし, ポインタ表現をつかい p[i] などという表現は使ってはいけない。

int *p = &a[0]
int *q = a
int (*r)[3] = &a


という課題が出ました。

@*をつけるとアドレスに格納されている値が返されると習いましたが、
int *p = &a[0]と定義すると*pにa[0]のアドレスが代入される、ということでしょうか?
だとすれば、このa[0]の値をポインタで表示するためにはprintf("a[0]=%d",*(*p))とすればよいということなのでしょうか?

A*q=aと定義すると、配列aの先頭アドレスが*qに代入されるという意味ですか?
だとすればa[1]のアドレスをポインタqを使って表現するためにはprintf("a[1]=%p",*(q+1))とすればよいのでしょうか?

Bまず(*r)[3]という表現の意味するところですが、(*r)は(*r)[3]という配列の先頭アドレスと解釈してよいのでしょうか?また、(*r)[3]=&aとは要素数4の配列(*r)の4番目の値に配列aの先頭アドレスを代入するという意味でしょうか?またその場合、a[2]のアドレスと値を表示するためにはどうすればよいのでしょうか?

ヒントがあればお願いいたします。


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


Name: Mist  ..熟練のプログラマー(65,102ポイント)   Date: 2009/06/15(月) 10:34   No:35129     
Title: Re:配列とポインタについて(初心者です)    
まず、変数の宣言とその初期化は分けて考えてください。

int *p = &a[0] ;

これは

int *p;
p = &a[0];

です。
この部分での思い違いがあるため全てにおいて間違った解釈をしています。
上記を念頭においてもう一度課題を見直してください。

追伸
丸囲み数字は機種依存文字です。
表示できない環境もありますのでネット上においては使わないほうがいいです。


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

Name: たくや  ..ぴよぴよ(610ポイント)   Date: 2009/06/15(月) 13:47   No:35134     
Title: Re:配列とポインタについて(初心者です)    
>Mist さん

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

int *q = a;

int *q;
q=a;

になるのでしょうか?
また、
int (*r)[3] = &a
の(*r)[3]はどのような意味を持つ表現なのでしょうか?



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

Name: 御津凪 [URL]  ..比類無きプログラマー(94,111ポイント)   Date: 2009/06/15(月) 13:55   No:35136     
Title: Re:配列とポインタについて(初心者です)    
int (*r)[3] は、「"int 型3個の配列"のポインタ」です。(合ってるかな?)
(ちなみに int *r[3] は「"int のポインタ型"3個の配列」です)

なので、 int (*r)[3] = &a としたら、 (*r)[0] で配列 a の先頭を指します。
(r[0] ではないので注意)

int *q = a; の考え方はそれで正しいです。



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

Name: たくや  ..ぴよぴよ(744ポイント)   Date: 2009/06/15(月) 14:15   No:35137     
Title: Re:配列とポインタについて(初心者です)    
>御津凪 さん

ありがとうございました。プログラミングって難しいですね;;

int (*r)[3] = &a;

前のMistさんがおっしゃっていた、定義と初期化ですが、
定義は
int (*r)[3];
としてよいのですか?初期化がわからないのですが
int (*r)[3] =a;

となるのでしょうか??


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

Name: 御津凪 [URL]  ..比類無きプログラマー(94,786ポイント)   Date: 2009/06/15(月) 14:22   No:35139     
Title: Re:配列とポインタについて(初心者です)    
定義はそれであっています。

初期化はここで言うと、

r = &a;

です。
(定義だけでは値が決まっていないので、初期状態で値を代入することを初期化と言います)

定義と初期化を同時に行うというのは、

int (*r)[3] = &a;

ということです。


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

Name: たくや  ..かけだし(1,338ポイント)   Date: 2009/06/15(月) 14:34   No:35141     
Title: Re:配列とポインタについて(初心者です)    
>御津凪 さん

本当にありがとうございました。
お二方の助言に基づき、
とりあえず以下のようなプログラムを作ってみました。

#include <stdio.h>

int main(void){

int a[3];
int *p ;
p=&a[0];
int *q;
q=a;
int (*r)[3];
r=&a;

printf("a[0]の値=%d,a[0]のアドレス=%p\n",*p,p);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*(q+1),q+1);
printf("a[2]の値=%d,a[2]のアドレス=%p\n",(*r)[2],*(r+2));




return 0;
}

(実行結果)
a[0]の値=1884,a[0]のアドレス=0x22eeb0
a[1]の値=-1,a[1]のアドレス=0x22eeb4
a[2]の値=1628655616,a[2]のアドレス=0x22eec8

aの値がこんな数になるのは少し疑問ですが、
なにか間違っているところがありましたらご指摘いただけるとありがたいです。



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

Name: 御津凪 [URL]  ..比類無きプログラマー(94,665ポイント)   Date: 2009/06/15(月) 14:46   No:35143     
Title: Re:配列とポインタについて(初心者です)    
配列 a は初期化されていませんので、変な数値になります。

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

Name: non  ..熟練のプログラマー(47,771ポイント)   Date: 2009/06/15(月) 14:47   No:35144     
Title: Re:配列とポインタについて(初心者です)    
配列aには初期値を入れておかないとゴミが出てます。

3番目のrの表現は間違ってます。


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

Name: たくや  ..かけだし(1,349ポイント)   Date: 2009/06/15(月) 14:53   No:35145     
Title: Re:配列とポインタについて(初心者です)    
御津凪 さん

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


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

Name: たくや  ..かけだし(1,608ポイント)   Date: 2009/06/15(月) 14:54   No:35146     
Title: Re:配列とポインタについて(初心者です)    
non さん

ご指摘ありがとうございます。
自分なりに訂正してみましたがいかがでしょうか?

#include <stdio.h>

int main(void){

int a[3];
int *p ;
p=&a[0];
int *q;
q=a;
int (*r)[3];
r=&a;

printf("a[0]の値=%d,a[0]のアドレス=%p\n",*p,p);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*(q+1),(q+1));
printf("a[2]の値=%d,a[2]のアドレス=%p\n",(*r)[2],(r+2));




return 0;
}

実行結果は同じになってしまいましたが・・・



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

Name: non  ..熟練のプログラマー(47,820ポイント)   Date: 2009/06/15(月) 15:02   No:35147     
Title: Re:配列とポインタについて(初心者です)    
課題にこう書いてありました。

>ポインタ表現をつかい p[i] などという表現は使ってはいけない。


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

Name: toyo  ..プログラマー(36,239ポイント)   Date: 2009/06/15(月) 15:03   No:35148     
Title: Re:配列とポインタについて(初心者です)    
*rはint3個分の大きさがあります
intが4バイトとすると12バイトですね
したがってr + 2はa[2]のアドレスにはなりません
rはa[0]のアドレスと同じですがr + 1はa[3]のアドレスr + 2はa[6]のアドレスになります


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

Name: ねこ  ..初心者(5,517ポイント)   Date: 2009/06/15(月) 15:05   No:35149     
Title: Re:配列とポインタについて(初心者です)    
rに入ってるのは「a配列のポインタ」という意識は持ってるでしょうか?つまり「*r = a」です。
後はこの方程式を割り当てれば良いだけです。


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

Name: たくや  ..ぴよぴよ(961ポイント)   Date: 2009/06/15(月) 15:15   No:35150     
Title: Re:配列とポインタについて(初心者です)    
non さん

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

そして私が課題について勘違いしていたことに気づきました。
ポインタpとqとrでそれぞれa[0],a[1],a[2]の値とアドレスを3回ずつ表示させるという問題でした。
実行結果は同じになるはずなのですが、どうやってもポインタrを使った場合だけが違ってしまいます。

なぜでしょうか?なにかあればご指摘お願いします。
#include <stdio.h>

int main(void){

int a[3];
int *p ;

p=&a[0];
printf("a[0]の値=%d,a[0]のアドレス=%p\n",*p,p);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*(p+1),(p+1));
printf("a[2]の値=%d,a[2]のアドレス=%p\n",*(p+2),(p+2));

int *q;
q=a;
printf("a[0]の値=%d,a[0]のアドレス=%p\n",*q,q);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*(q+1),(q+1));
printf("a[2]の値=%d,a[2]のアドレス=%p\n",*(q+2),(q+2));

int (*r)[3];
r=&a;

printf("a[0]の値=%d,a[0]のアドレス=%p\n",*r,r);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*(r+1),(r+1));
printf("a[2]の値=%d,a[2]のアドレス=%p\n",*(r+2),(r+2));




return 0;
}


(実行結果)
a[0]の値=1884,a[0]のアドレス=0x22eeb0
a[1]の値=-1,a[1]のアドレス=0x22eeb4
a[2]の値=1628655616,a[2]のアドレス=0x22eeb8
a[0]の値=1884,a[0]のアドレス=0x22eeb0
a[1]の値=-1,a[1]のアドレス=0x22eeb4
a[2]の値=1628655616,a[2]のアドレス=0x22eeb8
a[0]の値=2289328,a[0]のアドレス=0x22eeb0
a[1]の値=2289340,a[1]のアドレス=0x22eebc
a[2]の値=2289352,a[2]のアドレス=0x22eec8


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

Name: Mist  ..熟練のプログラマー(65,205ポイント)   Date: 2009/06/15(月) 15:18   No:35151     
Title: Re:配列とポインタについて(初心者です)    
aの初期化をしないのはなぜ?
不定値の表示じゃ見にくくないですか?

rの値表示はさっきのであってるよ。
アドレス表示はtoyoさんのレスをよく読んで。

追伸
ソースを提示する場合は規約に従いpreタグを使用してください。


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

Name: non  ..熟練のプログラマー(47,895ポイント)   Date: 2009/06/15(月) 15:26   No:35153     
Title: Re:配列とポインタについて(初心者です)    
>rの値表示はさっきのであってるよ。

答えとしてはあっているのですが、[]を使ってはいけないと課題に書いてあります。

>int a[3];

int a[3]={1,2,3};
などのようにしましょう。




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

Name: たくや  ..かけだし(1,036ポイント)   Date: 2009/06/15(月) 15:35   No:35154     
Title: Re:配列とポインタについて(初心者です)    
>toyo さん

とてもわかりやすい解説ありがとうございました。
((*r)+1),((*r)+2)としたところ正しい実行結果が得られました!
toyoさんがおっしゃっていたことは忘れないようにmemoしました。


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

Name: たくや  ..かけだし(1,093ポイント)   Date: 2009/06/15(月) 15:38   No:35155     
Title: Re:配列とポインタについて(初心者です)    
>ねこさん

ご指摘ありがとうございます。
ひとつ上のコメントのように直したのですがよいでしょうか?


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

Name: たくや  ..かけだし(1,275ポイント)   Date: 2009/06/15(月) 15:42   No:35156     
Title: Re:配列とポインタについて(初心者です)    
>Mistさん、nonさん

ご指摘ありがとうございます。
このように直しました。いかがでしょうか?


#include <stdio.h>

int main(void){

int a[3]={1,2,3};
int *p ;

p=&a[0];
printf("a[0]の値=%d,a[0]のアドレス=%p\n",*p,p);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*(p+1),(p+1));
printf("a[2]の値=%d,a[2]のアドレス=%p\n",*(p+2),(p+2));

int *q;
q=a;
printf("a[0]の値=%d,a[0]のアドレス=%p\n",*q,q);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*(q+1),(q+1));
printf("a[2]の値=%d,a[2]のアドレス=%p\n",*(q+2),(q+2));

int (*r)[3];
r=&a;

printf("a[0]の値=%d,a[0]のアドレス=%p\n",*(*r),*r);
printf("a[1]の値=%d,a[1]のアドレス=%p\n",*((*r)+1),((*r)+1));
printf("a[2]の値=%d,a[2]のアドレス=%p\n",*((*r)+2),((*r)+2));




return 0;
}


(実行結果)

a[0]の値=1,a[0]のアドレス=0x22eeb0
a[1]の値=2,a[1]のアドレス=0x22eeb4
a[2]の値=3,a[2]のアドレス=0x22eeb8
a[0]の値=1,a[0]のアドレス=0x22eeb0
a[1]の値=2,a[1]のアドレス=0x22eeb4
a[2]の値=3,a[2]のアドレス=0x22eeb8
a[0]の値=1,a[0]のアドレス=0x22eeb0
a[1]の値=2,a[1]のアドレス=0x22eeb4
a[2]の値=3,a[2]のアドレス=0x22eeb8





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

Name: non  ..熟練のプログラマー(47,863ポイント)   Date: 2009/06/15(月) 16:06   No:35157     
Title: Re:配列とポインタについて(初心者です)    
お疲れ様です。

>*((*r)+2),((*r)+2)

これでいいのですが、()がちょっと無駄です。
*(*r+2),*r+2 でOK



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



Name: toshi  ..かけだし(2,343ポイント)   Date: 2009/06/15(月) 13:52   No:35135       
Title: doubly linked listの件について    
何度もお世話になっています。
最近C言語を勉強し始めました。
少しわからない所があるので、良ければ教えてください。
以下にソースコードを示します。
#include "stdafx.h"
#include "stdlib.h"

struct LIST
{
char *name;
struct LIST* next;
struct LIST* prev;
};
struct LIST head;

void addlist(void);
void deletelist(void);
void showlist(void);


int _tmain(int argc,_TCHAR* argv[])
{
char command;

head.next =&head;
head.prev = &head;

do
{
puts( "コマンドを入力して下さい" );
puts( "名前を追加:a" );
puts( "名前を削除:b" );
puts( "内容を表示:c" );
puts( "終了:q" );
scanf( "%s", &command );

switch( command )
{
case 'a':
addlist();
break;
case 'b':
deletelist();
break;
case 'c':
showlist();
break;
case 'q':
break;
default:
puts( "コマンドが正しくありません" );
break;
}

puts( "" );
fflush( stdin );

}while( command != 'q' );

return 0;
}

void addlist(void)
{

struct LIST *p, *newcell;
char *name;
name = (char*)malloc(sizeof(char));
puts( "追加する名前の値を入力して下さい" );
scanf( "%s", name );

p = head.next;
if( p != NULL )
{
while( p != &head )
{
p = p->next;
}
}

newcell = (struct LIST*)malloc( sizeof(struct LIST) );
if( newcell == NULL )
{
puts( "メモリ不足" );
return;
}

newcell->name = name;
newcell->next = p->next;
newcell->prev = p;
p->next->prev = newcell;
p->next = newcell;
}

void deletelist(void)
{
struct LIST *p;
char *name;
name = (char*)malloc(sizeof(char));

puts( "削除する名前の値を入力して下さい" );
scanf( "%s", name );

p = head.next;
if( p != NULL )
{
while(p != &head && name != p->name)
{
p = p->next;
}
}

if( p == &head )
{
puts( "指定された要素はリスト内に存在しません" );
}
else
{
p->prev->next = p->next;
p->next->prev = p->prev;
free(p);
}
}

void showlist(void)
{

struct LIST *p;

for( p=head.next; p!=&head; p=p->next )
{
printf( "%s\n", p->name );
}
}

コンパイルして試してみると、追加の方は上手くいくのですが、
削除を実行すると打った名前が消えません。
分かる方がいましたら教えていただけませんか?
どこを訂正すれば大丈夫なのかも教えていただければ、
ありがたいです。
多分内容も変な処がたくさんあるとは思いますが
よろしくお願いします。
僕はVisual Studioを使用しています。


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


Name: 御津凪 [URL]  ..比類無きプログラマー(94,690ポイント)   Date: 2009/06/15(月) 14:16   No:35138     
Title: Re:doubly linked listの件について    
現行ログに同名のタイトルがあるので混乱を招きやすいですよ。
あと、規約にある通り、プレタグでソースコードを囲まないと見づらいです。

質問の原因の前に、
name = (char*)malloc(sizeof(char));

puts( "追加する名前の値を入力して下さい" );
scanf( "%s", name );

これはダメです。
name には1文字分しか確保されず、メモリ破壊を引き起こします。(削除時の処理も同様)
(確保領域以外にデータを書き込んでいる)

削除できないのは、条件で、文字列の一致を確認していないためです。
name != p->name

これだと、ポインタを比較します。
リストに格納したポインタと、新しく確保した検索文字列のポインタと一致するはずがないので、
必ず不一致になります。

strcmp() 関数等で文字列の一致をチェックしてください。


あと、その他の点での指摘ですが、
 p = head.next;   

if( p != NULL )
{
while( p != &head )
{
p = p->next;
}

}

ここは、

p = &head;

で済むと思います。

それと、削除時に 名前を保持するために確保したメモリを解放してません。
(リストだけ解放してます)

もうひとつ。
この構造は双方向ループするので、 next, prev 共に NULL になりませんので、
(確認の意味では必要かと思いますが)チェックする必要はありません。


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

Name: toshi  ..かけだし(2,415ポイント)   Date: 2009/06/15(月) 15:23   No:35152     
Title: Re:doubly linked listの件について    
レスポンスありがとうございます。
言われてみれば、そのとおりだと思います。
自分でプログラムを組むと間違いだらけで・・・。
色々と回答していただきありがとうございました。


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



Name: ミトリ  ..ぴよぴよ(177ポイント)   Date: 2009/06/15(月) 02:37   No:35121       
Title: 龍神録の2章で困っています    
龍神録のプログラミングを参考にしながらオリジナルのシューティング作成しようとしています
ただその前に実行できなければ意味ないと思い、2章のプログラムをコピペして実行してみると

fatal error C1083: include ファイルを開けません。'../../../include/DxLib.h': No such file or directory

と表示されて、実行ができません。

私はほぼプログラミング未経験の状態なので、このエラーは簡単なことなのかもしれませんが…
是非アドバイスをお願いします!!


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


Name: pooka [URL]  ..初心者(5,288ポイント)   Date: 2009/06/15(月) 03:16   No:35122     
Title: Re:龍神録の2章で困っています    
こちらに同じような質問があるので参考にしてみてください。
ttp://www.play21.jp/board/formz.cgi?action=res&resno=34446&page=&lognum=105&id=dixq&rln=34532


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

Name: ミトリ  ..ぴよぴよ(257ポイント)   Date: 2009/06/15(月) 08:50   No:35125     
Title: Re:龍神録の2章で困っています    
返答ありがとうございます!
問題だった部分は解消されたのですが、あたらしくまたエラーが出てしまいまして…

LINK : fatal error LNK1104: ファイル 'libtheora_static_d.lib' を開くことができません

このようなのが出てしまいました
何度もすいません。アドバイスよろしくお願いします


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

Name: ねこ  ..初心者(5,344ポイント)   Date: 2009/06/15(月) 09:05   No:35126     
Title: Re:龍神録の2章で困っています    
libtheora_static_d.libはDXライブラリの一部だったはずです。
DXライブラリのHPにて、プロジェクトへの設定を再確認してみてはどうでしょうか?
どこか設定が足りなくてファイルへのリンクが出来ていないようです。


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

Name: ミトリ  ..ぴよぴよ(374ポイント)   Date: 2009/06/15(月) 09:26   No:35127     
Title: Re:龍神録の2章で困っています    
プロジェクトの設定の再確認をしてみましたが、間違いがなく同じエラーが発生してしまいました。

確認なんですが、ねこさんの言ってらっしゃるサイトは
ttp://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html#R4
こちらを参考に、ということでよろしいでしょうか?


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

Name: pooka [URL]  ..初心者(5,315ポイント)   Date: 2009/06/15(月) 11:57   No:35130     
Title: Re:龍神録の2章で困っています    
あるとは思いますが、libtheora_static_d.libがDxLib.hと同じフォルダにあるか確認してみてください。

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

Name: ねこ  ..初心者(5,475ポイント)   Date: 2009/06/15(月) 11:58   No:35131     
Title: Re:龍神録の2章で困っています    
その設定で間違いないです。
まず、DXライブラリでのサンプルプログラムを実行してみてください。
同じエラーが起こればどこかに設定不備、またはファイル破損をしている可能性があります。

DXライブラリを再度ダウンロードしてみるのも推奨します。
もしかしたらファイルの一部が破損してる可能性もあります故。


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

Name: ミトリ  ..ぴよぴよ(422ポイント)   Date: 2009/06/15(月) 13:28   No:35133 解決!     
Title: Re:龍神録の2章で困っています    
サンプルプログラムを実行した所、龍神録の2章の方もできるようになりました!
ありがとうございました!



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



Name: チャリ子  ..ぴよぴよ(66ポイント)   Date: 2009/06/15(月) 03:24   No:35123       
Title: (double)や(int)    
単発質問で大変申し訳ないですが、
物理入門のページに

t = (double)(GetNowCount() - oldt)/1000.0;//計測を始めてからの時間
ch_x = (int)(x * 50.0);//1mは100pix

という記述があったのですが
これの(double)や(int)という部分の意味がわかりません。
この(double)や(int)にはどういった意味があるのでしょうか。

宜しくお願いします。


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


Name: 初級者  ..初心者(6,198ポイント)   Date: 2009/06/15(月) 06:43   No:35124     
Title: Re:(double)や(int)    
キャスト というキーワードについて調べてみてください。

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



Name: 256bit  ..ぴよぴよ(813ポイント)   Date: 2009/06/14(日) 18:08   No:35086       
Title: 2Dアクションシューティングゲームの作成について    
 私はハドソンのボンバーマンシリーズやナムコの「トイポップ」のような2Dアクションシューティングゲームを制作しています。
 こちらのHPに記載されているプログラムを参考にしてゲームを制作しているのですが、他に参考にした方がよい資料やHPはありますか?


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


Name: ねこ  ..初心者(5,005ポイント)   Date: 2009/06/14(日) 19:49   No:35095     
Title: Re:2Dアクションシューティングゲームの作成について    
まずは自分に合った書籍でしょうか。
ゲームというのは作り手の力の入れどころがそれぞれ異なります。

ボンバーマンで例を挙げるなら
1.様々な特殊アイテムを作る操作性・アクション性
2.頭を使わないと簡単には倒せないAIのかしこい敵達
3.綺麗・激しい演出表現
4.ボリューム(ステージ数とか)を出せるための製造下地

とまぁ簡単に思いつくだけでこんな感じで、他にも色々あると思います。
なので、256bitさんがボンバーマン等をベースに「こんな感じに作りたい!!」って思うイメージを
色々書籍のレビュー等を参考にして選択し、
1冊読破すれば、どんどん自分の理想を実現出来る実力が付いていくと思います。

ネットだけでも不可能ではないと思いますが、書籍の方が近道じゃないかと僕は思います。


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

Name: 256bit  ..かけだし(1,035ポイント)   Date: 2009/06/14(日) 21:31   No:35107     
Title: Re:2Dアクションシューティングゲームの作成について    
 >>ねこさん

 返信ありがとうございます。

 私は、雪合戦をモチーフにしたゲーム作っています。
 現在の段階で、要素は以下のように考えてます。

 1.敵    ・・・耐久力のある敵、スピードの速い敵、盾を持った敵など

 2.アイテム ・・・ライフ、ショット数の増加、パワーショット、1UPなど

 3.その他  ・・・ハイスコアなどの点数、自機制、TIME制など

 他にもありますが、ステージは固定画面で全10面ほど考えています。

 


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



Name: ひよこ  ..プログラマー(30,215ポイント)   Date: 2009/05/10(日) 14:51   No:33275       
Title: また少し改良して    
また少し改良してSTG作りました。
遊んで感想をくださると、とてもうれしいです。
アップローダ様 http://down11.ddo.jp/uploader/download/1241934617/attach/Ryusei.zip
PASS[hiyoko]です。


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


Name: BEMANI  ..プログラマー(28,357ポイント)   Date: 2009/05/11(月) 02:42   No:33293     
Title: Re:また少し改良して    
難しすぎてクリアできないです・・・自分の実力が低いのでしょうかね^^;
自分が作ってるSTGの難易度が如何にぬるいかを体感できました。


以下感想です。
・更に難易度が上がったように感じた(もう少し簡単でもいいのでは?)
・ジョイパッドにも対応させてはどうでしょうか
・何もない場所から敵や弾が出てくる

以前に比べて弾がカラフルになったのではないかなぁ〜という印象を受けました。
これからも制作頑張って下さい。


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

Name: ひよこ  ..プログラマー(30,102ポイント)   Date: 2009/05/11(月) 06:37   No:33294     
Title: Re:また少し改良して    
BEMANIさん 遊んでくださりありがとうございます。

難しすぎてクリアできないです・・・自分の実力が低いのでしょうかね^^;
>今回はこの前アップしたときに言われたのでEXTRAつくってきました。残機もボムも少ないし・・・・
>いやそんなことないと・・・(自分も実力が低いし)
>というかどこで負けてしまうのでしょうか?

何もない場所から敵や弾が出てくる
>何もない場所から敵が出てくるってのは、最初のところですよね。


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

Name: めいらる  ..入門者(4,020ポイント)   Date: 2009/05/11(月) 06:54   No:33295     
Title: Re:また少し改良して    
プレイさせていただきました。

BEMANIさんもおっしゃってますが何も無いところから急に敵が現れ急に撃って来るので覚えないと対処のしようが無い点が多い気がします。中ボスの高速全方位弾も正直無理です^^;
10周ほどやりましたが私の腕前ではボス戦第一通常攻撃までしか行けないです

あとボス戦直前の会話でフリーズすることがあります。ほぼ同じ場所で二回発生したので何かバグが隠れているかもしれません。キーの同時押しか何かが原因で発生する可能性があります


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

Name: バグ  ..ハッカー(159,682ポイント)   Date: 2009/05/11(月) 12:18   No:33299     
Title: Re:また少し改良して    
自機弾が背景に溶け込んで分かりづらいです…

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

Name: ひよこ  ..プログラマー(30,321ポイント)   Date: 2009/05/11(月) 16:46   No:33312     
Title: Re:また少し改良して    
めいらるさん、バグさん感想ありがとうございます。

めいらるさん 高速全方位弾も正直無理です^^;
>すみません。あれは結構前のバージョンから使ってたのですが、苦情もなかったので
次回はもう少しかわしやすいようにしておきます

あとボス戦直前の会話でフリーズすることがあります。ほぼ同じ場所で二回発生したので何かバグが隠れているかもしれません。キーの同時押しか何かが原因で発生する可能性があります
>すみません、プログラムがまだよく読めないもので・・・すみません。
でも努力してみようと思います。

何も無いところから急に敵が現れ急に撃って
>あの円形見たいのを撃つのでしょうか?上から下りてきて止まって撃たせるようにします。

バグさん 自機弾が背景に溶け込んで分かりづらいです…
>半透明についてまだあまり知識が・・・・すみません


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

Name: Tatu  ..ぴよぴよ(175ポイント)   Date: 2009/05/14(木) 21:48   No:33445     
Title: Re:また少し改良して    
ノーミスクリア達成できました。ボムは「ルームX」で2個つかいました。

気になった点は

ほかの方も書いているようにボスの前の会話で
文字が完全に表示されていないときにキーを押すとフリーズします。

自機がすべてやられたときにすぐゲームオーバー画面になり、
さらに「キーを押した瞬間」ではなく、「キーが押されているとき」に
処理をするようになっています。そのため、ショットキーを押しっぱなしに
していて、勝手に最初からになったり、喰らいボムに失敗して
そのままゲーム終了になったりしてしまいます。
押した瞬間に処理をするようにするか、
対応するキーを変えるかのどちらかをしたほうがよいと思います。


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

Name: Tatu  ..ぴよぴよ(196ポイント)   Date: 2009/05/14(木) 21:53   No:33446     
Title: Re:また少し改良して    
あと、攻略方法をまとめてみたので参考にしてみてください。

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

Name: BEMANI  ..プログラマー(30,091ポイント)   Date: 2009/05/15(金) 00:08   No:33460     
Title: Re:また少し改良して    
>>ひよこさん
>というかどこで負けてしまうのでしょうか?
会話画面でフリーズするのでボスを拝めていません。
また、キーボードに慣れていないということもあり中ボスを抜けたくらいで死にます。
ジョイパッドでもやってみましたが結果は同じくらいでした。
会話画面以降進めなかったので、ここで終わりなのかと思ってました。
まさかボスがいるとは思いませんでした・・・


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

Name: ひよこ  ..プログラマー(31,586ポイント)   Date: 2009/05/15(金) 17:09   No:33491     
Title: Re:また少し改良して    
Tatuさん>>
遊んでくださってありがとうございます。
Tatuさん クリアしたのですかしかもノーミスで?
すごいです。けっこう自分でも苦労するので
ていうかけっこう研究されちゃいましたね。

BEMANIさん>>
なぜかフリーズするんです。
すみません。
今度はボスの会話なしも作っときます。




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

Name: すずめ  ..ぴよぴよ(25ポイント)   Date: 2009/05/15(金) 22:25   No:33501     
Title: Re:また少し改良して    
ひよこさん、こんばんは。
少し前に”敵を進行方向に向けたい”というタイトルで
質問したものです。
そのとき”ひよこ”という名で投稿したんですが、
まさかほかに”ひよこ”さんがいるとは気ずかず
たいへん失礼いたしました。

これからは、もし質問するときは”すずめ”に
したいと思います。


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

Name: ひよこ  ..プログラマー(31,632ポイント)   Date: 2009/05/15(金) 22:43   No:33502     
Title: Re:また少し改良して    
すずめ さん

>>”敵を進行方向に向けたい”をみてすずめさんもSTG作っているんですか?
>>もしそうだったら完成したらやってみたいです。
>>ちがうんだったらすみません。


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

Name: すずめ  ..ぴよぴよ(247ポイント)   Date: 2009/05/15(金) 23:45   No:33506     
Title: Re:また少し改良して    
ここで勉強させてもらってシューティングゲーム
を作っています。
おかげで、敵が編隊を組んで画面の中を飛び回っています。
弾幕もハ花火大会のように打ちまくっています。
ですからゲームにはなりません。
いまはそれを見て、美しさに感動しています。
いまは敵の行動パターンをいろいろ考えています。
あと、シューティングの館の”敵の移動パターンを増やす”
のsin波を応用してbulletが絡み合いながら飛んでいく
shotができないか試行錯誤しています。

本当にここのサイトには感謝しています。
ひよこさんもますます頑張ってください。


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

Name: チルチル  ..中級者(12,445ポイント)   Date: 2009/05/16(土) 16:30   No:33531     
Title: Re:また少し改良して    
前回に比べてだいぶ良くなりましたね、
私はボス第二段階ぐらいで死んでしまいました。

でも続きも見て感想を出したいので、
コンティーニュー機能を追加してはどうでしょうか?
最近は本家のコンティーニューはステージの最初からになっていますが、
見た感じ一面しかないのでその場で復活でいいと思います。


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

Name: ひよこ  ..プログラマー(31,693ポイント)   Date: 2009/05/16(土) 19:28   No:33534     
Title: Re:また少し改良して    
チルチルさん遊んでくださりありがとうございます。

チルチルさん>>
コンティーニュー機能ですか。
いいですね。じゃあ作りますね。




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

Name: situmon  ..プログラマー(30,055ポイント)   Date: 2009/05/16(土) 20:37   No:33537     
Title: Re:また少し改良して    
すごいですが、
無理でした・・・
3、4かいやったのですが・・・実力不足ですいません。
でもきれいです。
ですがさすがEXTRAですね。

あと作った人は設計を知ってるからとても簡単で、
やってる人が難しいというとなんでとなりますが、
相手はまったく知らない弾幕ですので難しいのかと・・・

自分も前いわれたのですが、初見殺しだといわれました。
それは自分はどんな玉が来るか知ってるから、大丈夫だけど
相手にとってはいきなり!?だからです。

あといまから流星書記のbgmを自分なりに作ってみようかと・・・
できたらはずかしいですが、公開します。


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

Name: situmon  ..プログラマー(30,173ポイント)   Date: 2009/05/16(土) 21:22   No:33538     
Title: Re:また少し改良して    
つくりました。
ありきたりの曲っぽいですが、
PASSはsitumonです。

下記のアドレスからです。
http://down11.ddo.jp/uploader/download/1242476823/attach/%E6%98%9F%E3%81%AE%E5%A2%93%E5%A0%B4.wav

気に入ってもらえたらうれしいです。


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

Name: ひよこ  ..プログラマー(31,747ポイント)   Date: 2009/05/16(土) 21:43   No:33539     
Title: Re:また少し改良して    
うわぁ すごいです。
感動しちゃいました。しかも流星書記のために・・
本当にうれしいです。
ゲームに入れていいですか?



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

Name: situmon  ..プログラマー(30,351ポイント)   Date: 2009/05/16(土) 21:53   No:33540     
Title: Re:また少し改良して    
自分の考えかたとして、
もし自分を作った曲を少しでも気に入っていただけたらうれしいので
つかってくれるとなおうれしいです。
ご自由にお使いください。こんな曲でよければ。


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

Name: チルチル  ..中級者(13,022ポイント)   Date: 2009/05/16(土) 22:40   No:33542     
Title: Re:また少し改良して    
それからアイテムに対する当たり判定を大きくしてはどうですか?

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

Name: ひよこ  ..プログラマー(31,818ポイント)   Date: 2009/05/16(土) 23:55   No:33550     
Title: Re:また少し改良して    
また少し改良してきました。
ぜひ遊んで感想をください。
アップローダ様 http://down11.ddo.jp/uploader/download/1242485471/attach/Ryusei.zip
PASSは「hiyoko」です。


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

Name: situmon  ..プログラマー(30,525ポイント)   Date: 2009/05/17(日) 11:12   No:33568     
Title: Re:また少し改良して    
やりましたぁ!
よかったです。
曲が気に入ってもらえて何よりです。
それとコンティニューが増えたことにより何とかクリアできましたぁ!!!!


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

Name: ひよこ  ..プログラマー(31,864ポイント)   Date: 2009/05/17(日) 14:17   No:33575     
Title: Re:また少し改良して    
situmonさん
>>さっそく曲を使わせてもらいました。
>>できたらどの弾幕がよかったか教えてもらえるとうれしいです。

みなさんの感想をお待ちしております。


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

Name: situmon  ..プログラマー(30,591ポイント)   Date: 2009/05/17(日) 17:07   No:33592     
Title: Re:また少し改良して    
ルームX と 大風車 です。
大風車は難しいけどよけたときの心地よさがたまらないですね・・・
ルームXはよけれなかったけどデザイン性(!?)というか、
見た目の美しさはこれが感動しました。


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

Name: ひよこ  ..プログラマー(31,976ポイント)   Date: 2009/05/17(日) 17:29   No:33596     
Title: Re:また少し改良して    
situmonさん 
大風車はよけたら気持ちいいですからね。

>>以前の大風車(いろいろあって表示はなかった)はよけると気持ちいいんですが
>>いろいろときれいに見えなかったので今回のようにしました。

ルームXはよけれなかったけどデザイン性が
>>作るのにけっこう時間をかけたのでうれしいです。

みなさんの感想をお待ちしております。
どの弾幕がきれいだった、難しかったなど
さまざまな感想お待ちしております。


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

Name: situmon  ..プログラマー(30,725ポイント)   Date: 2009/05/17(日) 17:58   No:33598     
Title: Re:また少し改良して    
これは気にしなくてもいいのですが、

大風車はよけたら気持ちいいですからね。

>>以前の大風車(いろいろあって表示はなかった)はよけると気持ちいいんですが
>>いろいろときれいに見えなかったので今回のようにしました。

とするよりも

>>大風車はよけたら気持ちいいですからね。

以前の大風車(いろいろあって表示はなかった)はよけると気持ちいいんですが
いろいろときれいに見えなかったので今回のようにしました。

としたほうが楽かもです。


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

Name: ひよこ  ..プログラマー(32,010ポイント)   Date: 2009/05/17(日) 18:11   No:33600     
Title: Re:また少し改良して    
situmonさん
>>細かいところまで本当にありがとうございます。
>>確かにそちらのほうがいいかもしれません。


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

Name: situmon  ..プログラマー(30,444ポイント)   Date: 2009/05/17(日) 18:20   No:33601     
Title: Re:また少し改良して    
あとペイントソフトは何を使っていますか?

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

Name: ひよこ  ..プログラマー(32,063ポイント)   Date: 2009/05/17(日) 18:33   No:33604     
Title: Re:また少し改良して    
situmonさん あとペイントソフトは何を使っていますか?

>>約99%が標準のペイントで残り1%がGIMP(ぼかしなどの仕上げ)ですかね。


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

Name: チルチル  ..中級者(13,430ポイント)   Date: 2009/05/17(日) 19:40   No:33606     
Title: Re:また少し改良して    
コンティーニューのおかげでクリアできました
好きな弾幕は回転地獄かな、でもFPSが20まで落ちました
処理落ちしてしまうのは改良した方がいいですね


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

Name:  ..ぴよぴよ(56ポイント)   Date: 2009/05/17(日) 19:46   No:33607     
Title: Re:また少し改良して    
チルチルさん  回転地獄かな、でもFPSが20まで落ちました

>>弾の種類が多いからでしょうかね。
>>弾の数が関係あるのか・・・・
>>処理落ちする以外は本当にきれいな弾幕なんですけどね。


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

Name: ひよこ  ..プログラマー(32,044ポイント)   Date: 2009/05/17(日) 19:47   No:33608     
Title: Re:また少し改良して    
すみません、
上の記事は私のです。


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

Name: situmon  ..プログラマー(30,640ポイント)   Date: 2009/05/17(日) 21:16   No:33616     
Title: Re:また少し改良して    
こちらのPCでは回転地獄でfps落ちませんでした。(たぶん)


回転地獄・・・

よかったところ、

明るく、弾幕の動きも美しい

気になったところ、

もしかしたら・・・安置がある?かもしれない

確かに色鮮やかですが、弾幕にたくさんの玉の種類が規則性なしにならんでいるものはあまりありません。
龍神録のリプレイを見る限りでも 最後の最後にしか規則性がない玉の種類の弾幕がでてこないので、
たぶんすこし規則性を与えるといいかもしれません。
もしこれが意図したものならすいません。

いつもいろいろいってすいません。


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

Name: ひよこ  ..プログラマー(32,116ポイント)   Date: 2009/05/17(日) 22:25   No:33620     
Title: Re:また少し改良して    
situmon もしかしたら・・・安置がある?かもしれない

>>というより安置あると思います。
>>最初自機狙いの弾で、2回弾が回転して、
>>自機とはけっこう角度ずれて
>>ある程度かわしやすくなるのかもしれません。
>>まあ鑑賞用として見るのもいいかもしれません。


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

Name: situmon  ..プログラマー(31,173ポイント)   Date: 2009/05/18(月) 06:39   No:33626     
Title: Re:また少し改良して    
安置は鑑賞用とみるならいいとおもいますが、
東方のように、
避けて達成感をかんじ、なお鑑賞できるほどの美しい弾幕のほうが
シューティングが好きな人の心をつかめるかもしれません。
でも ルームX、大風車 は上をみたしてて面白かったです。


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

Name: ひよこ  ..プログラマー(32,152ポイント)   Date: 2009/05/18(月) 17:30   No:33641     
Title: Re:また少し改良して    
回転地獄は避けて達成感を感じられるような弾幕に改良します。
できたら感想をよろしくお願いします。


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

Name: situmon  ..プログラマー(31,224ポイント)   Date: 2009/05/19(火) 20:30   No:33699     
Title: Re:また少し改良して    
はい、こちらもそんな弾幕に挑戦してみますのでできたらやってください♪

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

Name: ひよこ  ..プログラマー(32,910ポイント)   Date: 2009/05/23(土) 15:47   No:33909     
Title: Re:また少し改良して    
回転地獄を改良してきました。
回転地獄の感想と普通の感想を待ってます。
アップローダ様http://down11.ddo.jp/uploader/download/1243060751/attach/Ryusei.zip
PASSは「hiyoko」です。
よろしくおねがいします。


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

Name: チルチル  ..上級者(16,371ポイント)   Date: 2009/05/24(日) 00:56   No:33949     
Title: Re:また少し改良して    
いや〜私はルームXで被弾しまくってるので
変化がよく見えなくて残念です、お恥ずかしい・・

被弾した時とかに敵の弾がパッと消えると不自然なので
何かエフェクトでもつけてみてはどうですか?

あとルームXのアシスト弾のように
消えても復活する弾は、最初から消えないように
しておいてはどうですか?

それからアイテムに対する当たり判定をもう少し大きくしてはどうでしょうか?


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

Name: ひよこ  ..プログラマー(32,921ポイント)   Date: 2009/05/24(日) 10:11   No:33969     
Title: Re:また少し改良して    
それって上に行っているとアイテムが寄ってきますよね、そっちではなく
普通に取りに行く時のアイテムのとれる範囲を広げてほしいということなんでしょうか?


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

Name: Tatu  ..ぴよぴよ(0ポイント)   Date: 2009/05/24(日) 12:55   No:33974     
Title: Re:また少し改良して    
Read meにL_SHIFTで低速移動できることが書かれていなかったので、
低速封印ノーコンティニュークリアに挑戦し、達成しました。

アイテムの当たり判定について
低速封印でやってみたところ、自機とアイテムがかすった程度ではとれませんでした。
それで、チルチルさんはアイテムの当たり判定が小さいといっているのでしょう。
それとも、低速移動時に吸収できる範囲が狭いということでしょうか?

コンティニュー画面で「いいえ」をえらんだとき、プログラムを終了するのではなく
タイトル画面に戻すようにしたほうがよいと思います。

おなじくコンティニュー画面でリプレイ云々と表示されますが、
その機能が実装されていない間は表示しないほうがよいと思います。

「回転地獄」はきれいですが弾の量があまりにも多く、20fpsぐらいまで処理落ちします。
さらに、鱗弾とカード弾の色が足りないため、見えないが当たる弾があります。

「回転地獄」は安置弾幕ではなくなりましたが、「W回転」の安置は仕様でしょうか?
2ヶ所ある発射点とそれぞれ適当な距離を置けば安置になります。

ボスを倒した時に「CLEAR」の文字だけでも表示するようにしたらよいとおもいます。


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

Name: ひよこ  ..プログラマー(33,182ポイント)   Date: 2009/05/24(日) 13:10   No:33975     
Title: Re:また少し改良して    
Tatu さん 低速封印ノーコンティニュークリアに挑戦し、達成しました。
>>たくさん遊んでくださりありがとうございます。

「回転地獄」はきれいですが弾の量があまりにも多く、20fpsぐらいまで処理落ちします。
「回転地獄」は安置弾幕ではなくなりましたが

>>「回転地獄」はこのままの形で安置なしを作ったら
>>さらに弾数が多くなってしまいました、
>>次回は弾を少なくして作ろうと思います。

「W回転」の安置は仕様でしょうか?
>>安置ですね・・仕様とします。

ボスを倒した時に「CLEAR」の文字だけでも表示するようにしたらよいとおもいます。
>>次回はクリア後の画像を作りますね。

低速以外のアイテムの範囲はただいま設定中ですね。


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

Name: BEMANI  ..プログラマー(31,388ポイント)   Date: 2009/05/24(日) 14:13   No:33978     
Title: Re:また少し改良して    
>>ひよこさん
自機が打つ弾の下にアイテムがあると、
低速移動中、自機の弾に隠れてアイテムが見えなくなることがあります。
描画順を変えてみては如何でしょう。

会話画面中、自機の弾が画面に残った状態で会話が進むのは不自然な気がします。
会話画面でフリーズし、応答が無くなくなりPCを再起動する羽目になりました。
会話中Zキーを連打したらそうなりました。


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

Name: situmon  ..プログラマー(31,395ポイント)   Date: 2009/05/24(日) 14:40   No:33981     
Title: Re:また少し改良して    
>会話画面でフリーズし、応答が無くなくなりPCを再起動する羽目になりました。
こちらもです。
>「回転地獄」はきれいですが弾の量があまりにも多く、20fpsぐらいまで処理落ちします。
こちらは今回もなりませんでしたが、環境によっても変わるかもしれませんので、
どの環境でもなるべく楽しめる弾幕のほうがいいかもです。
でも今回はとてもきれいでした。
でもすいません、避けれませんでした。



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

Name: ひよこ  ..プログラマー(33,375ポイント)   Date: 2009/05/24(日) 14:42   No:33982     
Title: Re:また少し改良して    
BEMANIさん 低速移動中、自機の弾に隠れてアイテムが見えなくなることがあります。
            描画順を変えてみては如何でしょう。

>>では描画順を変えて見ます。

      会話画面中、自機の弾が画面に残った状態で会話が進むのは不自然な気がします。   
      会話画面でフリーズし、応答が無くなくなりPCを再起動する羽目になりました。  
      会話中Zキーを連打したらそうなりました。

>>なぜでしょうかね、いろいろ試してみます。


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

Name: チルチル  ..上級者(16,590ポイント)   Date: 2009/05/24(日) 15:40   No:33983     
Title: Re:また少し改良して    
アイテムの当たり判定と低速移動時に吸収できる範囲の両方ですね

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

Name: situmon  ..プログラマー(31,495ポイント)   Date: 2009/05/25(月) 20:44   No:34032     
Title: Re:また少し改良して    
ひよこさんはみなさんのいったことを取り入れていてどんどん進化したゲームになっていくので
とても面白いと同時に見習わないとですね・・・
はやくひよこさんの新作の弾幕が見てみたいです。


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

Name: ひよこ  ..プログラマー(33,321ポイント)   Date: 2009/05/26(火) 11:59   No:34052     
Title: Re:また少し改良して    
situmonさん

新作ですか・・・
でもそうやって楽しみにしてもらえるってのが
一番ゲームを作る私にはとっても嬉しいです。
ありがとうございます。


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

Name: チルチル  ..上級者(17,058ポイント)   Date: 2009/05/27(水) 23:15   No:34113     
Title: Re:また少し改良して    
そうですね、私も二面以降とかも見てみたいです

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

Name: ひよこ  ..プログラマー(33,367ポイント)   Date: 2009/05/28(木) 16:52   No:34138     
Title: Re:また少し改良して    
たくさん面を作ると
弾幕が手抜きになるかもしれません。
しかしたくさんつくってもいいかもしれません。


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

Name: ひよこ  ..プログラマー(33,505ポイント)   Date: 2009/05/30(土) 16:32   No:34212     
Title: Re:また少し改良して    
回転地獄は改良してません。
弾幕も新しく作っていません。
アイテムの取得範囲を広げただけです。
そのほか少し改良してあります。
アップローダ様
http://down11.ddo.jp/uploader/download/1243668254/attach/Ryusei.zip
PASS「hiyoko」です。
感想お待ちしております。


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

Name: ひよこ  ..プログラマー(33,527ポイント)   Date: 2009/06/01(月) 17:38   No:34353     
Title: Re:また少し改良して    
うえの改良に感想をくださるとうれしいです。

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

Name: チルチル  ..上級者(19,486ポイント)   Date: 2009/06/01(月) 19:47   No:34355     
Title: Re:また少し改良して    
範囲が広くなって取りやすくなりましたよ

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

Name: ひよこ  ..プログラマー(33,567ポイント)   Date: 2009/06/01(月) 20:01   No:34357     
Title: Re:また少し改良して    
そう言ってくださるとうれしいです。
他の人で
他に感想はありませんか?


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

Name: Justy  ..伝説なるハッカー(366,136ポイント)   Date: 2009/06/01(月) 22:02   No:34360     
Title: Re:また少し改良して    
 遊んでみました。

 弾幕云々よりも、もう少し丁寧に作った方がいいですね。
 画面のあちこちにゴミがあります。

 添付の画像は分かりやすくするために背景を白にしてキャプチャしたものを
150%拡大したものです。

 ゴミとなっているのは

・ ボスのふち(赤枠)
・ 敵の上下境界のふち(紫枠)
・ プレイヤー星の上の2つ(緑枠)

です。

 敵に関しては背景が黒だとわかりにくいのでかまわないのかもしれませんが、
プレイヤーに関しては背景が黒でも、ボスと重なった時などかなり目立ってます。


 それからプレイヤーの弾(黒枠)はこの形状であってますか?
 背景が黒で、弾も黒系だと、なんとも違和感があるのですが。


 最後に、黄色枠で囲ったところが、0_0.oggの波形です。
 入力の音量が大きすぎて、見ての通り振り切れてますよ。


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

Name: ひよこ  ..プログラマー(33,835ポイント)   Date: 2009/06/02(火) 06:24   No:34388     
Title: Re:また少し改良して    
Justyさん

絵について
>>ひどいですね。これは書き直しですね。

0_0.oggの波形
>>まさか振りきれているなんて・・・・・
  知りませんでしたね、素材の加工のやり直しです。

黒の弾っていうのは、まだ加工が下手なので、あとわざ同じ色にして弾幕避けがしやすいようにって
ことですね・・・・すみません。



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

Name: チルチル  ..上級者(20,603ポイント)   Date: 2009/06/03(水) 16:35   No:34462     
Title: Re:また少し改良して    
ちなみにボスの目が透過されているのは仕様ですか?

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

Name: ひよこ  ..プログラマー(36,712ポイント)   Date: 2009/06/03(水) 16:58   No:34463     
Title: Re:また少し改良して    
ボスの目は違う色にしたと思ったのですが・・・
透過されてますね。仕様じゃないです。


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

Name: ひよこ  ..プログラマー(36,841ポイント)   Date: 2009/06/04(木) 18:50   No:34505     
Title: Re:また少し改良して    
ボスの目は真っ黒でした・・・当然透過されますね。
ボスのふちは800%にしてもそんな変なところは・・・・・ないですけどね。
もしかしたらぼかした時の色が黒とちがうのかもしれません。
ってことはいろいろ直せないです。




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

Name: チルチル  ..上級者(22,818ポイント)   Date: 2009/06/06(土) 00:28   No:34571     
Title: Re:また少し改良して    
あ〜それは大変ですね・・
何とか頑張って下さい


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

Name: ひよこ  ..プログラマー(38,259ポイント)   Date: 2009/06/09(火) 14:24   No:34728     
Title: Re:また少し改良して    
絵を直してきました。

アップローダ様
http://down11.ddo.jp/uploader/download/1244524810/attach/%EF%BC%B2%EF%BD%99%EF%BD%95%EF%BD%93%EF%BD%85%EF%BD%89.zip
PASSは「hiyoko」です。

感想をお待ちしております。


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

Name: チルチル  ..上級者(23,183ポイント)   Date: 2009/06/09(火) 18:49   No:34737     
Title: Re:また少し改良して    
う〜ん絵がきれいになって全体的にすっきりした気がしますね
流星書記はデスクトップに置いて時々プレイしています
ちなみにボスの目は透過したままですか?
あとボスの周りが白っぽいのは仕様ですか?
最後のクリア画面もきれいですがタイトルに戻るにはどうしたらいいでしょうか?
しかし弾の動きが音楽と合っていて良いですね
あとは全体的にエフェクトを付ければクオリティが上がると思います
これは私も負けていられませんね


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

Name: ひよこ  ..プログラマー(38,269ポイント)   Date: 2009/06/09(火) 19:05   No:34738     
Title: Re:また少し改良して    
チルチルさん 流星書記はデスクトップに置いて時々プレイしています

>>とってもうれしいです。とっても!

最後のクリア画面もきれいですがタイトルに戻るにはどうしたらいいでしょうか?

>>すみませんタイトルには戻れません。

しかし弾の動きが音楽と合っていて良いですね

>>どこの場所ですか?

あとは全体的にエフェクトを付ければ

>>エフェクトですか。ボムのエフェクトに挑戦してみます。


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

Name: チルチル  ..上級者(23,311ポイント)   Date: 2009/06/09(火) 19:16   No:34740     
Title: Re:また少し改良して    
>>どこの場所ですか?

全体的にです

>>エフェクトですか。ボムのエフェクトに挑戦してみます。

ボムもそうですが被弾時や段階が進む時に敵弾がいきなり消えると不自然なので
消える時に何かエフェクトを付けてみてはどうでしょうか?
龍神録で会話に入る時のアレみたいな感じです


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

Name: ひよこ  ..プログラマー(38,290ポイント)   Date: 2009/06/09(火) 22:26   No:34757     
Title: Re:また少し改良して    
会話に入るときみたいなエフェクトですか。
がんばって挑戦してみます。


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

Name: チルチル  ..上級者(24,146ポイント)   Date: 2009/06/09(火) 22:44   No:34762     
Title: Re:また少し改良して    
消える時もそうですが、東方のように発射する時にもエフェクトを付けてもいいかもしれませんね

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

Name: ねこ  ..かけだし(1,834ポイント)   Date: 2009/06/10(水) 12:46   No:34783     
Title: Re:また少し改良して    
初めまして。やってみました。
本編もビックリの鬼弾幕に吹きましたw

では感想でも。主観で書くので一意見という感じで参考にしてください

1.死亡時の無敵時間が短い
死亡時にPが出て回収が意図されてますが
無敵時間が短いのと弾幕によってはその間もがんがん出てるので
回収した時点で位置取りする暇が無い気がします。
それもゲームの味かなぁとは思うのですがちょっとやりにくさを感じました。

2.ボスのストックが知りたい
最初ゲームオーバーになった時、「今全体のどれくらい進んだんだろ・・・」となりました。
プレイ側としてはゲームオーバー時点の「達成率」ってのが分かると良いなと思います。
残りのスペカ(でいいのかな?)の数を左上にちょんと置いておくだけでも全然違うと思いますよ。

3.難しすぎて初心者御断り状態かも
僕は東方で言うルナ程度なんですが、初見でクリアはきつかったです。
本家や龍神録でEASY/NORMALやってる人がプレイすると
「何回もやって達成率を上げる!」と思うより
「無理、絶対無理」って感想を先に持っちゃうんじゃないかなと
弾幕を見せる事をウリにするなら無敵モード(鑑賞用)があったりすると良いかもしれませんね。
プレイとしての感想を求めるならもう少し簡単なモードがあった方が良いです。
※このへんは自分も通った体験談ってことでw Hard程度を前提に作るなとよく怒られたものです。

こんなところで(*'ヮ')ノ


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

Name: テヌー  ..ぴよぴよ(16ポイント)   Date: 2009/06/10(水) 13:19   No:34786     
Title: Re:また少し改良して    
ソースを見てみたいのですが
アップして貰えないでしょうか?
よろしくお願いします


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

Name: ひよこ  ..プログラマー(38,455ポイント)   Date: 2009/06/10(水) 13:57   No:34788     
Title: Re:また少し改良して    
ねこさん、テヌーさん、遊んでくださりありがとうございます。
 
ねこさん 本編もビックリっさの鬼弾幕に吹きましたw
>>本編って東方のほうですか?、龍神録のほうですか?
>>あ、最近UPしたのにはEXTRAっていれてない・・・すみません。

ボスのストックが知りたい
>>ゲームオーバのときでもいいですかね?

弾幕を見せる事をウリにするなら無敵モード(鑑賞用)があったりすると良いかもしれませんね。
>>観賞用ですか? 回転地獄のときにも考えましたね。本編とは別に鑑賞用を作ってもいいかもしれません。

テヌーさん ソースを見てみたいのですが
>>龍神録の館の改造です。
>>もしかしてボスの弾幕のほうですか?


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

Name: チルチル  ..上級者(24,460ポイント)   Date: 2009/06/10(水) 17:38   No:34797     
Title: Re:また少し改良して    
>>ゲームオーバのときでもいいですかね?

そこは東方と同じでいいと思いますよ
プレイ中は体力バーの残り本数を表示して
ゲームオーバー時は達成率を表示すればいいんじゃないでしょうか

>>あ、最近UPしたのにはEXTRAっていれてない・・・すみません。

そういえばEXTRAってやった事なかったですね・・
本編と同じ内容の時ならプレイしましたが・・

>>観賞用ですか? 回転地獄のときにも考えましたね。本編とは別に鑑賞用を作ってもいいかもしれません。

それならスペルプラクティスを作ってみてはどうですか?


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

Name: ひよこ  ..プログラマー(38,559ポイント)   Date: 2009/06/10(水) 17:49   No:34802     
Title: Re:また少し改良して    
ゲームオーバ時の達成率はできるかわかりませんが、
体力バーの残り本数は実装できました。

チルチルさん そういえばEXTRAってやった事なかったですね・・
>>未だに2面以上の実装ができなくて・・EXTRAはSTGの中身と同じです。

それならスペルプラクティスを作ってみてはどうですか?
>>どうつくればいいか・・・・・わかんないです。


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

Name: yu  ..プログラマー(30,401ポイント)   Date: 2009/06/10(水) 18:30   No:34812     
Title: Re:また少し改良して    
以前龍神録を元にスペルプラクティスを作ったことがあります。

自分の場合は弾幕番号を保存しておいて(メニューで選択した値を入れる)
その番号を元に弾幕を処理させました。
こうすると好きな順番でかつ、連続して弾幕を遊べるようになりましたよ。


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

Name: ひよこ  ..プログラマー(38,585ポイント)   Date: 2009/06/10(水) 22:53   No:34834     
Title: Re:また少し改良して    
自分なりに努力してみようと思います。
実行ファイルは別です。


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

Name: テヌー  ..ぴよぴよ(63ポイント)   Date: 2009/06/11(木) 01:45   No:34840     
Title: Re:また少し改良して    
あ、すみません。タイトルのほうのソースを出来れば見たいです。
タイトルの作り方を参考に出来る人がいないので・・
よろしくおねがいします><


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

Name: ひよこ  ..プログラマー(39,470ポイント)   Date: 2009/06/11(木) 13:33   No:34846     
Title: Re:また少し改良して    
タイトルのソースですか、いいですよ。
しかし絵の調整やカーソルの座標調整がたいへんですよ。参考になるならうれしいです。

void firstload(){
img_back[2] = LoadGraph("../dat/img/back/タイトル.bmp"); //最初のZキーを押してくださいの絵を表示
img_back[3] = LoadGraph("../dat/img/back/囲い.bmp"); //カーソル
img_back[4] = LoadGraph("../dat/img/back/タイトル2.bmp");//メニューの項目が描いてある絵
func_state=1;
}
int gamen=0; //最初の画面を表示するか二つ目の画面を表示するかの変数
int Hyouji=0; //カーソルの場所の変数
void tittle(){//タイトル
switch(gamen){
case 0:
DrawGraph(0,0,img_back[2],FALSE);//1枚目の絵
if(CheckStateKey(KEY_INPUT_Z)==1)gamen=1;//Zキーを押すと2枚目の絵へ
break;
case 1:
switch(Hyouji){
case 0://STGへ
DrawGraph(0,0,img_back[4],FALSE);//2枚目の絵

DrawGraph(490,220,img_back[3],TRUE);//カーソルを(490,220)の位置に表示

if(CheckStateKey(KEY_INPUT_DOWN)==1)Hyouji=1;//下キーが押されたらHyoujiを1にする(エキストラの位置へ移動)

if(CheckStateKey(KEY_INPUT_UP)==1)Hyouji=3;//上キーが押されたらHyoujiを3にする(終了の位置へ移動)

if(CheckStateKey(KEY_INPUT_Z)==1)func_state=2;//Zキーを押すとfunc_state=2になる(ロードの開始)

break;
case 1://エクストラ
DrawGraph(0,0,img_back[4],FALSE);//2枚目の絵

DrawGraph(490,280,img_back[3],TRUE);//カーソルを(490,280)の位置に表示

if(CheckStateKey(KEY_INPUT_DOWN)==1)Hyouji=2;//下キーが押されたらHyoujiを2にする(音楽の館の位置へ移動)

if(CheckStateKey(KEY_INPUT_UP)==1)Hyouji=0;//上キーが押されたらHyoujiを0にする(STGの位置へ移動)

if(CheckStateKey(KEY_INPUT_Z)==1)func_state=2;//Zキーを押すとfunc_state=2になる(ロードの開始)

break;
case 2://音楽の館
DrawGraph(0,0,img_back[4],FALSE);//2枚目の絵

DrawGraph(490,340,img_back[3],TRUE);//カーソルを(490,340)の位置に表示

if(CheckStateKey(KEY_INPUT_DOWN)==1)Hyouji=3;//下キーが押されたらHyoujiを3にする(終了の位置へ移動)

if(CheckStateKey(KEY_INPUT_UP)==1)Hyouji=1;//上キーが押されたらHyoujiを1にする(エキストラの位置へ移動)

if(CheckStateKey(KEY_INPUT_Z)==1)func_state=2;//Zキーを押すとfunc_state=2になる(ロードの開始)

break;
case 3://終了
DrawGraph(0,0,img_back[4],FALSE);//2枚目の絵

DrawGraph(490,400,img_back[3],TRUE);//カーソルを(490,400)の位置に表示

if(CheckStateKey(KEY_INPUT_DOWN)==1)Hyouji=0;//下キーが押されたらHyoujiを0にする(STGの位置へ移動)

if(CheckStateKey(KEY_INPUT_UP)==1)Hyouji=2;//上キーが押されたらHyoujiを2にする(音楽の館の位置へ移動)

if(CheckStateKey(KEY_INPUT_Z)==1)DxLib_End();//Zキーを押すと終了

break;
default:
printfDx("エラー\n");
break;
}
default:
break;
}
}


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

Name: テヌー  ..ぴよぴよ(65ポイント)   Date: 2009/06/14(日) 20:07   No:35099     
Title: Re:また少し改良して    
おおおおおおおおおおお!!なるほど!!
猛烈に感謝です!
もの凄く参考になりました!!
ありがとうございます!!

あと返信遅れてすみません><


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

Name: ひよこ  ..プログラマー(39,960ポイント)   Date: 2009/06/14(日) 20:58   No:35104     
Title: Re:また少し改良して    
テヌーさん もの凄く参考になりました!!
>>参考になってうれしいです。



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



Name: チルチル  ..プログラマー(25,713ポイント)   Date: 2009/06/13(土) 18:32   No:35019       
Title: 画像の有無を調べる?    
自重すると言っておきながら質問してしまってすいません・・

DXライブラリを使用しているのですが

画像名を引数として渡すと画像が存在するかが返ってくる関数などは無いでしょうか?


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


Name: pooka [URL]  ..初心者(5,219ポイント)   Date: 2009/06/13(土) 19:10   No:35023     
Title: Re:画像の有無を調べる?    
access関数を利用してみてはどうでしょうか?

char *fname = "test.png";
if(access(fname,0) != 0)
printf("%sは存在しません。\n",fname);

使い方としてはこんなかんじでしょうか。

参考サイト
ttp://www.orchid.co.jp/computer/cschool/CREF/access.html


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

Name: チルチル  ..プログラマー(25,738ポイント)   Date: 2009/06/13(土) 19:27   No:35026     
Title: Re:画像の有無を調べる?    
多分access関数で大丈夫だと思います

どうもありがとうございました


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

Name: チルチル  ..プログラマー(25,830ポイント)   Date: 2009/06/13(土) 22:22   No:35034     
Title: Re:画像の有無を調べる?    
と思ったんですが
access関数はどのヘッダファイルを読み込めば使えるのでしょうか?

一応自分でも「C++ access関数」とかで検索してみたのですが
書いてあるサイトが見つからなかったので・・


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

Name: ねこ  ..入門者(4,528ポイント)   Date: 2009/06/13(土) 22:46   No:35036     
Title: Re:画像の有無を調べる?    
とりあえずOpenFileかCreateFileあたりで検索してみると良いよ

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

Name: Justy  ..伝説なるハッカー(372,693ポイント)   Date: 2009/06/13(土) 22:48   No:35037     
Title: Re:画像の有無を調べる?    

>access関数はどのヘッダファイルを読み込めば使えるのでしょうか?

 VisualStudio2008なら io.hにあります。
 ただし、関数名はちょっと異なりますが。


※ ネットで見つからないなら、ヘッダを grepして探しましょう。


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

Name: tkmakwins15  ..比類無きプログラマー(97,160ポイント)   Date: 2009/06/14(日) 00:00   No:35038     
Title: Re:画像の有無を調べる?    
Windows APIを使ってもよいのなら、shlwapi.hにこんな関数があります。

BOOL PathFileExists(LPCTSTR pszPath);

↓が参考です、英語ですが。
http://msdn.microsoft.com/en-us/library/bb773584(VS.85).aspx


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

Name: チルチル  ..プログラマー(25,899ポイント)   Date: 2009/06/14(日) 00:12   No:35041     
Title: Re:画像の有無を調べる?    
OpenFileとCreateFileで検索して
「atlfile.h」と言うヘッダが見つかりましたが違ったようです・・

ちなみに「ヘッダを grep」とはどういうことでしょうか?

「Windows API」はまだ使えそうにありません・・
あと英語無理でした・・


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

Name: tkmakwins15  ..比類無きプログラマー(97,369ポイント)   Date: 2009/06/14(日) 00:24   No:35042     
Title: Re:画像の有無を調べる?    
ヘッダをgrepとは、簡単に言えば検索のことです。(UNIX系のOSでは、ファイル内テキスト検索のコマンド名はgrep。)

Windows APIは使えないと言いますが、そんなに難しくありませんよ、普通に、

#include<shlwapi.h>

を書いて、DXライブラリ関数の呼び出しと同じように、

PathFileExists("tekitou.png");

と呼び出せばいいです。戻り値がTRUEなら存在する、FALSEなら存在せずです。

後、個人的にはaccess関数は避けておいたほうがいいのではないかなと思います。<io.h>の関数は、環境への依存度が大きいからです。(PathFileExistsは、Windows APIが使えるところならば大抵使える。)


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

Name: チルチル  ..プログラマー(26,054ポイント)   Date: 2009/06/14(日) 00:38   No:35044     
Title: Re:画像の有無を調べる?    
あ〜なるほど環境への依存度も考えたほうが良いんですね

Windows APIは言語の一種か何かと思っていましたが
意外と身近なものだったんですね・・

多分これで行けると思うので試してみます

ところで少し表題からずれますが

@ヘッダファイルの中身って結構いろいろ書かれているようですが
ヘッダファイルを読み込むだけでそれなりに実行ファイルの容量が増えるのでしょうか?

ADxLib.h以外のヘッダってどこにあるんでしょうか?


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

Name: チルチル  ..プログラマー(26,089ポイント)   Date: 2009/06/14(日) 00:52   No:35048     
Title: Re:画像の有無を調べる?    
やってみたんですが

access関数を使った処理の方は見た感じ問題なく動いたのですが

PathFileExists関数を組み込んだ関数を呼び出すと

Error: 外部シンボル 'PathFileExistsA' が未解決(D:\新しいフォルダ\データ\RESISTANCE\パソコン部\AA.CPP\DEBUG\AA.OBJ が参照)

と言うエラーが出ます・・

これはどういう意味なんでしょうか・・?


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

Name: ねこ  ..入門者(4,388ポイント)   Date: 2009/06/14(日) 02:05   No:35050     
Title: Re:画像の有無を調べる?    
使ったことないから勘ですが
#pragma comment( lib, "shlwapi.lib" )
をincludeのあとに入れたらコンパイル通るかも?

基本的に未解決ってのはライブラリがリンクされていない時に出るエラーです。

<ファイル容量
当然増えます。気にする程じゃないですが。

<ヘッダの場所
適当に<math.h>とか書いて右クリックして「ドキュメントを開く」押したらタブが開くので
タブにカーソル当てたらフルパス見れますよ


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

Name: チルチル  ..プログラマー(26,110ポイント)   Date: 2009/06/14(日) 07:38   No:35054     
Title: Re:画像の有無を調べる?    
>>コンパイル通るかも?

通りました、どうもありがとうございます

>>当然増えます。気にする程じゃないですが

たしかにDxLib.hが187KB程度ですから大して増えなさそうですね

>>適当に<math.h>とか書いて

BCCでやってみましたができませんでした・・
どこに書けばいいのでしょうか?


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

Name: tkmakwins15  ..比類無きプログラマー(97,385ポイント)   Date: 2009/06/14(日) 08:24   No:35055     
Title: Re:画像の有無を調べる?    
BCCをどこにインストールしたかにもよりますが、C:\borland にインストールしたのであれば、
C:\borland\bcc55\Include
というところにあります。

後、
>Windows APIは言語の一種か何かと思っていましたが
>意外と身近なものだったんですね・・

Windows APIは、Windows本体そのもののようなものです。Windowsであれば必ず存在します。


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

Name: チルチル  ..プログラマー(26,164ポイント)   Date: 2009/06/14(日) 12:33   No:35057     
Title: Re:画像の有無を調べる?    
たしかにありますね、結構たくさんある・・

>>Windowsであれば必ず存在します

って事はWindows以外のOSだと使えないんでしょうか?


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

Name: ねこ  ..入門者(4,628ポイント)   Date: 2009/06/14(日) 13:45   No:35067     
Title: Re:画像の有無を調べる?    
<って事はWindows以外のOSだと使えないんでしょうか?
意識してないと思いますが質問の意味が広義すぎます。
Windows以外のOSで動かないといけないものを作っているのですか?

まず検索してWindows APIがどういうものか調べた後
自分にとって不都合を感じる点があったらそこに焦点を当てて再度質問して下さい。


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

Name: チルチル  ..プログラマー(26,220ポイント)   Date: 2009/06/14(日) 13:55   No:35068 解決!     
Title: Re:画像の有無を調べる?    
そういえば広義ですね
主語が抜けてる・・

とりあえず独立的な処理に使っているので
不具合が出てから直しても問題なさそうですね

では解決にしておきます

どうもありがとうございました


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

Name: yu  ..プログラマー(30,821ポイント)   Date: 2009/06/14(日) 17:56   No:35085     
Title: Re:画像の有無を調べる?    
横から入ってきてすみません;
同じ類の質問で少し気になったので・・・。

以前自分は、データがあるかないかを判定するときに
fopen関数がファイルオープンを失敗したときにNULLポインタを返してくることを利用して
そのデータの有無を判定していたのですが、
これは危険なのでしょうか?


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

Name: Justy  ..伝説なるハッカー(374,878ポイント)   Date: 2009/06/14(日) 18:54   No:35087     
Title: Re:画像の有無を調べる?    

>fopen関数がファイルオープンを失敗したときにNULLポインタを返してくることを
>利用してそのデータの有無を判定していたのですが

 fopenの戻り値ではファイルが存在するかどうかは判りません。
 判るのはそのファイルに対して読み込み・書き込みなどアクセスできるかどうか、です。

 ファイルが無ければ fopenは勿論失敗しますが、ファイルがあっても
そのファイルへのアクセス権がなかったりしても失敗します。

 具体的にはファイルに Read Only属性がついているのに書き込みモードで開こうとした場合や
セキュリティ的にアクセス権がない場合、別のスレッド・プロセスでそのファイルが
使用中である(ロックされている)場合などがあります。

 そのほか、環境的な問題や実装上の内部的な事情によっても失敗することはありますので、
(読み書きできるかどうかは関係なく)ファイルの有無だけが知りたい場合には
不適切といえますね。


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

Name: yu  ..プログラマー(30,966ポイント)   Date: 2009/06/14(日) 19:46   No:35094     
Title: Re:画像の有無を調べる?    
そういえばexcelでファイルを開いているとfopenで失敗したことがありました;

今は Windows API が使えない環境でゲームを作っていますので PathFileExists が使えません・・・

ゲームをやっているときはファイルを開いたりはしないので(環境の方もそのハードで動くだけで良いので
少々危険ですがfopenで妥協することにします

どうもありがとうございました m(_ _)m


後、こちらのほうに色々なやり方がまとめて答えてありました (fopenの方法もあって驚きました
ttp://oshiete1.goo.ne.jp/qa3399080.html


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

Name: チルチル  ..プログラマー(26,284ポイント)   Date: 2009/06/14(日) 20:38   No:35101     
Title: Re:画像の有無を調べる?    
>>fopen関数がファイルオープンを失敗したときにNULLポインタを返してくることを利用して・・

そういえば私も同じ事やってました・・

>>少々危険ですがfopenで妥協することにします

私もそうする事にします・・


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



Name: 肉9  ..ぴよぴよ(110ポイント)   Date: 2009/06/14(日) 17:44   No:35082       
Title: Javaでのfor文    
Cだとダンジョン等の2次元配列を別の二次元配列に入れる時
問題はなったのですがJavaだとコンパイルに失敗してしまいます。


    int[][] MapArray;
int[][] Map_01 = {
{0,0,0,0,0},
{0,1,2,1,0},
{0,2,2,2,0},
{0,1,2,1,0},
{0,0,0,0,0}
};

for (int i = 0; i < 5; i++){ ←ここで型が〜とエラーが出る
for (int j = 0; j < 5; j++){
MapArray[i][j] = Map_01[i][j];
}
}



なぜなんでしょうか・・・・・


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


Name: ねこ  ..入門者(4,815ポイント)   Date: 2009/06/14(日) 19:41   No:35093     
Title: Re:Javaでのfor文    
ここってJavaもOKなんでしたっけ?

「型が〜」じゃ分かんないんですが、構文上変な点は無いですし
それよりその先のメモリ確保してないMapArrayに変数入れてる方が変な気がします。


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

Name: nn  ..ぴよぴよ(636ポイント)   Date: 2009/06/14(日) 19:52   No:35097     
Title: Re:Javaでのfor文    
MapArray=new int[5][5];
をfor文の前に入れてみてはどうでしょうか?


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

Name: sizuma [URL]  ..かけだし(1,931ポイント)   Date: 2009/06/14(日) 19:57   No:35098     
Title: Re:Javaでのfor文    
>Javaも
C以外でも何でも気軽にオッケーみたいです

>メモリ確保していない
そのとおりですね。
newしないと使えないです。
javaでは

int[][] Map_01 = {

{0,0,0,0,0},

{0,1,2,1,0},

{0,2,2,2,0},

{0,1,2,1,0},

{0,0,0,0,0}

};


int [][] Map_01 = new int[5][];
int [0] Map_01 = new int[5];
int [1] Map_01 = new int[5];
:
:
:
を簡略化して書けてるものなので。

ループが配列のLengthを使ってないので、5*5が固定ならば、一番上のものを

int [][] MapArray = new int [5][5];
と書けば動くと思います


追記 
かぶりました;


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

Name: sizuma [URL]  ..かけだし(1,955ポイント)   Date: 2009/06/14(日) 20:16   No:35100     
Title: Re:Javaでのfor文    
というか先にメモリを確保してないから、Cでもコンパイルは通ってもオーバーフローする可能性があるんじゃないんでしょうか?

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



Name: nn  ..ぴよぴよ(392ポイント)   Date: 2009/06/12(金) 17:32   No:34932       
Title: long型とか・・・    
long型というのはint型が4バイトであるのにたいして、
8バイトの整数型の変数という理解のしかたでいいのでしょうか?
また、同じくshort型は2バイトの整数型の変数でいいのでしょうか?
もう1つの質問として、
long a=1000000L;
という代入文があったのですが、Lは何を表わしているのでしょうか?


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


Name: 御津凪 [URL]  ..比類無きプログラマー(93,924ポイント)   Date: 2009/06/12(金) 17:42   No:34936     
Title: Re:long型とか・・・    
多くの32bit系コンパイラは、 int 型も long 型も 4 バイトの整数型をあらわします。
printf("int型のサイズは %d バイト。\n", sizeof(int));


のようにすると簡単にサイズを調べられますよ。

> long a=1000000L;

L は 定数値が long 型である、ということを示します。(デフォルトでは int 型か左辺値に合わせられるはず)
他にも、 UL(unsigned long)、 LL(__int64 等、8バイト整数型)、ULL(unsigned __int64)、F(float)
があります。
(ちなみに小文字でもOKです)


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

Name: Mist  ..熟練のプログラマー(64,506ポイント)   Date: 2009/06/12(金) 17:47   No:34939     
Title: Re:long型とか・・・    
> long型というのはint型が4バイトであるのにたいして、
> 8バイトの整数型の変数という理解のしかたでいいのでしょうか?

違います。
char型を除いて変数の大きさは決められていません。
大小関係のみが定義されています。
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

char型は1バイトですが、その他の変数のサイズは環境によります。
現在、一般的な32bit環境では以下の通りです。

sizeof(short)=2
sizeof(int)=4
sizeof(long)=4

> long a=1000000L;

数値がlong型であることを示します。


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

Name: たかぎ [URL]  ..ハッカー(104,823ポイント)   Date: 2009/06/12(金) 18:37   No:34948     
Title: Re:long型とか・・・    
char型は常に1バイトですが、それが何ビットであるかは処理系に依存します。

> Lは何を表わしているのでしょうか?

少なくともlong型以上であることを表します。
C90およびC++と、C90では振る舞いが微妙に異なるので要注意です。

C90/C++では、Lを付加した整数定数がlong型の表現範囲であればlong型に、そうでなければunsigned long型になります。
C90では、Lを付加した10進整数定数がlong型の表現範囲であればlong型に、long long型の表現範囲であればlong long型に、そうでなければunsigned long long型になります。8進または16進整数定数の場合、long型の表現範囲であればlong型に、unsigned long型の表現範囲であればunsigned long型に、long long型の表現範囲であればlong long型に、そうでなければunsigned long long型になります。


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

Name: nn  ..ぴよぴよ(508ポイント)   Date: 2009/06/12(金) 20:33   No:34961     
Title: Re:long型とか・・・    
回答ありがとうございます。
long a=100000L;と書かなければ、aはint型として扱われるということでしょうか。
long型というのはintより大きい数字が入れられるものと思っていたのですが、
sizeofで同じ4バイトということはlongの存在意義がいまいちわかりません。
Javaなんかではlong型を返すメソッドもあるくらいなので意味はあると思うのですが、
longの存在意義は何なのでしょうか?


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

Name: ねこ  ..入門者(4,220ポイント)   Date: 2009/06/12(金) 20:46   No:34964     
Title: Re:long型とか・・・    
他の方のレスの中にもちらほらありますが
int型が4バイトなのは32ビット環境の場合になります。
今はもうほとんど無いと思いますが16ビット環境だと2バイトになります。
int型は環境によってサイズが可変するという事です。

現状では違いが無いためあまり意識されませんが
-32768〜32767の範囲ならint型、それを超える範囲ならlong型を使って
「格納する値の範囲」を明示する意味合い程度はあります。

<long a=100000L;と書かなければ、aはint型として扱われるということでしょうか。
うろ覚えですが確か何も書かない時はlongだったような・・・
int型を引数にしていて直値(1000000とか)で引数に指定すると警告出た気がします。


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

Name: sizuma [URL]  ..かけだし(1,457ポイント)   Date: 2009/06/12(金) 21:56   No:34969     
Title: Re:long型とか・・・    
javaではlong型は64ビットです。

>long
大きな数字を扱うときに使うかも?Javaでは。
32ビットは20億ぐらいでしたか。叶姉妹が使うおこずかい管理プログラムを作るときは使えそうですね。
僕はlong型使ったことないですが・・・



追記
誤植を一部訂正しました。


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

Name: たかぎ [URL]  ..ハッカー(104,999ポイント)   Date: 2009/06/12(金) 22:22   No:34972     
Title: Re:long型とか・・・    
> long a=100000L;と書かなければ、aはint型として扱われるということでしょうか。

100000Lではなく100000と書いた場合、この定数がint型になるかlong型になるかは処理系によります。
それに関わらず、aはlong型として宣言していますのでlong型になります。
整数定数がどんな型になるかは、
http://www.kijineko.co.jp/tech/creintro/size-of-int.html
を参照してください。

ちなみに、int型が16ビットの処理系は今でも普通にあります。
PCだけを見ていると分からないかもしれませんが...

> long型というのはintより大きい数字が入れられるものと思っていたのですが、

処理系によります。int型が32ビットでlong型が64ビットもありますので。
また、C++の場合、サイズが同じでも異なる型ですので、多重定義が可能になります。


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

Name: toyo  ..プログラマー(36,122ポイント)   Date: 2009/06/13(土) 12:32   No:34998     
Title: Re:long型とか・・・    
>longの存在意義は何なのでしょうか?
http://www.kouno.jp/home/c_faq/c1.html
から引用
--------------------------------------------
どの整数型を使えばよいか、どうやって決めればよいか。

A:
大きな値(32767より大きな値か、-32767より小さい値)が必要なら longを使う。もしメモリの効率を気にするなら(例:大きな配列がある とか構造体がたくさんあるなど)shortを使う。どうでもいいならint を使う。オーバーフローの時の性質の明確なことが大事で負の値が不 要なら、対応する符号なしの整数を使え(ただし符号付と符号なしの 整数の混在には注意すること)。
--------------------------------------------


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

Name: nn  ..ぴよぴよ(616ポイント)   Date: 2009/06/14(日) 19:49   No:35096 解決!     
Title: Re:long型とか・・・    
うやむやにしていた部分が解決できました。
環境や言語によって多少違いがあるみたいですが、
intとlongの違いがわかりました。
メモリー効率などまだそんなことを気にしてプログラムを組む
レベルではないのですが、頭に入れておきながら今後も取り組んで
行きたいと思います。ありがとうございました。


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



Name: YES  ..ぴよぴよ(6ポイント)   Date: 2009/06/14(日) 00:01   No:35039       
Title: Process Message    
疑問なんですが、if(Process Message()!=0) break;
ってどういう意味ですか? 


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


Name: conio  ..上級者(21,968ポイント)   Date: 2009/06/14(日) 00:26   No:35043     
Title: Re:Process Message    
ProcessMessage関数は、ウィンドウのメッセージを処理する関数です。

戻り値は、
成功の場合は0
エラーが発生した場合は−1 が返るようになっています。


上記のif文は、
ProcessMessage関数の戻り値が0でなければbreak、つまり
「ウィンドウのメッセージ処理でエラーが発生したらbreakする」
という意味です。

------------------------------------------------------------
DXライブラリの、関数リファレンスページの上の方に載っています。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html#R1N3
------------------------------------------------------------


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

Name: hume  ..ぴよぴよ(289ポイント)   Date: 2009/06/14(日) 06:42   No:35053     
Title: Re:Process Message    

ありがとうございます。


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

Name: YES  ..ぴよぴよ(13ポイント)   Date: 2009/06/14(日) 17:51   No:35084 解決!     
Title: Re:Process Message    
ありがとうございます。

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



Name: hume  ..ぴよぴよ(85ポイント)   Date: 2009/06/13(土) 19:11   No:35024       
Title: はじめの一歩    
1・DxLib_VCの保存場所とかはどうでもいいんですか?
2・プロジェクトは毎回作るのですか?
3・2を含めて手順を教えてください><(わからない理由:Dxの最初の設定のあとにソースファイルの説明?がありますが設定の方法で作ると説明のときの画像がデバックできません。)
4・結果的に画像系列のことがすべてできません。
よろしくおねがいします。
os:vista コンパイラ:vc


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


Name: hume  ..ぴよぴよ(297ポイント)   Date: 2009/06/13(土) 20:30   No:35029     
Title: Re:はじめの一歩    
画像の使うものだけをプロジェクトに入れたらできました。(2枚なら2回保存場所からVCプロジェクトに)

このやり方はあっていますか?
またはもっといい方法があるなら教えてください。
よろしくおねがいします。


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

Name: Justy  ..伝説なるハッカー(374,828ポイント)   Date: 2009/06/14(日) 15:25   No:35070     
Title: Re:はじめの一歩    

>DxLib_VCの保存場所とかはどうでもいいんですか?

 読みだし可能なところならどこでもいいです。



>プロジェクトは毎回作るのですか?

 作るのが望ましいですが、似たような構成であるなら
既存のプロジェクトをコピーしても“さほど”問題はありません。



>このやり方はあっていますか?
>またはもっといい方法があるなら教えてください

 合っている合っていないということでしたら、合ってます。
 動いているわけですから。
 
 ただ、まぁ、プロジェクトファイル(.vcproj)のあるディレクトリに
ソースとか画像などのアプリから読み書きするデータを置くのは
個人的にはあまりお勧めできません。

 理由はディレクトリの構成として“汚い”からです。


 どこかそういうデータを置くディレクトリを決めた上で、プロジェクトのプロパティの中の
「構成プロパティ -> デバッグ」の“作業ディレクトリ”にそのディレクトリの
パス(相対でも絶対でもどちらでもOK)を入れることをお勧めします。

 現状この項目は空になっていると思いますが、これを設定しておくと、VisualStudioから
デバッグ実行した際のカレントディレクトリがこの指定したディレクトリになります。

 例えば

+ project
  + bin
  + data
    - xxx.bmp
  + source
    - main.cpp
    - hoge.cpp
  - game.sln
  - game.vcproj

 のような構成で、画像データを dataディレクトリに入れるなら、
作業ディレクトリとして"data"と入れれば、そのディレクトリをカレントとみなすので、
プログラムからは "xxx.bmp"とか "./xxx.bmp"のパスで読み出せます。


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

Name: hume  ..ぴよぴよ(171ポイント)   Date: 2009/06/14(日) 17:15   No:35077     
Title: Re:はじめの一歩    
おお!できました。
わかりやすい回答ありがとうございます^^。

もしよければもう一つききたいのですが、自分は作業ディレクトリにサンプル実行用フォルダを指定したのですが、これは複数回指定できますか?

わかりにくい言い方かもしれないので、言い換えますと複数のプロジェクトまたはファイルに同じパスを指定できますか?と言いたかったです。


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

Name: Justy  ..伝説なるハッカー(374,737ポイント)   Date: 2009/06/14(日) 17:25   No:35080     
Title: Re:はじめの一歩    

>複数のプロジェクトまたはファイルに同じパスを指定できますか

 可能です。
 というか1プロジェクトのビルド構成毎(標準であれば Debugとか Releaseとか)にも
変えられます。


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

Name: hume  ..ぴよぴよ(190ポイント)   Date: 2009/06/14(日) 17:49   No:35083 解決!     
Title: Re:はじめの一歩    
なるほど。
ありがとうございました。


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



Name: tieria  ..かけだし(2,433ポイント)   Date: 2009/06/13(土) 21:58   No:35030       
Title: 無題    
またまた初心者の質問で申し訳ありません

/* sample.c */
#include <stdio.h>
int main(void)
{
printf("\x1b[4;31m");
printf("どうです色が変わってアンダーライン"
"もついたでしょう!\n");
return 0;
}

これを実行すると
(何かEnter Keyの印...折れて左を指している矢印)[4;31mどうです色が変わってアンダーラインもついたでしょう!
と表示されるだけで、色も変わらず、アンダーラインもつきません
 一体何がいけませんか?
自分でしらべて、ANSI.SISを組み込んでいないからか?CONFIG.NTにdevice=%SystemRoot%\system32\ansi.sysと
意味もわからず書き込んでみたり・・・
 まったくわかりません

コンパイラー Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
OS      Vista Home Edition

設定が悪いんでしょうか? よろしくお願いします


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


Name: たいちう  ..プログラマー(31,938ポイント)   Date: 2009/06/13(土) 22:12   No:35033     
Title: Re:無題    
その方法はWin95やWin98で有効です。
↓こっちの方法を試してください。
http://www.kumei.ne.jp/c_lang/intro/no_58.htm

# 無題はやめよう


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

Name: tieria  ..かけだし(2,259ポイント)   Date: 2009/06/13(土) 22:36   No:35035     
Title: エスケープシケンスについて    
たいちう さん、ありがとうございます
無題をやめて変えました すいません

やっぱりだめだったんですね
早速試したところ、OKでした
ありがとうございます でも難しそうですね 勉強します

他のエスケープシーケンスもだめですか?
もう一個だけ使いたいのがあるのですが・・・

("\x1b[2J"); //画面クリア

です。ググってはいるのですが 参考URLとかあればお願いします

ちなみに今思ったのですが、C言語を勉強するには、Win98とかの方がいいんでしょうか?


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

Name: たいちう  ..プログラマー(31,997ポイント)   Date: 2009/06/14(日) 00:42   No:35047     
Title: Re:エスケープシケンスについて    
> ちなみに今思ったのですが、C言語を勉強するには、Win98とかの方がいいんでしょうか?

違います。OSの問題ではなくHPの問題です。
猫でも...のHPは非常に有名なサイトで、私も大変お世話になりましたが、
古いコンテンツも多く、当時のOSでのみ動作するプログラムも一部あるのです。

とはいえ10年以上人気の続いているサイトは、その事実だけでも大変良質といえるでしょうから、
猫でも...で、C言語を勉強するのはベストな選択のひとつだと思います。
(私も今でもお世話になることがあります)
但し、一部の機能等が時代遅れになってしまっている可能性にだけ留意しましょう。

疑問に感じる点があれば、"自分自身でできることは終えた上で"、猫でも...の
管理人さんや、この掲示板に質問すれば良いと思います。
それが煩わしいなら、最新のOS(XPやVista等)に完全に対応していそうな
新しい入門サイトを探すのが良いでしょう。


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

Name: tieria  ..かけだし(2,190ポイント)   Date: 2009/06/14(日) 17:06   No:35076 解決!     
Title: Re:エスケープシケンスについて    
 遅くなりました
猫でも...は10年以上も続いているんですね・・・

すごいです

勉強させていただきました ありがとうございました


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



Name: tkmakwins15  ..比類無きプログラマー(96,699ポイント)   Date: 2009/06/13(土) 14:59   No:35011       
Title: VC2005プロジェクトの文字コード設定    
VC2005で、ソースファイルにUTF-8(BOMなし)を扱いたいのですが、ソースファイルの文字コードを指定する方法はあるでしょうか?

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


Name: tkmakwins15  ..比類無きプログラマー(96,966ポイント)   Date: 2009/06/13(土) 15:36   No:35012     
Title: Re:VC2005プロジェクトの文字コード設定    
適当なプロジェクトをたて、utf-8(BOMなし)をコンパイルした結果です。

#include<iostream>

int main()
{
std::cout<<"テストです 漢字も入れます"<<std::endl;
std::cout<<"This is Alphabet"<<std::endl;
return 0;
}

1>------ ビルド開始: プロジェクト: scuni, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.cpp
1>d:\programings\visualstudio\c++ native\scuni\scuni\main.cpp : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
1>d:\programings\visualstudio\c++ native\scuni\scuni\main.cpp(5) : error C2001: 定数が 2 行目に続いています。
1>d:\programings\visualstudio\c++ native\scuni\scuni\main.cpp(6) : error C2143: 構文エラー : ';' が 'std::cout' の前にありません。
1>ビルドログは "file://d:\Programings\VisualStudio\C++ Native\scuni\scuni\Debug\BuildLog.htm" に保存されました。
1>scuni - エラー 2、警告 1


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

Name: Justy  ..伝説なるハッカー(373,552ポイント)   Date: 2009/06/14(日) 01:29   No:35049     
Title: Re:VC2005プロジェクトの文字コード設定    

>ソースファイルの文字コードを指定する方法はあるでしょうか?

 多分ないと思います。
 MSVCでは UTF-8(BOMなし)はシフトJISと認識されてしまいますので、
BOMありにするしかないんじゃないかと。


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

Name: tkmakwins15  ..比類無きプログラマー(97,469ポイント)   Date: 2009/06/14(日) 08:32   No:35056     
Title: Re:VC2005プロジェクトの文字コード設定    
ありがとうございます。
BOMなしでは無理でしたか…、GCCではBOMありではコンパイルが通らなくなってしまうんですよね…

ソースコードのunicode化を進めていきたかったのですが…、かといってutf-16にしてしまうと、ソースコードの性質上半角英数が多いのでサイズが馬鹿みたいに増えていくんですよね…

そもそも、ソースコードをUnicodeにすることって推進すべきでしょうか?それともやめとくべきでしょうか?


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

Name: Justy  ..伝説なるハッカー(373,683ポイント)   Date: 2009/06/14(日) 12:58   No:35062     
Title: Re:VC2005プロジェクトの文字コード設定    
 うーん、そういうことなら多少サイズが大きくなってもUTF-16にするか
諦めて従来の文字コードにするしかないでしょうね。

 或いはビルド前のイベント・バッチで文字コードを変換してから
ビルドする、とか。



>推進すべきでしょうか
>それともやめとくべきでしょうか

 世の中的には推進方向なんでしょうけど、こういうのは環境や状況に合わせて
ケースバイケースで決めないといろいろ苦労しそうです。

 今回は特定のバージョンの2コンパイラのみの対応で、
UTF-16でうまくいっているのであれば、UTF-16でいいと思います。


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

Name: tkmakwins15  ..比類無きプログラマー(97,705ポイント)   Date: 2009/06/14(日) 16:37   No:35074 解決!     
Title: Re:VC2005プロジェクトの文字コード設定    
>世の中的には推進方向なんでしょうけど、こういうのは環境や状況に合わせて
>ケースバイケースで決めないといろいろ苦労しそうです。

とりあえず、今回作成中のソフト(とは言っても単なるバージョンアップ)は、将来の本格的なプロジェクトに向けた、テストも兼ねてやっています。
今回はBOM付utf-8で作成します。ATL/WTL使っていますし、今回はVCのみの対応でもさほど問題なさそうなので…


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



Name: Tatu  ..入門者(2,866ポイント)   Date: 2009/06/12(金) 19:39   No:34954       
Title: 「東方靈異伝」のようなゲームを作ってみました    
このゲームのタイトルは「星と陰陽玉」で、
東方靈異伝のようなブロック崩しゲームです。

1回のプレイ時間は30分ぐらいになると思います。

ダウンロードはこちらからどうぞ。
パスワードは hoshi です。
http://apple.mokuren.ne.jp/loader_7/apple_7.cgi?mode=dl&file=903


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


Name: こめかみ  ..熟練のプログラマー(48,496ポイント)   Date: 2009/06/12(金) 21:05   No:34966     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
へー、東方旧作ってどれも一度もやったこと無いです。ワクテカ
三十分ぐらいならやってみようかな。


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

Name: こめかみ  ..熟練のプログラマー(48,604ポイント)   Date: 2009/06/12(金) 22:19   No:34970     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
一時間くらいカカタヨ ort
イージーしかやってなませんがなかなか難しいですね。(w

制作お疲れ様でした。
すっかり変形ブロック崩しな気分でいたら、
ボスのまさかの弾幕に東方風のゲームであることを思い出しました。(w


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

Name: kazuoni [URL]  ..比類無きプログラマー(91,934ポイント)   Date: 2009/06/13(土) 08:45   No:34986     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
いやー。目が痛い。w
完成度高いですね^^
まさか、ブロックから弾が出てくる・・・

そんでもって、それが打ち返せる・・・w

ナイス発想な気がします。

ただ、一度無限に玉が戻ってこない所に入ったことがありました。
画像アップしときます。

制作お疲れ様でした!


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,027,803ポイント)   Date: 2009/06/13(土) 08:58   No:34988     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
お〜面白いですね^^
しかも動きが滑らかで本格的でした。
また作ってみたくなりm(ry

>kazuoniさん

私もそこに挟まりました^^;


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

Name: yu  ..プログラマー(30,597ポイント)   Date: 2009/06/13(土) 09:09   No:34989     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
やってみました〜。

完成度が高く素晴らしいです。
当たり判定も良くできていました。

かなり再現できていると思いますし、
オリジナルのものもとても面白かったです。

最後でボス戦があって驚きましたw

制作お疲れ様でした


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

Name: Tatu  ..入門者(3,119ポイント)   Date: 2009/06/13(土) 10:22   No:34991     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
皆さんプレイしてくださってありがとうございます。

>>こめかみさん
>>一時間くらいカカタヨ 

すみません。テストプレイで自分が慣れているということを
考えに入れるのを忘れていました。

>>kazuoniさん
>>ナイス発想な気がします。

ブロックの撃ち返しがあるのと
弾をはじくことができるのは
東方靈異伝でも同じです。
本当にいい発想だと思います。

>>ただ、一度無限に玉が戻ってこない所に入ったことがありました。

私もテストプレイ時にそのような状態になったことが何度か
ありましたが、ショットを何発撃っても落ちてこないと
いうことはありませんでした。
ショットを撃っても落ちてきませんでしたか?

>>Dixq(管理人) さん
>>また作ってみたくなりm(ry

次の作品を期待s(ry

>>yuさん
>>当たり判定も良くできていました。

kazuoniさんとDixq(管理人)さんの書いた通りの現象は起きますが、
そう言っていただいてありがとうございます。


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

Name: やっくん  ..入門者(3,370ポイント)   Date: 2009/06/13(土) 14:47   No:35010     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
製作おつかれさまです

プレイさせていただきました。

自分は何回も陰陽玉にあたってしまい・・・。

ショットと回転を上手く使い分けるのが難しかったけれど、
今までにやったことのないブロック崩しで面白かったです^^


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

Name: ひよこ  ..プログラマー(39,652ポイント)   Date: 2009/06/13(土) 18:20   No:35018     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
陰陽玉にたくさんやられちゃいました。
難しいのですが楽しいです。
ルールがシンプルでいいですね。
回転で陰陽玉にあたったときにもう少し高く跳んでくれるとうれしいです(EASYだけでも
制作お疲れ様でした。


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

Name: Tatu  ..入門者(3,267ポイント)   Date: 2009/06/14(日) 00:38   No:35045     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
>>やっくん さん
>>自分は何回も陰陽玉にあたってしまい・・・。

私も陰陽玉にやられることがたくさんあります。

>>ひよこ さん
>>回転で陰陽玉にあたったときにもう少し高く跳んでくれるとうれしいです(EASYだけでも

陰陽玉を引きつけてからはじくと高く飛ぶようになっています。
今のところ、玉をとばす高さを変えるつもりはありません。
仮に変更することがあるとしたら、そのときはすべての難易度で変えます。


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

Name: Mato  ..ぴよぴよ(793ポイント)   Date: 2009/06/14(日) 15:48   No:35071     
Title: Re:「東方靈異伝」のようなゲームを作ってみました    
すごく靈を再現されてますねっ。
かなりの再現度だと思います。
こんなに出来るなんて、すごいですよ!


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



Name: クロウ  ..初心者(7,051ポイント)   Date: 2009/06/10(水) 00:02   No:34770       
Title: 敵を動かす    
歩くマインスイーパで、敵を出そうとしているのですが、
出した敵が一回動いたきりで固まってしまっています。
敵を動かす部分を載せましたので、どうすれば正しく動くようになるかアドバイスをお願いします。
敵の動かし方は「ランダムに向きを決定し、一マス動かす」で、当たり判定等はクリアしていると見てください。



void enemyChangeVector(int Num){//敵キャラの向きを変える
enemyData[Num].vector = GetRand(100)%4;//向きをかえる
}



void enemyMoveFlag(int Num){//敵の動きフラグ



if(enemyData[Num].true_X%16 ==0 && enemyData[Num].true_Y%16 == 0){

enemyData[Num].walking_flag = true; //歩くフラグを立てる。

if(enemyData[Num].walking_flag == true) //もし歩くとき
{
if(enemy_Can_Or_Cannot(enemyData[Num].vector, Num) == true
|| enemy_checkHigh(enemyData[Num].vector , Num) == true
|| enemy_searchMine(enemyData[Num].vector , Num) == false)//行き先が歩けなかったら
{
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。
}

}
}

}

int actionPattern = changeVector;

void enemyMove(int Num){

if(enemyData[Num].walking_flag == true){//歩くフラグが立っていたら
if(enemyData[Num].vector == up) //上向きならenemyData[Num].true_Y座標を減らす
{
enemyData[Num].true_Y-= 16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。

}
else if(enemyData[Num].vector == left) //左向きならenemyData[Num].true_Y座標を減らす
{
enemyData[Num].true_X -=16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。

}
else if(enemyData[Num].vector == down) //下向きならenemyData[Num].true_Y座標を増やす
{
enemyData[Num].true_Y +=16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。

}
else if(enemyData[Num].vector == right) //右向きならenemyData[Num].true_Y座標を増やす
{
enemyData[Num].true_X += 16;
enemyData[Num].walking_flag = false;//歩かないフラグを立てる。

}
}

}
int Num = 0;//敵のナンバー

void enemyActionMain(){
if(timer() % 50 == 0){//50フレームに一度
if(enemyData[Num].life == 0){//ライフが0になったら
enemyData[Num].alive = false;//死亡
}

if(Num < CHARAMAX){//キャラの最大数を下回っていたら
}
else{//上回っていたら
Num = 0;//戻す
}
if(enemyData[Num].alive == true){//生きていたら動かす
switch(actionPattern){
case changeVector:

enemyChangeVector(Num);

actionPattern = move;

break;

case move:

enemyMoveFlag(Num);
enemyMove(Num);
actionPattern = changeVector;
Num++;//敵番号をインクリメント

break;

}
}
}

}


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


Name: ねこ  ..かけだし(2,102ポイント)   Date: 2009/06/10(水) 12:52   No:34784     
Title: Re:敵を動かす    
動かなくなりそうなソース内部が分からないので何とも言えないですが

<1>
if(enemy_Can_Or_Cannot(enemyData[Num].vector, Num) == true
|| enemy_checkHigh(enemyData[Num].vector , Num) == true
|| enemy_searchMine(enemyData[Num].vector , Num) == false ) //行き先が歩けなかったら

<2>
if( timer() % 50 == 0 )

<3>
if( enemyData[Num].alive == true ){//生きていたら動かす

このあたりのIF文でブレイクをかけて「どこで思った通りの動きをしていないか」を探ってみると良いかもしれないですよ


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

Name: クロウ  ..初心者(7,088ポイント)   Date: 2009/06/14(日) 13:37   No:35066 解決!     
Title: Re:敵を動かす    
アドバイス通りにあちこちでbreakをかけてみた結果、原因がわかりました。
敵が生きていたら回るswitch文の中でNumをインクリメントしていたため、存在していない敵以降ではNumが回らず動かない。
というものです。
あと、actionpaternがグローバルにあったため、敵の数が偶数だと一方の敵は動くだけ、もう一方の敵は向きを変えるだけとなってしまっていました。

アドバイスありがとうございます。


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



Name: だんご  ..ぴよぴよ(179ポイント)   Date: 2009/06/14(日) 12:37   No:35058       
Title: 更新不要になる    
Visual C++ 2008 で、プログラムを書いて、F7キーでビルドしようとすると

========== ビルド: 0 正常終了、0 失敗、1 更新不要、0 スキップ ==========

と出て、コンパイルしてくれません。
さっきまで今まで通りできていたのに、突然こうなってしまいました。
何か変なキーでも押してしまったのでしょうか?
それなりにネットで検索してみましたが、原因不明です…。
誰か教えてください。


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


Name: MNS  ..中級者(9,657ポイント)   Date: 2009/06/14(日) 12:46   No:35060     
Title: Re:更新不要になる    
Ctrl + Alt + F7 でリビルドしてみてください

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

Name: だんご  ..ぴよぴよ(48ポイント)   Date: 2009/06/14(日) 13:28   No:35065 解決!     
Title: Re:更新不要になる    
リビルドというものを知らなかったです。
ありがとうございました。

リビルドしてみた結果、「外部シンボルが未解決です」といった
エラーが出ましたが、「既存項目の追加」をしたら解決しました。

プログラムも無事動きました。
お騒がせしました。m(_ _)m


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



Name: アロアロ  ..ぴよぴよ(66ポイント)   Date: 2009/06/14(日) 12:45   No:35059       
Title: 格ゲー    
私は、C言語を使って格闘ゲームを作ろうとしています。
それは可能なのでしょうか?
また、本格的な格闘ゲームを作成できる
ソフトみたいなものがあれば教えてください


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


Name: yu  ..プログラマー(30,674ポイント)   Date: 2009/06/14(日) 12:54   No:35061     
Title: Re:格ゲー    
>可能なのでしょうか?

可能ですが
いきなり格闘ゲームを作成するのは敷居が高いように思います・・・。


>ソフトみたいなもの

あまり良く知りませんが mugen というゲームエンジンがあった気がします。


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +