|
Name: エデリュス ..ぴよぴよ(207ポイント)
Date: 2009/03/16(月) 14:48
No:30815
|
|
Title: STGプログラミングについて
|
|
ゲームプログラミングを全部読んだのですが
・1面以上増やす場合どうすればよいか?
・多くのボスを描写するにはどうすればいいのか?
・敵が極太レーザーを撃つにはどうすればよいか?
の三つがよくわかりません。
どなたか教えていだたけませんか?
お願いします。
121ポイント を手に入れた。
|
|
|
|
Name: 朽木 ..入門者(4,943ポイント)
Date: 2009/03/16(月) 15:24
No:30816
|
|
Title: Re:STGプログラミングについて
|
|
とりあえず、自分で「こうなんじゃないかな〜」て考えている事はありますか?
21ポイント を手に入れた。
|
|
|
|
|
Name: エデリュス ..ぴよぴよ(535ポイント)
Date: 2009/03/16(月) 15:47
No:30818
|
|
Title: Re:STGプログラミングについて
|
|
レーザーと面については考えたことがあります。
ただ単純に太いレーザーを表示したことはありますが「放たれた」って感じがあまりなかったです。
面についてはできている1面をベースにコピーして増やしたことはありますがボスを倒す→スコア画面→二面が始まるができず・・・
ボス描写はまるっきりわかりません。
やはり自分で試行錯誤しながらやるべきなんでしょうか?
2倍のポイントを手に入れた! 328ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(5,079ポイント)
Date: 2009/03/16(月) 16:32
No:30820
|
|
Title: Re:STGプログラミングについて
|
|
とってもシンプルなのが、通常の敵と同じように扱ってしまうことでしょうか。
struct 敵情報 {
/* HPなどの敵情報 */
struct 特殊フラグ {
bool ViewLife; /* HPゲージを表示するかしないか */
void ( *DiedFunc)(適当な引数の型); /* 死んだ時に実行する関数(進行管理に終了を設定するなど) */
}
}
あと、基本ですが、フローチャートを書いてみる、というのも良いかもしれません。
136ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..ウィザード(1,010,289ポイント)
Date: 2009/03/16(月) 16:41
No:30823
|
|
Title: Re:STGプログラミングについて
|
|
お読みになったのは龍神録プログラミングの館でしょうか?
レーザーの作り方についてはそちらに書いてあるのでよければ参考にして下さい。
太くする方法もすぐわかります。
また、ボスについても、わざと増やしやすいように
boss_t boss;
のように宣言してあり、増やした時に計算もしやすくしてありますので
boss_t boss[2];
みたいに用意すれば2体出現させることが出来ます。
for文などちょこちょこ変えないといけないところはありますが。
とりあえず土台が何かを教えてもらった方が回答し易いと思います。龍神録の館でしょうか?
243ポイント を落としてしまった。
|
|
|
|
|
Name: hss12 ..初心者(7,624ポイント)
Date: 2009/03/16(月) 16:47
No:30826
|
|
Title: Re:STGプログラミングについて
|
|
ステージに関してはswitch文を使うのが一般的です。
ゲームプログラミングの館の34節ですね。
ステージ1、ボス1、スコア、などと分ければできます。
数字だと分かりにくいので、defineやenumで宣言すると良いです。
enum{TITLE,STAGE1,BOSS1,SCORE,STAGE2,BOSS2};
などと。
レーザーはパターン画像を順番に表示してって感じでしょうか。
昔のシューティングに良くあったので研究してみると良いと思います。
敵が撃つのなら予兆があると良いですね。
ボスの描写は質問の意味が分かりません。
233ポイント を手に入れた。
|
|
|
|
|
Name: エデリュス ..ぴよぴよ(694ポイント)
Date: 2009/03/17(火) 14:17
No:30883
|
|
Title: Re:STGプログラミングについて
|
|
返信遅れてすみません。
>朽木様
なるほど・・・普通の敵として表示するというのは気づきませんでした。早速やってみたいと思います。
>Dixq (管理人)様
龍神録プログラミングの館の方を読みました。レーザーというよりは魔理沙のマスタースパークのようなもので
すのでhss12様の方法でやってみたいと思います。
>hss12様
ステージ、レーザーに関しての説明ありがとうございます。ボスの描写は説明不足でした。要するにボスを途中で変化させたり2対1のようにしたいということです。
PS
プログラミングの館を読み返してみましたがやっぱりできません。34節をどこに入れるべきですか?
159ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(7,981ポイント)
Date: 2009/03/17(火) 18:53
No:30903
|
|
Title: Re:STGプログラミングについて
|
|
どこといわれてもそのままだと思いますが。
#define TITLE 0
#define STAGE1 1
#define SCORE1 2
#define STAGE2 3
#define SCORE2 4
とでもしておいて
whileの中に
switch(state){
case TITLE:
//タイトル画面の処理
state=STAGE1;
break;
case STAGE1:
//ステージ1の処理
if(クリア)state=SCORE1;
break;
case SCORE1:
//スコア表示
state=STAGE2;
break;
case STAGE2:
//ステージ2の処理
if(クリア)state=SCORE2;
break;
case SCORE2:
//スコア表示
state=TITLE;
break;
default:
DxLib_End() ;
return 0;
break;
}
のような感じでいけませんか。工夫すればスコアは1つですみそうですが。
ボスを途中で変化させるなら、同じようにswitchでいけそうですね。
217ポイント を手に入れた。
|
|
|
|
|
Name: conio [URL] ..中級者(12,328ポイント)
Date: 2009/03/17(火) 19:09
No:30905
|
|
Title: Re:STGプログラミングについて
|
|
caseが増えると列挙体の方が便利かもしれませんね。
こういう風にしても良いと思います。
enum StateID{
TITLE,
STAGE1,
SCORE1,
STAGE2,
SCORE2
};
StateID state = TITLE;
switch(state){
case TITLE:
//以下略
}
111ポイント を手に入れた。
|
|
|
|
|
Name: エデリュス ..ぴよぴよ(730ポイント)
Date: 2009/03/17(火) 19:53
No:30915
|
|
Title: Re:STGプログラミングについて
|
|
hss12様、conio様
ありがとうございます
一応mainに入れてみましたが「定義されていない識別子」と言われ実行できません。
36ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(8,038ポイント)
Date: 2009/03/17(火) 20:04
No:30917
|
|
Title: Re:STGプログラミングについて
|
|
定義されていないのだと思いますが、それではわかりません。
何行目とか、何が定義されていないとか書いていないですか?
57ポイント を手に入れた。
|
|
|
|
|
Name: conio [URL] ..中級者(12,376ポイント)
Date: 2009/03/17(火) 20:14
No:30918
|
|
Title: Re:STGプログラミングについて
|
|
hss12さんの方はstateの変数を省略してあるので、それが原因でしょうか。
int state = TITLE;
みたいな。
あとはスペルミスなどの可能性もあるかもしれません。
48ポイント を手に入れた。
|
|
|
|
|
Name: エデリュス ..ぴよぴよ(804ポイント)
Date: 2009/03/17(火) 20:27
No:30920
|
|
Title: Re:STGプログラミングについて
|
|
出てきたのは
「1>c:\users\rpg\desktop\project\AA\mydat\source\main.cpp(24) : error C2065: 'state' : 定義されていない識別子です。」
と
「1>c:\users\rpg\desktop\project\AA\mydat\source\main.cpp(28) : 'state' の宣言を確認してください。」
です。
74ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(8,085ポイント)
Date: 2009/03/17(火) 21:18
No:30929
|
|
Title: Re:STGプログラミングについて
|
|
宣言と定義の違いは他の方にまかせるとして
int state = TITLE;
と書けば宣言と定義、両方やっていることになるのかなと思います。
47ポイント を手に入れた。
|
|
|
|
|
Name: はね ..初心者(8,729ポイント)
Date: 2009/03/17(火) 21:46
No:30931
|
|
Title: Re:STGプログラミングについて
|
|
レーザーについてですが、解決済みかもしれませんが
マスタースパークなら
if(敵x座標<自機X座標+レーザー幅の半分 && 敵x座標>自機X座標-レーザー幅の半分){}
みたいな簡単な処理でできそうですね。
数式でやるならば
if( (敵X-自機X)^2 <レーザー幅の半分^2 ){}
でできますね。
紅魔卿しかやったことないですがマスタースパークってこんなだったような。
30ポイント を手に入れた。
|
|
|
|
|
Name: conio ..中級者(12,673ポイント)
Date: 2009/03/17(火) 21:49
No:30932
|
|
Title: Re:STGプログラミングについて
|
|
宣言と定義は違いますよ。関数の場合はこんな感じです。
int Sum( int a, int b); //宣言
int Sum( int a, int b) //定義
{
return ( a + b );
}
で、変数の場合は 定義=宣言も兼ねている なので、定義すれば上記のエラーや警告は消えると思います。
宣言だけを行いたい場合は"extern"を使います。
int x; //宣言&定義
extern int x; //定義ではない宣言
【定義】名前(識別子)が宣言されて,実際にメモリ領域を割り当てる.
【宣言】名前(識別子)が宣言されるだけで,メモリ領域は割り当てない.
264ポイント を手に入れた。
|
|
|
|
|
Name: yu [URL] ..上級者(21,953ポイント)
Date: 2009/03/17(火) 22:00
No:30934
|
|
Title: Re:STGプログラミングについて
|
|
>>はね様
>if(敵x座標<自機X座標+レーザー幅の半分 && 敵x座標>自機X座標-レーザー幅の半分){}
言わなくていいことかもしれませんが・・・すみませんm(_ _;)m
これだと自機の後ろでもレーザーが当たってしまうような
自分も紅魔卿イメージです。
if(敵x座標<自機X座標+レーザー幅の半分 && 敵x座標>自機X座標-レーザー幅の半分&&敵y座標<自機y座標){}
マスタースパークの場合です。
マスタースパークは前方全ての範囲ですが、レーザーの長さも考慮したほうが良いかもしれません。
242ポイント を手に入れた。
|
|
|
|
|
Name: はね ..初心者(8,801ポイント)
Date: 2009/03/18(水) 00:17
No:30955
|
|
Title: Re:STGプログラミングについて
|
|
yu様
補足ありがとうございます。
確かにこれだと下でも当たりますね。
恥ずかしい話、y座標を忘れていました。
>レーザーの長さも考慮したほうが良いかもしれません。
そうですね。敵が画面に入っている時だけ当たるようにするとか、
レーザーのy範囲を自機からy=0までの長方形で考えるとかですかね。
まぁ、ここら辺はゲームの仕様というか好みの問題な気もしますが。
↓↓編集追記↓↓
読み返して気付いたのですが、当たり判定ではなく表示のさせ方の質問みたいでしたね。
勝手に当たり判定の質問かと解釈して先走ってしまいました。スミマセン。
それと、自機ではなく、敵の攻撃でしたね。重ね重ね申し訳ないです。
72ポイント を手に入れた。
|
|
|
|
|
Name: エデリュス ..ぴよぴよ(643ポイント)
Date: 2009/03/18(水) 20:27
No:31019
| 解決!
|
Title: Re:STGプログラミングについて
|
|
hss12様
conio様
おかげさまでだいぶエラーを抑えられました。
表示もできました。
ありがとうございました。
yu様
はね様
マスタースパークについてとても参考になりました。
あとはレーザーを描ければ・・・
質問にかかわってくださった皆様
本当にありがとうございました。
137ポイント を落としてしまった。
|
|
|
|
Name: lawliet ..ぴよぴよ(256ポイント)
Date: 2009/03/18(水) 17:47
No:31012
|
|
Title: 無題
|
|
ゲームプログラミングの館で勉強させていただいてます
いきなりDXライブラリの設定でつまずいたのですが、
VisualC++ 2008 Express Edition を使用した場合のDXライブラリの使い方の7より
実行、ビルドをやっても プログラムが開始されません 指定されたファイルが見つかりません とエラーがおきてしまいます
なにが原因なんでしょうか
どなたかお願いします
172ポイント を手に入れた。
|
|
|
|
Name: MNS ..入門者(3,429ポイント)
Date: 2009/03/17(火) 22:41
No:30944
|
|
Title: Re:よそでこんなこと書かれてます
|
|
こういう部類の者には反応すべきでないのでしょうが、最低ですね・・・。
31ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..熟練のプログラマー(41,691ポイント)
Date: 2009/03/17(火) 22:59
No:30948
|
|
Title: Re:よそでこんなこと書かれてます
|
|
研究会の内容でどのように感じたかは、人によって様々でしょうが、
そのようなことをわざわざ掲示板に書き込まなくても・・・
お忙しい中発表してくださった方に対して失礼極まりない行為だと思います。
61ポイント を落としてしまった。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..ウィザード(1,010,851ポイント)
Date: 2009/03/18(水) 02:14
No:30958
|
|
Title: Re:よそでこんなこと書かれてます
|
|
引越しの掃除してて見逃しました・・。
リンク先消えているようですが、何か書かれていました?もしよければ教えて頂けないでしょうか。
こちらの失礼の為に起きたことや、今後改善しないといけないことなどが書かれていたのでしたら
今後の参考にさせて頂きたいなと思っています。
第一回で何もわからないまま行ったので失礼なことや相応しくないことなど多々あったかと思います。
もしここで言いにくい事などが含まれる場合はメールで
→dixqhp@gmail.com お願いできれば幸いに思います。
167ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(6,614ポイント)
Date: 2009/03/18(水) 06:49
No:30967
|
|
Title: Re:よそでこんなこと書かれてます
|
|
>リンク先消えているようですが、何か書かれていました?もしよければ教えて頂けないでしょうか。
なんで表示されなくなってるんだろう。覚えている限りですが、こんな感じです。
なるべく柔らかい表現に直したつもりですが、読み直してもあまり変わりませんでした。
文中に個人に対しての話もありますので、関係する方は気を悪くされてしまうかもしれません。
あまり見ないよう、お願いします。
----- やはりまずいので削除 -----
上部を反転して下さい。
406ポイント を手に入れた。
|
|
|
|
|
Name: めいらる ..かけだし(1,814ポイント)
Date: 2009/03/18(水) 08:00
No:30969
|
|
Title: Re:よそでこんなこと書かれてます
|
|
何が書かれていたのかわからないのでなんとも言えないですがただの誹謗中傷だとしたらネットではよくあることですのでスルーするのが一番ですね(・∀・)b
んで、「こんなこと書かれてますよ」って火種をこの掲示板に持ち込むのも…
97ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..ウィザード(1,011,780ポイント)
Date: 2009/03/18(水) 10:13
No:30985
|
|
Title: Re:よそでこんなこと書かれてます
|
|
内容は
「
・研究会の発表レベルが低かった
・懇親会はただの飲み会で会話のレベルも低い
・でも面白いので今後も参加したい
」
ということだったようです。
教えて下さった方、また暖かなコメントを下さった方、ありがとうございました。
例え誹謗中傷だったとしても、それが起きると言うことは開催側に原因があり、(当然ですが)改善の余地があることを
意味すると思うので、このコメントを元にこれからも頑張っていこうと思います。
今回はほめ言葉も添えて下さっている事から、単なる誹謗中傷ではなく、純粋な意見だと考えられます。
アンケートは取りましたが、なかなかあの場でのアンケートにこのようなことは書きにくいと思います。
しかし、本心が一番お聞きしたいところですので、このようなコメントは非常にこちらとしてはありがたいです。
ただ、発表して下さった方に失礼になってしまうコメントが含まれる場合が多いと思いますので、
コメントされた方、どうか、次からは私の方に直接メールを送っていただけないでしょうか。
もし、研究会について、他のことでもいいですが、何かご意見ありましたら、直接連絡頂けたら幸いです。
今回は私を含め、発表者が全員学生であったこと、
しかも今回プログラムを知らない方、若い方も参加されている事からプログラム未経験者や未成年にも理解出来る範囲に留めようと打ち合わせをしていたこと、
Mistさんやたかぎさんのお話も学生向けのアドバイス形式であったことから、
既に企業などに勤めている方には退屈な内容になってしまったかもしれません。
しかし高い技術力を持っていらっしゃりながら、
参加者に学生が多いということでわざわざ専門的なお話を避けて下さいましたので、
このコメントをされた方が納得できる内容の発表は十分可能であったと思います。
次からこういうことについて(対象が学生だとか)注意事項を書くとか、
内容を幅広く、多くの人が退屈しない内容にするとかして、
対策を立てていこうと思います。
アンケートに「発表の対象層を書いたらどうか。事前に必要な知識の分野は何かを書いたらどうか」というご意見がありました。
この発表は誰が聞いてもわかるとか、組み込み系が専門の人を対象とした発表だとか、事前に知らせておくということ、
更に、発表をより理解する為、何について事前に学んでおけばいいかを書いておくこと
ということですね。
今回のことで、この重要性が更にわかりました。
これからもHPの運営、研究会の内容の充実、頑張っていこうと思いますので、どうかよろしくお願いします。
929ポイント を手に入れた。
|
|
|
|
|
Name: やそ ..比類無きプログラマー(89,153ポイント)
Date: 2009/03/18(水) 14:16
No:31004
|
|
Title: Re:よそでこんなこと書かれてます
|
|
違う見方をすれば、
「それだけ期待が大きかった」
ということでしょう^^
・研究会の発表レベルが低かった
→このHPを閲覧している方たちなら、発表者様方の知識&技術レベルの高さは疑いようもないことを知っていて、
コメント記入者はどんな発表になるのかワクワクしていたことだと思います。
実際の発表の内容が「プログラム未経験者や未成年にも理解出来る範囲に留めようと打ち合わせをしていたこと」
で、コメント記入者の期待を少し裏切ってしまったのでしょう。
わたしは参加できなかったのでどんなプレゼンだったのかは分かりませんが、あるテーマについて中級者に講義するより、初心者に分かるようにプレゼンすることのほうが難しく、資料作成も大変になることを知っています。
(いろんな企業を集めて(TBSの社長とか来たらしい)サーバ運用などについてプレゼンした経験があるので多少はその苦労を知っています)
キューちゃんの言われるとおり、発表毎に"対象レベル”を先に通知しておけば、傍聴者も自分の聞きたいテーマを絞り込むことが容易になるので、この手の苦情は少なくなると思います。
今後、「同テーマ」で対象レベルを変えての発表があっても面白いですし。
・懇親会はただの飲み会で会話のレベルも低い
→懇親会ですからねえ。親睦を深めるためのものですから、レベルの高い会話では「ともだち」になれません。
「20世紀少年」の「ともだち」を作りたかったとか?(笑)
会社や学校での出来事、愚痴、趣味、家庭のこと、勉強のこと、もちろんCのこと、恋愛話、部活話、好きな歌手やスポーツなど、レベルが低ければ低いほど盛り上がるし、連帯感も出てくるんじゃないでしょうか?
学生の割合のほうが多ければファミレスや焼肉屋、お好み焼きやみたいな所でもよかったかもしれませんが、初めての会でもありますし、
「第一回!チキチキ!漢(オトコ)だらけの大懇親会」
で口を滑らかにするためにはやっぱりおちゃけの力を借りるのがイチバン手っ取り早いですしね^^
・でも面白いので今後も参加したい
→なんだ。結局面白かったんじゃないですか(笑)
やっぱりオラも参加したーい!
480ポイント を手に入れた。
|
|
|
|
|
Name: dic ..上級者(15,559ポイント)
Date: 2009/03/18(水) 17:03
No:31008
|
|
Title: Re:よそでこんなこと書かれてます
|
|
私的なそういうたぐいの意見にたいする見解としては
非難される方はさらにものすごい技術の持ち主で、
私達ではとうてい及ばない存在の方と解釈しています
それを公開しない、発表されないのはかなりの理由があってのこと
そうとうな権力を持たれてるのでしょう
私だったら近寄りません
社会人であれば人を非難するには対案を出すのがマナーですが
そのマナーさえ超越するすごい何かをお持ちなのでしょうし
それを裏サイトのようなもので匿名でチクチクと非難するようであれば
いくつきもすれば誰も相手にしなくなるでしょう
というより会社の人にバレたら社会的信頼を失うでしょう
研究会ぜひ行ってみたかったのですが、仕事の都合上いけませんでした (;;)
248ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..ウィザード(1,012,695ポイント)
Date: 2009/03/18(水) 18:00
No:31014
|
|
Title: Re:よそでこんなこと書かれてます
|
|
>>書き込みを行った方へ
どなたが書かれているコメントだったか解りました。
以前から質問の際、規約違反をされているようですので、ここを利用される際はここの規約をきちんと守り、
うちの掲示板や研究会の苦情やご意見などはうちの範囲で書き込みをお願いします。
また、特に特定の方に失礼になる可能性のあるご意見がある場合は直接メールにてお願いします。
私は開き直りでもなんでもなく、中傷と取れるようなご意見まで重宝したいと考えております。
ですので、遠慮なくご意見頂ければありがたく思います。
>>やそさん
こちらの状況を察していただき大変恐縮です。
私(第一発表者)も、リアル友達であるパスカル(第二発表者)と、どうすればみんなが退屈せず、かつみんなが充実感を感じる内容になるか何度も話し合いました。
仰るとおり、「みんながわかって退屈しない」プレゼンを作るのはとても難しいことだと感じました。
今回アンケートなどで「それを実現するには、ある程度色んなものをブラックボックス化すればいいんじゃないか」というご意見を頂きました。
私の例でいうと、TRIZやQCで利用されている手法をを使ってより適切な仕様の決定を行おうという方法を提案したのですが、
各方法論を細かく説明したところで、短時間で理解出来るわけないし、細かい説明が続くと飽きてしまいます。だから、「何を使ったら何が出来る」ということだけ示せばいいのではないかというご意見だと思います。
重要なのは、各方法論を完全理解することではなく、解決する為には何が利用できるか知っていることです。
細かい部分まで理解が必要な人は、解決手段を知っていれば必要な時調べて習得する事が出来ますし、必要ない人は細かい部分まで理解する必要がないのですから。
この事を頭にいれ、また、まだまだプレゼンの方法は未熟だと思いますので、書籍で勉強したりして、
次から発表の方法を改めていこうとおもいます。
・親睦会の件
これもある程度席を区切った方がいいんですかね・・。
・仕事の話をしたいグループ
・プログラムの話をしたいグループ
・恋愛の話をしたいグループ
・弾幕への愛について語りたいグループ(ぇ
・・・等等
しかしそれは研究会の交流時間に設定した方が良いような気もしますね^^;
>やっぱりオラも参加したーい!
次回是非よろしくお願いします^^
>>dicさん
そうですね〜、うむを言わさぬ発表のお手本という物を是非見たかった気がします。
「完璧なプレゼン」っていうものを見て是非勉強させていただきたいです。
研究室にある「プレゼンの仕方」みたいなものにやり方は書いてありますが、
実際に行っているお手本となるプレゼンの様子は見たことがないです。
学会とかで発表している教授のプレゼンは結構自己満足的なものが多かったりするし・・^^;
この前なんか「わしが言いたいところまでしゃべるから時間が来たら教えて下さい」とか言って
発表している人もいたし・・(ブツブツ
これからもプレゼンの仕方は勉強し、恥ずかしくない発表が出来るように努力したいと思います。
>研究会ぜひ行ってみたかったのですが、仕事の都合上いけませんでした (;;
また機会がありましたら是非お願いします^^
915ポイント を手に入れた。
|
|
|
|
Name: ponkotu ..ぴよぴよ(746ポイント)
Date: 2009/03/17(火) 23:01
No:30949
|
|
Title: 何度も申しわけございません
|
|
今回、皆様の情報提供によりなんとかVisualC++をダウンロードできました。
で・・・一難さってまた一難なわけですが・・・・
DXライブラリもダウンロードでき、あとはVisualC++の設定を変えるだけなのですが・・これが・・頭の中で?が踊っている状態です。
確かなサイトも見ながらやっていたのですが・・・パス(パスワードのことでしょうか?)を追加と言われても訳が分からずダメです。(=_=)
どなたかパスの追加の仕方(サイトには「プロジェクトに追加するべきファイル VC用」のパスを追加と書いてあるのですが・・・)について教えていただけないでしょうか?
それと・・これは余談なのですが、半ばヤケになってDXLid VCのサンプルプログラム実行用フォルダの中にある、DXLid VC++Workspaceを開いたのですが、(全てVisualC++に変換されなければなりません。全て変換しますか?) このような表示が出てきたのですがこれで変換してもいいのでしょうか?
たび重なる長文申し訳ございません。 ↑は余談なので答えて頂かなくても結構です。
恥ずかしながらC言語はほとんど解らないので誠に申し訳ないのですが詳しくお願いいたします。
369ポイント を手に入れた。
|
|
|
|
Name: yu [URL] ..上級者(22,124ポイント)
Date: 2009/03/17(火) 23:24
No:30950
|
|
Title: Re:何度も申しわけございません
|
|
自分も何でパスと言うのかわかりませんが
そのものがある場所を指し示すものと勝手に思っています。
C:\Users\xxx\Desktop\test\include
みたいなやつです。
設定画面でフォルダのアイコンをクリックすると新しい行ができます。
その新しく作った行の横の「...」をクリックすると参照できるようになります。
参照して「プロジェクトに追加するべきファイル VC用」フォルダを選択すれば大丈夫です。
DXライブラリ様のところでダウンロードしたフォルダの中にあるはずですよ。
設定は面倒ですが頑張ってください。
171ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,942ポイント)
Date: 2009/03/17(火) 23:26
No:30951
|
|
Title: Re:何度も申しわけございません
|
|
パスワードはpass、ファイルパスはpath、です。道やコースという意味です。
35ポイント を手に入れた。
|
|
|
|
|
Name: cosmo ..中級者(9,238ポイント)
Date: 2009/03/17(火) 23:35
No:30952
|
|
Title: Re:何度も申しわけございません
|
|
>あとはVisualC++の設定を変えるだけなのですが・・これが・・頭の中で?が踊っている状態です。
こちら →ttp://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html#R2
に詳しい解説があります。
>それと・・これは余談なのですが、半ばヤケになってDXLib VCのサンプルプログラム実行用フォルダの中にある、DXLid VC++Workspaceを開いたのですが、(全てVisualC++に変換されなければなりません。全て変換しますか?) このような表示が出てきたのですがこれで変換してもいいのでしょうか?
お使いのコンパイラの旧バージョンを使うと言う予定がない限り構わないです。
…と言うか変換しないと、プロジェクトを開けませんし。
ここで言う「パス」とは環境変数のPathを指す事もありますね。
Windowsは普通、環境変数のPathに登録されているレジストリしか検索しませんから。
221ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,999ポイント)
Date: 2009/03/17(火) 23:38
No:30953
|
|
Title: Re:何度も申しわけございません
|
|
>ここで言う「パス」とは環境変数のPathを指す事もありますね。
それも「道」の意味ですよ。「パス」という単語に環境変数という意味はありません。
#追記
#「パス」についてはyuさんへの補足として、意味を回答しただけです(笑)
57ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(6,208ポイント)
Date: 2009/03/18(水) 06:25
No:30966
|
|
Title: Re:何度も申しわけございません
|
|
まず、ここでいう「パスの追加」というのは、プログラムをコンパイルするときに使用するファイル(.hとか)
があるフォルダをコンパイラに指定することです。Windowsでいう、ファイル名を指定して実行で「wmplayer」
とだけ入力してもメディアプレイヤーが起動してくれるような、必要な名前を入れるだけで特定のフォルダを
検索してくれる機能です。たとえば何かというと、
#include <stdio.h>
で、<>で囲まれたモノは事前にユーザーが指定したパスから検索されます。自分で指定する場合は、
#include "C:/Program Files/Microsoft Visual Studio 9.0/VC/include/stdio.h"
のように、相対パスまたは絶対パスで記述します。
まず、これは私だけかもしれませんが、ライブラリは今後ディレクトリ構造が変更されることがないような、
安全な場所(C:/Library/)に、使用するライブラリを置きます。
フォルダの中には、「include」や、「lib」、オープンソースなら「source」といったフォルダがあると思うので、
その3つのフォルダのパスをコピっておきます。
ここからVisualStudioの設定です。
メニューバーの [ツール] -> [オプション] を選択します。
出てきたウインドウの左側にある、階層付きツリーメニューの、[プロジェクトおよびソリューション] ->
-> [VC++ ディレクトリ] を選択すると、検索するときに使用されるパスの設定が表示されます。
・「include」フォルダがある場合、
[ディレクトリを表示するプロジェクト] -> [インクルードファイル] を指定します。
フォルダのマーク(新しい行)があるので、それをクリックします。
入力エリアが出てくるので、そこに「include」フォルダの絶対パスを入力します。
・「lib」フォルダがある場合、
[ディレクトリを表示するプロジェクト] -> [ライブラリファイル] を指定します。
フォルダのマーク(新しい行)があるので、それをクリックします。
入力エリアが出てくるので、そこに「lib」フォルダの絶対パスを入力します。
・「source」フォルダがある場合、
[ディレクトリを表示するプロジェクト] -> [ソース ファイル] を指定します。
フォルダのマーク(新しい行)があるので、それをクリックします。
入力エリアが出てくるので、そこに「source」フォルダの絶対パスを入力します。
下部の「OK」ボタンを押すと、設定は終わりです。
>これで変換してもいいのでしょうか?
良いと思います。
278ポイント を手に入れた。
|
|
|
|
|
Name: ponkotu ..ぴよぴよ(771ポイント)
Date: 2009/03/18(水) 17:07
No:31010
| 解決!
|
Title: Re:何度も申しわけございません
|
|
皆様、こんな僕にも解るような丁寧なご回答をありがとうございました。
もっと修行しますww
25ポイント を手に入れた。
|
|
|
|
Name: Hacx ..ぴよぴよ(171ポイント)
Date: 2009/03/18(水) 11:51
No:30995
|
|
Title: 開かないのですが・・・
|
|
はじめまして。Hacxと申します。
このサイトを見てプログラミングをはじめようと思ったのですが、手順1の通り、
DXライブラリとvisualC++2008をダウンロードして、DXライブラリの『DxLib_VC2008_and_2005用.sln』
をダブルクリックしても何も起動しません。
DXライブラリ置き場に載っていた設定もしましたし、準備はちゃんとできていると思うのですが、なにがいけないのでしょうか?
171ポイント を手に入れた。
|
|
|
|
Name: Hacx ..ぴよぴよ(203ポイント)
Date: 2009/03/18(水) 17:06
No:31009
| 解決!
|
Title: Re:開かないのですが・・・
|
|
ありがとうございます。
無事起動することができました。
32ポイント を手に入れた。
|
|
|
|
Name: あbc ..ぴよぴよ(10ポイント)
Date: 2009/03/18(水) 10:27
No:30987
|
|
Title: フルカラーから256色に変換
|
|
C++、コンパイラ6.0,ウィンドウズです。
RGB値のフルカラーの(12,13,255)の色を256色の近い色に変換したいのですが、いい方法が思いつきません。
どなたか、お願いします。
10ポイント を手に入れた。
|
|
|
|
Name: yu [URL] ..上級者(22,091ポイント)
Date: 2009/03/18(水) 10:53
No:30988
|
|
Title: Re:フルカラーから256色に変換
|
|
256色とは白黒濃淡ということでしょうか?
(知識が乏しくてすみません;)
今自分で考えたのですが
(12+13+255)/3 で平均をだせばうまくいくかな?
実際にやっていないのでおかしくなるかもしれません;
49ポイント を落としてしまった。
|
|
|
|
|
Name: abc ..入門者(3,923ポイント)
Date: 2009/03/18(水) 11:04
No:30989
|
|
Title: Re:フルカラーから256色に変換
|
|
256色とは1バイトで表現できる色みたいなんですよ、
普通RGB値を使うとR1バイトG1バイトB1バイト予備1バイトの計4バイトで表現されてるみたいなんです。
色データを1バイトで表現できれば容量を1/4に出来るので、1バイトで表現したいのですが、うまくいかないです。
BMPINFOHEDAERのbiCount??見たいなやつで8ビットに変換できる見たいなんですが、うまくいきません。
平均でやるのは、やって見たんですがダメでした(やり方が悪いのかもしれないですが。。。)
167ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..熟練のプログラマー(42,041ポイント)
Date: 2009/03/18(水) 11:10
No:30990
|
|
Title: Re:フルカラーから256色に変換
|
|
256色というのはグレースケールのことでしょうか?
(↑yuさんのおっしゃる白黒濃淡のことです)
そうであるならば、
>>(12+13+255)/3 で平均をだせばうまくいくかな?
でもグレースケールになりますが、
以下の式を使われた方がいいかもしれません。
Y = ( 0.298912 * R + 0.586611 * G + 0.114478 * B )
Yは輝度に当たります。
詳しいことはよく分かりませんが、RGBそれぞれの係数は人間の目にとって
最も良い値になっているそうです。
確か緑の感度が最もいいからだったと思います。(逆だったかな?)
この式で求めた輝度値をRGBそれぞれの値に代入してあげれば、
グレースケールに変換することができます。
あとは画像の形式や、変換する方法によって少し変わってきますが^^;
ちなみに画像の変換はバイナリデータを読み取って行うのでしょうか?
350ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..比類無きプログラマー(70,919ポイント)
Date: 2009/03/18(水) 11:14
No:30991
|
|
Title: Re:フルカラーから256色に変換
|
|
色のフォーマットとして1バイトでRGBを表示するのは、256の色情報をもつパレットを参照する、
いわゆるインデックスカラーというものです。
(GIF形式や 256色PNG形式もインデックスカラーです)
BMP形式でも同様に256色インデックスカラーがサポートされているので、
それについて調べてみると良いでしょう。
自力でフルカラーを256色に収める処理を書くのは(減色アルゴリズムを書くことになるので)大変ですが、
グレースケール変換なら yu さんや s-rush さんの方法を利用すれば比較的容易に行なえます。
247ポイント を手に入れた。
|
|
|
|
|
Name: abc ..入門者(4,135ポイント)
Date: 2009/03/18(水) 11:23
No:30992
|
|
Title: Re:フルカラーから256色に変換
|
|
グレースケールがいまいち分からないのですが、
多分白と黒で256段階の色を表現するんですよね??
私のやりたいのは、青や黄色赤も表示したいです。
StretchDIBitsでビットマップに書き込みたいのですが、色データをカラーテーブルの番号でやりたいです。
私の考えでは、カラーテーブルが256色用意されていて、1番目は青、2、薄い青、30番目赤とか用意されてないかなーって,,,,まったくの間違えの可能性が高いですが。
>>ちなみに画像の変換はバイナリデータを読み取って行うのでしょうか?
バイナリを扱うのでは、ありません。
なかなか説明が難しいのですが、RGB値の配列を受け取る感じで、それを描画したいだけなんですが、
RGB値を1バイトで表現したいのです、なんかわけの分からない質問でごめんなさい><
212ポイント を手に入れた。
|
|
|
|
|
Name: abc ..入門者(4,195ポイント)
Date: 2009/03/18(水) 11:40
No:30993
|
|
Title: Re:フルカラーから256色に変換
|
|
御津凪ありがとうございます。
私がしたいのは、減色アルゴリズムとほぼ同じようなことをしたいです。
減色アルゴリズムって言葉をはじめて知ったので、減色アルゴリズムについて調べて見ます。
ありがとうございました。
60ポイント を手に入れた。
|
|
|
|
|
Name: yu [URL] ..上級者(22,229ポイント)
Date: 2009/03/18(水) 11:50
No:30994
|
|
Title: Re:フルカラーから256色に変換
|
|
>Y = ( 0.298912 * R + 0.586611 * G + 0.114478 * B )
そ・・そんな式が・・orz
こちらが勉強になりました。
ありがとうございます。
>256色とは1バイトで表現できる色
そんなことができるんですね・・・初耳でした。
そして回答が的外れでした。すみませんorz
昔のゲームとかで、パレットがどうのこうのと聞いたことがありますが
それで、容量を節約しているんですね〜。
(間違っていたら申し訳ないです;)
138ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..比類無きプログラマー(71,022ポイント)
Date: 2009/03/18(水) 11:59
No:30996
|
|
Title: Re:フルカラーから256色に変換
|
|
> 昔のゲームとかで、パレットがどうのこうのと聞いたことがありますが
> それで、容量を節約しているんですね〜。
それもありますが、
パレットで色を制御できるので、パレットの色を変えたり、差し替えるだけでその色を変えることが出来るので、
カラーアニメーションや色違いのキャラ(2Pカラーとか言うアレ)といったことが容易に可能になります。
103ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(6,843ポイント)
Date: 2009/03/18(水) 12:18
No:30999
|
|
Title: Re:フルカラーから256色に変換
|
|
(1111 1111)2 なので、 (AARR GGBB)2にすれば良いと思います。
変換サンプル書いてたんですが、ブラウザが突然落ちたのでパーに。(´;ω;`)ブワッ
87ポイント を手に入れた。
|
|
|
|
|
Name: abc ..入門者(4,207ポイント)
Date: 2009/03/18(水) 13:09
No:31003
|
|
Title: Re:フルカラーから256色に変換
|
|
朽木さん、(1111 1111)で(RRGG GBBB)って書いてあったんですが><
(AARR GGBB)ですか??
12ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..熟練のプログラマー(42,173ポイント)
Date: 2009/03/18(水) 14:51
No:31005
|
|
Title: Re:フルカラーから256色に変換
|
|
>>yuさん
輝度以外に色差というものもあります。
輝度: Y = 0.299*R + 0.587*G + 0.114*B
色差: Cb= 0.564*(B-Y) = -0.169*R - 0.331*G + 0.500*B
Cr= 0.713*(R-Y) = 0.500*R - 0.419*G - 0.081*B
色差を求めておくとグレースケールからフルカラーに変換することができますよ。
上記の式をRGBについて解いてあげればいいですよね^^
(私はその変換プログラムを書いたことはないですが)
本トピではあまり関係ない話ですが、参考程度にどうぞ
132ポイント を手に入れた。
|
|
|
|
|
Name: abc ..入門者(4,378ポイント)
Date: 2009/03/18(水) 14:59
No:31006
| 解決!
|
Title: Re:フルカラーから256色に変換
|
|
解決しました。;;
結局
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[256];
} BITMAPINFO; というものがありまして、
bmiColors[]カラーテーブルにRGB値をセットすればよかったみたいです;;
わたしの質問の仕方に誤解があり大変もうしわけございませんでした。
解決とさせてもらいます。
171ポイント を手に入れた。
|
|
|
|
Name: akio ..ぴよぴよ(368ポイント)
Date: 2009/03/18(水) 03:14
No:30963
|
|
Title: 関数ポインタについて質問
|
|
はじめまして。
龍神録プログラミングの館12を参考にクラス化しようとしたのですが、そこで詰まってしまいました。
ゲームプログラミングとは直接関係なく、またC++の内容になってしまうのですが、ご回答頂けたらと思い書き込ませていただきした。
class A{
public:
static void pat01(int i){}
static void (*p)(int);
};
void (A::*p)(int) = &A::pat01;
pat01関数は龍神録プログラミングの館12にあるenemy_pattern〜関数です。
と、こんな感じでクラスにまとめてみようと思ったのですが、関数ポインタのメンバ変数(?)がちゃんと定義されないみたいなんです。
私的には「void (A::*p)(int) = &A::pat01;」で定義しているつもりなのですが、コンパイラ的にはどうやらグローバルなメンバ関数ポインタと解釈しているようです。
というわけで、どう書いたらちゃんと定義されるのでしょうか?
どうかよろしくお願いします。
368ポイント を手に入れた。
|
|
|
|
Name: SCI ..上級者(17,125ポイント)
Date: 2009/03/18(水) 12:26
No:31000
|
|
Title: Re:関数ポインタについて質問
|
|
void (*A::p)(int) = &A::pat01; にしてみてください。
26ポイント を手に入れた。
|
|
|
|
|
Name: akio ..ぴよぴよ(528ポイント)
Date: 2009/03/18(水) 12:59
No:31002
| 解決!
|
Title: Re:関数ポインタについて質問
|
|
SCIさんありがとうございます、解決しました。
なるほど、おそらくクラス名::変数名で1セットと考えればいいのですね。
さて、需要はないような気がしますが一応コードを載せておきますね。
class A{
public:
static void (*p[])(int);
private:
static void pat01(int i){}
static void pat02(int i){}
static void pat03(int i){}
const static int MAX = 10;
};
void (*A::p[MAX])(int) = {
&A::pat01,&A::pat02,&A::pat03,
};
void main(){
A a;
(a.p[0])(0);
}
160ポイント を手に入れた。
|
|
|
|
Name: ざく ..ぴよぴよ(283ポイント)
Date: 2009/03/17(火) 16:43
No:30892
|
|
Title: 文字列の中から改行コードを検索
|
|
はじめまして。C初心者です。
どなたかご教授お願いします。
タイトルどおりなのですが、
元々、文字列の中から改行コードを検索して、別の文字列{\n}に置き換えるプログラム
だったのですが、
メモリを破壊していました。
以下そのプログラムです。
(pqgetvalueでテーブルの値を取得しています)
char hensyu[100];
char *tp;
tp = strtok(PQgetvalue(*res,0,5), "\n");
strcpy(hensyu, tp);
while ( tp != NULL ){
tp = strtok(NULL, "\n");
if ( tp != NULL ){
strcat(hensyu, "{\\n}");
strcat(hensyu, tp);
}
}
hensyuエリアがたりなかったようです。。
なので、改行コードの個数を数えて、mallocで正しくhensyuエリアを取ろうとおもったのですが、
どうやって数えたらいいのかわかりません。。
strtokを2回やるのも不毛なかんじがしますし。
どなたかよろしくおねがいします。
283ポイント を手に入れた。
|
|
|
|
Name: SCI ..上級者(16,708ポイント)
Date: 2009/03/17(火) 16:49
No:30893
|
|
Title: Re:文字列の中から改行コードを検索
|
|
strlen関数で文字列の長さを調べてみてはどうでしょう。strlen(tp)です。
2回になってしまうのはある意味strtokの癖なんですが、ループ1つにまとめる場合、
p = PQgetvalue(...);
while ((tp = strtok(p, "\n")) != NULL)
{
/* ... */
p = NULL;
} などの方法がありますね。
109ポイント を手に入れた。
|
|
|
|
|
Name: ざく ..ぴよぴよ(379ポイント)
Date: 2009/03/17(火) 17:02
No:30895
|
|
Title: Re:文字列の中から改行コードを検索
|
|
> SCI さん
返信ありがとうございます。
strlen(tp)でわかるんですか???初心者ですみません。
mallocの方法が
hensyu = (char *)malloc(sizeof(char)*PQgetvalue(*res,0,5));
このやり方しかしらなくて、
sizeofでとってきてさらに、改行コードの数×4(「{\n}」で4バイトだから。。)
を足さないと・・・・と思ってしまって。。
96ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,872ポイント)
Date: 2009/03/17(火) 17:13
No:30897
|
|
Title: Re:文字列の中から改行コードを検索
|
|
例えば、こんな感じです。
#include <stdio.h>
int main(void)
{
char *p = "Sample\n\nText\nMoeMoe";
char *tp;
char *buf;
while ((tp = strtok(p, "\n")) != NULL)
{
buf = (char *)malloc(strlen(tp) + 1);
strcpy(buf, tp);
printf("%s\n", buf);
free(buf);
p = NULL;
}
return 0;
} 「strlen() + 1」としているのは、最後の'\0'のためです。
また、strtokだと改行の個数は無視されます。
164ポイント を手に入れた。
|
|
|
|
|
Name: ざく ..ぴよぴよ(509ポイント)
Date: 2009/03/18(水) 08:25
No:30971
|
|
Title: Re:文字列の中から改行コードを検索
|
|
>SCIさん
何度もすみません。。
実際に教えていただいたコードを
動かしてみたのですが、
segmentation faultになってしまいました。
gdbでデバックしてみましたが、strtokのあたりがおかしいとのことらしいです。。
strtokの使い方あっているようにみえるのですが。。
130ポイント を手に入れた。
|
|
|
|
|
Name: fatens ..ぴよぴよ(418ポイント)
Date: 2009/03/18(水) 09:04
No:30973
|
|
Title: Re:文字列の中から改行コードを検索
|
|
strtokで文字列を変更してしまうため、配列にする必要があります。
そして、表示するだけならメモリの確保は必要なく、このようにできると思います。
#include <stdio.h>
#include <string.h>
int main(void)
{
char p[] = "Sample\n\nText\nMoeMoe";
char *tp;
tp = strtok(p, "\n");
while (tp != NULL) {
printf("%s\n", tp);
tp = strtok(NULL, "\n");
}
return 0;
}
140ポイント を手に入れた。
|
|
|
|
|
Name: Blue ..初心者(8,704ポイント)
Date: 2009/03/18(水) 09:10
No:30974
|
|
Title: Re:文字列の中から改行コードを検索
|
|
strtokの第一引数は変更可能のchar*を渡さないといけないので、
>char *p = "Sample\n\nText\nMoeMoe";
は変更すべき領域でないのでエラーになってしまうのでしょう。
char s[] = "Sample\n\nText\nMoeMoe";
char* p = s;
では大丈夫だと思います。
>buf = (char *)malloc(strlen(tp) + 1);
>strcpy(buf, tp);
strdup関数を使うと便利だと思います。
105ポイント を手に入れた。
|
|
|
|
|
Name: ざく ..ぴよぴよ(727ポイント)
Date: 2009/03/18(水) 09:24
No:30975
|
|
Title: Re:文字列の中から改行コードを検索
|
|
>Blueさん
ありがとうございます。
ちゃんと動きました。
ただ・・・・、
このコードをうごかすと
結果が、
Sample
Text
MoeMoe
になります。そうなるのはわかるんですが、
"Sample\n\nText\nMoeMoe"
という文字列を、
"Sample{\n}{\n}Text{\n}MoeMoe"
と編集したいのです。。
で、かつ文字列の長さはわからない&改行コードも何個あるかわからない
だったので、mallocで編集後のメモリを確保したかったのです。。。
218ポイント を手に入れた。
|
|
|
|
|
Name: Blue ..初心者(8,884ポイント)
Date: 2009/03/18(水) 09:55
No:30981
|
|
Title: Re:文字列の中から改行コードを検索
|
|
確認ですが、開発環境は何でしょうか?
それと、SQLで取得した結果を使うのであればもとからreplaceして取得するのではだめなのでしょうか?
select replace(カラム名1, '\n', '{\\n}'), カラム名2, ・・・
from テーブル名
2倍のポイントを手に入れた! 180ポイント を手に入れた。
|
|
|
|
|
Name: ざく ..ぴよぴよ(782ポイント)
Date: 2009/03/18(水) 10:14
No:30986
|
|
Title: Re:文字列の中から改行コードを検索
|
|
>Blueさん
!!selectにreplace機能があるんですね!
知りませんでした。
開発環境はsolaris8です。
postgresqlは8.0.2です。
55ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(17,099ポイント)
Date: 2009/03/18(水) 12:15
No:30998
|
|
Title: Re:文字列の中から改行コードを検索
|
|
fatensさん、Blueさん
ソースの訂正ありがとうございます(汗
ざくさん
必要ないかもしれませんが、改行個数(というか改行部分の置き換え)をC言語でやるなら、一文字ずつ見ていくのが簡単かもしれません。
確か、文字列の検索はできても置換はバッファの関係でどうしても一手間必要になると思うので・・・
最初から大きめの領域をとっておくという妥協案はありますね。
ちょっと効率のいい方法が思いつかないです、お役に立てなくてごめんなさい(´・ω・)
100ポイント を手に入れた。
|
|
|
|
|
Name: ざく ..ぴよぴよ(685ポイント)
Date: 2009/03/18(水) 12:32
No:31001
|
|
Title: Re:文字列の中から改行コードを検索
|
|
>SCIさん
いえいえとんでもないです。とても勉強になりました。
今select replaceでやってみているのですが、
あと少しでうまくいきそうな?かんじです。
それでもだめならどかんと大きい領域をとってしまってから、
最初の方法で対応しようと思います。
本当にありがとうございます。
97ポイント を落としてしまった。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(55,651ポイント)
Date: 2009/03/18(水) 09:43
No:30977
|
|
Title: Re:BMP保存をJPEG保存に・・・
|
|
SaveDrawScreenToJPEGがありますよ。
DXライブラリにはリファレンスに記載されていない関数が結構ありますのでDxLib.hを一通り見てください。
36ポイント を手に入れた。
|
|
|
|
|
Name: Ma ..ぴよぴよ(568ポイント)
Date: 2009/03/18(水) 10:03
No:30983
| 解決!
|
Title: Re:BMP保存をJPEG保存に・・・
|
|
できました!
こちらの非でした、すいませんでした。
これからは、非公開関数にもしっかり目を通しておこうと思います。
56ポイント を手に入れた。
|
|
|
|
Name: ice ..ぴよぴよ(658ポイント)
Date: 2009/03/15(日) 15:46
No:30780
|
|
Title: txtファイル文章
|
|
ここで質問させていただくのは2度目になると思いますiceと申します。
もしかするとハンドルネーム前と違うかもしれません
テキストやtxtで検索したのですが該当する投稿がなさそうなので質問させていただきます。
ゲームの会話などのシーンで外部txtファイルから文章読み込みを行いたいのですが、読み込みを行う方法が分かりません。
仮にキーXを押したときに[aaa01.txt]というファイル内3行目にある「こんにちわ」という文書を読み込ませたい場合はどのように書けばよいのでしょうか。
ご教授お願いします。
------------------------------------------------------
void text()
{
txtファイルの読み込み
if( Key[ KEY_INPUT_X ] == 1 )
{
画面に絵画
}
}
------------------------------------------------------
多分このような感じになると思うのですが・・・
310ポイント を落としてしまった。
|
|
|
|
Name: 朽木 ..入門者(2,640ポイント)
Date: 2009/03/15(日) 16:34
No:30785
|
|
Title: Re:txtファイル文章
|
|
char FileBuf[FILE_BUFFER_SIZE + 1]; /* ファイルの文字を読み込むための領域を確保 */
FILE *FilePointer = NULL; /* ファイル構造体へのポインタ */
FilePointer = fopen(FilePath, "r"); /* ファイルをオープンする(エラー処理を省略) */
for (3回) fgets(&FileBuf[0], FILE_BUFFER_SIZE, FilePointer); /* 3回、1行分の文字列をバッファに確保 */
printf(fmt, &FileBuf[0]); /* fmt通りに表示。fmtは必要な形に置き換える */
fclose(FilePointer); /* 必要なくなったので解放 */
FilePointer = NULL; /* 今使ってるアドレスはもう使えないので NULL 化 */
みたいな感じでしょうか。この通りにやって動かなかったらごめんなさい。
2倍のポイントを手に入れた! 344ポイント を手に入れた。
|
|
|
|
|
Name: ice ..ぴよぴよ(836ポイント)
Date: 2009/03/15(日) 18:37
No:30789
|
|
Title: Re:txtファイル文章
|
|
朽木様、レス有難うございます。
しかしながら申し訳ないのですが、私には少し難解でよく分かりませんorz
私の書いた例文の中にいれるようなスタイルで出来れば分かりそうなのですが・・・
2倍のポイントを手に入れた! 178ポイント を手に入れた。
|
|
|
|
|
Name: nayo ..中級者(9,705ポイント)
Date: 2009/03/15(日) 19:12
No:30792
|
|
Title: Re:txtファイル文章
|
|
void text( void )
{
FILE *fp; // ファイルポインタ
char string[80][256]; // 読み込む文字 [最大行][一行あたりの最大文字数]
// ファイルを開く
if( ( fp = fopen( "ファイルの名前", "r" ) ) == -1 )
{ // エラーなので終了
return;
}
// ファイルから80行文字列を読み込む
for( int i=0; i<80; i++ )
{ // 一行ずつ読み込み
fgets( string[i], 256, fp );
}
// 使用が終わったので解放
fclose( fp );
// 描画処理(Xキーを押しているときのみ)
if( Key[ KEY_INPUT_X ] == 1 )
{ // 3行目だけ描画したいならstring[2]を描画してやれば良い
printf( "%s", string[2] );
}
}
できるだけわかりやすく書いた分非常に無駄が多く、このままでは実用的ではないです
動作は確認していないのでもしかしたらミスがあるかもしれないです
シルバーで書いてある部分を関数化するなどして、文章を読み込む作業は一回だけにした方がいいです
追記:
printfのところは変えてください
処理としては文字列が必要になりそうなら読み込み関数を呼び出しておき、描画が必要になったら描画用の関数を呼び出す、
といった感じにするといいかと思います
2倍のポイントを手に入れた! 716ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,037ポイント)
Date: 2009/03/15(日) 19:24
No:30793
|
|
Title: Re:txtファイル文章
|
|
少し補足ですが、fopenは読取りオープンでエラーが発生したらNULLを返します。
20ポイント を手に入れた。
|
|
|
|
|
Name: nayo ..中級者(9,725ポイント)
Date: 2009/03/15(日) 19:27
No:30794
|
|
Title: Re:txtファイル文章
|
|
SCIさん補足ありがとうございます
いやはや、しっかり確認しとくべきですね
さらに追記ですがC++だとstringは標準ライブラリ名でしたね
色々とミスが多いので当たり前ですが参考程度、ということで見てください
20ポイント を手に入れた。
|
|
|
|
|
Name: ひよっこ ..ぴよぴよ(0ポイント)
Date: 2009/03/16(月) 00:41
No:30797
|
|
Title: Re:txtファイル文章
|
|
nayoさんのコードでエラーとなる場所は読み込みでしょうか。
ファイルのストリームを開く際にパスの階層が異なっているかもしれませんので
確認してみてください。
その読み込み関数のあるフォルダからの階層になります。
fgetsあたりでエラーが返るのであれば、NULLチェックをしてみてください。
forで80回回すことになっていますが
if (string[i] != NULL)
等を追加したほうが安全かもしれません。
126ポイント を落としてしまった。
|
|
|
|
|
Name: hamanov ..ぴよぴよ(781ポイント)
Date: 2009/03/16(月) 04:56
No:30799
|
|
Title: Re:txtファイル文章
|
|
こんにちは。
こんな感じで読み込んでみたらいかがですか?
void text()
{
//txtファイルの読み込み
FILE *fp;
const char *path = "./aaa01.txt";
fp = fopen(path, "r");
if( fp == NULL)
{
return;
}
if( Key[ KEY_INPUT_X ] == 1 )
{
//画面に絵画
drw_txt(fp,3);
}
fclose(fp);
}
void drw_txt(FIEL *fp,unsigned int line)
{
char str[256]="";
int view_flg;
int n;
view_flg = 0;
n = 1;
if((fp == NULL) || (line == 0))
{
return;
}
for(;feof(fp) == 0;)
{
if(n == line)
{
view_flg = 1;
break;
}
if(fgetc(fp) == '\n')
{
n++;
}
}
if(view_flg == 1)
{
fgets(str,sizeof(str),fp);
DrawString( 0, 0, str, GetColor( 255,255,255 ) ) ;
}
rewind(fp);
}
コンパイルしていないので間違っていたらごめんなさい。
476ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..入門者(4,318ポイント)
Date: 2009/03/16(月) 07:17
No:30800
|
|
Title: Re:txtファイル文章
|
|
毎度のように、質問文を全く見てませんでした。ごめんなさい@@;
分かりにくかったですか、、、すみません。今度はちゃんと分かると思います(`・ω・´)。
DxLibに依存する形に直しました。前の方同様、吐いてません。動かなかったらごめんなさい。
---------- プロトタイプ宣言ここから ----------
int MyFunc_getLine(int FileHandle, int LineNo, char *StrBuf, int BufSize);
---------- プロトタイプ宣言ここまで ----------
---------- main()とかに追加ここから ----------
char Buf[1023 + 1]; /* ファイル内文字列格納用 */
---------- main()とかに追加ここまで ----------
---------- 以下、text()内に追加 ----------
int FileHandle; /* FileHandle は int型を推奨 */
int ret; /* 自作関数からの返り値 */
FileHandle = FileRead_open(ファイル名);
if ( FileHandle == 0 )
; /* エラー処理(ファイルが何らかの理由で読めない。パスミス?権限?) */
/* 自作関数。詳しくは下。 */
ret = MyFunc_getLine(FileHandle, 3, Buf, 1023 + 1);
if ( ret )
; /* エラー処理 */
if ( FileRead_close(FileHandle) == -1 ) /* 使い終わったら後片付け */
; /* エラー処理 */
FileHandle = 0; /* 使わないので、FileRead_open()のエラー値へ変更 */
---------- text()内追加ここまで ----------
---------- 自作関数ここから ----------
/* MyFunc_getLine() 関数
* FileHandle = 既に開いたファイルへのポインタ
* LineNo = 取得したい行の番号(最初の行の番号は1です)
* StrBuf = 読み込んだ文字列を格納する領域への先頭アドレス(少なすぎると行数が変になる?)
* BufSize = StrBufで確保している、番兵までのサイズ( == 確保サイズ - 1 は不要)
* 正常であれば 0、それ以外の場合は 0以外 が返る
*/
int MyFunc_getLine(int FileHandle, int LineNo, char *StrBuf, int BufSize)
{
int Loop = 0, BeforePos;
/* 元のファイルポインタの位置を取得しておく
* DXライブラリのリファレンス見たら、バイト位置を得るのに成功値が 0 なんだけど大丈夫かな…
* 使い方間違っていたらごめんなさい。
*/
if ( ( BeforePos = FileRead_tell(FileHandle) ) == -1 )
return 1; /* ハンドル値が不正? */
/* (!)ファイルの読込位置を先頭に変更 */
(void)FileRead_seek( FileHandle, 0, SEEK_SET);
for (Loop = 0; LineNo > Loop && FileRead_eof(FileHandle) == 0;) {
(void)FileRead_gets(StrBuf, BufSize, FileHandle);
Loop++;
}
/* 返る前に、ファイルポインタの位置を元に戻す */
(void)FileRead_seek(FileHandle, BeforePos, SEEK_SET);
/* Loop行読み込んだが、それが欲しい行ではなかったら */
if ( Loop != LineNo )
return 2;
return 0;
}
---------- 自作関数ここまで ----------
下に続く…
(※同日8:49, 9:03 所々ミスがあったので修正)
1,678ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..入門者(4,723ポイント)
Date: 2009/03/16(月) 07:19
No:30801
|
|
Title: Re:txtファイル文章
|
|
メッセージ長いって言われた…(´・ω・`) 以下追加分
後々考えてみると、描画ループでファイル読み込みは怖いので、
別々にした方が良いかもしれません。
char Key[256];
text(&Buf[0]); /* void text(char *Buf) */
while ( device is running )
{
BeginScene
if ( ReloadFlag is true ) {
text(&Buf[0]); /* 再読み込みを行う */
}
/* キーの押下状態を取得 */
if ( GetHitKeyStateAll(&Key[0]) == 0 ) {
if ( Key[ KEY_INPUT_X ] == 1 )
(void)DrawString(,,Buf,);
}
EndScene
}
にするとか。
(※追加: キー判定忘れてました)
405ポイント を手に入れた。
|
|
|
|
|
Name: ice ..かけだし(1,473ポイント)
Date: 2009/03/16(月) 20:18
No:30858
|
|
Title: Re:txtファイル文章
|
|
こんばんわ
皆様ご指導有難うございます。
昨晩より色々いじって考えているのですが、fopenに対してこのようなエラーが出ました。
"microsoft visual studio 9.0\vc\include\stdio.h(237) : 'fopen' の宣言を確認してください。"
他にも
"warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."
詳しくないのでよく分からないのですが、Microsoft Visual C++ 2008では使えないのでしょうか。
ただたんにtxtの1行目を読むなら
以下ような文でいいのかと思いDXライブラリ、リファレンス例文を書き換えてみました。
しかし、エラーは出ないもののテキストは読み込みませんでした。
一筋縄にはいかないようです。画像ならDXライブラリだと簡単に絵画出来るのにorz
void text()
{
int FileHandle ;
char String[256] ;
// test.cpp ファイルを開く
FileHandle = FileRead_open( "aaa01.txt" ) ;
// 一行読む
FileRead_gets( String, 256, FileHandle ) ;
// 画面に描画
DrawString( 0, 0, String, GetColor( 255,255,255 ) ) ;
// キー入力を待つ
WaitKey() ;
// ファイルを閉じる
FileRead_close( FileHandle ) ;
}
515ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,148ポイント)
Date: 2009/03/16(月) 20:23
No:30860
|
|
Title: Re:txtファイル文章
|
|
絵画できる→描画できる、のことですね?
ファイルが存在していればそれで出来るはずですが・・・
もちろん、基本的なループ部分は作り、WaitKey()ではキーを押して処理を進めていますよね?
56ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(5,880ポイント)
Date: 2009/03/16(月) 20:48
No:30861
|
|
Title: Re:txtファイル文章
|
|
1. 'fopen' の宣言を確認してください。
#include <stdio.h> を追加
2. warning C4996
代わりにfopen_sを使えば消えます
解決できなかったらごめんなさい
65ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..比類無きプログラマー(70,672ポイント)
Date: 2009/03/16(月) 21:06
No:30863
|
|
Title: Re:txtファイル文章
|
|
朽木さんの発言の補足です。
2. warning C4996
により、
1. 'fopen' の宣言を確認してください。
の補足文章が出ています。
つまり、この2行で一つの事象に対する文章です。
また、 warning と単語がある通り、これは警告です。
プログラムは生成され、実行できますが、
コンパイラは「これでいいのか?」という時に出してきます。
(コンパイルオプションでその度合いを調整できます)
この場合の警告(C4996)は、より安全な関数を使用してください、というような警告なので、
特に実行に問題はありません。(正しい使い方をしていれば)
なので、他にエラーが出ていなければプログラムは実行できるはずです。
ちなみに、同様の警告を出すものとして、 strcpy や strcat などがあります。
それぞれ _s がついた関数を使用することで警告を無くすことができます。
(引数が違ったり、戻り値が違ったりするので注意)
> 朽木さん
> #include <stdio.h> を追加
これは既に追加・あるいは別のところでインクルードされていると思います。
そうでなければ、本当のエラーが出てくるはずです。
303ポイント を手に入れた。
|
|
|
|
|
Name: ice ..かけだし(1,650ポイント)
Date: 2009/03/16(月) 21:56
No:30868
|
|
Title: Re:txtファイル文章
|
|
SCI様
先ほど投稿したNo:30858のプログラムですが、
裏画面使用後に必要な1行、text();が抜けていました。
修正後、描画出来ました有難うございます。
しかし、ソフト起動後テキストは読み込むのですが、他のプログラムが同時に動きません。
キー入力後は他のプログラムが動く(テキストは消えます)のですが、
なぜテキスト描画と同時に動かないのでしょうか。
後、初めに書いていた
if( Key[ KEY_INPUT_X ] == 1 )
で構文を間に入れてたりして色々試してみましたが、
(既に他のプログラムが動いている時)Xキーを押してもテキストを読み込みせず何も起こりませんでした。
朽木様
申し訳ないのですが、
今の私のレベルでは難しいので、もう少し理解してから参考にさせていただきます。
177ポイント を手に入れた。
|
|
|
|
|
Name: SooA [URL] ..中級者(9,693ポイント)
Date: 2009/03/16(月) 22:01
No:30869
|
|
Title: Re:txtファイル文章
|
|
御津凪さんが書いておられるように warning C4996 は
警告文で特に問題はありません、表示が気になるようであれば、
下記一文を追加してやれば非表示にすることができます。
#pragma warning( disable : 4996 )
61ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,352ポイント)
Date: 2009/03/16(月) 22:05
No:30870
|
|
Title: Re:txtファイル文章
|
|
>他のプログラム
文字列描画以外の処理、ということですか?
修正したループ処理はどのように書いたのでしょう。
#本当は読み込みと描画を分けたほうがいいのですが、これは後からでもいいでしょう。
74ポイント を手に入れた。
|
|
|
|
|
Name: ice ..入門者(2,963ポイント)
Date: 2009/03/16(月) 22:22
No:30872
|
|
Title: Re:txtファイル文章
|
|
SCI様
プログラムを勉強していたわけではないので専門用語には疎いのですが
他のプログラムというと
ゲームでのキャラクターの描画、他の画像読み込み、BGMとかです。
今回テキストを読み込んだ後キー入力しないとそれらが動作始めませんでした。
そしてテキスト読み込みする際にキー入力を必要にした場合はテキストの読み込みが出来ませんでした。
ループ処理というとどういうことでしょうか。
テキスト関係はtext.cppに書いておりそれをmain.cppで読み込みしています。(表現はこれでいいのでしょうか)
text.cppには
----------------------------------------------------------
#include "DxLib.h"
#include "extern.h"
void text()
{
int FileHandle ;
char String[256] ;
// test.cpp ファイルを開く
FileHandle = FileRead_open( "text00.txt" ) ;
// 一行読む
FileRead_gets( String, 256, FileHandle ) ;
// 画面に描画
DrawString( 0, 0, String, GetColor( 255,255,255 ) ) ;
// キー入力を待つ
WaitKey() ;
// ファイルを閉じる
FileRead_close( FileHandle ) ;
}
----------------------------------------------------------
main.cppはこんなかんじです。(色々入ってますが、そのままおいておきます///)
----------------------------------------------------------
#include "DxLib.h"
#include "global.h"
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
extern void img_sound_load();
extern void SetColor();
extern void Background();
extern void playerstatus1();
extern void Bgm();
extern void enemydata1();
extern void playerdata1();
extern void playercontrol1();
extern void enemycontrol1();
extern void Target();
extern void FpsTimeFanction();
extern void text();
int RefreshTime=0;
ChangeWindowMode( TRUE ) ;
if( DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK ) ; //裏画面を使用する。
img_sound_load();
SetColor();
playerdata1();
enemydata1();
text();
Bgm();
int aaa,bbb;
aaa=0;
bbb=0;
while(ProcessMessage() == 0 && GetHitKeyStateAll(Key) == 0)
{
if( Key[ KEY_INPUT_SPACE ] == 1 )
{
bbb++;
if(aaa==1&&bbb==1){
aaa=0,
WaitTimer(100),
bbb=0;}
else if (bbb==1){
aaa=1,
WaitTimer(100),
bbb=0;}
}
RefreshTime = GetNowCount(); //今の時間を取得
ClearDrawScreen(); //裏画面のデータを全て削除
Background();
DrawFormatStringToHandle(0,20, color_white,font_status,"bbb%d" , bbb);
DrawFormatStringToHandle(0,40, color_white,font_status,"aaa%d" , aaa);
if(aaa==0)
{
playerstatus1();
enemycontrol1();
playercontrol1();
Target();
FpsTimeFanction();
}
ScreenFlip(); //裏画面データを表画面へ反映
counter++;
if(Key[KEY_INPUT_ESCAPE]==1) break; //Escapeが押されたら終了
while(GetNowCount() - RefreshTime < 17);//1周の処理が17ミリ秒になるまで待つ
}
DxLib_End() ;
return 0 ;
}
----------------------------------------------------------
1,313ポイント を手に入れた。
|
|
|
|
|
Name: nayo ..中級者(9,795ポイント)
Date: 2009/03/16(月) 23:08
No:30876
|
|
Title: Re:txtファイル文章
|
|
画像ハンドルなどと同じように会話文も保存するための変数を用意して画像などと一緒に文章もロードしてやれば良いかと思います
すでに書かれてますが読み込みと描画は分けるべきです
あとはゲームの状態が文章の描画が必要な状態になったら描画関数を画像を描画するのと同じように毎ループ呼び出してやればいいかと
ちょっと分かりづらいですがこんな流れです
70ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(5,922ポイント)
Date: 2009/03/17(火) 06:32
No:30878
|
|
Title: Re:txtファイル文章
|
|
>No:30863(御津凪さん)
指摘ありがとうございます。
>No:30868(iceさん)
お役に立てなくてごめんなさい(´・ω・`)
42ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,440ポイント)
Date: 2009/03/17(火) 09:31
No:30880
|
|
Title: Re:txtファイル文章
|
|
iceさん
やはり、読み込みと描画を分けて作ったほうが分かりやすいかも知れません。
このソースだと「読み込み&表示」を最初に1度だけ行っています。
「読み込み」は最初の1度でいいのですが、「表示」は毎フレーム行う必要があります。
まず、文字数や行数は無制限なのでしょうか?
88ポイント を手に入れた。
|
|
|
|
|
Name: ice ..入門者(3,239ポイント)
Date: 2009/03/17(火) 20:42
No:30924
|
|
Title: Re:txtファイル文章
|
|
こんばんは
nayo様
本日まだプログラムをいじっていないので
上に書かれていることを試していないので後でやってみますね。
朽木様
サンプルお手数おかけしました。
必要となるプログラムがこんなに長文になるとは思ってませんでした。
コピペしてあるのでもう少し勉強してから試してみます。
SCI様
表示を毎フレームというのはtextのことでしょうか。(他のプログラムも毎フレーム行っていない?)
文字数は1行30文字程度、行数は80もあれば十分だと思います。
最終的に作りたいものはゲームで言うと決定ボタンクリックで3行ずつ読むようなかんじでしょうか。
なおtxtで読ませたい理由は、ゲームの型を作ってから知人達と作成していく際の都合です。
276ポイント を手に入れた。
|
|
|
|
|
Name: ice ..入門者(3,370ポイント)
Date: 2009/03/17(火) 22:18
No:30940
| 解決!
|
Title: Re:txtファイル文章
|
|
今やっと同時に表示できました!有難うございます!!
表示に関してはOKってことで、キー入力で表示するところまでは成功しました。
そしてこのままですと1フレームごとに1行ずつ表示するようです。(キーを押しっぱなしにするとすぐに最終行まで行く)
2行同時に出すとかキー入力にウェイトを置くとか、このスレッドにある皆様のプログラムを見ながら考えてみます。
09/03/18追記
うまくいきました有難うございます。
131ポイント を手に入れた。
|
|
|
|
Name: 蒲生4丁目 ..ぴよぴよ(206ポイント)
Date: 2009/03/17(火) 19:22
No:30908
|
|
Title: 初級者レベルです。しかし、もっと学習したいです。
|
|
c言語を長く勉強していますが、未だこの程度のものしか掛けません。ここのサイトに書かれている皆さんは、C言語でのDXライブラリを駆使してゲームなんかを作っていますね?私もそれにあやかりたいです。
今後、皆さんの指導を受けたいです。下記は、特に意味はありませんが、2次方程式の解にちなんだものです。
#include <stdio.h>
#include <math.h>
int main(void){
int a,b,c,ct=1,ck=1;
double x1,x2,D;
while(ct==1){
while(ck==1){
printf("a=");scanf("%d",&a);printf("\n");
if(a==0) ck=0;
printf("b=");scanf("%d",&b);printf("\n");
if(b==0) ck=0;
printf("c=");scanf("%d",&c);printf("\n");
if(c==0) ck=0;
ck++;
}
while(ck>1){
D=((double)b*(double)b-4*(double)a*(double)c);
if(D<0){
printf("Error\n");
ck=3;
}
else if(D>0){
D=sqrt(D);
x1=(-1*(double)b+D)/2*(double)a;
x2=(-1*(double)b-D)/2*(double)a;
printf("x1=%4.2lf ,x2=%4.2lf\n",x1,x2);
}
else if(D==0){
x1=(-1*(double)b)/2*(double)a;
printf("x1=%4.2lf\n",x1);
}
ck-=2;
}
while(ck==0){
printf("continue-1/End-2?\n");
printf("ct=");scanf("%d",&ct);printf("\n");
ck++;
}
}
return(0);
}
206ポイント を手に入れた。
|
|
|
|
Name: kazuoni [URL] ..比類無きプログラマー(72,273ポイント)
Date: 2009/03/17(火) 19:44
No:30910
|
|
Title: Re:初級者レベルです。しかし、もっと学習したいです。
|
|
とりあえず規約を一度目を通してくださいね^^;
コードはプレタグで。。
指導を受けるっというのは自分の書いたコードがあることが前提ではないでしょうか?
とりあえずまず自分なりに作ってみてはいかがでしょうか?
ジャンルはなんでもいいと思いますが。
数当てゲーム、タイピングゲーム、パズル・・・
まずは簡単なものから組んでみることをお勧めします。
162ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(93,097ポイント)
Date: 2009/03/17(火) 19:46
No:30911
|
|
Title: Re:初級者レベルです。しかし、もっと学習したいです。
|
|
> 今後、皆さんの指導を受けたいです。
貼ったソースは特に意味がないとのことですが、ソースを貼るときは<pre>タグで囲んでください。
利用規約をきちんと守った方が、質問をした際、適切な回答を素早く得られるからです。
83ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(38,741ポイント)
Date: 2009/03/17(火) 20:45
No:30925
|
|
Title: Re:初級者レベルです。しかし、もっと学習したいです。
|
|
ご自分で作られたプログラムのようですから、私の感想を。
1 a、b、cをint型にする必要はあったのでしょうか?
最初からdouble型の方がキャストしなくて済みます。
また、キャストをするにしても、キャストをしなくても良いところがたくさんあります。
2 printfのdouble型の書式指定は %fです。
3 ckの使い方として、最初に戻すのなら、ck-=2;より、ck=0の方がわかりやすいです。
途中のck++なども同様です。カウントにする必要はないはずです。
4 ERRORのところのck=3 は、どうするつもりですか?
5 do{ }while(); 形式の方がわかりやすいような気もします。
205ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(38,841ポイント)
Date: 2009/03/17(火) 21:09
No:30928
|
|
Title: Re:初級者レベルです。しかし、もっと学習したいです。
|
|
>4 ERRORのところのck=3 は、どうするつもりですか?
printf("continue-1/End-2?\n");せずに、再入力ということですか。
字下げしてもらったのでわかりましたが、わかりにくいプログラムです。
whileはifでよさそうなのが・・・・
100ポイント を手に入れた。
|
|
|
|
Name: C言語初心者以下 ..ぴよぴよ(378ポイント)
Date: 2009/03/17(火) 18:18
No:30901
|
|
Title: 「龍神録プログラミングの館」の11章で引っかかりました...
|
|
初めまして。
私は今「龍神録プログラミングの館」の11章の「エクセルを使って敵の出現データを作ってみよう」をやっています。
ですが、ビルトしてもエラーは出ないのにその11章の実行結果通りになりません。
講座通りに(殆どコピペ)やっているんですが……
同じ11章でふぁんとむ様が質問なされている記事を参考にし、ふぁんとむ様の実行していた「苦肉の策としてenemy_enter関数の落とす(中略)結果を見てみる」を実行した結果、添付した画像のようになりました。
実行結果:
・enemy0〜7を繰り返した(敵が19体出現)
・最初の敵の出現場所が主人公の正面(辺り)、y座標は本来なるはずの実行結果と同じくらい
・本来の実行結果より広い間隔で敵が出現し、端に行くと折り返して降りてくる(19体まで繰り返す)
途中で間違えたのかと、最初からやり直してきましたが、また引っかかってしまいました。正直何が原因かわかりません……
使用しているのは VC++2008EE です
C言語についての知識は皆無に等しいです……よろしくお願いします
378ポイント を手に入れた。
|
|
|
|
Name: fatens ..ぴよぴよ(132ポイント)
Date: 2009/03/17(火) 18:59
No:30904
|
|
Title: Re:「龍神録プログラミングの館」の11章で引っかかりました...
|
|
おそらく、プロジェクトを一括ダウンロードした中のdat/csv/storyH0.csvを読み込んでいます。
このファイルを、dat/csv/11章/storyH0.csvと置き換えるか、
load.cppのload_story関数で、fname[32]={"../dat/csv/storyH0.csv"}; → fname[32]={"../dat/csv/11章/storyH0.csv"};
とすることで、解決すると思います。
118ポイント を落としてしまった。
|
|
|
|
|
Name: yu [URL] ..上級者(21,711ポイント)
Date: 2009/03/17(火) 19:47
No:30913
|
|
Title: Re:「龍神録プログラミングの館」の11章で引っかかりました...
|
|
fatens様の言われた通り、ひとつ前の階層にあるcsvを読み込んでいると思います。
あと、
>講座通りに(殆どコピペ)やっているんですが……
ですが、ダウンロードされたプロジェクトの11章フォルダの中の
プロジェクトは../dat/csv/11章/storyH0.csvとかかれていました。
なにかに引っかかったらその章のプロジェクトを見れば良いと思いますよ!
管理人様が、実行すれば講座通りになるようにプログラムを組んでくれています。
(自分は最初、〜章と書かれているフォルダをSTGのステージと勘違いしてました orz)
60ポイント を落としてしまった。
|
|
|
|
|
Name: C言語初心者以下 ..ぴよぴよ(483ポイント)
Date: 2009/03/17(火) 21:06
No:30927
| 解決!
|
Title: Re:「龍神録プログラミングの館」の11章で引っかかりました...
|
|
fatens様の言うとおりでした。これで先に進めます(汗)
yu様
>なにかに引っかかったらその章のプロジェクトを見れば良いと思いますよ!
わかりました!今度からそうします
ありがとうございました!!
105ポイント を手に入れた。
|
|
|
|
Name: ponkotu ..ぴよぴよ(181ポイント)
Date: 2009/03/16(月) 21:13
No:30865
|
|
Title: 初投降になります
|
|
今回、僕はDXライブラリのダウンロードをやろうと思っているのですが、どうしてもVisualC++用のDXライブラリを使いたいんです。
ですが僕のパソコンにはVisualC++は入ってないんです。どなたかVisualC++をダウンロード(できれば無料)できるサイトをご存知では無いでしょうか?
できればそのサイトのどこら辺にあってどうやればダウンロードできるのかも教えていただければ幸いです。
C言語の知識もほとんど無いクソガキですがよろしくお願いしますm(_ _)m
181ポイント を手に入れた。
|
|
|
|
Name: ponkotu ..ぴよぴよ(367ポイント)
Date: 2009/03/17(火) 19:16
No:30907
|
|
Title: Re:初投降になります
|
|
ひよこさんありがとうございます(^_^)
一つ疑問に思うことがあるのですが(本当にバカですいません)無償=無料でよろしいのでしょうか?
たかぎさん御指摘ありがとうございます。投降× 投稿○ですね(-_-;)
迷惑をかけてすいませんでした。m(_ _)m
2倍のポイントを手に入れた! 186ポイント を手に入れた。
|
|
|
|
Name: わいじゅ ..ぴよぴよ(215ポイント)
Date: 2009/03/14(土) 15:07
No:30717
|
|
Title: RPG用ツールの作成に関して
|
|
RPG用ツールの作成に関して質問させてください。
<ツール製作の参考&目標>
として、RPGツクールをイメージしています。
各体験版は、インストールして現在確認中なのですが
購入も考えております。
RPGツクール2000
RPGツクールXP
RPGツクールVX
と候補があるのですが、一番、ツールとしての完成度や参考になりそうな
バージョンは、どれか?、製作者の方のご意見やご経験を伺えればと思います。
<開発環境>
:VC++6.0と、SDK,MFC,DirectXのどれかの組み合わせ
:VC++2008 expressと、SDK,DirectXの組み合わせ
:VC#2008 express
以上の、いずれかの環境での開発を考えておりますが、他に、お勧めの環境が
あったら、ご意見を頂ければと思います。Luaに関しては、書籍を購入して、
勉強してみようと思っているのですが、RPGツクールの製作に使われた(参考に
した?)んでしょうか?。
以上、宜しくお願い致します。
215ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(69,897ポイント)
Date: 2009/03/14(土) 15:27
No:30718
|
|
Title: Re:RPG用ツールの作成に関して
|
|
PC のRPGツクール系は手にしていないので詳しいことはいえませんが、
ツール作成に関していくつか参考になるような情報を書いておきます。
本格的なツール(製作したゲームが満足のいくもの)を目指すのであれば、
> VC++2008 expressと、SDK,DirectXの組み合わせ
が良いと思います。
ツール自体(ゲーム実行時ではなく)は GUI を楽に扱うため、
VC# や MFC 等を使っていくと良いでしょう。
(さすがに PSDK だけでGUIを構築するのは時間がかかりすぎますので)
他に参考になるRPG製作ツールとして、
WOLF RPGエディターがあります(無料かつ高機能)。
# 普通にゲームを作るより、ゲームを作るツールの方が一段と難しいので、
# 覚悟して製作に取り組んだほうが良いでしょう。
ちなみにRPGツクールVX に使用されている言語は Ruby を基にしています。
261ポイント を落としてしまった。
|
|
|
|
Name: せっちゃん ..ぴよぴよ(663ポイント)
Date: 2009/03/17(火) 16:59
No:30894
|
|
Title: if文の使い方について
|
|
こんにちわ
私はif文を習ったので、試しにポケモンのステータスを計算するというプログラムを作っていました。
けれども何処が間違っているのかわからなくなってしまいました。
多分if文の{}の使い方が間違っていると思うんですが・・・
御教授願えたらうれしいです。
以下ソース
#include <stdio.h>
main()
{
float a, b, c, d, e, f, g, h;
printf("ステータスを計算します。\n");
printf("HPの場合は1を、それ以外なら2と入力してください---->");
scanf_s("%f", &a);
if(a == 1 )
printf("種族値を入力してください---->");
scanf_s("%f", &b);
printf("個体値を入力してください---->");
scanf_s("%f", &c);
printf("努力値を入力してください---->");
scanf_s("%f", &d);
printf("レベルを入力してください---->");
scanf_s("%f", &e);
f=(a*2+b+c/4)*d/100+d+10;
printf("このポケモンのHPは「%f」です\n", f);
(24) else if(a == 2 ){
printf("種族値を入力してください---->");
scanf_s("%f", &b);
printf("個体値を入力してください---->");
scanf_s("%f", &c);
printf("努力値を入力してください---->");
scanf_s("%f", &d);
printf("レベルを入力してください---->");
scanf_s("%f", &e);
printf("性格補正を入力してください---->");
scanf_s("%f", &g);
}
if(g == 1.1){
h=((a*2+b+c/4)*d/100+5)*g;
printf("このポケモンのステータスは「%f」です。\n", h);
}
else if(g == 0.9){
h=((a*2+b+c/4)*d/100+5)*g;
printf("このポケモンのステータスは「%f」です。\n", h);
}
else{
printf("入力した数が間違っています。\n");
printf("このプログラムを終了します。\n");
return(0);
}
(49) else{
printf("入力した数が間違っています。\n");
printf("このプログラムを終了します。\n");
return(0);
}
return(0);
}
エラーメッセージは(24) : error C2181: else 文が if と一致しません。
(49) : error C2181: else 文が if と一致しません。
使っているコンパイラはVC++ 2008です。
分かりにくかったらごめんなさい。
554ポイント を手に入れた。
|
|
|
|
Name: s-rush ..熟練のプログラマー(41,506ポイント)
Date: 2009/03/17(火) 17:11
No:30896
|
|
Title: Re:if文の使い方について
|
|
1つ目のif文に{}が使われていないことが原因ですね。
if(a == 1 )
printf("種族値を入力してください---->"); ←if文によって実行されるブロックが終了してます。
/*********以下は(elseまで)if文とは無関係になってます**************/
scanf_s("%f", &b);
printf("個体値を入力してください---->");
このため、24行目のelseに対して、前に続くif文がないために、if文と対応していません。
以下のように{}を入れてあげればエラーは取れるはずです。
if(a == 1 )
{
printf("種族値を入力してください---->");
scanf_s("%f", &b);
printf("個体値を入力してください---->");
scanf_s("%f", &c);
printf("努力値を入力してください---->");
scanf_s("%f", &d);
printf("レベルを入力してください---->");
scanf_s("%f", &e);
f=(a*2+b+c/4)*d/100+d+10;
printf("このポケモンのHPは「%f」です\n", f);
}
あとは49行目のエラーも同じようなものです。
1つ前のelse文が}で閉じられていないことが原因です。
289ポイント を手に入れた。
|
|
|
|
|
Name: toyo ..プログラマー(27,905ポイント)
Date: 2009/03/17(火) 17:24
No:30898
|
|
Title: Re:if文の使い方について
|
|
自動でインデントされたのを無理やり修正してませんか
Visual C++は{ }に対応して自動でインデントされます
段落がずれたように見えた場合は修正する前に{ }の書き忘れを疑いましょう
76ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..熟練のプログラマー(41,752ポイント)
Date: 2009/03/17(火) 17:34
No:30899
|
|
Title: Re:if文の使い方について
|
|
補足です。
if文もそうですが、elseやfor文でプログラムを書く際には
中のブロックの処理を書き始める前に先に
{ }で囲っておく癖をつけておいた方がいいでしょう。
今回の場合、if文以下にelseがあったので、エラーとして出てきましたが、
else文を使用してさらに条件分岐をしない場合、文法的には問題ありません。
しかし、その状態でプログラムを実行したとしても、望んだ動作はまずされません。
バグのもととなってしまいますので、
if forなど→{ }で囲む
ということを習慣づけしておきましょう。
246ポイント を手に入れた。
|
|
|
|
|
Name: せっちゃん ..ぴよぴよ(788ポイント)
Date: 2009/03/17(火) 18:07
No:30900
| 解決!
|
Title: Re:if文の使い方について
|
|
>>toyoさん
ご指導ありがとうございます。
見栄えが悪くてつい修正してしまう癖があるみたいですorz
今度からは気を付けたいと思います。
>>s-rudhさん
お陰さまで問題無くコンパイルされました!
今後からはif forなどの文は{}で囲む癖を付けていきたいと思います。
ご指導ありがとうございました。
125ポイント を手に入れた。
|
|
|
|
Name: ざこ ..熟練のプログラマー(41,641ポイント)
Date: 2009/03/17(火) 15:28
No:30885
|
|
Title: 問題が発生しました。プログラムを終了します。
|
|
void CDragDrop6Dlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CString str,str2,str3;
int num=m_listC.GetSelectionMark();
str=m_listC.GetItemText(num,0);
str2=m_listC.GetItemText(num,1);
str3=str2+_T("\\*.*");
CFileFind find;
int NUM;
CFileIndex Idlg;
CString filename;
if(find.FindFile(str3))
{
int i=1;
while(i)
{
i=find.FindNextFile();
if(find.IsDots())
continue;
if(find.IsDirectory())
continue;
filename=find.GetFileName();
NUM++;
MessageBox(filename);
*File_Name=filename;
}
find.Close();
*number=NUM;
}
Idlg.DoModal();
*pResult = 0;
}
ヘッダ:CString *File_Name;
このプログラムは指定されたフォルダ内の全てのファイル名を取得して別のダイアログで表示するという
ものです。ずっと考えてたんですがどうしてもわからなくてご質問させていただきました。
*File_Name=filename;
この位置の手前で(MessageBoxから下へ進まない。)どうしてもとまってしまいます。理由は「問題が発生しましたプログラムを終了します」とでます。前回も似た質問をさせていただきましたがあのときはアドレスが渡せていませんでした。今回は値を渡すときに失敗します。原因をどなたか教えて下さい。
※MessageBoxで確認した所filenameの中身は正しいようです。
588ポイント を手に入れた。
|
|
|
|
Name: Blue ..初心者(8,402ポイント)
Date: 2009/03/17(火) 15:37
No:30886
|
|
Title: Re:問題が発生しました。プログラムを終了します。
|
|
int* p;
*p = 0;
はエラーになることは理解されていますか?
# あえてポインタを使っている理由がわからない。
8ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(41,703ポイント)
Date: 2009/03/17(火) 15:50
No:30887
|
|
Title: Re:問題が発生しました。プログラムを終了します。
|
|
理由は別のクラスにアクセスする為です。私もなんか違和感あったんですけど
今まで同じやり方でアクセスできてたものですからwhile文との関係がおかしいと考えてたのですが
指摘されれば確かにエラーになりますねその文だと
62ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(41,742ポイント)
Date: 2009/03/17(火) 16:06
No:30888
| 解決!
|
Title: Re:問題が発生しました。プログラムを終了します。
|
|
ちょっと別の方法で試してみた結果こちらの方が効率よく見やすかったのでこちらで
いきます。ありがとうございました。
39ポイント を手に入れた。
|
|
|
|
|
Name: Blue ..初心者(8,568ポイント)
Date: 2009/03/17(火) 16:10
No:30889
|
|
Title: Re:問題が発生しました。プログラムを終了します。
|
|
前も同じようなことで確認方法を示したはずですがやってみましたか?
(コンストラクタでNULL代入し、*File_Nameの直前でNULLチェック)
>理由は別のクラスにアクセスする為です。
だったら、ポインタではなくそのまま実態を渡して戻ってきたらそれをコピーしたほうがミスがないとおもいますけど。
CXXXDlg dlg;
dlg.SetHoge(this->m_Hoge);
if (dlg.DoModal() == IDOK)
{
this->m_Hoge = dlg.GetHoge();
}
みたいに。
166ポイント を手に入れた。
|
|
|
|
|
Name: Blue ..初心者(8,599ポイント)
Date: 2009/03/17(火) 16:11
No:30890
|
|
Title: Re:問題が発生しました。プログラムを終了します。
|
|
>No:30888
根本的な解決になっていないような。
また同じような問題がでて躓きそうな希ガス。
31ポイント を手に入れた。
|
|
|
|
Name: 匿名 ..中級者(10,300ポイント)
Date: 2009/03/16(月) 16:09
No:30819
|
|
Title: 文字の装飾
|
|
DrawFormatString関数などで描画する文字列に輪郭線をつけたいんですが可能でしょうか?
44ポイント を手に入れた。
|
|
|
|
Name: 朽木 ..初心者(5,186ポイント)
Date: 2009/03/16(月) 16:40
No:30822
|
|
Title: Re:文字の装飾
|
|
すごく…質問文が短いです…(・ω・;)
使用しているライブラリの説明すらありませんが、DxLibで良いでしょうか、これ。
とりあえず、きれいになるとは思いませんが、中央周り4(8)方向に1ドットずつずらして黒で、
最後に中央に白でできませんか?やってないのでどうなるかわからないですけど。
107ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..中級者(10,330ポイント)
Date: 2009/03/16(月) 19:50
No:30854
| 解決!
|
Title: Re:文字の装飾
|
|
すいません・・DXライブラリです。
よくわかりました、どうもありがとうございます。
30ポイント を手に入れた。
|
|
|
|
Name: ひよこ ..上級者(22,081ポイント)
Date: 2009/03/16(月) 16:40
No:30821
|
|
Title: ゲームのバグについて
|
|
ゲームを作っていて実行中に右から落ちると左にいきなり出てくるのですがどうしてでしょうか?
#include "DxLib.h"
int Key[256];
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
else GetHitKeyStateAll_InputKey[i]=0;
}
return 0;
}
static int count=0;
typedef struct{
int X,Y;
}kyara1P;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
// 透過色を変更 白を透過
SetTransColor( 255 , 255 ,255 ) ;
int White = GetColor( 255 , 255 , 255 ) ; // 白の色を取得
kyara1P Player1P;
Player1P.X=62;
Player1P.Y=350;
int haikei= LoadGraph("green.bmp");
int kyaraimage[10];
kyaraimage[0]= LoadGraph("picture[0].bmp");
kyaraimage[1]= LoadGraph("picture[1].bmp");
kyaraimage[2]= LoadGraph("picture[2].bmp");
kyaraimage[3]= LoadGraph("picture[3].bmp");
kyaraimage[4]= LoadGraph("picture[4].bmp");
kyaraimage[5]= LoadGraph("picture[5].bmp");
kyaraimage[6]= LoadGraph("picture[6].bmp");
kyaraimage[7]= LoadGraph("picture[7].bmp");
kyaraimage[8]= LoadGraph("picture[8].bmp");
kyaraimage[9]= LoadGraph("picture[0].bmp");
int muki=1;
int jyuryoku=0;
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
Player1P.Y+=jyuryoku;
jyuryoku=2;
if(Player1P.X>=16 && Player1P.X<=564 &&Player1P.Y > 350 && Player1P.Y<354 )
{
Player1P.Y = 350 ;
jyuryoku = 0 ;
}
if(Player1P.X>=10 && Player1P.X<=16 && Player1P.Y>380 && Player1P.Y<400)
{
jyuryoku = 0;
muki=7;
}
if(Player1P.X>=564 && Player1P.X<=568 && Player1P.Y>380 && Player1P.Y<400)
{
jyuryoku = 0;
muki=8;
}
if( Player1P.Y==480){Player1P.X=62; Player1P.Y=350; muki=1;}
if( Key[ KEY_INPUT_LEFT]==1 || ( Key[ KEY_INPUT_LEFT]>10) && count%2){muki=2;Player1P.X-=2;}
if( Key[ KEY_INPUT_RIGHT]==1|| ( Key[ KEY_INPUT_RIGHT]>10) && count%2){muki=1;Player1P.X+=2;}
if( Key[ KEY_INPUT_DOWN]==1 || ( Key[ KEY_INPUT_DOWN]>10) && count%2 && Player1P.Y<=348) Player1P.Y+=2;
if( Key[ KEY_INPUT_Z] == 1 )
{
if(muki==1)muki=3;
if(muki==2)muki=4;
}
if( Key[ KEY_INPUT_A] == 1 && Player1P.Y==350){
if(muki==1)muki=5;
if(muki==2)muki=6;
Player1P.Y-=100;
}
if(Player1P.X>12 && Player1P.Y > 400)
{Player1P.X=12;}
count++;
if(Player1P.X<0)Player1P.X=0;
if(Player1P.X>640-71)Player1P.X=640-71;
DrawGraph(0,0,haikei,FALSE);
DrawFormatString( 0, 0, White, "Player1P.Xは%d\n",Player1P.X ) ;
DrawFormatString( 0, 50, White, "Player1P.Yは%d\n",Player1P.Y) ;
DrawGraph(Player1P.X,Player1P.Y,kyaraimage[muki],TRUE);
ScreenFlip();
}
DxLib_End();
return 0;
}
1,022ポイント を手に入れた。
|
|
|
|
Name: 朽木 ..初心者(5,294ポイント)
Date: 2009/03/16(月) 16:49
No:30828
|
|
Title: Re:ゲームのバグについて
|
|
>ゲームを作っていて実行中に右から落ちると左にいきなり出てくるのですがどうしてでしょうか?
え?右の土管に入ると「イッツ ミー マーリオー」って言いながら左の土管から出てくるんですか?マリオ?
自分が経験した事 == 他人も経験している なんて事は殆どありません。
ですので、自分でもウザい位に説明するのが丁度良いくらいです。もう少し詳しく説明してください。
108ポイント を手に入れた。
|
|
|
|
|
Name: ベッキー ..ぴよぴよ(344ポイント)
Date: 2009/03/16(月) 17:05
No:30833
|
|
Title: Re:ゲームのバグについて
|
|
>なぜか右へおちていくとYが400近くで左に勝手に移動してしまいます。
という情報でもなかなか理解できませんが
コードを書く際には同人であっても後日なにをやっているのかわからないということが
多々あると思いますので、最低限コメントを書いていただけるとうれしいです。
また、右へ落ちていくというのはx、y座標をプラス方向に移動させると、ということでしょうか。
それと、if文の書き方に一貫性がないようなので
統一したほうが後々デバッグしやすいかもしれません。
146ポイント を落としてしまった。
|
|
|
|
|
Name: 朽木 ..初心者(5,656ポイント)
Date: 2009/03/16(月) 17:17
No:30837
|
|
Title: Re:ゲームのバグについて
|
|
それだけ言って済めばとても良いんですが、そうなりません。
なぜなら「コメント」という、人から見ても理解させるプログラムを書くことができる素晴らしい機能を
使おうとしていないからです。もう、見ただけで読む気が失せます。@@;
たとえば、今日投稿したばかりですが、ここに私が投稿したプログラムがありますので、見てみて下さい。
そういう問題が起きて、「あれ?なんで?」と思った時に、すぐに「多分ここら辺だな」と問題部分を
見つけられるかどうかをみると、ひよこさんは目印になるものが無いので何がなんだかわからなくなってしまっています。
なので、今回のようにプログラム全貼りで「助けてくれぇえ」と他人に助けを乞う事になってしまったのではないでしょうか。
自分のためにも、未来の自分やほかの人が見るときのためにも、
30秒以内に理解できるような、人にも優しいプログラムを書くようにしてみてください。
自然と自分のミスにも気付けるようになります。
362ポイント を手に入れた。
|
|
|
|
|
Name: ひよこ ..上級者(22,623ポイント)
Date: 2009/03/16(月) 17:33
No:30839
|
|
Title: Re:ゲームのバグについて
|
|
その通りですね。一番怪しいところにコメントつけてみました。
//プレイヤーのX座標が16と同じかそれより大きくて564と同じか564より小さいか
//プレイヤーのY座標が350より大きく354より小さい場合
//350にとどまる。
if(Player1P.X>=16 && Player1P.X<=564 &&Player1P.Y > 350 && Player1P.Y<354 )
{
Player1P.Y = 350 ;
jyuryoku = 0 ;
}
//プレイヤーのX座標が10と同じかそれより大きくて16と同じか16より小さいか
//プレイヤーのY座標が380より大きく400より小さい場合
//その場にとどまる。
if(Player1P.X>=10 && Player1P.X<=16 && Player1P.Y>380 && Player1P.Y<400)
{
jyuryoku = 0;
muki=7;
}
//プレイヤーのX座標が564と同じかそれより大きくて568と同じか568より小さいか
//プレイヤーのY座標が380より大きく400より小さい場合
//その場にとどまる。
if(Player1P.X>=564 && Player1P.X<=568 && Player1P.Y>380 && Player1P.Y<400)
{
jyuryoku = 0;
muki=8;
}
//一番下へついたら元の場所へ
if( Player1P.Y==480){Player1P.X=62; Player1P.Y=350; muki=1;}
//移動用
if( Key[ KEY_INPUT_LEFT]==1 || ( Key[ KEY_INPUT_LEFT]>10) && count%2) {muki=2;Player1P.X-=2;}
if( Key[ KEY_INPUT_RIGHT]==1|| ( Key[ KEY_INPUT_RIGHT]>10) && count%2) {muki=1;Player1P.X+=2;}
if( Key[ KEY_INPUT_DOWN]==1 || ( Key[ KEY_INPUT_DOWN]>10) && count%2 && Player1P.Y<=348) Player1P.Y+=2;
//攻撃用
if( Key[ KEY_INPUT_Z] == 1 )
{
if(muki==1)muki=3;
if(muki==2)muki=4;
}
521ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(55,615ポイント)
Date: 2009/03/16(月) 17:36
No:30840
|
|
Title: Re:ゲームのバグについて
|
|
自分の書いたプログラムが全然理解できていないから、間違い箇所が見つけられない、絞り込めないんじゃないですか。
よく言われることですが、「プログラムは思う通りには動きません、書いたとおりに動きます。」
67ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(7,764ポイント)
Date: 2009/03/16(月) 17:38
No:30841
|
|
Title: Re:ゲームのバグについて
|
|
if(Player1P.X>12 && Player1P.Y > 400)
{Player1P.X=12;}
の部分ですね。Yが400より多くなるとXが12になっています。
コメントというより、動かしてみるとYが400あたりでXが12になっているわけですから
X=12と書いてあるところを探すだけで良いです。
移動ではなくて、Xの座標が何から何に変わってしまうと書いたほうが良かったと思います。
140ポイント を手に入れた。
|
|
|
|
|
Name: ひよこ ..上級者(22,668ポイント)
Date: 2009/03/16(月) 17:45
No:30843
|
|
Title: Re:ゲームのバグについて
|
|
わかりやすく?かくとXが560くらいでYが400くらいになると右の30くらいに一気に飛んでしまうことです。
45ポイント を手に入れた。
|
|
|
|
|
Name: ひよこ ..上級者(22,736ポイント)
Date: 2009/03/16(月) 17:48
No:30844
|
|
Title: Re:ゲームのバグについて
|
|
すみませんわかりにくいとかんじたので
右の30くらいにじゃなくてXが30くらいに変わりYはふえてそのまま落ちていきます。ってことです。
68ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(5,737ポイント)
Date: 2009/03/16(月) 18:26
No:30847
|
|
Title: Re:ゲームのバグについて
|
|
あ。できた。
かなり手こずりましたが、要はひよこさんの見たとおり、座標判定だったようです。
コメントはあまり付けてないのであとは自分でがんばってみて下さい。
81ポイント を手に入れた。
|
|
|
|
|
Name: ひよこ ..上級者(22,764ポイント)
Date: 2009/03/16(月) 18:36
No:30848
|
|
Title: Re:ゲームのバグについて
|
|
コメントは自分のよりかなり多かったです。いろいろ勉強になります。
プログラムに書いてある%3d %3d %3d %3d\nはどういう意味なんですか?
まんなかの二つはなんであるのでしょうか?
28ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..初心者(5,815ポイント)
Date: 2009/03/16(月) 18:49
No:30849
|
|
Title: Re:ゲームのバグについて
|
|
%3dは3桁幅に合わせて整数を表示します。4桁以上はその桁数に合わせられます。
あと、%03dというのがあります。3桁幅に合わせますが、空白ではなく 0 で埋めます。
" 25" "025"
%3d %03d 2つは、←、↓、↑、→の順に、上部は押されているかどうか。下部は連続入力数(最大値127)を表します。
78ポイント を手に入れた。
|
|
|
|
Name: みー ..かけだし(2,308ポイント)
Date: 2009/03/15(日) 14:33
No:30776
|
|
Title: Windowsプログラミング
|
|
Windowsプログラミングをするときにウィンドウを作成するのってメンバを登録するのが面倒ですよね。
その手間を省こうと思ったのですがやりかたが思いつきません。
ヘッダファイルにまとめてみようと思ったのですが、ウィンドウプロシージャの関数ポインタの渡し方がわからずあきらめました。
Windowsプログラミングをする方はどうやってこの手間を軽減していますか??
「コピペ。」というのはナシでお願いします。
221ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..比類無きプログラマー(70,369ポイント)
Date: 2009/03/15(日) 15:01
No:30777
|
|
Title: Re:Windowsプログラミング
|
|
メンバを登録?っていうのはよく分かりませんが、
私なら windowsx.h のマクロを使ったり、担当するウインドウごとにヘッダ・ソースで分けたりして、
あとはガリガリと書くと思います。
余り規模の大きいものを作ってはいないので確信は出来ませんが、
多少面倒でも、後のメンテナンスはしやすいはずです。
(私はMFCを使わずWINAPIで使用してます)
あと、もう少し詳しい情報が欲しいところです。
> ウィンドウプロシージャの関数ポインタの渡し方
というのは、 SetWindowLongPtr で渡せるのでは?
とまでしか言えないです。
2倍のポイントを手に入れた! 66ポイント を手に入れた。
|
|
|
|
|
Name: みー ..入門者(2,533ポイント)
Date: 2009/03/15(日) 15:36
No:30779
|
|
Title: Re:Windowsプログラミング
|
|
>あと、もう少し詳しい情報が欲しいところです。
そうですね。
例えばこのページのCreate関数。
http://www.geocities.jp/ky_webid/win32c/003.html
こんなかんじにしたいのですがこれは同じファイルの中に書いてあります。
これではほかのファイルから使うときに面倒なのでヘッダファイルにまとめようと思いましたが、
ヘッダファイルにまとめようとすると
wc.lpfnWndProc = WndProc;
のところではWndProcのアドレスを渡していると思ったのですが、その場合WndProcの情報をどうにかして渡さないとエラーが出てしまいます。
しかもこれだと毎回書き直さなくてはならないので、これを少し改造してタイトルバーの文字列やサイズ、座標などを引数で指定しようと思ったのですがうまくいきません。
225ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,017ポイント)
Date: 2009/03/15(日) 15:47
No:30781
|
|
Title: Re:Windowsプログラミング
|
|
>ヘッダファイル
ヘッダファイルに実装は書いていませんよね?
プロシージャに外部結合をもたせてあればexternで別のファイルから参照できます。
>タイトルバーの文字列やサイズ、座標などを引数で指定
これは関数を作ればいいだけですね。
C言語の基礎も同時進行で勉強するといいかも知れません。
138ポイント を手に入れた。
|
|
|
|
|
Name: dic ..上級者(15,311ポイント)
Date: 2009/03/16(月) 17:05
No:30834
|
|
Title: Re:Windowsプログラミング
|
|
ちょっと煽り気味になりました
申し訳ありません
メンバ関数の登録というのはMFCの環境でしょうか?SDKの環境でしょうか?
もう少し具体的な環境などを書かれると回答を得られると思います
>例えばこのページのCreate関数。
>http://www.geocities.jp/ky_webid/win32c/003.html
このような感じに行いたいのであれば SCIさんのおっしゃるとおり
C言語の基礎を勉強すればいいかと考えます
エラーがでるというのはコンパイルエラーですよね?
自分で関数が定義できるようになり 引数の意味がわかるようになれば可能かと思います
177ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(92,866ポイント)
Date: 2009/03/16(月) 17:14
No:30836
|
|
Title: Re:Windowsプログラミング
|
|
こんなのでどうでしょう。
1. あらかじめデフォルト値(自分でよく使う値を決めてください)を設定したWNDCLASSEX型の雛形を用意する。
2. いったん1.で用意したWNDCLASSEXオブジェクトのコピーをとる。
3. 必要なメンバーを上書きする。
4. RegisterClassExを呼び出す。
1. で用意する雛形は、const修飾子を付けて更新不可にしておくことをお勧めします。
137ポイント を手に入れた。
|
|
|
|
|
Name: みー ..入門者(2,802ポイント)
Date: 2009/03/16(月) 18:14
No:30846
| 解決!
|
Title: Re:Windowsプログラミング
|
|
みなさんに誤解を招いたようで申し訳ありません。
メンバというのはWNDCLASSEX構造体のメンバに含まれる変数のことです。
つまりメンバに含まれる変数に代入するという作業を登録すると言っていました。
語彙力不足というか間違って言葉の意味を間違って使っていたみたいで本当に申し訳ありませんでしたm(_ _)m
二度目の質問の意味は、とりあえず引数を使って他の構造体のメンバは代入することができたのですが、ウィンドウプロシージャの関数アドレスをlpfnWndProcに代入するところで失敗しているということでした。
これはウィンドウプロシージャのプロトタイプ宣言をヘッダファイル内で宣言することで解決できました。
回答してくださった方々本当にありがとうございました。
269ポイント を手に入れた。
|
|
|
|
Name: ふぁんとむ ..ぴよぴよ(224ポイント)
Date: 2009/03/16(月) 16:58
No:30830
|
|
Title: 龍神録プログラミングの館 11章
|
|
エクセルデータから敵キャラの移動制御を行う変更なのですが、サンプルプログラムをそのまま打ち込んでみても、サイトからコピペしてみても実行結果として表示されている動画と同じようには動きません
症状としてはビルド直後に1体が左端に出現、停滞、帰還をしその後に、6対が同じような動きをします
苦肉の策としてenemy_enter関数の落とすアイテムのforループの直後に『printfDx("enemy%d=%f stage_count=%d\n",i,enemy[i].x,stage_count);』を組み込んでみた結果を見てみると、最初に出現する1体は30体が重なっていて、その後に出現する6体のみにエクセルから読み込んだデータが反映しているようにも思えます
念のためにこの章で組みなおしたソースを、レスに貼り付けてみます
204ポイント を手に入れた。
|
|
|
|
Name: ふぁんとむ ..かけだし(1,536ポイント)
Date: 2009/03/16(月) 16:58
No:30831
|
|
Title: Re:龍神録プログラミングの館 11章
|
|
-- load.cpp --
#include "../include/GV.h"
//extern int img_ch[2][12];
void load()
{
img_board[10] = LoadGraph("../dat/img/board/10.png");
img_board[11] = LoadGraph("../dat/img/board/11.png");
img_board[12] = LoadGraph("../dat/img/board/12.png");
img_board[20] = LoadGraph("../dat/img/board/20.png");
LoadDivGraph("../dat/img/char/0.png", 12 , 4, 3, 73, 73, img_ch[0]);
LoadDivGraph("../dat/img/enemy/0.png", 9, 3, 3, 32, 32, img_enemy[0]);
}
//敵の出現情報をエクセルから読み込んで格納する関数
void load_story()
{
int n,num,i,fp;
char fname[32]={"../dat/csv/storyH0.csv"};
int input[64];
char inputc[64];
fp = FileRead_open(fname); //ファイル読み込み
if(fp == NULL)
{
printfDx("read error\n(load_story)\n");
return;
}
for(i=0;i<2;i++) //最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');
n=0 , num=0;
while(1)
{
for(i=0;i<64;i++)
{
inputc[i]=input[i]=FileRead_getc(fp); //1文字取得する
if(inputc[i]=='/') //スラッシュがあれば
{
while(FileRead_getc(fp)!='\n'); //改行までループ
i=-1; //カウンタを最初に戻して
continue;
}
if(input[i]==',' || input[i]=='\n') //カンマか改行なら
{
inputc[i]='\0'; //そこまでを文字列とし
break;
}
if(input[i]==EOF) //ファイルの終わりなら
{
goto EXFILE; //終了
}
}
switch(num)
{
case 0:
enemy_order[n].cnt =atoi(inputc); break;
case 1:
enemy_order[n].pattern =atoi(inputc); break;
case 2:
enemy_order[n].knd =atoi(inputc); break;
case 3:
enemy_order[n].x =atof(inputc); break;
case 4:
enemy_order[n].y =atof(inputc); break;
case 5:
enemy_order[n].sp =atof(inputc); break;
case 6:
enemy_order[n].bltime =atoi(inputc); break;
case 7:
enemy_order[n].blknd =atoi(inputc); break;
case 8:
enemy_order[n].col =atoi(inputc); break;
case 9:
enemy_order[n].hp =atoi(inputc); break;
case 10:
enemy_order[n].blknd2 =atoi(inputc); break;
case 11:
enemy_order[n].wait =atoi(inputc); break;
case 12:
enemy_order[n].item_n[0]=atoi(inputc); break;
case 13:
enemy_order[n].item_n[1]=atoi(inputc); break;
case 14:
enemy_order[n].item_n[2]=atoi(inputc); break;
case 15:
enemy_order[n].item_n[3]=atoi(inputc); break;
case 16:
enemy_order[n].item_n[4]=atoi(inputc); break;
case 17:
enemy_order[n].item_n[5]=atoi(inputc); break;
}
num++;
if(num==18)
{
num=0;
n++;
}
}
EXFILE:
FileRead_close(fp);
}
1,312ポイント を手に入れた。
|
|
|
|
|
Name: ふぁんとむ ..入門者(2,918ポイント)
Date: 2009/03/16(月) 16:59
No:30832
|
|
Title: Re:龍神録プログラミングの館 11章
|
|
-- enemy.cpp --
#include "../include/GV.h"
//敵の移動パターン0での移動制御
void enemy_pattern0(int i)
{
int t=enemy[i].cnt;
if (t==0) enemy[i].vy=2; //下がってくる
if (t==60) enemy[i].vy=0; //止まる
if (t==60+enemy[i].wait) //登録された時間だけ停滞して
enemy[i].vy=-2; //上がっていく
}
//空いている敵番号を検索
int enemy_num_search()
{
for (int i=0; i<ENEMY_MAX; i++) //フラグのたっていないenemyを探す
{
if (enemy[i].flag==0) return i; //使用可能番号を返す
}
return -1; //全て埋まっていたら、エラーを返す
}
//敵情報登録(敵の行動を登録・制御する関数)
void enemy_enter()
{
int i,j,t;
for(t=0;t<ENEMY_ORDER_MAX;t++)
{
if(enemy_order[t].cnt==stage_count) //現在の瞬間がオーダーの瞬間なら
{
if((i=enemy_num_search())!=-1)
{
enemy[i].flag =1; //フラグ
enemy[i].cnt =0; //カウンタ
enemy[i].pattern=enemy_order[t].pattern;//移動パターン
enemy[i].muki =1; //向き
enemy[i].knd =enemy_order[t].knd; //敵の種類
enemy[i].x =enemy_order[t].x; //座標
enemy[i].y =enemy_order[t].y;
enemy[i].sp =enemy_order[t].sp; //スピード
enemy[i].bltime =enemy_order[t].bltime; //弾の発射時間
enemy[i].blknd =enemy_order[t].blknd; //弾幕の種類
enemy[i].blknd2 =enemy_order[t].blknd2; //弾の種類
enemy[i].col =enemy_order[t].col; //色
enemy[i].wait =enemy_order[t].wait; //停滞時間
enemy[i].hp =enemy_order[t].hp; //体力
enemy[i].hp_max =enemy[i].hp; //体力最大値
enemy[i].vx =0; //水平成分の速度
enemy[i].vy =0; //鉛直成分の速度
enemy[i].ang =0; //角度
for(j=0;j<6;j++) //落とすアイテム
enemy[i].item_n[j]=enemy_order[t].item_n[j];
printfDx("enemy%d=%f stage_count=%d\n",i,enemy[i].x,stage_count);
}
}
}
}
//敵の行動制御
void enemy_act()
{
int i;
for (i=0; i<ENEMY_MAX; i++)
{
if (enemy[i].flag==1) //その敵のフラグがオンになってたら
{
enemy_pattern0(i);
enemy[i].x+=cos(enemy[i].ang)*enemy[i].sp;
enemy[i].y+=sin(enemy[i].ang)*enemy[i].sp;
enemy[i].x+=enemy[i].vx;
enemy[i].y+=enemy[i].vy;
enemy[i].cnt++;
enemy[i].img=enemy[i].muki*3+(enemy[i].cnt%18)/6;
//敵が画面から外れたら消す
if ( enemy[i].x<-20 || FIELD_MAX_X+20<enemy[i].x ||
enemy[i].y<-20 || FIELD_MAX_Y+20<enemy[i].y)
enemy[i].flag=0;
}
}
}
//敵処理メイン
void enemy_main()
{
enemy_enter();
enemy_act();
}
お力添えいただけますようお願いしますm(__)m
1,382ポイント を手に入れた。
|
|
|
|
|
Name: fatens ..ぴよぴよ(48ポイント)
Date: 2009/03/16(月) 17:43
No:30842
|
|
Title: Re:龍神録プログラミングの館 11章
|
|
ini.cppのini関数を確認してください。
stage_count=0となっていたら、stage_count=1にしてみてください。
11章の変更点にはなっていないので、忘れている可能性があります。
48ポイント を手に入れた。
|
|
|
|
|
Name: ふぁんとむ ..入門者(3,238ポイント)
Date: 2009/03/16(月) 18:03
No:30845
| 解決!
|
Title: Re:龍神録プログラミングの館 11章
|
|
>Mistさん
左クリックしても開かなかったので、規約を読まずに読みにくい書き込みをしてしまって申しわけありませんでした
右クリックで別ウインドウで開いたら読めましたので、以後気をつけます
>fatensさん
仰るとおり、ini.cppを確認したところ、『stage_count=』そのものがなかったので、付け加えてビルドしたところ、正常に作動しました
有難うございました
これで次に進めます
2倍のポイントを手に入れた! 320ポイント を手に入れた。
|
|
|
|
Name: yussanstar ..ぴよぴよ(15ポイント)
Date: 2009/03/13(金) 23:23
No:30644
|
|
Title: 龍神録プログラミングについて
|
|
ゲームプログラミングの館を一通り読み終えたので、
龍神録プログラミングに入っていきたいと思っているのですが、
そこで『プロジェクトファイル』をダウンロードしたところ、
VisualStudio用でした。
borlandでもできるようなことが書いてあったのですが
borlandでするにはどうすればいいんですか。
また、一応やってみましたが最初の『グローバル変数』なるもので
いきなりつまづいてしまいました.....
15ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) ..ウィザード(1,010,161ポイント)
Date: 2009/03/13(金) 23:44
No:30649
|
|
Title: Re:龍神録プログラミングについて
|
|
>>yussanstarさん
初めまして。こんにちは。
borlandでも出来ますが、サンプルプロジェクトはVC++で作っています。
もしどうしてもborlandでやらなければいけない理由がなければVC++で行ってみてはいかがでしょう。
無料ですし、機能も高いですし。
Borlandで作った事は無いですが、メイクファイル作らないと分割コンパイルできないんじゃないでしょうか?
もしそうなら面倒なのでやっぱりVC++でやってみてはどうでしょう。
186ポイント を手に入れた。
|
|
|
|
|
Name: あ〜る ..かけだし(1,812ポイント)
Date: 2009/03/13(金) 23:54
No:30652
|
|
Title: Re:龍神録プログラミングについて
|
|
僕はBorland使ってますけど微妙に書き方とか違うんで書き方がわからないと結構めんどくさいと思います
なので管理人さんの言う通りVCを使うか、どうしてもBorlandがいいなら一回本でもサイトでもいいんで、文の書き方を勉強してからにした方がいいと思います(そしたら違う所がわかるし、書き直す事も出来るんで(^^))
133ポイント を手に入れた。
|
|
|
|
|
Name: yussanstar ..ぴよぴよ(64ポイント)
Date: 2009/03/14(土) 01:11
No:30658
|
|
Title: Re:龍神録プログラミングについて
|
|
分かりました。それでやってみます。
と言いたいところですが、VC++の手に入れ方が分かりません。
できるだけ詳しく教えてください。
49ポイント を手に入れた。
|
|
|
|
|
Name: ふぁんとむ ..ぴよぴよ(20ポイント)
Date: 2009/03/15(日) 15:27
No:30778
|
|
Title: Re:龍神録プログラミングについて
|
|
横レス失礼します
自分も先日買ったテキスト本に入っていたborlandしか開発環境がなくて、VisualStudioの購入を検討していたのですが、このスレを見て無料配布を知りとても驚きました
買うとなるととても高価なので…^^;
20ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..ウィザード(1,010,684ポイント)
Date: 2009/03/16(月) 16:47
No:30827
|
|
Title: Re:龍神録プログラミングについて
|
|
VisualStudioは無料版でもかなり不自由なく使えますよね。
サンプルとして配布されているプロジェクトも多くオススメです。
ところで、「解決」マークは、このトピでの質問が解決出来たときに、
質問トピを立てた質問者が付けるものですので。
「解決」マークが付けられたトピはトップページにもマークされ、
回答者がトピを見る判断材料になります(既に解決済みのトピックは見ないとか)
182ポイント を手に入れた。
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,557ポイント)
Date: 2009/03/16(月) 09:33
No:30802
|
|
Title: DragDrop複数選択
|
|
今までファイルをドラッグ&ドロップするプログラムを作っていましたが、複数のファイルをグループ化してドラッグ&ドロップしてもカーソルが指しているファイルしかプログラムが実行されません。これをグループ化したファイル全部にできるようにしたいのですがどうすればいいのでしょうか?教えて下さい。
58ポイント を手に入れた。
|
|
|
|
Name: 朽木 ..入門者(4,794ポイント)
Date: 2009/03/16(月) 09:48
No:30803
|
|
Title: Re:DragDrop複数選択
|
|
#include <stdio.h>
int main(int args, char *argv[])
{
int i;
int dummy;
for(i = 0; args > i; i++)
printf("[%d] %s\n", i, argv[i]);
scanf("%d", &dummy);
return 0;
}
実行結果
[0] C:\Users\(中略)\Release\File.exe
[1] C:\Windows\Media\ac3.wav
[2] C:\Windows\Media\chimes.wav
[3] C:\Windows\Media\chord.wav
[4] C:\Windows\Media\ding.wav
[5] C:\Windows\Media\dts.wav
[6] C:\Windows\Media\flourish.mid
0 ということですか?
71ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,603ポイント)
Date: 2009/03/16(月) 09:58
No:30804
|
|
Title: Re:DragDrop複数選択
|
|
そんな感じだと思うのですが、開発環境がVC++のMFCで若干感覚が違うような気もします。
中身的には同じなのかもしれません。
46ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(55,246ポイント)
Date: 2009/03/16(月) 09:58
No:30805
|
|
Title: Re:DragDrop複数選択
|
|
わからないことが発生する
↓
すぐ質問する
じゃなくて、もう少し自分で勉強する意欲を見せてくださいよ。
この質問だと丸投げしているのと変わらないです。
あと、質問はもう少し正確に。
前回と同じ、アイコンへドロップするのかウィンドウへドロップするのかで回答は変わりますけど。
開発環境なども、前回既に書いているからと省略せず、必要なことはすべて書いてください。
2倍のポイントを手に入れた! 226ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,690ポイント)
Date: 2009/03/16(月) 10:17
No:30806
|
|
Title: Re:DragDrop複数選択
|
|
うーん半日は調べたんですけどね。とりあえず方法が思いつかないものですから、それがわかれば後は自分なりにできるとは思います。アイコンへドロップもウィンドウでドロップも必要なのでどちらでも構いません。
87ポイント を手に入れた。
|
|
|
|
|
Name: Blue ..初心者(8,394ポイント)
Date: 2009/03/16(月) 10:23
No:30807
|
|
Title: Re:DragDrop複数選択
|
|
どんなコードを書いているのでしょうか?
ちゃんと_argc分ループしているのでしょうか?
こんなのはできなくて当然
if (_argc >= 2)
{
// _argv[1] と 1 を固定している
}
91ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(55,384ポイント)
Date: 2009/03/16(月) 10:28
No:30808
|
|
Title: Re:DragDrop複数選択
|
|
> 半日は調べたんですけどね。
調べたというだけでは何も伝わりません。
自分がどういうことについて調べて何が理解できて何が理解できないのか。
それによりプログラムを組んでみたけど、どのようにうまくいかなかったのか。
というあたりをもっと明確にしましょう。
> とりあえず方法が思いつかないものですから
方法を考えるのがプログラミングの一番面白いところなんですけど。
方法を教えてもらったら、答え見ながら問題集を解いているのと変わらないです。(だから丸投げと指摘した)
他人のサンプルをあまり理解もせずに瑣末な部分を修正して、思うとおりに動いたとしてもあなたの実力にはならないですよ。
138ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..入門者(4,922ポイント)
Date: 2009/03/16(月) 10:30
No:30809
|
|
Title: Re:DragDrop複数選択
|
|
とりあえず私がやったアレ(↑)は動くんですが、それでもというのであれば、
ttp://homepage2.nifty.com/DSS/VCPP/MFC/DragDrop/MFCFileDrop.htm
こういうのとか、
ttp://mailsrv.nara-edu.ac.jp/~asait/visual_cpp/dialog2/drop/drop.htm
こういうのとか。
Googleで「MFC ドラッグ ドロップ」でヒット余裕でした。
128ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,996ポイント)
Date: 2009/03/16(月) 10:57
No:30810
|
|
Title: Re:DragDrop複数選択
|
|
今まではコマンドライン引数でargv[1]でファイル移動を指定していたから1個しか移動しないんだと思います。
だからargv-1でしょうか、最初のargv[0]は実行ファイル指定していますので。それでちょっと考えてみたんですけど
例えば今までは1つのファイルでしたのでargcは2で実際に私ファイルはargv[1]の1つだけ。直接指定しているので当然ですね。ですからfor(int i=1; i<argc-1; i++){//処理実行}としてたんですけどどうも違う気がして・・
Mistさんの仰る事はすごくわかります。私もそういうのも面白いと思ったことがあります。
しかし知識が少ないと妙に不安になってしまいます。これでできるのかというよりも私の知っている知識じゃ
無理なのでは・・と。初心者には少し重くてツライ一言です。私にはまだ自分1人でアレコレできる実力はありませんからその楽しさがわかるのはもう少し先になるのかもしれません。やり慣れた項目でなら多少は自信はあるのですが、
もう少し自信と自覚をもってやらないといけないのかもしれません。
私はずっとヤフーで MFC ドラッグ ドロップ 複数ファイル とかで調べてたんですけど
さっぱり引っかからなかったですね。ちょっと朽木さんの仰られた方法で検索してみます。
306ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(16,073ポイント)
Date: 2009/03/16(月) 11:00
No:30811
|
|
Title: Re:DragDrop複数選択
|
|
コマンドライン引数自体はMFC特有の技術情報ではないので、変わりにC言語などとつけるほうがよいでしょう。
36ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(41,007ポイント)
Date: 2009/03/16(月) 11:13
No:30812
| 解決!
|
Title: Re:DragDrop複数選択
|
|
何か調べ方が悪いのでしょうか。Mistさんの言う通り、もう少し調べる工夫と努力をした方がいいのかもしれませんね。これだけ判れば(朽木さんご紹介のサイト)後は自分なりにウィンドウにどろっぷ、アイコンにどろっぷに対応してみます。このようなサイトを半日かけて見つけられなかったのも悲しいです。それでもわからなかったらまた教えて下さい。厳しいご指摘も大歓迎です。
11ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(55,514ポイント)
Date: 2009/03/16(月) 11:19
No:30813
|
|
Title: Re:DragDrop複数選択
|
|
> そんな感じだと思うのですが、開発環境がVC++のMFCで若干感覚が違うような気もします。
にせよ
> for(int i=1; i<argc-1; i++){//処理実行}としてたんですけどどうも違う気がして・・
にしても、なぜ勝手にそう思うのがが理解できません。
やってみて違う結果だったからというのであれば理解できますが。
プログラミングは数学とは違うので答えは一つではありません。
良い悪いはありますが、それは状況によって変化します。
ざこさんは最初から完璧な回答を求めるあまり、今の自分の実力の範囲出来る答えを見つけることも放棄しているように思います。
130ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(41,053ポイント)
Date: 2009/03/16(月) 11:30
No:30814
|
|
Title: Re:DragDrop複数選択
|
|
弱気なのかもしれないですね。何かそういう感じも自分でもします。このままでは中々成長できなのはわかってはいるのですが・・
46ポイント を手に入れた。
|
|
|
|
Name: 山崎 ..初心者(5,477ポイント)
Date: 2009/03/14(土) 23:32
No:30748
|
|
Title: 矩形と円の当たり判定
|
|
毎度お世話になっております、山崎です。
大阪での研究会に参加された皆さん、お疲れ様でした。
東京のほうでも同じようなイベントがあれば、参加して皆さんのお話をお伺いしたいなぁと思っております。
さて、今回の質問は矩形と円の当たり判定についてです。
こちらOSはXP,エディタはVisualStudio2008を使い始めました。
現在、X,Y,Z座標を持つアクションゲームを作っております。
キャラクターが一歩進んだ先の地形との当たり判定をする関数を作成中で、
地形となるマップは正方形として扱っており、キャラクターは円柱として扱っております。
このマップの矩形とキャラクターの足元となる円を見て、
円と接地している矩形を全て探索したいのですが
円と矩形が重なっているかどうかをどう判別すればいいのか半日考えてもわかりませんでした。
添付している画像を見ていただけるとおわかりになるかと思いますが、
矩形がマップを表しており、赤い円がキャラクターが立っている部分となります。
キャラクターが接触している矩形を水色で塗ってあります、
この水色の部分にアクセスしていき当たり判定を行っていきたいのですが、
どういう式やアルゴリズムで水色の部分を導き出せばいいのかわかりません。
キャラクターはメンバとして、現在位置X,Y,Z,円の半径Width、一歩の長さStepを持っています。
座標(X,Y)がキャラクターの足元の円の中心となっています。
マップは構造体の2次元配列で、矩形の辺は全て同じ長さです。
どのような手法で、キャラクターの立っている矩形を判別すればよいのでしょうか。
620ポイント を手に入れた。
|
|
|
|
Name: ベッキー ..ぴよぴよ(352ポイント)
Date: 2009/03/15(日) 00:12
No:30753
|
|
Title: Re:矩形と円の当たり判定
|
|
はじめまして、ベッキーと申します。
私は初心者なので、参考にならないかもしれませんが
私ならば、というものを書こうと思います。
(DXライブラリでの実装経験がないので未知ですが、素晴らしい関数が提供されているかもしれません)
私の場合、各矩形のもつ線分と円との交差を判定し、その線分をもつ矩形
ならば重なっている、と判定します。
この場合、点と線分の距離を導き、半径と比較すれば良いと思います。
おそらく線分ごとではなく、矩形単位での探索になると思います。。
しかしながら各矩形の線分について毎回比較するのはムダが多いので
4分木や8分木も取り入れたいところです。
もし、矩形に傾斜等がある場合(Z方向の移動がある場合)にはキャラクタの円柱単位ではなく
中心座標と矩形との衝突判定を行う方が無難かと思います。
その場合は矩形の辺からキャラクタ座標への外積をとり、結果の符号が一致すれば衝突、となると思います。
352ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(7,391ポイント)
Date: 2009/03/15(日) 00:14
No:30754
|
|
Title: Re:矩形と円の当たり判定
|
|
円を描くアルゴリズムというのはご存じですか?
内側を塗りつぶさなければいけませんが、これを使えばそのままこれではないですか?
51ポイント を手に入れた。
|
|
|
|
|
Name: 山崎 ..初心者(5,670ポイント)
Date: 2009/03/15(日) 01:42
No:30761
| 解決!
|
Title: Re:矩形と円の当たり判定
|
|
ベッキーさん、hss12さん、ご返信ありがとうございます。
ご教授頂いたとおり、縁と線分の交差を調べることでキャラと矩形の重なりを探索することにいたしました。
円の式 (x-p)^2 + (y-q)^2 = r^2 と、2次方程式の解の公式を使って交差を調べるので
計算にかかる時間的な負担がちょっと心配ですが、とりあえずはプログラムを組み
実際の動作を見てみようと思います。
アドバイスいただき、誠にありがとうございます。
193ポイント を手に入れた。
|
|
|
|
|
Name: ベッキー ..ぴよぴよ(490ポイント)
Date: 2009/03/16(月) 00:46
No:30798
|
|
Title: Re:矩形と円の当たり判定
|
|
おつかれさまです。
乗算や平方根などを適用すると計算の負担が多いとおもいますが
まずは自分でわかりやすいアルゴリズムで組むほうが良いと思います。
頑張ってください。
線分と円との衝突を検出するアルゴリズムとしては
線分と円の中心との距離を出し、半径と比較する、という方法もありますので
コスト的なものは組み方にもよりますが、そういったアルゴリズムもあるということを
知っておいて損はないと思います。
138ポイント を手に入れた。
|
|
|
|
Name: ぬかづけ ..ぴよぴよ(21ポイント)
Date: 2009/03/13(金) 23:28
No:30645
|
|
Title: エラーについて
|
|
はじめまして。
タイトルにもある通り、エラーについてお伺いしたいことがあり、投稿させてもらいました。
本サイトを参考にしながら勉強させてもらっていたのですが、以下のようなエラーが出て「デバックなしで開始」を押しても反応しなくなってしまいました。
fatal error LNK1104: ファイル 'C:\Users\xxxxx\Downloads\xxxxx\DxLib_VC\サンプルプログラム実行用フォルダ\Debug\DxLib_VC2005用 a.exe' を開くことができません。 DxLib_VC2005用 a DxLib_VC2005用 a
どなたか解決策をご存じの方がいらっしゃいましたら、この無能役野菜に教えてやってください。
21ポイント を手に入れた。
|
|
|
|
Name: Mikan [URL] ..初心者(6,963ポイント)
Date: 2009/03/13(金) 23:32
No:30646
|
|
Title: Re:エラーについて
|
|
とりあえず、ファイルパスから個人情報らしきものが読み取れてしまうので
fatal error LNK1104: ファイル 'C:\Users\xxxxx\Downloads\xxxxx\DxLib_VC\サンプルプログラム実行用フォルダ\Debug\DxLib_VC2005用 a.exe' を開くことができません。 DxLib_VC2005用 a DxLib_VC2005用 a
に文章を編集したほうが良いかと思われます^^;
119ポイント を落としてしまった。
|
|
|
|
|
Name: 朽木 ..かけだし(1,943ポイント)
Date: 2009/03/14(土) 00:25
No:30656
|
|
Title: Re:エラーについて
|
|
とりあえず LNK1104 を ...
ttp://msdn.microsoft.com/ja-jp/library/ts7eyw4s.aspx
ググってみた所、既に実行されている状態のままコンパイルしたために、書き込み用に開けず、エラーになって
しまうそうですが、どうでしょうか。
69ポイント を手に入れた。
|
|
|
|
|
Name: ぬかづけ ..ぴよぴよ(312ポイント)
Date: 2009/03/14(土) 18:47
No:30731
|
|
Title: Re:エラーについて
|
|
>文章を編集したほうが良いかと思われます^^;
ありがとうございます。気づいてはいたのですが、何と置き換えたら良いのか分からなかったので助かりました。
>既に実行されているってことはないですか?
>タスクマネージャーのプロセスに同じ実行ファイルが無いか調べ、あったら終了させてみて下さい。
調べてみましたが、ありませんでした。
>ググってみた所、既に実行されている状態のままコンパイルしたために、書き込み用に開けず、エラーになってしまうそうですが、どうでしょうか
一度、すべて閉じて再度コンパイルしても同じエラーが出てしまいます…。
291ポイント を手に入れた。
|
|
|
|
|
Name: ぬかづけ ..ぴよぴよ(395ポイント)
Date: 2009/03/15(日) 03:41
No:30766
| 解決!
|
Title: Re:エラーについて
|
|
>コンパイルはリビルド(再構築)を行っていますか?
リビルドをしたらエラーがなくなりました!ありがとうございます。
今回のエラーは、一つ前に実行したものが消えずに残っていたのが原因だったのでしょうか?
83ポイント を手に入れた。
|
|
|
|
|
Name: SooA [URL] ..中級者(9,632ポイント)
Date: 2009/03/15(日) 04:29
No:30768
|
|
Title: Re:エラーについて
|
|
統合環境コンパイラでは、
ファイルが変更されたか していないかをチェックし、
変更されていないものに関してはコンパイルを行わず
前回作成した中間ファイルを使用してコンパイルします。
不要なコンパイルを行わないので高速なコンパイルが
可能になります。
しかし統合環境の与り知らない所でファイルに変更が
加えられた、又は外部依存関係にあるファイルが変更された場合、
『修正は無い』と判断されてしまいコンパイルされない場合があるので、
そのような時は全てを再構築する必要があります。
149ポイント を手に入れた。
|
|
|
|
|
Name: ぬかづけ ..ぴよぴよ(451ポイント)
Date: 2009/03/15(日) 18:55
No:30791
| 解決!
|
Title: Re:エラーについて
|
|
ありがとうございます。勉強になりました。
これからは気をつけるようにします。
2倍のポイントを手に入れた! 56ポイント を手に入れた。
|
|
|
|
Name: ざこ ..プログラマー(37,872ポイント)
Date: 2009/03/13(金) 21:29
No:30617
|
|
Title: 【雑談】 先日の件
|
|
OKWAVEの方に問い合わせメールを出しました所こういう返答が着ました。一応載せると言ったので載せますね。
質問内容はこちらです
先日OKWAVEでプログラミングに関するご質問をさせていただきました。
その際お2人に回答していただきましたが1人は途中で返答がなくなりました。
もう1人の方は少し回答内容が理解できなくて、マルチポストを承知し、他の掲
示板に全くのコピーではありませんが同じ系統の質問をしました。
その際にOKWAVEではマルチポストが禁止されていると意見がありました。
禁止事項とネチケットを別物として考えていたのです。これはどうなるのでしょ
うか?
それとマルチポストに関してご質問があります。
OKWAVEでは多重投稿は禁止されています。つまり一度のみ質問が可能です。
一度立てた質問は更新されることなくどんどん下へいきますよね。
その場合閲覧数も減り、回答もなくなります。
マルチポストの意義がなんとなくはわかるんですが、
『もしもOKWAVEの1回の質問で問題が解決できなかった場合、他の掲示板でも質
問ができないのでこの問題は 諦めろということになりますよね?』
ということです。私の行為は違反になりますか?
違反になるのならばこの問題を解決するにあたっての良法を教えて下さい。
返答は転載禁止されている為そのままは載せないようにします。
弊社運営のコミュニティサイト上の投稿
をチェックの対象としており、それ以外のサイト上の投稿につきましては、
違反の判断の際に考慮していないとのことです。
このため、私の事例に関しましては、当サポートではマルチポストでの違
反と判断していないとのことです。
私が言うように、回答が付かずに一回の
質問では解決できなかった場合なども考えられますため、先の質問を締め切った
後で、新たな質問として再投稿していただくことについては、問題ないものと判
断しているそうです。(これはあんまし関係ありませんね)
先の質問を締め切らずに再投稿された場合は、削除・編集の対象とさせていた
だく場合もあります。
以上です。疑わしい方は同じ質問内容で問い合わせてみてください。
626ポイント を手に入れた。
|
|
|
|
Name: SCI ..上級者(15,288ポイント)
Date: 2009/03/13(金) 21:35
No:30619
|
|
Title: Re:【雑談】 先日の件
|
|
重要なのは「規則」ではないのですが・・・
禁止事項でないならば、ネチケットは無視してもよい、という論理には同調しかねます。
43ポイント を手に入れた。
|
|
|
|
|
Name: Hermit ..上級者(22,219ポイント)
Date: 2009/03/13(金) 22:02
No:30628
|
|
Title: Re:【雑談】 先日の件
|
|
OKWave の方でのマルチポスト禁止が、OKWave 内だけでのマルチポストが禁止であるなら、
こちらの規則の禁止事項に引っ掛かるわけではないのだから(でいいんですよね…読んではいないので(^^;)
エチケットとしては、禁止事項であると勘違いをしたことを謝る方が先ではないかと思いますが。
まあ、本当に禁止事項でないかどうかは自信がないので、管理人さんに聞いてからの様な気はしますが(^^;
ネチケットとしては、放置、無視が常套手段でしょうか?
119ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,530ポイント)
Date: 2009/03/13(金) 22:05
No:30629
|
|
Title: Re:【雑談】 先日の件
|
|
>エチケットとしては、禁止事項であると勘違いをしたことを謝る方が先ではないかと思いますが。
おっと、思わぬ嫌疑を掛けられていますね。
私は一度も「禁止事項であるから云々」とは言っていません。
49ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(37,999ポイント)
Date: 2009/03/13(金) 22:12
No:30631
|
|
Title: Re:【雑談】 先日の件
|
|
私の2つ前にだした板は、OKWAVEでは【禁止】されているので相互リンクしてもマルチポストは禁止と
意見でたんですよ。それが禁止ではないようですと言いたいだけなんですけどね。ネチケットに関しても
報告などありますから禁止 という意見もでました。私がOKWAVEの方からネチケットに関する記述は得になく、
問題はない といただきました。何かあるなら頻繁にはしないようになど 何らかの記述があってもいいはずです。SCIさんのご意見はOKWAVEとこの掲示板を相互リンクを貼り付けマルチポストするという行為がネチケットに反する という事実に基づいたものでそれを根拠づけるものはありませんよね?
2倍のポイントを手に入れた! 92ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,479ポイント)
Date: 2009/03/13(金) 22:21
No:30632
|
|
Title: Re:【雑談】 先日の件
|
|
まぁネチケット自体が曖昧な概念ですから。
というか、私が口出しすることではなかったですね。この件に関しては私も気をつけます。
51ポイント を落としてしまった。
|
|
|
|
|
Name: ざこ ..プログラマー(38,030ポイント)
Date: 2009/03/13(金) 22:25
No:30634
|
|
Title: Re:【雑談】 先日の件
|
|
いえいえ貴重なご意見です。OKWAVEの方もご利用してる方も多いようですのでこの件は少なからず
役に立つのでは?と思います。禁止事項であるとの ことであれば即座に考えを変えて遵守します。
31ポイント を手に入れた。
|
|
|
|
|
Name: Hermit ..上級者(22,126ポイント)
Date: 2009/03/13(金) 22:28
No:30636
|
|
Title: Re:【雑談】 先日の件
|
|
> >エチケットとしては、禁止事項であると勘違いをしたことを謝る方が先ではないかと思いますが。
> おっと、思わぬ嫌疑を掛けられていますね。
> 私は一度も「禁止事項であるから云々」とは言っていません。
SCI さんには、エチケットも、ネチケットも無視しているわけではなさそうだという意味で書いてますが。
まあ、「禁止事項であるから云々」を書いているのが誰かなんてことは、私にはどちらでもいい事なので
書いた人にあててと思ってください。
ちょっと、ざこさんがかわいそうに思っただけです。
これ以降は、ネチケットの、放置、無視がよろしいかと。
私はそちらに向かいます(^^;
93ポイント を落としてしまった。
|
|
|
|
|
Name: Dixq (管理人) ..ウィザード(1,009,921ポイント)
Date: 2009/03/13(金) 23:40
No:30647
|
|
Title: Re:【雑談】 先日の件
|
|
HPを作っているものとして有るまじき行為だったかもしれませんが、ネチケットは読んだ事ありませんでした;
きっと常識的な判断をすれば全て当たり前のように解る事ばかり書いてあると思って・・。
うちのサイトには、あまり厳重に規則作りたくないんですよね・・。
みんなが常識的な考えを持ってコメントしてくれたら規則なんて要らないと思うんです。
キチキチした規則だらけで、少しでも違反したら鬼の首取ったみたいに騒いで注意するような掲示板が存在したとしたら私は居心地が悪いと思います・・。
ただ管理人としてはどのような状況でも責任持てるようにしておかないといけないと思うので、
一応規則は作ってありますが、常識的に考えて投稿してもらえたら少しぐらい違反の類があっても問題ではないと勝手に思っています。
まぁその「常識的」が人によって違うわけで結局は規則を作って・・(ブツブツ
私自身似たようなトピでも、同じトピに書き込みせず、ある程度日がたったら新トピ立てますし、
それなりに臨機応変に(うちの掲示板に限っては)自由に投稿していただけたらと思います。
あと、「先日の件」というトピック名は初めて見た人がわかりにくくないでしょうか?
272ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(89,296ポイント)
Date: 2009/03/13(金) 23:59
No:30654
|
|
Title: Re:【雑談】 先日の件
|
|
(元の質問から)話が大きくそれてここまで来たかという感じですが、私が切っ掛けを作ってしまったことは確かなので、その点については反省しなければなりません。
まず、今回の件ですが、元々ざこさんがマルチポストが認められるための対策を試みていたことは確かなので、放置、無視すべき悪質なマルチポストでなかったことを指摘しておきます。
次に、マルチポストが許されるための条件である、相手方でもマルチポストが許可されており、かつ相互リンクが貼られているということに関して、二つとも条件を満たしていないと(少なくとも私は)考えました。
マルチポストが許可されているかどうかについては、
http://help.okwave.jp/okwave/beginner/netiquette.html
に、「多重投稿(マルチポスト)はしないようにしましょう」という項目があり、かつ、ここでいうネチケットは、上記URLのページから引用すると...
インターネットを通してコミュニケーションを行うには、いくつかの決まりごとがあります。それを「ネチケット」と言います。
インターネットでのコミュニケーションは、実社会とは違い、相手の顔が見えないコミュニケーションです。このため、お互いに相手がどんな状態でどんな表情で話をしているのか確認することはできません。また、会話でのコミュニケーションではないため、うっかり言い間違えてしまったことを言い直すように、間違えて投稿してしまったとしても、すぐに訂正することもできません。このため、人と気持ちよくコミュニケーションを取るためには、通常よりも注意が必要となるのです。
みなさんに快くサイトをご利用いただくためにも、投稿をいただく際は以下のルールを守って、常に初めて会う方に対して行うような配慮をもって接していただきたいと思います。
とあることから、守らなければならない「決まりごと」であるという認識をOKWave側が持っていると考えました。
(先のトピでは、ここまで書くのが面倒だったので、違反報告の理由になっていると書いてしまいました)
この認識が正しければ、たとえ後から相互リンクを行っても改善不能であることから、当初は相互リンクの話はしませんでした。
そして、ここからが大事なのですが、OKWaveとこちらの掲示板を両方追いながら回答するのは現実的ではないので、
> それはともかく、いちいちマルチポスト先を把握するのも大変なので、必要な情報は全部こちらに再掲してください。
とお願いしたのですが、これは聞き入れてもらえず、OKWaveのルールの解釈論に話がそれていきました。
これはちょっといただけません。
最後に、OKWaveからの回答については、原文そのままではないのでニュアンスが変わっているかもしれませんが、「他のサイトのチェックまでやってられないので、削除・編集の対象とするのはOKWave内のマルチポストだけです」という意味かと思います。
上述したように、守らなければならない「決まりごと」ではあるけれども、罰則規定はないよ、という意味だと思います。
こちらの掲示板でも、よほどひどい内容でなければ管理人さんは削除・編集することはありません。実際、単にマルチポストだというだけで削除されたのを見たことはありません。
つまり、(実質的に)罰則がないわけですが、だからといって許可されているということではありませんね。
889ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(37,848ポイント)
Date: 2009/03/14(土) 00:31
No:30657
|
|
Title: Re:【雑談】 先日の件
|
|
>>> それはともかく、いちいちマルチポスト先を把握するのも大変なので、必要な情報は全部こちらに再掲してください。
とお願いしたのですが、これは聞き入れてもらえず、OKWaveのルールの解釈論に話がそれていきました。
これはちょっといただけません
無視してたわけではないのですが、最初のレスですね。その意見を仰る前に「OKWAVEではマルチポストは
禁止されている」といわれましたのでそれは事実? ってなってネチケットの話になったので自然な流れ
だとは思います。まず私の行為が間違ってるかどうか確かめ、間違っているなら行動を改め、間違ってはいない というならたかぎさんのような意見を取り入れるという順序です。OKWAVEの方でNGといわれれば
どんな丁寧に書いても、こちらの回答者様にわかりやすく必要な情報を全部載せてもNGです。
罰則はないわけで許可されることではないのは確かです。悪質なマルチポストもありますしね。
私が言いたいのはそうでないマルチポストもあり、それは大丈夫なのでは?ってことです。
問題ないといわれてる以上悪質でない物も悪質なものもネチケットという根拠の不明?な
内容でこのようなマルチポストを全て禁止するような雰囲気を放つことはないのでは?と思います。
後管理人様が仰られたリンク先なんですけどちょっと張り方がわからないのでどなたか張っていただけたら
と思います。スレッド作成者は私でタイトルは【コマンドライン引数】 というスレッドです。
そんなに古いスレッドではありません。>>No:30404 こちらの番号のスレッドですね
182ポイント を落としてしまった。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(89,884ポイント)
Date: 2009/03/14(土) 01:15
No:30659
|
|
Title: Re:【雑談】 先日の件
|
|
> その意見を仰る前に「OKWAVEではマルチポストは
> 禁止されている」といわれましたのでそれは事実? ってなってネチケットの話になったので自然な流れ
> だとは思います。
文脈としては自然かもしれませんが、そんな話を延々としたかったわけではありませんよね。
> 問題ないといわれてる以上
今回の報告では、「問題ない」とされる行為は、先の質問を締め切ってから次の質問をすることであり、マルチポストが問題ないという話にはなっていませんよね。
> ネチケットという根拠の不明?な内容で
少なくともOKWaveのいうところの「ネチケット」の根拠は明示されています。
> 私が言いたいのはそうでないマルチポストもあり
具体的にはどんなものを想定されていますか?
私の認識としては、マルチポストはすべて悪質です。今回のマルチポストに関しても、放置、無視するほどではないというだけです。
ただし、それでもなお許容される状況はあり得ます。それは概ね次のような場合です。
・マルチポストを行うことで、それぞれのコミュニティにとって有益な結果をもたらすことができる。
・やむにやまれぬ事情があり、ルールを守った上でマルチポストを行う。
今回の場合は後者に該当するかどうかになるわけですが、本題よりOKWaveのルールの解釈論を優先していることからしても、やむにやまれぬ事情があったとは到底思えないのです。
私であれば、OKWaveで得られたアドバイスを実践し、それでも駄目なら再質問することで、そこで解決することをめざします。
2週間たっても進展しないといっても、得られた回答に対してお礼も補足もつけない状況では当然のことです。
今回は雑談として立ち上げられたトピですので、不毛とは知りつつも、可能な限りこの話題に付き合いたいと思います。
458ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..プログラマー(31,758ポイント)
Date: 2009/03/14(土) 01:18
No:30660
|
|
Title: Re:【雑談】 先日の件
|
|
OKWaveさんの「マルチポスト」の詳細な解釈は今回問い合わせて分かった事です。
それまで皆さんは「一般的」な解釈を基に書き込みをされていました。
(いちいち利用するサイトに「マルチポスト」の定義の詳細を教えてくださいとは言わないので)
こういった公共の場所では特に「一般的」な解釈が重んじられるので、
ざこさんが「独自の解釈」をして、事後承諾の形を取るようにした事がそもそもの問題だったと思います。
そして、ここまで問題が大きくなったのは上記の失策に対してただひたすらに「自分の解釈は問題が無い」
と言い続けた事ではないでしょうか?
先んじて、OKWaveさんにマルチポストの解釈を聞くなり、
正式に締めてからこちらに質問するなりすれば良かったと思います。
たとえ非のない解釈であっても、既に受け容れられ実践されているものと違うものであれば
それは和を乱すものである事が多いので、事前にその解釈についての意見を聞いておくべきです。
今回の様にグレーゾーンにある問題については尚更そうすべきです。
一連の騒動を見ていて思った事を書きました。
追記
ネチケットというのは他人を不快にさせない為のものでは?
不特定多数の他者との接触があるのであれば十分過ぎる理由になると思います。
自分はマルチポストが本質として「悪質」を持ってると思います。
その中で良い悪いを言っても程度の問題で、やはり悪質には変わらないと思っています。
これは私の独自の解釈です。
このサイト(と管理人様)が特別に寛容である事を忘れてはいけません。
社会では一般的な解釈が主流で、独自の解釈はほぼ間違いなく異質として扱われるようです。(経験談等を聞く限り)
気心の知れた者たちの間でなら喜ばれていても、そうでない者には不快な思いを持つ者も少なくないので、
まずは一般的な感覚・解釈で接するのが良いと思われます。
461ポイント を落としてしまった。
|
|
|
|
|
Name: ざこ ..プログラマー(37,869ポイント)
Date: 2009/03/14(土) 01:38
No:30662
|
|
Title: Re:【雑談】 先日の件
|
|
>>文脈としては自然かもしれませんが、そんな話を延々としたかったわけではありませんよね。
その通りです。しかしまずはメールの返信を待たなくてはいけなかったので順序的には正しいです。
メールはさきほどきたばかり。
こういうのは永遠ループになりそうなのではっきり聞いておきますね。
OKWAVEの方でネチケットの根拠は示されている のではなく私のような行為がネチケットに違反するという
根拠です。メールでは注意すらなかったので私の行為がネチケットに違反するということは薄いと考えました。
それはたかぎさんなどにネチケットも違反行為 と言われ、メールで問い合わせた所問題ない という意見を
いただいたからです。ネチケットにも問題ないと思いました。
大変失礼な物言いになります。
私は貴方に違反行為をしてるといわれ、事実確認まで行いました。貴方はそれでも
まだ悪い と言いますよね。確かにマルチポストは悪用されマナーが悪い方も多いです。
貴方がマルチポストに関して仰ってるのは全て貴方の感情論であって私の行為が 悪いことだという
証拠にはなりません。(私はOKWAVE様より問題ないという意見をいただきました)論より証拠と言います。何かを批判するならそれ相応の根拠でお願いします。正直貴方なマルチポストに対してかなり不快感をもっており
押し付けてるようにしか見えません。私が納得するような意見をお願いします。
21ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(38,412ポイント)
Date: 2009/03/14(土) 01:47
No:30663
|
|
Title: Re:【雑談】 先日の件
|
|
>>こういった公共の場所では特に「一般的」な解釈が重んじられるので、
ざこさんが「独自の解釈」をして、事後承諾の形を取るようにした事がそもそもの問題だったと思います。
そして、ここまで問題が大きくなったのは上記の失策に対してただひたすらに「自分の解釈は問題が無い」
と言い続けた事ではないでしょうか?
それはどうでしょうか? ネチケットを見てどういう解釈をするかは人それぞれではないですか?
事実質問を締め切ってれば別によいのでは という意見の方もいましたよ。私のネチケットに対する
捉え方が間違ってるかどうかが 問題なんだと思います。それにOKWAVEの方から返信をいただくまでお待ち下さいと言っています。誤解されてるのではないですか?大体失策ではないと言われたのだからここで批判される
ことじゃないのでは・・と思います
>>先んじて、OKWaveさんにマルチポストの解釈を聞くなり、
正式に締めてからこちらに質問するなりすれば良かったと思います。
こちらは完全に失策になります。反省しており、OKWAVEの回答様にはもう少し丁寧にお詫びしなければ
と思っておりました。
私が言いたいのはですね。人に何かを律しさせる、抑制するということは納得のいく理由(決まり事や規則)
などが必要なのです。たとえば校則でもないのに立ち食いするのはマナーが悪いからするな、見てて不快と言われても私はとても納得できません。感情を害することもあるかもしれません。しかし中にはちゃんとしてればマルチポストもいいんじゃないか? という意見の方もおられますよ。それを跳ね除けて NG! と言われるなら
納得のいく理由がほしいじゃないですか? おかしいこといってますかね。
悪質なマルチポスト だけでなく全てのマルチポストはNGと仰られてるのだからとても納得はできませんね。
私は即メールまでして自分の行いが違反行為なのか否か示しました。問題ないと言われ、悪質なマルチポストは
NGなのは同意。誠意を持ってしなければならないとは思いますけどそれすら NG!と言われるとどうも反発
してしまいますね
543ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(90,372ポイント)
Date: 2009/03/14(土) 02:00
No:30664
|
|
Title: Re:【雑談】 先日の件
|
|
> OKWAVEの方でネチケットの根拠は示されている のではなく私のような行為がネチケットに違反するという
根拠です。
http://help.okwave.jp/okwave/beginner/netiquette.html
に、「多重投稿(マルチポスト)はしないようにしましょう」という項目があり、投稿する際にはそれを守れとなっています。
これに該当している以上、違反は違反です。
> メールで問い合わせた所問題ない という意見を
いただいたからです。
少なくとも、今回の報告を見る限り「問題ない」とは書かれていません。
「違反の判断の際に考慮していない」というだけです。
考慮していなければ、違反という判断に至らないのは当然のことです。
> 貴方がマルチポストに関して仰ってるのは全て貴方の感情論であって私の行為が 悪いことだという
証拠にはなりません。
なかなか分かっていただけないようですが、今回なぜ問題にしているのかというと、ざこさんの質問には必要な情報が欠如しており、回答することが困難だからです。ざこさんは、マルチポスト先を参照して補完すればよいと考えたのかもしれませんが、そのような手間を強要するのは、礼儀としても、作業上の利便性の観点からも望ましいものではありません。
だからこそ、
> 必要な情報は全部こちらに再掲してください。
とお願いしたのです。
しかし、これを棚上げにしたまま、ルールの解釈論を優先されました。
この状況では問題解決に支障が出るわけですから、私の感情論とかではなく、これは正しいやり方ではない(=悪い)わけです。
488ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(38,523ポイント)
Date: 2009/03/14(土) 02:14
No:30665
|
|
Title: Re:【雑談】 先日の件
|
|
>>に、「多重投稿(マルチポスト)はしないようにしましょう」という項目があり、投稿する際にはそれを守れとなっています。
これに該当している以上、違反は違反です。
OKWAVE様から許可をいただいたのにまだ違反 とか言わないでもらえますか?せめてマナーは悪いとかにしましょう。(違反ではありませんと はっきりメールに記載されています)
>>
> 必要な情報は全部こちらに再掲してくださいしかし、これを棚上げにしたまま、ルールの解釈論を優先されました。 この状況では問題解決に支障が出るわけですから、私の感情論とかではなく、これは正しいやり方ではない(=悪い)わけです
ならお聞きしますけどこれをしたからどうだと言うんですか?
これをしたらマルチポストがマルチポストでなくなるとでも?
そうでないのだからまずは違反行為かどうか確かめるのが先決でしょう(マルチポストであり尚且つこれは違反かどうか)。それから改善する のは十分考えられますよ? 何か矛盾してませんかね。それにたかぎさんはネチケット違反はきっぱり違反行為といいましたよね。
もしもどうしても根拠をいわず私の行為は悪いと仰るなら
今回の騒動の詳細なメールをOKWAVE様の方に送りその対応を載せて下さいよ。
それぐらいはするのが筋です。ここまで批判するんだから
111ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(38,526ポイント)
Date: 2009/03/14(土) 02:19
No:30666
|
|
Title: Re:【雑談】 先日の件
|
|
>>ざこさんの質問には必要な情報が欠如しており、回答することが困難だからです。ざこさんは、マルチポスト先を参照して補完すればよいと考えたのかもしれませんが、そのような手間を強要するのは、礼儀としても、作業上の利便性の観点からも望ましいものではありません。
これが許されるのも OKWAVEでのマルチポストが許可されていなければなりませんよね?
だから私はメールしたんですがね。ちょっと矛盾してません?マルチポストはNGなんですよね
(私の場合のマルチポストもNGだと仰られています)
私が最初からここへ書くのはそれでもいけますが、今回の状況だとおかしいと思いますが。
3ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(90,409ポイント)
Date: 2009/03/14(土) 02:33
No:30667
|
|
Title: Re:【雑談】 先日の件
|
|
> 違反ではありませんと はっきりメールに記載されています
原文を転記されていないので、それについては何ともいえません。
> これをしたらマルチポストがマルチポストでなくなるとでも?
マルチポストでなくすことが目的なのですか?
質問内容を解決することが目的なのですか?
そこのところを、もう一度よく考えてください。
> もしもどうしても根拠をいわず
根拠は何度も書いています。
> それぐらいはするのが筋です。
ざこさんの論法でいけば、私がそうしなければならない納得のいく理由(決まり事や規則)を示してください。
残念ながら、それほど暇ではないのです。
ところで、決まり事や規則がないと己を律することができないというのは、それ自体問題があります。
> ちょっと矛盾してません?
矛盾はしていますが、質問に何とか回答しようと努力したからなんですけどね。
> マルチポストは完全NGなんですよね
許容できる状況はあると書いたはずですよ。
37ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(38,894ポイント)
Date: 2009/03/14(土) 02:41
No:30669
|
|
Title: Re:【雑談】 先日の件
|
|
転載は禁止と書かれていたんで仕方ありません
>>マルチポストでなくすことが目的なのですか?
質問内容を解決することが目的なのですか?
そこのところを、もう一度よく考えてください。
これは一体どういう意図なんでしょう。質問内容はとっくに解決していて、今はOKWAVE様から
こういう返答をいただき相互リンクさせれば大丈夫なんじゃないのでしょうか?という意図の論議から
たかぎさんに批判されるので論議が熱くなってるんですよ。ここでそういうこと言われても困りますね。
>>矛盾はしていますが、質問に何とか回答しようと努力したからなんですけどね。
ありがとうございます。しかし今の論議からこれを持ち出しても私には理解しかねます。
>>> マルチポストは完全NGなんですよね
許容できる状況はあると書いたはずですよ
修正しました。しかし私の場合もNGと仰られてるので同じことです。
368ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(38,939ポイント)
Date: 2009/03/14(土) 02:43
No:30670
|
|
Title: Re:【雑談】 先日の件
|
|
雑談なので大丈夫ですよ。私はたかぎさんとのきまづくなるほうが問題です。
双方すっきり納得いく形で終わりたいです。
45ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..プログラマー(32,681ポイント)
Date: 2009/03/14(土) 02:44
No:30671
|
|
Title: Re:【雑談】 先日の件
|
|
>しかし中にはちゃんとしてればマルチポストもいいんじゃないか? という意見の方もおられますよ。
>それを跳ね除けて NG! と言われるなら納得のいく理由がほしいじゃないですか?
>おかしいこといってますかね
「ちゃんとしていない可能性の極めて高い」マルチポストだから問題にされたんです。
事実、そのことに決着したのはOKWaveさんからの返答があった時です。
つまりそれまでは、ざこさんの「都合の良い独自の解釈」にしか過ぎなかったわけです。
問題がある可能性が高いのに「事後承諾」では、受け容れられません。(特に企業では)
そのような場合は「事前」に承諾を頂く事です。
皆それぞれの解釈があると言い出すと、そもそもルール自体が不要になってしまいます。
いかようにも解釈が許されるのですから。
摩擦を起こさない為には論理的に正しい(が誰も実践していない)自分の解釈ではなく、
(大勢が実践している)一般的な解釈に合わせなくてはなりません。
それはネチケット以前、社会の常識と言っても言い過ぎではありません。
>それに返信をいただくまでお待ち下さいと言っています。
それはマルチポストの件であって、この騒動の発端になったことに対して謝罪しない理由ではないですよね。
その事がここまで騒動を発展させた原因だとは読み取っては頂けませんでしたか?
>私が言いたいのはですね。人に何かを律しさせる、抑制するということは納得のいく理由(決まり事や規則)
などが必要なのです。
ルール自体が納得する理由にはなりませんか?
ルールとは他人に迷惑をかけないように、不快感を与えないように、またそれらの可能性のあるものを抑制する為に、先人の経験等を参考に作られたものです。
ざこさんの言い分はこれらの「経験」を取るに足らないもの、自分の理屈の方が正しいと言っているに等しく感じられます。
一つ例外があれば、それに対して不公平感が生じます。そして既存の例外を保護し、新たな例外を生まない為に
解釈はどんどん歪められ、ルールは消え去ってしまいます。
このまま行くとやむを得ずマルチポスト完全禁止、なんて事にもなりかねませんし言いたい事は
言ったつもりなので降りる事にします。
管理人様、不快に思われた方、まことにすみませんでした。
923ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(39,123ポイント)
Date: 2009/03/14(土) 02:52
No:30672
|
|
Title: Re:【雑談】 先日の件
|
|
どうもきちんと問題であったスレッドを読んでないように見受けますね。
貴方の意見は私が悪いと決め付けている前提で行っているものですよ。私が正しいとか言ってると仰ってますがまずそこがおかしいでしょう。結果そうであったなら
謝罪と考えの修正はしていましたよ。規約違反でもなく著しく開き直ってマナー違反してるわけでもないし
回答者様にお礼や補足を書かなかったことについては激しく反省しております。
一方的に悪い 決め付けて論議される理由はないですね。
大体私は○○思いマルチポストに関して不快な思いをしました。こういう思いをしてマルチポストは許せない
というのならわかりますけど 事後承諾かなんかしりませんけどただの一方的決めつけです。
とりあえずサイト主から許可されているのにも関わらずまだ掲示板にそう書いてあるからNGとか
言われても誰も納得しませんよ。
184ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(90,543ポイント)
Date: 2009/03/14(土) 02:53
No:30673
|
|
Title: Re:【雑談】 先日の件
|
|
> 質問内容はとっくに解決していて、
その時点での話をしているのです。
いまさら、あのときの質問内容をどうこうしようというつもりはありません。
> たかぎさんに批判されるので論議が熱くなってるんですよ。
いや、熱くなっているのは、ざこさんだけだと思いますよ。
私としては、道徳教育をないがしろにした某教職員組合による偏向教育の影響が現れているのかと思うと、気の毒になってきています。
86ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(39,207ポイント)
Date: 2009/03/14(土) 02:57
No:30674
|
|
Title: Re:【雑談】 先日の件
|
|
それはこちらとて同じこと。どうやらマルチポストに関して不快憎悪があり、それに触れた私に対して
憤りを覚えているようですね。こちらは悪いと思ったことは素直に謝罪し、反省すべき点はきちんと
抑え、次に生かそうとしてるのに残念極まりないですね。
84ポイント を手に入れた。
|
|
|
|
|
Name: 通りすがり ..上級者(15,216ポイント)
Date: 2009/03/14(土) 03:23
No:30676
|
|
Title: Re:【雑談】 先日の件
|
|
ネカフェから失礼。一連のスレ見たけどどう見てもざこさんの方が正しいとは言わんけど
筋は通ってるようにみえるよ?だってたかぎさん曖昧な受け答えしかしてないしw
何かやたら煽ってるしもう少し落ち着いたら??
> 私としては、道徳教育をないがしろにした某教職員組合による偏向教育の影響が現れているのかと思うと、気の毒になってきています
とか言う必要あるの?
まとめると
1,ざこ氏がマルチポストで質問。それに対したかぎ氏OKWAVEでは違反なので規約違反ですと注意
ここで問題なのはざこさんは相互リンクしてないのに書き込んだこととOKWAVEでの方の回答者に
ちゃんと対応しなかったこと。たかぎさんのほうは素直にそう思っただけだから問題ありません。
2,規約違反ではないがマナー違反だと思わせる内容があった。
ざこ氏:マナー違反は規約違反と別物では・・?
たかぎ氏:マナー違反も報告などあるので規約違反
3,ざこ氏がOKWAVEに問い合わせ。違反ではないと言われるがその理由にたかぎ氏が疑問。
普通ですね。ざこさんはよくそこまでしたなと思ったけどw
4,ざこ氏 マナーの悪いのはダメだけどちゃんとしてればokなんじゃないの?
たかぎ氏 容認できる場合もあるがざこさんの場合はNG
5,ざこ氏 それはどうしてですか?と質問するがたかぎ氏曖昧な受け答え
私も違反ではないがマナーが悪いというのは理解できたがそれがマルチポスト規制に導かれる理由としては不十分に感じた。
6,熱くなりたかぎ氏煽り気味になる。ざこ氏も熱くなる。
ってとこでしょう?
どう見てもざこさんのほうが筋が通ってるように見える気がしてならんのだがね
木霊さんの意見も、OKWAVEの方に違反ではないと言われたのなら事後承諾はだめだろ,とか言う前に
そうだったのかと考えを見直すべきっしょ。
692ポイント を手に入れた。
|
|
|
|
|
Name: 通りすがり ..上級者(15,345ポイント)
Date: 2009/03/14(土) 03:33
No:30677
|
|
Title: Re:【雑談】 先日の件
|
|
どちらも自分の意見が間違ってないといってるわけだけどざこさんの方はその為の行動も行っているし一応はそれなりに筋が通ってる。たかぎさんは暇じゃないから無理とかいっとるけど、メールなんて4,5分あれば書けるしあとは返答待ちじゃん?無理とかないでしょw やるやらないは別としてそういう受け答えが筋が通ってないというわけだが。
129ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..プログラマー(32,896ポイント)
Date: 2009/03/14(土) 04:15
No:30678
|
|
Title: Re:【雑談】 先日の件
|
|
降りるといいましたが、通りすがりさん宛てに一度だけ。
>通りすがりさん
今回は結果がOKだったんですが、もしNGだったらどうでしょう?
事後承諾という事は、承諾を得る必要があると言う事、つまり(承諾を得るまでは)なんらかの問題がある行動と言えるのです。
マルチポストの件とは別で、そのことに対する謝罪はあるべきでしょう。
たまたま結果が良かったのでマルチポストの件は問題なくなりましたが、「結果を出せば何をしても許される」
という考えが一連の問題の根底にあるようです。
あくまで個人的にはですが、「謝罪をしない為に言葉を練る人間」よりも「謝罪の為に言葉を発する人間」の方が好感が持てます。
通りすがりさんはどう思いますか?
管理人さん、皆様、改めてすみません。おやすみなさい。
215ポイント を手に入れた。
|
|
|
|
|
Name: 通りすがり ..上級者(15,478ポイント)
Date: 2009/03/14(土) 04:29
No:30680
|
|
Title: Re:【雑談】 先日の件
|
|
いやNGだとそりゃ悪いでしょうけどw 今回に関してはちゃんと考えなおしましょうよ。
その後今言われたことを注意するとかすればいいでしょ?そもそも間違っていないのに謝罪する必要はないし
悪いかどうか定かではないんだからこの場合はしょうがないんじゃないかな? 俺がざこさんの立場でもこの内容で謝罪はせんなぁ・・
木霊さんおやすみなさい。
133ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(39,569ポイント)
Date: 2009/03/14(土) 04:48
No:30682
|
|
Title: Re:【雑談】 先日の件
|
|
知らない間に意見ありがとうございます。木霊さんの仰ってるのはそういうことでしたか。
しかし若干はどういえばいいのかというのはあるかな・・ 通りすがりさんの仰るようにまだ悪いかわからないのですから「悪いことかもしれないです。申し訳ありません」というのも不自然じゃないかな・・
とりあえず木霊さんの仰ることはわかります。自分でも問題ある行動とはその時点では思いませんでしたが
今ならなんとなくは理解できます。ただ私はせっかくここでは相互リンクがokならマルチポストが認められてるんだから自分でも使いやすくなるし他の皆さんも利用の幅が増えると思ったわけですよ。
あーでもそういう考えはしてなかったんですけどそういう風に見える受け答えはしていますね。
熱くなりすぎたかな。以後気をつけましょう。マルチポストの件は問題ないと仰ってくれてるので一方的に批判されてるわけではないですね。ごめんなさい。それとおやすみです。
362ポイント を手に入れた。
|
|
|
|
|
Name: 通りすがり ..上級者(15,430ポイント)
Date: 2009/03/14(土) 06:52
No:30684
|
|
Title: Re:【雑談】 先日の件
|
|
C言語を勉強すること以上に、
文章だけによるコミュニケーションを勉強することが
いかに大切であるかを
このスレッドを見ていて感じました。
直接会って話をしたら、
ここまで行き違うことはないと思いました。
48ポイント を落としてしまった。
|
|
|
|
|
Name: toyo ..プログラマー(27,829ポイント)
Date: 2009/03/14(土) 09:26
No:30691
|
|
Title: Re:【雑談】 先日の件
|
|
興味のある質問があると自分でもいろいろ検索して調べたりします
サンプルのプログラムも作って自分で実行して検証してやっと解決法を見つけて掲示板に投稿して
質問者さんの役に立てたかなとちょっといい気分になったりして
自分の知識も深くなり自分自身の役にも立ちますし
で他の掲示板をのぞいたところ同様の質問があってすでに解決済みだったりするとちょっといやな気分になりますね
マルチポストがだめだというのはそういう意味でもありますからその辺の対応はしておいたほうがいいですね
OKWaveでも関連する質問を続けて投稿される人は多いですよ
そのときによく書かれるのは前回の質問に回答があったらちゃんとお礼をして締め切ってくださいということです
その上で前回の質問のリンクをつけて新たに質問すれば誰もマルチとは言いませんよ
192ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(90,889ポイント)
Date: 2009/03/14(土) 10:55
No:30696
|
|
Title: Re:【雑談】 先日の件
|
|
今回の件に関しては、私は次のことをお伝えしていますが、なかなか伝わらないようです。
・質問内容を解決するための前向きなやりとりが重要ではなかったのか?
・マルチポストの正当性を主張することは、質問内容の解決より優先するのか?
・マルチポストの正当性主張より優先順位が低いような質問なら、マルチポストを行う必要はなかったのではないのか?
また、初期の時点でマルチポストの問題を指摘したのは、回答に支障が出る状態だったからです。これはルールがどうであるかより重要なことだと考えています。
支障を取り除くためのお願いは、マルチポストの正当性確認が先だということで聞き入れられませんでした。
なお、元のトピでは、
> 私の行為が違反かどうかはメールでの返信をお待ちいただきたい。まだ推測の域を出ません。全ての対応はそれからだと思います。もしも私がお知らせする返信内容が疑わしいようならば、質問内容をのせますので同様のご質問をしてください。
http://www.play21.jp/board/formz.cgi?action=res&resno=30404&page=&id=dixq&rln=30451#30418
とのことでした。
そして、なぜか別のトピを立て、そこで質問内容を解決したようです。
元のトピは、結果報告することもなく放置されています。そのトピだけを見ていては、解決したのかどうかを知ることはできないのです。
320ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(91,153ポイント)
Date: 2009/03/14(土) 11:33
No:30697
|
|
Title: Re:【雑談】 先日の件
|
|
ざこさんと木霊さんと私では、論点がずれているようですので、ここで整理してみたいと思います。
ざこさん
・OKWaveでは、他サイトとのマルチポストは認められる。
木霊さん
・ルール的にOKだったのは結果論なので、それ以前には問題となる行動だったのでは?
私
・マルチポストの正当性主張より、質問内容の解決の方が重要ではないのか?
私としては、マルチポストの正当性に関する議論にはそれほど興味がありません。
(正当性主張に熱くなっているのは、ざこさんだけです)
ですから、通りすがりさんが指摘されるように、
> たかぎ氏曖昧な受け答え
と感じられる回答になったのです。
OKWaveではマルチポストOKだから、今後も同様の(回答に支障をきたす)マルチポストを行ってもよいのだ、という結論を出されるのは困ります。
264ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(39,711ポイント)
Date: 2009/03/14(土) 12:05
No:30698
|
|
Title: Re:【雑談】 先日の件
|
|
ふむふむ確かに私個人の話なら質問内容解決の方が優先ですけど
これはマルチポストは禁止だから違反行為 とおっしゃられたから始まった論題では?
通りすがりさんも私と似た?捉え方をしていただいてるので私だけってのは違います。
質問内容の解決を優先に思ってくれるのはうれしいんですけどね。要は回答者様に対する対応は
きちんとしよう。私の件はそれができていなかったと(その通りです) 言うわけでしょうか?
それならば納得です。
142ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(39,795ポイント)
Date: 2009/03/14(土) 12:07
No:30699
|
|
Title: Re:【雑談】 先日の件
|
|
>>元のトピは、結果報告することもなく放置されています。そのトピだけを見ていては、解決したのかどうかを知ることはできないのです
確かに仰るとおりだ。解決 にすらしていませんでしたね。せめて結果報告はするべきでしたね。
84ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(91,228ポイント)
Date: 2009/03/14(土) 12:22
No:30700
|
|
Title: Re:【雑談】 先日の件
|
|
> ふむふむ確かに私個人の話なら質問内容解決の方が優先ですけど
> これはマルチポストは禁止だから違反行為 とおっしゃられたから始まった論題では?
回答者は、質問に回答するために発言しているのです。
違反行為の指摘も、その質問(または今後の質問)に回答するのに支障が出るから行っているのであって、その議論を延々行うことは本意ではありません。
> 通りすがりさんも私と似た?捉え方をしていただいてるので私だけってのは違います。
通りすがりさんは熱くなっているわけではないですよね。
> (正当性主張に熱くなっているのは、ざこさんだけです)
といっています。
> 要は回答者様に対する対応は
> きちんとしよう。私の件はそれができていなかったと(その通りです) 言うわけでしょうか?
そういうことです。
75ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..プログラマー(39,927ポイント)
Date: 2009/03/14(土) 12:31
No:30701
|
|
Title: Re:【雑談】 先日の件
|
|
通りすがりさんはたかぎさんに冷静になるよう促しています。双方熱くなっていると判断されていると思いますよ?
そういうことでしたら通りすがりさんも仰られていますが煽ることする必要もなかったのではと思います。
「そのメール内容はわかった。しかし貴方はちゃんと対応しなかった、それではマルチポストがngだと
世間にいわれるのも当然。やるならちゃんと対応してくれ」
の様に直接仰ってくれればよかったです
132ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(91,416ポイント)
Date: 2009/03/14(土) 12:54
No:30702
|
|
Title: Re:【雑談】 先日の件
|
|
> 通りすがりさんはたかぎさんに冷静になるよう促しています。双方熱くなっていると判断されていると思いますよ?
それは通りすがりさんの解釈です。
また、通りすがりさん自身が熱くなっているということでもありません。
> そういうことでしたら通りすがりさんも仰られていますが煽ることする必要もなかったのではと思います。
煽ったというのも通りすがりさんの解釈にすぎません。
私としては、本質ではないところで多大な労力を費やす方向に熱くなってしまっているのを見て、気の毒に感じただけです。
ざこさんも煽りだととられたのであれば、それについては謝罪します。
> 「そのメール内容はわかった。しかし貴方はちゃんと対応しなかった、それではマルチポストがngだと
> 世間にいわれるのも当然。やるならちゃんと対応してくれ」
>
> の様に直接仰ってくれればよかったです
http://www.play21.jp/board/formz.cgi?action=res&resno=30404&page=&id=dixq&rln=30451#30415
↑の時点で、その件に関してはもっと具体的に書いています(後半部分。前半はざこさんの問いに答えただけです)。
> また、仮に前述の回答にお礼や補足を行ったとしてもそれで終わりではなく、その後に双方のサイトで書き込まれたコメントに対して、遅滞なく対応すべきです。
> 普通はそれができないから、マルチポストは禁止されるのです。
>
> > OKWAVEで解決できなかった問題をどうすればいいのか という私の根本的な問題に何の解決にもなっておりません。
>
> OKWaveだからどうこうではなく、得られた回答でアドバイスされたことを自分なりに試してみて、それでも駄目なら、どのように試してどう駄目だったのかを説明すべきです。
> それができなければ、どこへ行っても無駄です。
メールの内容に関しては、すでに手遅れになったあとのことですので、そんなに興味はありません。
188ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,070ポイント)
Date: 2009/03/14(土) 13:04
No:30703
|
|
Title: Re:【雑談】 先日の件
|
|
いやまぁそれはそうですけど・・私以外にもそう感じられてる方がいるならそれも意見として
ちゃんととり入れないといけないでしょう。●●さんの勝手な意見で流されてしまうとせっかく意見くださった
通りすがりさんにも申し訳なく思いますよ。
>>> 私としては、道徳教育をないがしろにした某教職員組合による偏向教育の影響が現れているのかと思うと、気の毒になってきています
これを煽りと捉えない方は少ないと思いますが・・
143ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,155ポイント)
Date: 2009/03/14(土) 13:06
No:30704
|
|
Title: Re:【雑談】 先日の件
|
|
大体通りすがりさんが熱くなってどうがどっちでもいいですよ。たかぎさんが熱くなってるのは私だけ
という意見に対し貴方も熱くなっていると思われていますよ って言いたいだけです
85ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(91,478ポイント)
Date: 2009/03/14(土) 13:25
No:30706
|
|
Title: Re:【雑談】 先日の件
|
|
> 大体通りすがりさんが熱くなってどうがどっちでもいいですよ。
どうでもいいことです。
ただ、
> (正当性主張に熱くなっているのは、ざこさんだけです)
という私の発言に対して、
> 通りすがりさんも私と似た?捉え方をしていただいてるので私だけってのは違います。
と書かれたので、ざこさんは、ざこさんだけではなく通りすがりさんも熱くなっていると主張していると考えたわけです。
ざこさんと私が熱くなっているという意味かとも考えましたが、ざこさんはこの発言以前に、私が熱くなっている云々の発言はされていないようですので(見落としでしたら申し訳ありません)、それはないと判断しました。
2倍のポイントを手に入れた! 62ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,221ポイント)
Date: 2009/03/14(土) 13:39
No:30708
|
|
Title: Re:【雑談】 先日の件
|
|
ちゃんとしてれば大丈夫ってのが理解できたので大丈夫です。
後何かあればどんどんいってください。私が改善しなければいけないものばかりだとは思いますが
66ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,285ポイント)
Date: 2009/03/14(土) 13:47
No:30710
|
|
Title: Re:【雑談】 先日の件
|
|
私はずっとそういうエチケットみたいなものは大切にすると言っていますよ。
今回は深く反省しているとも。マルチポストの件で熱くなってしまいましたが、ちゃんと
書いているはずです。
64ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(91,675ポイント)
Date: 2009/03/14(土) 14:04
No:30712
|
|
Title: Re:【雑談】 先日の件
|
|
> 私はずっとそういうエチケットみたいなものは大切にすると言っていますよ。
↓のことですね。
> ちゃんとしてれば大丈夫ってのが理解できたので大丈夫です。
すみません。投稿タイミングの関係で入れ違いになったようです。
他のことに気を取られていたので、投稿ボタンをクリックするのが遅れました。
56ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,395ポイント)
Date: 2009/03/14(土) 14:40
No:30716
| 解決!
|
Title: Re:【雑談】 先日の件
|
|
若干熱くなってしまいましたが皆様の意見は1つ1つきちんと理解しました。
本当は回答者様に失礼な物言いはしたくないのですがついカッとなってしまいました。
通りすがりさんの仰るとおりこれはコミュニケーションの問題ですね。
貴重な意見ありがとうございました。それとたかぎさん、失礼な物言いお許し下さい。
お互いよい教訓になったのではと思います。
93ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..ウィザード(1,010,532ポイント)
Date: 2009/03/14(土) 23:47
No:30751
|
|
Title: Re:【雑談】 先日の件
|
|
一応解決されるまで書き込まないでいようと思って拝見させておりました。
厳密に何が規約違反で何が規約違反ではないか、複数の掲示板にわたって共通して許されることは何か正確に把握するのは難しいかもしれませんが、
基本的に質問者・回答者・閲覧者がお互いに皆悪い気持ちにならず、
円滑な情報交換が出来る質問や書き込みをすれば、誰も不満に思わないし、問題にならないと思っています。
各規約はそれを目指して作られている物だと思いますしね。
だからどうしても解釈が異なったり言及が難しい時はこれを考えてみてはどうでしょう?
うちの掲示板に限っては、また抽象的な言葉になりますが、
常識的な範囲で、上記の理論にそった書き込みをして下さったらどんな書き込みをして下さっても結構ですので。元々赤字部が守られたらそれでいいわけです。
規約は上でも言いましたが、少しでも規約に違反する行為をしたら鬼の首取ったみたいに注意されるような場も居心地悪いですしね^^;
でも質問者が回答者の気持ちを考えて質問すればそういうこともなくなると思います^^
221ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,436ポイント)
Date: 2009/03/15(日) 00:12
No:30752
|
|
Title: Re:【雑談】 先日の件
|
|
相手の気分を害しないでやっていくというのは簡単に見えて難しいです。私も色々経験積まねばなりませんね。
ほんと難しい。
41ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..プログラマー(33,345ポイント)
Date: 2009/03/15(日) 01:02
No:30760
|
|
Title: Re:【雑談】 先日の件
|
|
無事収まって何よりです。
実は内心ビクビクしてましたよ。小心者なんで。
今更・・・ですが、ぶり返そうという意思は一切ありませんので、その上で読んでください。
No:30680 通りすがりさん
No:30682 ざこさん
>通りすがりさんの仰るようにまだ悪いかわからないのですから「悪いことかもしれないです。申し訳ありません」というのも不自然じゃないかな・・
こういう返答はどうでしょう?
「このことでもしかしたら不利益をあたえるかもしれません。その時には改めて謝罪しますので、
可能な範囲での返答をお願いします。申し訳ありません」
これだと割と自然ではないでしょうか?(少し大仰な気もしますが)
不快な思いをした者がいてもこの一回目の謝罪で大分気分が収まると思います。
そして問題が起こった時に正式に二度目の謝罪をすればいいんです。
さりげなく「問題の無いような返答」もお願いしてます。
No:30697 たかぎさん
>・ルール的にOKだったのは結果論なので、それ以前には問題となる行動だったのでは?
その通りです。ですからNo:30678で「マルチポストの件とは別で、そのことに対する謝罪はあるべきでしょう。」
と書かしていただきました。(通りすがりさんへの語りかけの形で、でしたが)
449ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(92,690ポイント)
Date: 2009/03/15(日) 11:50
No:30773
|
|
Title: Re:【雑談】 先日の件
|
|
今回の件は一応の決着がつきましたが、事後処理だけはお願いします。
すなわち、
出発点となったトピ↓で結果報告がなされていませんので、それを早急に行ってください。
http://www.play21.jp/board/formz.cgi?action=res&resno=30404&page=&lognum=94&id=dixq&rln=30451
また、このトピでは、上記のトピおよび質問内容が解決したトピを明示していなかったため、経緯を知らない方々の憶測発言が飛び交いました(彼らに非はありません。経緯を知るすべがなかったのですから)。
それが話がこじれた原因のひとつであったと思います。
決して再燃させるつもりはありませんが...
このように、
・前のトピを放置したまま新しいトピを立てる。
・新しいトピで経緯説明を十分に行わない。
ということを行うと、今回のようなことになります。
ところで、後から読み直すと、最後のあたりで意味が通じにくくなっているのですが、もしかしてNo:30708 を編集されました? >ざこさん
違っていたら申し訳ないのですが、一応確認まで。
木霊さん
> 実は内心ビクビクしてましたよ。
私としては、
http://www.play21.jp/board/formz.cgi?action=res&resno=30617&page=&id=dixq&lognum=#30659
で、
> 今回は雑談として立ち上げられたトピですので、不毛とは知りつつも、可能な限りこの話題に付き合いたいと思います。
と書いたように、とことんやり合うつもりでしたが、いろいろご心配をおかけしました。
管理人さん
> 規約は上でも言いましたが、少しでも規約に違反する行為をしたら鬼の首取ったみたいに注意されるような場も居心地悪いですしね^^;
> でも質問者が回答者の気持ちを考えて質問すればそういうこともなくなると思います^^
私も規約違反を指摘することは少なくありませんが、実害のない違反は指摘していません(勘違いはあり得ますが)。
例えば、
●文章は必ず丁寧語を使う。
という義務行為がありますが、これまで言葉遣いが悪いという指摘をした記憶はありません。
(少なくとも私にとっては)実害がないからです。
規約を守るのはあくまでも手段であって、目的ではないはずですね。
また、規約さえ守っていれば、何をやってもよいというのも違います。
例えば、この掲示板で商品の宣伝を派手に行うのは、コミュニティにとって明らかに有益なものであればともかく、そうでなければちょっと違いますね。
> ●他人が不快だと感じる言動をする。
だけでは、おそらく縛りきれないと思います(確信犯に対しては無効ですから)。
763ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..熟練のプログラマー(40,499ポイント)
Date: 2009/03/15(日) 18:15
No:30787
|
|
Title: Re:【雑談】 先日の件
|
|
ん 30708ですか。熱くなっていたうんぬんで議論してたものですから、最初はさらに追求してたんですけど
たかぎさんが認めてくれたんで修正しましたね。何か異様に挑戦的でこちらも必死こいて反論してましたけど
早々に解決したかったものですから。話の繋がり断ち切っちゃいましたかね。
63ポイント を手に入れた。
|
|
|
|
Name: tororo ..ぴよぴよ(528ポイント)
Date: 2009/03/15(日) 10:48
No:30770
|
|
Title: ゲームの音楽
|
|
お久しぶりですtororoです
皆さんはゲームの音楽を作るのに
おすすめのソフトはありますか
お答えお願いします
39ポイント を手に入れた。
|
|
|
|
Name: BEMANI ..上級者(21,687ポイント)
Date: 2009/03/15(日) 11:21
No:30771
|
|
Title: Re:ゲームの音楽
|
|
>>tororoさん
ちょっと前に同じ内容の過去ログあるので、もし宜しければ参考にしてみて下さい〜
ttp://www.play21.jp/board/formz.cgi?action=res&resno=30425&page=&lognum=94&id=dixq
90ポイント を手に入れた。
|
|
|
|
|
Name: tororo ..ぴよぴよ(555ポイント)
Date: 2009/03/15(日) 16:11
No:30783
| 解決!
|
Title: Re:ゲームの音楽
|
|
BEMANI様
ちゃんと調べていませんでした
ご回答ありがとうございましたm(_ _)m
27ポイント を手に入れた。
|
|
|
|
Name: Ma ..ぴよぴよ(574ポイント)
Date: 2009/03/15(日) 11:22
No:30772
|
|
Title: PlayMovie 関数
|
|
DXライブラリのPlayMovie関数について質問なのですが、
今までは動画再生に、
LoadGraph → PlayMovieToGraph → DrawGraph
をしていた者ですが、見た感じフレーム数の面で
PlayMovie 関数の方が処理が軽かったため、
そちらに移行しようとしています。
しかしPlayMovie 関数を使ってみると動画を再生する瞬間に画面が荒れます。
時には、ピンク色で時には黄緑色です。
また、完全にその色に埋まるわけではなく、
毎回横向きの模様で荒れます。
この模様も毎回変わるみたいです。
MediaPlayerなどでの再生では問題ありません。
また、以前の方法ではこのようなことはありませんでした。
これは、仕様でしょうか?
それとも、環境かなにかですかね・・?
こちらに、動画の情報を記載しておきます。
[opening.mpg]
800x600 29.97fps 1:1 VBR
MPEG1-LayerII 44.10kHz 192.00kb/s CBR Stereo
[Extra][3]
SCR : 00:02:00.731 (120.731sec)
GOP : 00:01:59.834 (119.834sec)
RATE : 00:00:04.094 (4.094sec)
[MPEG1] 00:02:00.731 (120.731sec) / 53,669,892Bytes
真空波動研 090212 / DLL 090212
一応環境も載せておきます。
Windows XP SP3
Borland Devloper
コンパイラ: BCC
グラフィックカード: Sis 740
ライブラリver: 2.25
*以下、後日追加したものです。
追加で質問があるので、よかったらこちらもお願いします。
質問2
PlayMovie関数をウィンドウモードで開始させる際に、
ウィンドウを非アクティブにしてから再生開始をしてみるとウィンドウのフレームなしで、最前面に勝手に動画だけが浮き上がってきます。
これは回避不可でしょうか?
質問3
また同じく、PlayMovie関数でDX_MOVIEPLAYTYPE_BCANCEL を第三引数に用いた場合ですが、
再生中でウィンドウズバーのほかのタスクをクリックした場合でも反応して動画がスキップされてしまいます。
ウィンドウがアクティブでかつ画面内をクリックした時だけ、スキップできるようにはなりませんか?
なお、SetAlwaysRunFlag(true);
によって動画は常に再生されるようにしています。
やはり、スキップ面では、PlayMovieToGraph を使った方が都合が良いのでしょうか?
長々とした質問ですみません。
よろしくお願いします<(_ _)>
574ポイント を手に入れた。
|
|
|
|
Name: Justy ..伝説なるハッカー(328,083ポイント)
Date: 2009/03/15(日) 12:52
No:30774
|
|
Title: Re:PlayMovie 関数
|
|
>PlayMovie関数の方が処理が軽かったため、
>ウィンドウのフレームなしで、最前面に勝手に動画だけが浮き上がってきます
PlayMovie()そのものは、普通に LoadBmpToGraph()〜PlayMovieToGraph()で再生し
それを内部でループさせて表示しているだけなので、基本的には処理内容的には
自前で表示する場合とほとんど同じはずです。
が、これは推測ですが、Vista以外での PlayMovie()は可能ならオーバーレイサーフェースで
再生しようとします。
そのため、処理が軽くなる反面、諸々の現象が起きているのではないでしょうか。
多分(試していません)ですが、LoadGraph()ではなく、 LoadBmpToGraph()を使って
第4引数に DX_MOVIESURFACE_OVERLAYを指定すれば同じ現象になるかと思います。
>スキップ面では、PlayMovieToGraph を使った方が都合が良いのでしょうか?
PlayMovie()では細かくキャンセル条件を指定できないので、
PlayMovieToGraph()を使う方がいいかと思います。
421ポイント を手に入れた。
|
|
|
|
|
Name: Ma ..ぴよぴよ(599ポイント)
Date: 2009/03/15(日) 13:14
No:30775
| 解決!
|
Title: Re:PlayMovie 関数
|
|
なるほど、多少の処理が重くなってでも前までの方法のほうが良い様ですね。
検討してみます。
25ポイント を手に入れた。
|
|
|
|
Name: スー ..かけだし(1,255ポイント)
Date: 2009/03/14(土) 17:06
No:30723
|
|
Title: 斜めの線分に衝突後の移動成分
|
|
こんにちは。
ブロック崩し的なゲームを今作っています。
斜めの壁にボールがぶつかった時の移動量の計算がうまくいきません。
うまくいかないと言うのが、
1、斜めの壁にぶつかった時にボールが止まる時がある。(傾斜が緩い所で特に)
2、壁にぶつかった後に飛んでいく角度がおかしい
/
/
/
↑
○
上記の場合ぶつかった後は→に行くのが正しいですよね?
なのに 右下に行きます。
弾のクラスです。
void Shot::Action(){
for(int l=0;l<10;l++){
x[0] += vx/10;
y[0] += vy/10;
//当たり判定
for(i=0;i<MIRRORMAX;i++){
if(mir[i].used == true){
double D = distance(mir[i].sx, mir[i].sy, mir[i].ex, mir[i].ey, x[0], y[0]);
if(D < 10 && hit == false){
Bound(i);
hit = true;
} else if(D >= 10)hit = false;
}
}
}
for(int k=0;k<9;k++){
x[9-k] = x[8-k];
y[9-k] = y[8-k];
}
if(x[9] < -32 || x[9] > 640+32 || y[9] < -32 || y[9] > 480+32)used = false;
}
void Shot::Bound(int i){
float kata_x = ( mir[i].ex - mir[i].sx );
float kata_y = ( mir[i].ey - mir[i].sy );
float hou_vx = kata_x;
float hou_vy = -kata_y;
float sei_x = hou_vx / sqrt( pow(hou_vx, 2) + pow(hou_vy, 2) );
float sei_y = hou_vy / sqrt( pow(hou_vx, 2) + pow(hou_vy, 2) );
float touei = (-vx * sei_x) + (-vy * sei_y);
float Px = touei * sei_x;
float Py = touei * sei_y;
vx = Px;
vy = Py;
}
http://www5f.biglobe.ne.jp/~kenmo/program/buturi5/buturi5.html
参考にさせて頂いているサイトです。
どこがおかしいか教えてください。
環境は
WindowsXP Home
VC++2005
DXライブラリを使っています。
454ポイント を手に入れた。
|
|
|
|
Name: fumi ..かけだし(1,200ポイント)
Date: 2009/03/14(土) 17:48
No:30725
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
役に立てるかわかりませんが…
いくつか聞きたいことがあります。
1.Dはdistance関数で取得しているようですが、ここで渡している引数は全て入力ですか?
2.mir構造体配列のメンバは何を示すますか?
ちょっとこの辺を説明してくれないとわからないです。
118ポイント を手に入れた。
|
|
|
|
|
Name: fumi ..かけだし(1,234ポイント)
Date: 2009/03/14(土) 17:56
No:30726
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
すみません、質問の追記です。
vxは画面の右向きが正、vyは画面の下向きが正…でよろしいでしょうか?
34ポイント を手に入れた。
|
|
|
|
|
Name: スー ..かけだし(1,508ポイント)
Date: 2009/03/14(土) 18:16
No:30727
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
ごめんなさい。情報が少なすぎましたね;;
>vxは画面の右向きが正、vyは画面の下向きが正…でよろしいでしょうか?
はい。vxが右向きに+ vyが下向きが+です。
Mir構造体は線分です。(Mirrorですw)
sx,syが線の始点の座標
ex,eyが線の終点の座標です。
#define MIRRORMAX 256
struct Mirror{
int sx,sy,ex,ey;
float angle;
int cr;
bool used;
};
Mirror mir[MIRRORMAX];
void AddMir(int SX,int SY, int EX,int EY, int CR1, int CR2, int CR3){
for(i=0;i<MIRRORMAX;i++){
if(mir[i].used ==false){
mir[i].used = true;
mir[i].sx = SX;
mir[i].sy = SY;
mir[i].ex = EX;
mir[i].ey = EY;
mir[i].cr = GetColor(CR1,CR2,CR3);
break;
}
}
}
void DrawMir(){
for(i=0;i<MIRRORMAX;i++){
if(mir[i].used == true){
DrawLine( mir[i].sx , mir[i].sy , mir[i].ex , mir[i].ey , mir[i].cr );
}
}
}
>1.Dはdistance関数で取得しているようですが、ここで渡している引数は全て入力ですか?
入力が何なのかよくわからないですが、線の始点の座標と終点の座標と弾の座標を引数にしています。
// 線分と円とのあたり判定
// 線分の始点x、y 終点x、y 円の中心x、y
struct Vector{
float x, y;
};
double distance(float x1,float y1,float x2,float y2,float x3,float y3){
Vector A,B;
double a,b,t,D;
A.x = x2-x1;
A.y = y2-y1;
a = pow(A.x, 2)+pow(A.y, 2);
b = A.x*(x1-x3) + A.y*(y1-y3);
t = -b/a;
if (t < 0) t = 0;
if (t > 1) t = 1;
B.x = x1 + A.x*t;
B.y = y1 + A.y*t;
D = sqrt (pow((x3-B.x), 2) + pow((y3-B.y), 2));
return D;
}
253ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,593ポイント)
Date: 2009/03/14(土) 18:59
No:30733
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
少し重くなりますが、
(1)y軸を始線とし、壁の角度だけ速度ベクトルを負方向に回転
(2)y成分を反転
(3)正の回転で元に戻す
が直感的でしょうか。最適化とか考えていませんが(笑)
80ポイント を手に入れた。
|
|
|
|
|
Name: fumi ..かけだし(1,419ポイント)
Date: 2009/03/14(土) 19:36
No:30734
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
もしかしたら、当たり判定がちゃんとできていないのかもしれません。
distance関数の返り値が10未満なら「当たっている」としたいんですよね?
distance関数内の
a = pow(A.x, 2)+pow(A.y, 2);
b = A.x*(x1-x3) + A.y*(y1-y3);
t = -b/a;
if (t < 0) t = 0;
if (t > 1) t = 1;
この辺は何をしているのでしょうか?(特にtとbについて)
ちなみに入力か?というのは、関数に引数を渡す際、その値が関数内で変更されないか?
ということを聞きたかっただけです。わかりにくくてすみません(汗)
185ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,587ポイント)
Date: 2009/03/14(土) 20:16
No:30738
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
fumiさん
ベクトルの内積を利用して、「線分と点の距離」を計算しているようです。
垂線が線分の範囲を超える場合は、端点からの距離を返しているので、特に問題はないと思います。
52ポイント を落としてしまった。
|
|
|
|
|
Name: fumi ..かけだし(1,881ポイント)
Date: 2009/03/14(土) 23:06
No:30745
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
ちょっとこちらのdistance関数と入れ替えてみてください↓
float distance(float x1,float y1,float x2,float y2,float x3,float y3)
{
//点1と円の中心ベクトルを求める
float x1_x3 = x3 - x1;
float y1_y3 = y1 - y3;
//点1と点2からなるベクトルを求める
float x1_x2 = x2 - x1;
float y1_y2 = y1 - y2;
//ノルムの2乗を求める
float a = pow(x1_x2, 2.0f)+pow(y1_y2, 2.0f);
//内積
float nai = x1_x3*x1_x2+y1_y3*y1_y2;
//射影
float syaei_x = nai*x1_x2/a;
float syaei_y = nai*y1_y2/a;
//円と法線のベクトルを求める
float housen_x = x1_x3 - syaei_x;
float housen_y = syaei_y - y1_y3;
//距離を円の中心と線分の距離を求める
float dist = sqrt( pow(housen_x, 2.0f)+pow(housen_y, 2.0f) );
return dist;
}
たぶんやってることは同じだと思うので、変わらないかもしれませんが…
462ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,731ポイント)
Date: 2009/03/14(土) 23:36
No:30749
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
反射計算時に座標を回転する方法の場合、
V' = (V * R(-θ) * [1, 0; 0, -1]) * R(θ)
といった感じになります。
Rは回転行列、θはy軸を始線としたときのベクトルの偏角です。
[...]は要はy座標だけ負に反転する2次正方行列です。
動作確認していないので欠陥があるかも知れませんが・・・
127ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,755ポイント)
Date: 2009/03/14(土) 23:46
No:30750
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
なんか表記が逆に・・・
V' = R(θ) * ([1, 0; 0, -1] * R(-θ) * V)
ですね。
24ポイント を手に入れた。
|
|
|
|
|
Name: fumi ..かけだし(1,973ポイント)
Date: 2009/03/15(日) 00:52
No:30756
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
Bound関数内の
float hou_vx = kata_x;
float hou_vy = -kata_y;
を
float hou_vx = kata_y;
float hou_vy = -kata_x;
にしてみて下さい。
61ポイント を手に入れた。
|
|
|
|
|
Name: スー ..かけだし(1,892ポイント)
Date: 2009/03/15(日) 00:52
No:30757
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
fumiさん、SCIさん返事ありがとうございます。
>fumiさん
線分と円の判定は龍神録プログラミングの館の34章に載っているで是非見てみてください
>SCIさん
>V' = R(θ) * ([1, 0; 0, -1] * R(-θ) * V)
回転行列とかはあまり詳しくないのですが、この式は線分を縦にする式でよいのでしょうか?
>(1)y軸を始線とし、壁の角度だけ速度ベクトルを負方向に回転
>(2)y成分を反転
>(3)正の回転で元に戻す
あと是非この式を使ってみたいのですが、イメージが掴めないです。
もうちょっとわかりやすく教えて頂けないでしょうか?
数学の知識はベクトルの初歩程度なので;;
2倍のポイントを手に入れた! 384ポイント を手に入れた。
|
|
|
|
|
Name: スー ..かけだし(1,926ポイント)
Date: 2009/03/15(日) 00:55
No:30758
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
>fumiさん
float hou_vx = kata_y;
float hou_vy = -kata_x;
に変更してみましたが、結果は変わらなかったです。
34ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,795ポイント)
Date: 2009/03/15(日) 00:57
No:30759
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
イメージはそんな感じです。始線はx軸でしたね(汗
壁をx軸上に回転させる→y成分を反転→元に戻す、です。多分、できるはずです。
後ほど、ちゃんとした式と図を書きますね。
40ポイント を手に入れた。
|
|
|
|
|
Name: スー ..かけだし(1,954ポイント)
Date: 2009/03/15(日) 02:16
No:30762
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
>後ほど、ちゃんとした式と図を書きますね。
よろしくお願いします。
28ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,879ポイント)
Date: 2009/03/15(日) 02:19
No:30763
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
コードを書きました。汚いです(笑)
動体をちゃんと作るのは面倒なので、なんだかすごいことになってますが、豆腐が反射します。
反射の処理はreflect関数です。
最適化の余地は十分あると思いますが、日本語を素直にコードにするとこんな感じだと思います。
参照使ってますが、ポインタでも同じですね。
84ポイント を手に入れた。
|
|
|
|
|
Name: fumi ..入門者(2,506ポイント)
Date: 2009/03/15(日) 02:26
No:30764
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
原因がわかりました。(おそらくですが。違っていたらすみませんm(_ _)m)
Bound関数内の部分の
float kata_x = ( mir[i].ex - mir[i].sx );
float kata_y = ( mir[i].ey - mir[i].sy );
float hou_vx = kata_x;
float hou_vy = -kata_y;
float sei_x = hou_vx / sqrt( pow(hou_vx, 2) + pow(hou_vy, 2) );
float sei_y = hou_vy / sqrt( pow(hou_vx, 2) + pow(hou_vy, 2) );
float touei = (-vx * sei_x) + (-vy * sei_y);
float Px = touei * sei_x;
float Py = touei * sei_y;
vx = Px;
vy = Py;
を
float kata_x = ( mir[i].ex - mir[i].sx );
float kata_y = ( mir[i].ey - mir[i].sy );
float hou_vx = kata_y; //入れ替えている
float hou_vy = kata_x; //同上(上とここの符号は揃えないといけない…かもしれない)
float sei_x = hou_vx / sqrt( pow(hou_vx, 2) + pow(hou_vy, 2) );
float sei_y = hou_vy / sqrt( pow(hou_vx, 2) + pow(hou_vy, 2) );
float touei = (-vx * sei_x) + (-vy * sei_y);
float Px = touei * sei_x;
float Py = touei * sei_y;
vx += 2*Px; //ここに注意
vy += 2*Py; //同上
参考にされたページでは、(求めるベクトル)=Va+2Pとなっていますが、おかしいのではないでしょうか?
符号の正負はちょっとよくわからないんですが、一応、こちらではしっかり90度反射しました。
533ポイント を手に入れた。
|
|
|
|
|
Name: fumi ..入門者(2,581ポイント)
Date: 2009/03/15(日) 02:29
No:30765
|
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
訂正ですm(_ _)m
参考にされたページでは、(求めるベクトル)=Va+2Pとなっていますが、「スーさんのコードのこのあたりが」おかしいのではないでしょうか?
75ポイント を手に入れた。
|
|
|
|
|
Name: スー ..かけだし(2,090ポイント)
Date: 2009/03/15(日) 03:56
No:30767
| 解決!
|
Title: Re:斜めの線分に衝突後の移動成分
|
|
>SCIさん
わざわざソースを書いて頂きありがとうございます。
とてもわかりやすかったです。
これだけの計算式で書けるのは魅力的ですね。
>fumiさん
fumiさんの言われた所を追加してみたところ無事に綺麗な角度で反射しました。
つまるところ、ただの私の見落としだったってことです><;
fumiさん、SCIさんありがとうございました。
136ポイント を手に入れた。
|
|
|
|
Name: trx ..ぴよぴよ(658ポイント)
Date: 2009/03/06(金) 13:42
No:30126
|
|
Title: 当たり判定
|
|
プログラムに、target.bmpがaim.bmp, aim2.bmpに当たった時に、ボタンを押したらカウントする様にしたいのと、target.bmpにちょうど当たったたらとても良い。大分当たったら良い、少し当たったら悪いとするには、どうすれば良いでしょうか?どこに何を入れるのか教えて下さい。
135ポイント を手に入れた。
|
|
|
|
Name: kazuoni [URL] ..比類無きプログラマー(70,733ポイント)
Date: 2009/03/06(金) 16:08
No:30135
|
|
Title: Re:当たり判定
|
|
>ボタンを押したらカウントする
っとは具体的にはどういうことでしょうか?
キー入力ということですか?
ならば、外部変数なりstaticなりを用意して、キー入力があり、画像あたり判定条件を満たしたら
インクリメントをしていくでとりあえずは実現できます。
「当たったとき」は↓をみてください。
>target.bmpにちょうど当たったたらとても良い。大分当たったら良い、少し当たったら悪いとする
target.bmpの大きさがわからないことには何とも言えません。
プログラムを見る限り、x座標方向に移動している画像targetの事だとは思いますが・・・。
まず一つ同士のあたり判定を。
前提として、ターゲット(target)とあたり判定を行うにあたって、
ライン(aim)とターゲットが同じ画像
もしくはターゲットと同じ大きさであることを前提とします。
また、有効範囲(trxさんのおっしゃる大分当たったら良い、少し当たったら悪いとする範囲)
を決めます。
キー入力があったときに、ターゲットの座標と
ラインの座標を比較し、自分の決めた有効範囲と照らし合わせ、結果を出します。
分かりづらいので例を挙げます。
ラインをx=100とし、有効範囲を10とします。
ab_value=|(ターゲットのx座標)−(ラインのx座標)|(絶対値)の値が、
ab_value=0→とても良い
0<ab_value<=5→良い
5<ab_value<=10→悪い
とすればあたり判定はできます。
恐らく太鼓の達人的なことをやりたいのだと思いますが、
今のコードではあたり判定を書くのにものすごい長いコードになります。
理由は、すべてのターゲットを座標だけで管理しているからです。
構造体の配列を用いないと相当つらいはずです。
サンプルプログラミングにある管理人さんの「太鼓の鉄人」を参考にしてください。
あと、毎ループごとにLoadGraphScreenはやめたほうが良いです。
いろいろと不都合が出るとのことなので。
あと、余計なお世話かもしれませんが、音ゲーを作るのは結構難しいです。
音との同期と楽譜の管理の仕方が一番ネックになるかと。
ゲームプログラミングの経験がない人には少し敷居が高いかと思います。
(やる気で何とかなりますけどね^^;)
自分も作りこそはしましたが、一曲で諦めました。
816ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..入門者(4,394ポイント)
Date: 2009/03/07(土) 06:13
No:30197
|
|
Title: Re:当たり判定
|
|
回答と関係ないですが、気になったことを。
ます、whileの中にある
ClearDrawScreen(); //裏画面のデータを全て削除
if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
ですが、これはwhile()の()の中にすでに書かれているので必要ないと思います。
また、//画面全体を白い四角で表示、とコメントが書かれていますが
この部分は音を出す処理をしているので直すかしたほうが良いと思います。
指摘されていますが、LoadGraphScreenはwhileの中には書かないほうが良いです。
whileの上に、例えば
int image3;
image3 = LoadGraph( "main.bmp" );
と書いて、
LoadGraphScreen( 0 , 150 , "main.bmp" , FALSE ) ;
の部分は
DrawGraph( 0 , 150 , image3 , FALSE ) ;
などとした方が良いです。
次に、配列ってご存知ですか?
例で書きますが、
宣言を
int x[3];
x[0]=100;
x[1]=200;
x{2]=300;
として、whileの中が
x[0]-=9;
x[1]-=9;
x[2]-=9;
となりますが、ここで
for(int i=0;i<3;i++){
x[i]-=9;
}
と省略できます。とりあえず3つですが、100こになっても3の部分を100に変えるだけです。
これでかなり短くなると思います。
DrawGraph(x[0],170,image[0] ,TRUE);
DrawGraph(x[1],170,image[0] ,TRUE);
DrawGraph(x[2],170,image[0] ,TRUE);
のほうも工夫してみてください。image[0]などの部分が変わるので少し面倒ですが。
以下、回答ですが
まず、
if(Key[KEY_INPUT_X]==1)
のときはdonで、
if(Key[KEY_INPUT_SLASH]==1)
のときもdonのようなので
if(Key[KEY_INPUT_X]==1 || Key[KEY_INPUT_SLASH]==1)
とまとめることができます。違う処理したいのならすみません。
次に、押したときに判定したいのでここに書きます。
if(Key[KEY_INPUT_X]==1 || Key[KEY_INPUT_SLASH]==1){
PlaySoundMem( Sound2 , DX_PLAYTYPE_BACK );
もし当たったら、コンボを1増やす。はずれたら、コンボを0にする。
もし当たったら、良いと表示する。
}
でいけそうですね。
コンボは、最初にint combo=0;と宣言しておいて、
当たったらcombo++;、はずれたらcombo=0;でいけると思います。
どこかでcomboの値を表示させてください。
押し忘れたときもcomboが0になるようにしてください。
良いと表示するほうはkazuoniさんの方法で良いと思いますが、
例えば、donを押したときに当たりの座標範囲にdonの座標(x1など)が入っているか
判定すれば良いですね。
動作確認していないので間違っていたらすみません。
かなり長くなりそうですが、とりあえずできないでしょうか。
661ポイント を手に入れた。
|
|
|
|
|
Name: trx ..ぴよぴよ(802ポイント)
Date: 2009/03/07(土) 11:38
No:30203
|
|
Title: Re:当たり判定
|
|
良く解らないまま入れてしまったらエラーメッセージばっかです。どうすれば良いのでしょうか?ぜんかいよりも改良してしまったからですか?
エラーメッセージ↓
> C:\borland\bcc55\Bin\make.exe -fDebug\dxtest.mak TARGET
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -L..\DxLib -DDEBUG -nDebug -IC:\MyC\DxLib -c C:\MyC\dxtest\dxtest2.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
C:\MyC\dxtest\dxtest2.cpp:
エラー E2379 C:\MyC\dxtest\dxtest2.cpp 27: ステートメントにセミコロン(;)がない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2206 C:\MyC\dxtest\dxtest2.cpp 131: 不正な文字 '−' (0x817c)(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2134 C:\MyC\dxtest\dxtest2.cpp 143: 複合文に } がない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
*** 3 errors in Compile ***
** error 1 ** deleting Debug\dxtest2.obj
Make End !! (Elapsed time 0:00.375)
144ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..入門者(4,464ポイント)
Date: 2009/03/07(土) 12:38
No:30205
|
|
Title: Re:当たり判定
|
|
例えばの話をしているのでそのまま写してもダメです。
何をしているのか理解してから直さないとだめです。
まず、C言語の勉強をしてはどうでしょうか。
どうしても分らないところがあれば質問すればいいんです。
70ポイント を手に入れた。
|
|
|
|
|
Name: trx ..かけだし(2,228ポイント)
Date: 2009/03/07(土) 13:19
No:30209
|
|
Title: Re:当たり判定
|
|
新しく入れたものを、消してもプログラムが正常に動きません。aim.bmp,aim2.bmpが流れてきません。何か余計な物を消しているのだと思いますが何か解りません。
23ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..入門者(4,512ポイント)
Date: 2009/03/07(土) 19:10
No:30224
|
|
Title: Re:当たり判定
|
|
いちばん最初のプログラムを配列使って書きなおしてみました。
そのままコピーして使えるので良かったら使ってください。
動作確認していないのでエラーが出たらすみません。
あまりきれいな書き方ではないですが、自分の書き方とどこが違うか比較してみてください。
配列は1からではなく0からなので一つずれているので気を付けてください。
C言語は何か本を持っていれば、それに書いてあるはずですし、なければ
http://www9.plala.or.jp/sgwr-t/
が分かりやすいかなと思います。
質問されている処理は書いていないので書いてみてください。
ちなみにこのままだと大変なことになるので構造体も勉強してみてください。
かなり短くなるはずです。
48ポイント を手に入れた。
|
|
|
|
|
Name: trx ..かけだし(2,485ポイント)
Date: 2009/03/08(日) 06:17
No:30258
|
|
Title: Re:当たり判定
|
|
hss12さん、プログラムが動きません。
その前に、kazuoniさんが仰っていた、
ab_value=|(ターゲットのx座標)−(ラインのx座標)|(絶対値)の値が、
ab_value=0→とても良い
0<ab_value<=5→良い
5<ab_value<=10→悪い
の使い方を教えてください。
自分で解釈した所、"→とても良い"の所に,
DrawString(100,100, "とても良い", White);などと入れるのでしょうか。
そして、staticは、int static;と入れれば良いのでしょうか?
184ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..入門者(4,551ポイント)
Date: 2009/03/08(日) 10:24
No:30259
|
|
Title: Re:当たり判定
|
|
私の書いたプログラムが動かないですか?
詳しく教えてもらえませんか。話が変わってくるので。
39ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..入門者(4,665ポイント)
Date: 2009/03/08(日) 11:32
No:30262
|
|
Title: Re:当たり判定
|
|
if(Key[KEY_INPUT_X]==1){//Xキーを押した時の処理
PlaySoundMem( Sound2 , DX_PLAYTYPE_BACK );
//ここに書きます
}
とりあえずXを押した時にどうするか書きます。
絶対値はabs()を使います。上に#include <stdlib.h>を書く必要があります。
これで距離がわかります。
ヒットの座標を150、一つ目のX座標をx[0]とするなら
abs(150-x[0])で距離がわかります。この距離をab_valueとするなら
ab_value=abs(150-x[0]);
となります。
0は厳しいので距離が10より小さければとても良いにするなら
if(ab_value<10) DrawString(100,100, "とても良い", White);
この2行を上の、ここに書きます、に書けば、
Xを押したときに、ヒットの座標とx[0]の距離が10より小さければ
とても良いと表示されるはずです。
もちろんab_valueやWhiteは宣言してください。
staticは静的変数のことだと思います。
これはC言語の文法なので勉強してください。
最後に結果発表でとても良いの数を出したいのなら、何か用意して
ヒットした時に1たして(インクリメント)いけば良いだけです。
114ポイント を手に入れた。
|
|
|
|
|
Name: trx ..ぴよぴよ(870ポイント)
Date: 2009/03/08(日) 11:52
No:30264
|
|
Title: Re:当たり判定
|
|
書いてもらいましたプログラムは、何も流れてきませんでした。
もしよければ自分で一回試して下さい、適当に音楽やaim.bmpを作って下さい。
36ポイント を手に入れた。
|
|
|
|
|
Name: trx ..入門者(2,523ポイント)
Date: 2009/03/08(日) 12:08
No:30266
|
|
Title: Re:当たり判定
|
|
とても良いと出てきませんでした。ただプログラムが遅くなっただけです。
今は、ドンだけに入れてます。
38ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..入門者(4,854ポイント)
Date: 2009/03/08(日) 19:38
No:30282
|
|
Title: Re:当たり判定
|
|
まず、
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
が書いてないですね。
肝心の距離を求める計算をしていないようですが。配列使わないのなら
ab_value=abs(150-x1);
になります。全パターン計算してください。
ここに書きます、と書きましたがここに文字を入れると
押した瞬間しか表示せずすぐに消えてしまうので、
if(ab_value<10) DrawString(100,100, "とても良い", White);
if(ab_value>10) DrawString(100,100, "悪い", White);
は速さ調整の上あたりに書いてみてください。
とりあえず、文字でないですか?
189ポイント を手に入れた。
|
|
|
|
|
Name: trx ..ぴよぴよ(983ポイント)
Date: 2009/03/09(月) 04:23
No:30298
|
|
Title: Re:当たり判定
|
|
出ました。ただ綱に悪いと出て、とても良いとは、一瞬しか出ません。
それと、最初のドンにしか、とても良いとは出ません。
そこで、 ab_value=abs(150-x1);と、ab_value=abs(150-x2);と書いてみたのですが、こうすると二個目のカッにしか、とても良いと出ませんどうしてですか?
と言うことでhss12さんが、言ったとおり、とりあえず、文字が出ました。
113ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(5,141ポイント)
Date: 2009/03/09(月) 20:40
No:30346
|
|
Title: Re:当たり判定
|
|
キーを押した時の処理の中に書いていないからですね。
何をしているか理解していますか?
ヒントしか書いていないのでそのままコピーしても動くはずはありません。
理解したうえで自分で考えてください。
どうしても理解できない時や、作ってみてもうまく動かないときはアドバイスしますが
このままじゃ私がプログラム書くことになってしまいます。
次にやることは、このままだと、ずっと文字が出たままなので、
キーを押したときに文字が出て、一定時間経過したら消えるようにしないといけないです。
距離の計算は、まず、ターゲットの座標と、動いているすべての座標でどれが一番近いかを調べ、
その一番近い座標との距離をab_valueに入れればうまくいくんじゃないかと思います。
何をしたらよいのかさっぱり分からないのなら
プログラミングの技術が全然足りませんので
もう少し簡単なプログラムからがんばってテクニックを覚えてください。
構造体はともかく配列は使わないとかなりきびしいので
配列とfor文とif文はマスターしてください。
C言語を一通り理解すれば、管理人さんが作った太鼓の鉄人が理解できますので
参考になると思います。
287ポイント を手に入れた。
|
|
|
|
|
Name: trx ..ぴよぴよ(626ポイント)
Date: 2009/03/10(火) 09:18
No:30363
|
|
Title: Re:当たり判定
|
|
配列を使うと速さは、すべて同じに成ってしまうのではないでしょうか?
自分なりには、少しは、理解してるつもりです。
それで質問ですが、キーを押した時の処理は、前回、書いてもらいましたプログラムの中に”ここに書きます”と書いてあった所に入れれば良いのでしょうか?自分で、入れてみたのですが、image0に隠れて、見えないと思ったので、image0をWhite = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
の上に動かしてみたり、 ClearDrawScreen(); //裏画面のデータを全て削除
if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
の位置を変えたり色々とやってみましたが、良と、不可が、出てきません。
それと今まで、文を、上にもって行くと、優先されると考えていましたが、正しかったのでしょうか?
上のプログラムは、とても良いを、良、悪いを、不可に変えています。
386ポイント を落としてしまった。
|
|
|
|
|
Name: hss12 ..初心者(5,552ポイント)
Date: 2009/03/10(火) 20:01
No:30410
|
|
Title: Re:当たり判定
|
|
配列を使うことと速さは関係ないと思いますが。
私はC言語が得意なわけではないので間違っていたらすみませんが、
プログラムは上から順番に1行ずつ?実行されていきます。
ただ、whileは{}の中を何度も繰り返します。この場合
液晶ディスプレイならおそらく1秒に60回whileの中を繰り返しています。
whileの}まで行ったらwhileの{に戻ります。
whileの()の中も毎回実行されています。
上でも書きましたが、ClearDrawScreen()とProcessMessage()は
whileの()の中にすでに書いてあるので書く必要ありません。
今は、同じことを2回してしまっています。
まず、変数について理解していないようですが
combo=0;//comboに0を代入。つまりcomboの値は0。
combo++;//comboに1をたす。つまりcomboの値は1。
combo=0;//comboに0を代入。つまりcomboの値は0。
上のように書いていますが、2つ目のcombo++;は全く意味がないと分かりますか?
また、
ab_value=abs(150-x1);
ab_value=abs(250-x2);
だと、上書きされているので、1つ目の計算が意味がないと分かりますか?
あと、whileの中に
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
Yellow = GetColor( 255 , 255 , 0 ) ; // 黄色の値を取得
が書いてありますが、1秒間に60回も色の値が代入されていて無駄だと分かりますか?
1回だけでいいですよね。LoadGraphScreenがまだ書いてありますが、
1秒間に60回も画像データを読み込んでいると分かりますか?これも1回にしたいですよね。
キーを押した時の処理の中に文字を表示させようとしていますが
1/60秒間しか表示されません。0.0166秒くらいでしょうか。
読めるはずありません。文字の表示は別のところでしてください。
if文を使ってキーが押されたかを調べて、押されていたら表示でいけると思います。
キーを押したときにしたいのは距離の計算です。
その計算結果をab_valueに代入して、if文でab_valueの値を判定して文字を表示してください。
515ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..ウィザード(1,009,354ポイント)
Date: 2009/03/12(木) 08:26
No:30490
|
|
Title: Re:当たり判定
|
|
C言語の経験はおありですか?
ゲームプログラミングの館は「C言語歴1ヶ月でも出来る」と宣伝していますが、
「C言語歴が無くても出来る」とは書いていません。
どうしても、基礎的なC言語の理解は必要です。
また、基礎をあやふやにして応用をしようとすると必ず躓き、結局非効率になってしまうので、
きちんと基礎を勉強して挑まれる事お勧めします。
「C言語 入門」などで検索すれば入門サイトが出てきます。
沢山出てきますので自分の気に入ったものを選ぶといいでしょう。
とりあえず上にヒットしたものがお勧めです。
一通り勉強して、ゲーム作成を再開し、それでもわからなかったらまたご質問下さい。
224ポイント を手に入れた。
|
|
|
|
|
Name: trx ..ぴよぴよ(656ポイント)
Date: 2009/03/12(木) 14:08
No:30520
|
|
Title: Re:当たり判定
|
|
管理人さん、hss12さん、14歳から始めるC言語と、C++言語の本がありますが、それでも良いでしょうか?
30ポイント を手に入れた。
|
|
|
|
|
Name: trx ..ぴよぴよ(719ポイント)
Date: 2009/03/12(木) 15:42
No:30527
|
|
Title: Re:当たり判定
|
|
こんな感じですかね?
とりあえず、コンボは、考えない事にしてみました。
ab_value=absolute value、 ||
の事と理解してよろしいでしょうか?
63ポイント を手に入れた。
|
|
|
|
|
Name: やそ ..比類無きプログラマー(88,284ポイント)
Date: 2009/03/12(木) 20:32
No:30544
|
|
Title: Re:当たり判定
|
|
コンボ以前の問題です。
まず、hss12さんに指摘されていた
>あと、whileの中に
>White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
>Yellow = GetColor( 255 , 255 , 0 ) ; // 黄色の値を取得
>が書いてありますが、1秒間に60回も色の値が代入されていて無駄だと分かりますか?
>1回だけでいいですよね。LoadGraphScreenがまだ書いてありますが、
>1秒間に60回も画像データを読み込んでいると分かりますか?これも1回にしたいですよね。
を直しましょう。
>キーを押した時の処理の中に文字を表示させようとしていますが
>1/60秒間しか表示されません。0.0166秒くらいでしょうか。
>読めるはずありません。文字の表示は別のところでしてください。
>if文を使ってキーが押されたかを調べて、押されていたら表示でいけると思います。
>キーを押したときにしたいのは距離の計算です。
>その計算結果をab_valueに代入して、if文でab_valueの値を判定して文字を表示してください。
のとおりに書かれていますか?
それ以前に指摘されていた
PlaySoundMem( Sound1 , DX_PLAYTYPE_BACK );//画面全体を白い四角で表示
の、命令とコメントが一致していないのも直っていないようです。
距離計算しているのが
ab_value=abs(150-x1);
だけなのでx1座標だけですよね。
hss12さんの以前のコメントに
>距離の計算は、まず、ターゲットの座標と、動いているすべての座標でどれが一番近いかを調べ、
>その一番近い座標との距離をab_valueに入れればうまくいくんじゃないかと思います。
とありますので、どういう意味なのかよく考えてプログラムに反映させてみてください。
頑張って下さい^^
480ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(6,263ポイント)
Date: 2009/03/12(木) 22:11
No:30555
|
|
Title: Re:当たり判定
|
|
その14歳の本は持っていますが、C言語の基本についてはうまくまとめられていましたが
ページ数が少ないので、初心者にはもう少し細かく書いてある本のほうが良いと思います。
よく入門書に、配列に入っている複数の点数から最低点を探して表示する
という問題があるので、これをできるようにしてください。
これを応用すれば、一番近い座標がわかります。
ゲームプログラミングの館ですが、
26. シューティング基本 にカウンターの書き方が書いてありますが
これを応用すれば、文字を一定時間表示して消すことができませんか。
また、
27. ジャンプの考え方 にキーを押したらジャンプするプログラムが書いてありますが
キーを押した時の処理の中にはジャンプのプログラムは書いてないですよね。
これを応用すれば、キーを押した時に表示する方法がわかりませんか。
ab_valueのことはわかりませんが、例えば
abs(150-x1)だと、x1が150の時は150-150で距離は0です。
x1が160だと150-160で-10ですよね。ここでabs(-10)ということになりますが
abs()は-を取ってくれますので計算結果(距離)は10になります。
キーを押した時にこの距離がいくつかを知りたいわけです。
ab_valueがわかりにくいならkyoriにでも置き換えてください。
ab_valueは命令ではなく変数です。xと同じです。これはわかってますよね。
私の書き方が悪かったんですが
if(ab_value<40)
if(ab_value>40)
だと40ジャストの時に表示されませんので、
どちらかを<=か>=にしてください。
これは14歳の本にも丁寧に解説されていますが
とりあえずその14歳の本を何度も読んでみたらどうでしょうか。
C++はとりあえず必要ないのでC言語を勉強しましょう。
711ポイント を手に入れた。
|
|
|
|
|
Name: trx ..ぴよぴよ(779ポイント)
Date: 2009/03/13(金) 11:41
No:30594
|
|
Title: Re:当たり判定
|
|
ありがとうございます。
確かにhss12さんが言うとおり、14歳の本は、具体的に書いてくらませんし、ノートもあまり付けてくれません。
60ポイント を手に入れた。
|
|
|
|
|
Name: trx ..入門者(3,575ポイント)
Date: 2009/03/14(土) 04:25
No:30679
|
|
Title: Re:当たり判定
|
|
14歳の本を読んでいたのですが、boundを使うのが在ったのですが、入れてみたらエラーしか出ませんでした。そしてそのエラーも意味が解りません。
> C:\borland\bcc55\Bin\make.exe -fDebug\dxtest.mak TARGET
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -L..\DxLib -DDEBUG -nDebug -IC:\MyC\DxLib -c C:\MyC\dxtest\dxtest2.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
C:\MyC\dxtest\dxtest2.cpp:
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 86: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 87: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 88: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 89: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 90: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 91: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 92: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 93: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 94: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2062 C:\MyC\dxtest\dxtest2.cpp 95: 無効な間接参照(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2294 C:\MyC\dxtest\dxtest2.cpp 97: . または .* の左側に構造体が必要(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2294 C:\MyC\dxtest\dxtest2.cpp 98: . または .* の左側に構造体が必要(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2294 C:\MyC\dxtest\dxtest2.cpp 99: . または .* の左側に構造体が必要(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2294 C:\MyC\dxtest\dxtest2.cpp 100: . または .* の左側に構造体が必要(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
*** 14 errors in Compile ***
** error 1 ** deleting Debug\dxtest2.obj
Make End !! (Elapsed time 0:00.391)
1,013ポイント を手に入れた。
|
|
|
|
|
Name: trx ..入門者(3,611ポイント)
Date: 2009/03/14(土) 04:30
No:30681
|
|
Title: Re:当たり判定
|
|
これを使えばイメージとイメージが、接触したときのように出来るのではないでしょうか?
36ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..上級者(21,597ポイント)
Date: 2009/03/14(土) 05:21
No:30683
|
|
Title: Re:当たり判定
|
|
>>trxさん
一部分だけしか見ていないので、処理自体を目で追ったわけではありません。
予め御了承下さい;
WinMain関数の変数宣言部で「int image[16];」と言う部分があります。
しかし処理の中盤あたりでいつの間にか「image[0][i].〜〜」という表記に変わっています。
一次元配列で宣言し、二次元配列で使用としているため、エラーが出ているのだと思います。
(あるいは、宣言のし忘れ)
また、imageがint型配列なのにメンバを参照しているというのも原因だと思います。
その本がどのような記述になっているのか解らないですが、変数宣言時は
構造体 image[数値][数値]; のように宣言されていませんか?
そしてどこかに、構造体を定義している部分はありませんか?
struct 構造体{
変数1, 変数2, 変数3・・・;
}
もう一度、その本とソースコードを見比べてみて下さい。
246ポイント を手に入れた。
|
|
|
|
|
Name: hss12 ..初心者(7,340ポイント)
Date: 2009/03/14(土) 23:15
No:30747
|
|
Title: Re:当たり判定
|
|
エラーについては、構造体についてまったく理解していないですね、としかいいようがないですが、
その方法は自キャラと敵キャラの当たり判定サイズが違う場合の方法です。
今回の場合は画像サイズを同じにしていることを前提としています。
動くのはx座標だけなので、abs(150-x1)と書くだけですむのが
そのboundを使うとすごく長くなってしまいます。やめたほうが良いかと。
そのプログラムをみると例えばx1は最初は2100で毎ループごとに9ずつへっていくわけですよね。
例えばx1が156になったときにキーを押したときは
abs(150-156)という計算がされるわけです。
つまり計算結果が6ですね。これは40以下なので良になります。
x1が147のときにキーを押すと
abs(150-147)で計算結果は3でこれも40以下なので良です。
x1が192のときにキーを押すと
abs(150-192)で計算結果は42で、40より多いのでこれは不可です。
x1が102のときにキーを押すと
abs(150-102)で計算結果は48で、これも不可です。
この計算結果を保存するために今回はab_valueという変数を使っているんです。
べつにaでもbでもいいです。
見ると毎ループごとに計算していますが、キーを押していないときは
計算しなくてもいいですよね。
キーを押したときに計算してください。
abs(150-x1)を計算して何か変数に代入、次にabs(150-x2)を計算し
abs(150-x1)の結果より小さければその変数に上書き代入。
これを全座標計算して一番小さい計算結果が40以下かを調べれば良いわけです。
何がわからないですか?
発展した話をすると、全座標計算するのは無駄なので、
画面に表示もされていない座標は計算する必要ないですね。
あとコンボを付ける場合は特にそうですが
ボタンを連打したときに範囲に入っているときは
押したぶんだけすべて良になってしまうので
すでに押されたか、押されていないかを判定しないといけないです。
まだ直っていないですが、
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
Yellow = GetColor( 255 , 255 , 0 ) ; // 黄色の値を取得
はwhileより上に書いてください。
キーを押したときの処理のなかに
if(ab_value<=40) DrawString(170,155, "良", Yellow);
などを書かないでください。
キーを押した時の処理の中は
距離の計算(関数化したほうが良いかも)
hyouji=1;
count=0;
などとして、
速さ調整の上に
if(hyouji=1){
文字表示
}
としてください。
count++;を書き
if(count>20) hyouji=0;
などと書いてください。
hyoujiは1のときは文字を表示して、0のときは表示しないわけです。
countは毎ループごとに1ずつ増えて、例えば20ループほどすると文字が消えるわけです。
うまく動くかは分りませんが、何をしたいかは分かりますか?
これは私が考えた一例なので他にも方法はあります。
何をしようとしているのかを理解してから書いてください。
1,077ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni [URL] ..比類無きプログラマー(71,622ポイント)
Date: 2009/03/14(土) 19:54
No:30736
|
|
Title: Re:c++でのアプリの作り方についての質問です
|
|
>ドラッグ&ドロップ
質問の根本を解決することができないかもしれませんが、
DXライブラリにSetDragFileValidFlagをはじめとする
D&D関連の関数があります。
追加
質問内容の回答に全くそぐわない回答でした。。
↑は無視しておいてください。。
2倍のポイントを手に入れた! 170ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,639ポイント)
Date: 2009/03/14(土) 20:07
No:30737
|
|
Title: Re:c++でのアプリの作り方についての質問です
|
|
フォームのコンポーネントをD&DできるIDEのことですね。
リンクの先にあるのはVC++の例ですが、このようなソフト(および使い方)を探したいということでしょうか?
それともC言語(プログラミング)そのものの解説サイトを探したいのでしょうか?
46ポイント を手に入れた。
|
|
|
|
|
Name: ri-pa ..ぴよぴよ(304ポイント)
Date: 2009/03/14(土) 21:06
No:30743
|
|
Title: Re:c++でのアプリの作り方についての質問です
|
|
返信ありがとうございます。
>リンクの先にあるのはVC++の例ですが、このようなソフト(および使い方)を探したいということでしょうか?
>それともC言語(プログラミング)そのものの解説サイトを探したいのでしょうか?
ソフトは既にMicrosoft Visual C++ 2008 Express Editionを使っていて、
実際最初に書いたサイトでボタンを作ったり、メッセージボックスを表示したりさせることはできました。
このサイトにはメッセージボックスの表示の仕方までしかないので、
他のテキストボックス等の部品の使い方や、詳細なプロパティウィンドウでの設定の仕方等、本格的にアプリケーションを作るときに必要な事が乗っているサイトを知りたいです。
226ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..上級者(15,619ポイント)
Date: 2009/03/14(土) 21:38
No:30744
|
|
Title: Re:c++でのアプリの作り方についての質問です
|
|
例えば、MFCを使うのがイメージに近いかもしれません。
「MFC 入門」などで検索するとそれなりにページが出てきますが、こういうことでしょうか。
ただ、C++の基礎に加えてWin32APIなどの知識はやはり必要になります。
32ポイント を手に入れた。
|
|
|
|
Name: ジーコ ..かけだし(1,642ポイント)
Date: 2009/03/14(土) 08:40
No:30686
|
|
Title: サウンドノベルシステムについての質問
|
|
龍神録におけるプログラミングの質問です。
HP:http://sinkai.net/rp/19.phpで紹介されているサウンドノベルシステムにおいてです。
このサンプルプログラミングで、エクセルでcsvファイルを作成し、コンパイルするといたるところで、
error C2137: 空の文字定数
といわれてしまい、コンパイルエラーになってしまいました。
このエラーを解決するため、本文の空文字''の部分を' 'として空欄を指定してコンパイルしたところ、今度はうまくコンパイルできました。
ところが、今度は、デバック中に、サウンドノベルシステムが正常に動作しません。
具体的にこんな感じです
※csvファイルで以下のように作成
A B C D E
プレイヤー1 0 0 0 テスト1C
プレイヤー2 1 0 0 テスト2C
プレイヤー2 1 0 0 テスト3C
プレイヤー1 0 0 0 テスト4C
プレイヤー1 0 0 0 テスト5C
プレイヤー2 1 0 0 テスト6C
プレイヤー2 1 0 0 テスト7C
プレイヤー1 0 0 0 テスト8C
実行結果
プレイヤー1
テスト1C
テスト2C
テスト3C
・
・
・
(しばらくして終了)
説明:
サウンドノベルシステムのプログラムになると、csvファイルで読み込んだ文字が一挙に出てしまうという現象が発生する。
この問題に対する解決策を教えていただけないでしょうか?
具体的な実行結果があればもっとわかりやすく質問できたと思うのですが、よろしくお願いします。
564ポイント を手に入れた。
|
|
|
|
Name: 朽木 ..かけだし(2,010ポイント)
Date: 2009/03/14(土) 09:04
No:30687
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
空の文字定数など探しても見つかりませんでした。
''の部分の書き方が変になっているのか、私もちゃんと表示されません。
これが原因ではないでしょうか。
管理人さんの対応を待った方が良いかと思います。
67ポイント を手に入れた。
|
|
|
|
|
Name: SooA [URL] ..初心者(8,950ポイント)
Date: 2009/03/14(土) 09:10
No:30688
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
>サウンドノベルシステムが正常に動作しません。
csvファイル中の , という文字を区切りとしているため
変更すると正常に動作しないでしょうね。
',' は数値に直すと 44、16真数で 0x2c ですので
全ての ',' の部分を数値に置き換えてみましょう。
119ポイント を手に入れた。
|
|
|
|
|
Name: SooA [URL] ..初心者(8,965ポイント)
Date: 2009/03/14(土) 09:14
No:30689
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
例
/* 名前の取得 */
for( x=0 ; x < 50 ; x++ ){
story[y].name[x] = FileRead_getc( load_data ) ; //文字列を抜き出す
if( story[y].name[x] == 0x2c ){ //「:」までループ
story[y].name[x] = '' ;
break ;
}
}
15ポイント を手に入れた。
|
|
|
|
|
Name: SooA [URL] ..中級者(9,139ポイント)
Date: 2009/03/14(土) 09:29
No:30692
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
例
/* 名前の取得 */
for( x=0 ; x < 50 ; x++ ){
story[y].name[x] = FileRead_getc( load_data ) ; //文字列を抜き出す
if( story[y].name[x] == ',' ){ //「:」までループ
story[y].name[x] = '\0' ;
break ;
}
}
空文字のところは全てNULL文字に。
141ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..かけだし(2,111ポイント)
Date: 2009/03/14(土) 09:36
No:30693
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
とりあえず、空文字はそこだけではないので、私も見てますが、よく分からない所があるので
素直にちゃんとした答えを持っている管理人さんを待った方が あ、サイトが違うんですねこれ。
支援サイトみたいなので、ここの管理人さんが作ってない記事について質問したのはマズかったかもしれません。
サイトが運営している掲示板で質問をして、答えをもらった方が良いんじゃないでしょうか。
ttp://sinkai.net/php/bbs/ マルチポスト?になるのかな? ←で記事を作ったら相互リンクを。
一応掲示板のリンクにこちらにも貼られているみたいですが、記事を作ったのはここではないので。
101ポイント を手に入れた。
|
|
|
|
|
Name: SooA [URL] ..中級者(9,389ポイント)
Date: 2009/03/14(土) 18:36
No:30730
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
>私も見てますが、よく分からない所があるので
↑は別件?として置いておいて、
全ての空文字をNULL文字にする意味は理解できていますか?
配列に格納された文字はそれだけではアスキーコードの塊でしかなく
文字列として正しく扱うことができません。
ですのでcsvデータを読み込み、
データの区切りである "," を見つけたら
文字データを格納した配列に '\0' を与え
文字列として完成させている訳です。
エラーが出るのは VCコンパイラが '' をNULL文字として
認識していない事が原因です。
250ポイント を手に入れた。
|
|
|
|
|
Name: 朽木 ..かけだし(2,112ポイント)
Date: 2009/03/14(土) 20:39
No:30739
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
今回は日本語が含まれているみたいなので、ASCIIのかたまり、というのはちょっと違うんじゃないでしょうか。
合ってたらごめんなさい。
1ポイント を手に入れた。
|
|
|
|
|
Name: SooA [URL] ..中級者(9,483ポイント)
Date: 2009/03/14(土) 21:02
No:30742
|
|
Title: Re:サウンドノベルシステムについての質問
|
|
確かにアスキーコードの塊というのは誤りですね。
うっかりしていました申し訳ない。
私が言いたいのは配列に格納した場合、
文字データだけでは文字列として
正しく扱うことができないと言うことですので。
58ポイント を手に入れた。
|
|
|
|
Name: 太郎 ..入門者(4,434ポイント)
Date: 2009/03/14(土) 13:59
No:30711
|
|
Title: struct と extern の使い方について
|
|
お初にお目に掛かります、太郎と申します。
最近「独習C」と言う
ハーバート・シルト著の参考書を読みながら
プログラムをパチパチ打っています。
C言語暦は1ヶ月位で、基本構文を覚えた位です。
それらをどう組み合わせて使ったら良いのか、までは
まだ大きな物を作った事が無いので分かりません。
そして、最近ぶっつけ本番で
DXライブラリを使ったゲームを作り出しました。
今回難儀している所は
「structをexternするにはどうすれば良いんだろう!?」
です。独習Cにも分割コンパイルの方法は
externを使え位しか記載されていなくて?
普通に
extern struct Test{
int a;
int b;
int c;
}tt;
とやってもコンパイラがエラーを出して来ます。
さっき難儀しながら現在作っているゲームのソースと同じ感じで
まずい部分をピックアップしたプログラムを作って見ました。
────────────────
[ Player.h ]
#pragma once
extern struct tt TEST;
void Stick(void);
────────────────
[ Player.cpp ]
#include"Player.h"
void Stick(void)
{
TEST.a=20;
TEST.b=30;
TEST.c=40;
}
────────────────
[ Test.h ]
#pragma once
#include<stdio.h>
struct Test{
int a;
int b;
int c;
}tt;
#include"Player.h"
────────────────
[ Main.cpp ]
#include<stdio.h>
#include"Test.h"
int main(void)
{
a=10;
b=20;
c=30;
return 0;
}
────────────────
このソースを実行すると下記のエラーが出ます。
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Player.h:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
質問をまとめてみますと
structをexternするにはどうすれば良いのでしょうか。
環境は下記の通りです。
OS:WindowsXPpro SP3
コンパイラ:Borland C++ 5.5.1
ライブラリ:DXライブラリ
2倍のポイントを手に入れた! 1,588ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..比類無きプログラマー(70,158ポイント)
Date: 2009/03/14(土) 14:21
No:30715
|
|
Title: Re:struct と extern の使い方について
|
|
エラー内容自体は全く別のエラーです。
どうやら単体のソースでコンパイルしようとしていますね。
(Player.cpp のみをコンパイルしている)
bcc32 Main.cpp Player.cpp
としてコンパイルするファイルを並べて、コンパイルを実行してみてください。
ただし、 Main.cpp で定義されていない変数が使用されているのでエラーが出ますが。
extern の基本的な使い方としては、
・ヘッダファイルで extern をつけた変数を書いておく。(その変数がありますよという指示)
・どれか一つのソースファイルに extern のつけていない変数を書く。(実際の変数の定義)
となります。
今回の場合、構造体なので、ヘッダファイルで、
typedef struct Test{
int a;
int b;
int c;
}tt;
と構造体 tt を定義し、
そのあとに、
extern tt TEST;
と extern で変数の存在を知らせます。(このときは実体化していない)
そして、どれか一つのソースファイル内に、
tt TEST;
と書けば、変数の存在が確定します。
(構造体 tt の定義のため、ヘッダファイルを事前にインクルードすること)
ちなみに、複数のソースでextern されている同名のグローバル変数を書くと、
リンク時に複数存在しますとエラーが出ます。
532ポイント を落としてしまった。
|
|
|
|
|
Name: 太郎 ..入門者(4,991ポイント)
Date: 2009/03/14(土) 15:59
No:30719
|
|
Title: Re:struct と extern の使い方について
|
|
>御津凪さん
優しくて丁寧な返信を本当にどうもありがとうございました。
先程、VC2008の方で作り直してコンパイルして見ました。
ちょっとだけ中身を変えて僕の理解の通りに
ソースを改変した所、更にエラーが出てしまいました。
下記がそのソースとエラーログです。
────────────
[ Test.h ]
#pragma once
#include<stdio.h>
typedef struct Test{
int a;
int b;
int c;
}tt;
#include"Player.h"
────────────
[ Player.h ]
#pragma once
extern tt TEST;
void Stick(void);
────────────
[ Player.cpp ]
#include"Player.h"
void Stick(void)
{
TEST.a=20;
TEST.b=30;
TEST.c=40;
}
────────────
[ Main.cpp ]
#include<stdio.h>
#include"Test.h"
tt TEST;
int main(void)
{
TEST.a=10;
TEST.b=20;
TEST.c=30;
Stick();
return 0;
}
─────────────
[ エラーログ ]
1>------ すべてのリビルド開始: プロジェクト: テスト, 構成: Debug Win32 ------
1>プロジェクト 'テスト'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>Main.cpp
1>Player.cpp
1>player.h(3) : error C2146: 構文エラー : ';' が、識別子 'TEST' の前に必要です。
1>player.h(3) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>player.h(3) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>player.cpp(5) : error C2228: '.a' の左側はクラス、構造体、共用体でなければなりません
1> 型は 'int' です。
1>player.cpp(6) : error C2228: '.b' の左側はクラス、構造体、共用体でなければなりません
1> 型は 'int' です。
1>player.cpp(7) : error C2228: '.c' の左側はクラス、構造体、共用体でなければなりません
1> 型は 'int' です。
では「TEST」が良くないのか、と思い
extern tt;
にすると今度は「左辺を無視します」と出てしまい
やっぱりこの行がエラーになってしまいます。
何故でしょう…。
やっぱりまだゲームを作るには早過ぎたんでしょう、多分orz。
557ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(91,926ポイント)
Date: 2009/03/14(土) 16:11
No:30720
|
|
Title: Re:struct と extern の使い方について
|
|
Player.cppからはPlayer.hを単独でインクルードしていますが、tt型の定義はTest.hでなければ行われません。
つまり、Player.cppではPlayer.hではなく、Test.hをインクルードすべきではないでしょうか?
ところで、「独習C」を使うのであれば、C++ではなくCとしてコンパイルすべきかと思います。
拡張子が.cppだとC++扱いになりますので、細かい点で言語仕様が異なります。
無用の混乱をさけるためにも、拡張子は.cppではなく.cにしておきましょう。
> やっぱりまだゲームを作るには早過ぎたんでしょう、多分orz。
残念ながらそうだと思います。
遠回りのようでも、もう少し基礎を固めましょう。
240ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..比類無きプログラマー(70,303ポイント)
Date: 2009/03/14(土) 16:28
No:30721
|
|
Title: Re:struct と extern の使い方について
|
|
解決策はたかぎさんの通りなので、エラーの意味と原因を書いておきます。
1>player.h(3) : error C2146: 構文エラー : ';' が、識別子 'TEST' の前に必要です。
この部分では、 tt という型はその時点では存在しないため、起きています。
1>player.h(3) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
これは上記のエラーのため、 TEST を int 型と仮定してコンパイルを続行します、という意味です。
1>player.cpp(5) : error C2228: '.a' の左側はクラス、構造体、共用体でなければなりません
1> 型は 'int' です。
1>player.cpp(6) : error C2228: '.b' の左側はクラス、構造体、共用体でなければなりません
1> 型は 'int' です。
1>player.cpp(7) : error C2228: '.c' の左側はクラス、構造体、共用体でなければなりません
1> 型は 'int' です。
これは、"型は 'int' です" とあるとおり、TEST が int 型と解釈されているため起きているエラーです。
元凶は tt の型が分からない点なので、先に tt の型を知らせる必要があります。
# たかぎさんの仰るように、C言語についてもう少し修行を積んでからのほうがいいと思います。
# 今のままでは完成もままならない可能性が高いので。
406ポイント を手に入れた。
|
|
|
|
|
Name: 太郎 ..初心者(5,170ポイント)
Date: 2009/03/14(土) 16:53
No:30722
|
|
Title: 今後の学習方針で聞きたい事があります
|
|
>たかぎさん
ちゃんと動かす事が出来ました!
どうもありがとうございました。
検索してC言語の講座サイト等を読むのですが
殆どが基礎の基礎の様な事しか書いて無くて
僕の知りたい情報がなかなかありません。
今後はどう言った感じで学習を進めて行けば良いでしょうか。
最終的には2Dのアクションゲームの様な物を
ライブラリを介せず作りたいと思っています。
あくまでそれは「最終的に」なので、取り合えず
次の一歩は何をすれば良いのかな…と悩み始めました。
179ポイント を手に入れた。
|
|
|
|
|
Name: 太郎 ..初心者(5,317ポイント)
Date: 2009/03/14(土) 18:32
No:30729
| 解決!
|
Title: 無題
|
|
>たかぎさん
すいません、かなり曖昧な質問をしてしまいました。
反省していますm(_ _)m
分かりました、他の人のソースを読む学習を
やって見ようと思います。
>御津凪さん
エラーログの読み方を教えて頂きありがとうございました。
なるほど、先に「tt」を定義しないと駄目なんですね。
二大先生、質問にお付き合い頂きありがとうございました。
一先ず解決と言う事で解決マーク付けて置きます。
147ポイント を手に入れた。
|
|
|
|
|