スタート、結果画面、ボタンを作りたいです。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
EKISUKE
記事: 108
登録日時: 12年前

スタート、結果画面、ボタンを作りたいです。

#1

投稿記事 by EKISUKE » 11年前

今作っているゲームでスタート画面がなくすぐにゲームが始まるので、ゲームを開始したらゲーム開始画面がでて、
「はじめから」「つづきから」「オプション」などのボタンがあり、マウスでクリックしたら

「はじめから」:1ステージ目から
「つづきから」:前にやっていた状態から
「オプション」:操作を替えたりできるようにしたい

といった具合にしたいのですが、
http://dixq.net/forum/viewtopic.php?f=3&t=10603
↑を参考にして作ろうと思っているのですが、上記のURLではDXライブラリを使ったものです。
僕はopenframeworksを使用しているので、描画方法や、やり方が違ったりするのかと思い質問させていただきました。

以前質問させていただいたところにソースとヘッダ、画像ファイルがあるので、一応URLを貼らせていただきます
http://dixq.net/forum/viewtopic.php?f=3&t=11318

問題は「つづきから」と「オプション」なのですが、「つづきから」はどうやってゲームの状態を保存しておくのかを知りたいです。
「オプション」は操作方法をクリックして登録したいキーを押すと変わり、割り当てられないキーなら「そのキーは使用できません」という文字を表示したいのですが、
その流れ(アルゴリズム?)をしりたいです。

それと、openframeworksでのボタンの作り方がありましたらお願いします。

もし、上記の参考にしているURL以外で似たような質問で参考にできるようなサイトなどがあれば教えてほしいです。
回答お願いします。

nil
記事: 428
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#2

投稿記事 by nil » 11年前

openframeworksのことはわからないのですが、
ここで取れる手段は主に2つです。
一つはWinAPIのボタンを表示する。
もう一つは画像を用意し、擬似的にボタンを作る。

おすすめは後者です。
使うFrameworkが変わっても流用できますから。

後者で行う場合、描画処理とマウス入力を受け取る処理がDXライブラリと違うだけで、
基本的な構造は同じです。

EKISUKE
記事: 108
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#3

投稿記事 by EKISUKE » 11年前

涼雅 さんが書きました:おすすめは後者です。
使うFrameworkが変わっても流用できますから。
僕もそう思います。

涼雅 さんが書きました:後者で行う場合、描画処理とマウス入力を受け取る処理がDXライブラリと違うだけで、
基本的な構造は同じです。
openframeworksにもともとあるマウスをクリックした座標をとる関数をつかい、ボタンの画像の座標をつかって
あたり判定をとるという形でいいんですかね?

http://dixq.net/g/03_11.html
ここを参考にしてセーブデータのほうを作ろうと思って下のようなプログラムを組みました。

コード:

//----------------------------------------------------------
//	セーブ保存先初期化
//----------------------------------------------------------
		FILE *fp = fopen( "save_data_01.txt", "w" );


	//----保存したいもの
		int money = 1000;

		fprintf(fp,"現在の所持金は = %d\0",money);
これを実行すると、save_data_01.txtファイルに「現在の所持金は1000」と書かれているはずなのですが、
これで実行してもsave_data_01.txtにはなにも書かれていませんでした。
なのでブレークポイントを使ってみるとFILE*fpのところにカーソルを合わせると
「+ fp 0x5383e4f8 {_ptr=0x00000000 <不適切な Ptr> _cnt=0 _base=0x00000000 <不適切な Ptr> ...} _iobuf *」
とでます。
<不適切な Ptr>だけで検索すると、fopenはwindowsコンソールアプリケーションじゃないとだめとかいてあるものが多かったのですが、
僕はopenframeworksのemptyexampleという初期ファイルをコピーしてつかっているのでwindowsコンソールアプリケーションかどうかわかりません。
なので調べる方法はありますか?
それか、これ以外にセーブデータを保存し、ロードできるようなアルゴリズムはありますか?
また、↑のエラーメッセージの意味を教えていただけると幸いです。

ちなみにsave_data_01.txtというファイルはsrc、binフォルダと同じ階層にsave_dataというフォルダを作りそこに保存しています。

nil
記事: 428
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#4

投稿記事 by nil » 11年前

ブレークポイントをmoneyかfprintfのところにセットしてみてください。
あと、fprintfにヌル文字\0は必要ありません

EKISUKE
記事: 108
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#5

投稿記事 by EKISUKE » 11年前

セットしてやってみた結果です。
自動変数のウィンドウに下のように出てました

名前 値 型の順番です。
fp 0x53f1e4f8 {_ptr=0x00000000 <不適切な Ptr> _cnt=0 _base=0x00000000 <不適切な Ptr> ...} _iobuf *
money  1000 int

トントン
記事: 100
登録日時: 13年前

Re: スタート、結果画面、ボタンを作りたいです。

#6

投稿記事 by トントン » 11年前

僕の環境では、問題なく書き込みできました。
また、ブレークポイントでとめた時
同じ「~<不適切な Ptr> _cnt=0 _base=0x00000000 <不適切な Ptr>~」
というものが出ていました。
上記が何を表しているかはわかりませんが。

というか、よくよくみたら実行エラーというわけではないんですね。(勘違い
実行時に、fpをcloseしないでファイルの中身を確認したり
書き込まれていない状態のファイルを開きっぱなしで実行したりしてませんよね?
(それでも書き込めるのかな?

EKISUKE
記事: 108
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#7

投稿記事 by EKISUKE » 11年前

トントン さんが書きました:実行時に、fpをcloseしないでファイルの中身を確認したり
書き込まれていない状態のファイルを開きっぱなしで実行したりしてませんよね?
参考にしたURLにcloseが書いてなかったのですが、使い方としてはどうつかうのでしょうか?
参考にしたとこではfopenとfprintfだけで書き込めるというものだと思っていたのですが・・・・
ファイルは開きっぱなしにしてないですが、書き込みたいファイルの階層は関係ないのでしょうか?

nil
記事: 428
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#8

投稿記事 by nil » 11年前

fcloseがないのはまずいです。
openしたら必ずcloseしなければなりません

EKISUKE
記事: 108
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#9

投稿記事 by EKISUKE » 11年前

涼雅 さんが書きました:fcloseがないのはまずいです。
openしたら必ずcloseしなければなりません

コード:

//----------------------------------------------------------
	//	セーブ保存先初期化
	//----------------------------------------------------------
		
		FILE *fp = fopen( "save_data_01.txt", "w" );


	//----保存したいもの
		int money = 1000;

		fprintf(fp,"現在の所持金は = %d",money);
		fclose(fp);
このように書き直してみましたが、fcloseの位置はこれでいいですか?
一応実行してみましたがsave_data_01.txtには何も書かれていないですね。
コンソールアプリケーションじゃないのでしょうか?(openframeworksを使っています)
調べる方法はありますか?一応実行したときopenframeworksの描画画面と背景が黒のウィンドウがでます。

トントン
記事: 100
登録日時: 13年前

Re: スタート、結果画面、ボタンを作りたいです。

#10

投稿記事 by トントン » 11年前

EKISUKE さんが書きました:
涼雅 さんが書きました:fcloseがないのはまずいです。
openしたら必ずcloseしなければなりません

コード:

//----------------------------------------------------------
	//	セーブ保存先初期化
	//----------------------------------------------------------
		
		FILE *fp = fopen( "save_data_01.txt", "w" );


	//----保存したいもの
		int money = 1000;

		fprintf(fp,"現在の所持金は = %d",money);
		fclose(fp);
このように書き直してみましたが、fcloseの位置はこれでいいですか?
一応実行してみましたがsave_data_01.txtには何も書かれていないですね。
コンソールアプリケーションじゃないのでしょうか?(openframeworksを使っています)
調べる方法はありますか?一応実行したときopenframeworksの描画画面と背景が黒のウィンドウがでます。
fcloseの位置はあっているはずですが。

一応確認のために聞きます。

1.環境を教えてください
2.save_data_01.txtは自動で作成されたものでしょうか? 自分で作成したものでしょうか?
3.save_data_01.txtは読み取り専用ではないでしょうか?
4.openframeworksを使用しない場合どうなるでしょうか?
5.ソースを見せてください。

EKISUKE
記事: 108
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#11

投稿記事 by EKISUKE » 11年前

1 OS :windowsVista 32bit
Visual stadio 2010 C++
Openframeworksで作成
2 自分で作成したものです
3 読み取り専用ではないです。
4 使用しないで新しくコンソールアプリケーションを使用した場合正しくファイルにかきこまれており、階層をかえると、slnとかと同じ階層に作成されました。
5 現段階のソースとヘッダと画像です。8mb以上zipで送信できないのと、アップローダーでも正しくできなかったそうなので(前回の質問で)ここにあげます。
summerworks.zip
Openframeworksのフォルダのappsの中にフォルダをつくってその中に保存してやると動くはずです・・・たぶん
(32.64 KiB) ダウンロード数: 129 回

トントン
記事: 100
登録日時: 13年前

Re: スタート、結果画面、ボタンを作りたいです。

#12

投稿記事 by トントン » 11年前

EKISUKE さんが書きました:1 OS :windowsVista 32bit
Visual stadio 2010 C++
Openframeworksで作成
2 自分で作成したものです
3 読み取り専用ではないです。
4 使用しないで新しくコンソールアプリケーションを使用した場合正しくファイルにかきこまれており、階層をかえると、slnとかと同じ階層に作成されました。
5 現段階のソースとヘッダと画像です。8mb以上zipで送信できないのと、アップローダーでも正しくできなかったそうなので(前回の質問で)ここにあげます。
summerworks.zip
上げてもらったファイルでは、きちんと書き込めました。

>ちなみにsave_data_01.txtというファイルはsrc、binフォルダと同じ階層にsave_dataというフォルダを作りそこに保存しています。
save_dataというフォルダではなく、他の階層(たとえばbinフォルダ)にsave_data_01.txt
というファイルはありませんか?

EKISUKE
記事: 108
登録日時: 12年前

Re: スタート、結果画面、ボタンを作りたいです。

#13

投稿記事 by EKISUKE » 11年前

トントン さんが書きました:>ちなみにsave_data_01.txtというファイルはsrc、binフォルダと同じ階層にsave_dataというフォルダを作りそこに保存しています。
save_dataというフォルダではなく、他の階層(たとえばbinフォルダ)にsave_data_01.txt
というファイルはありませんか?
すみません。ありました。
有難うございます。
この保存先はかえれないのでしょうか?

閉鎖

“C言語何でも質問掲示板” へ戻る