ゲームのウィンドウにDrawFormatStringで文字を書いて
その文字自体を消す方法とかってありますか?
DeleteGraphみたいな感じで消したいのですが、やり方がわかる方
教えていただけないでしょうか?
文字消去について
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字消去について
DXライブラリなら毎フレーム描画するので、描画をやめれば表示は消えます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 文字消去について
DXライブラリならDeleteGraphは画像のデータをメモリから削除する命令なので、こういうことですか?
#include <DxLib.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {
// 未使用の警告避け
(void)hInstance;
(void)hPrevInstance;
(void)lpCmdLine;
(void)nCmdShow;
if(ChangeWindowMode(TRUE)!=DX_CHANGESCREEN_OK || DxLib_Init()==-1) return -1;
char* buffer=new char[1024];
lstrcpyA(buffer,"テスト文字列%d号");
// DrawFormatStringで文字を書く
DrawFormatString(100,200,GetColor(255,255,255),buffer,1);
// その文字自体を消す
for(char* p=buffer;*p!='\0';p++)*p='\0'; // 念のため文字のデータも消す
delete[] buffer; // 領域を開放
WaitKey();
DxLib_End();
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 文字消去について
みけCATさん
僕はゲームを作っていて、敵キャラのHPが0になった
敵を消して、それと同時に敵の頭上に描画していたHPという文字も
消すとゆう作業をしたいのですが
これを実行してみたんですが、敵キャラは消えても文字は描画されたまま
なります。
Delete[]~ のところにブレークポイントを置いて実行してみると
ちゃんとブレークされます。
何が原因なんでしょうか?
僕はゲームを作っていて、敵キャラのHPが0になった
敵を消して、それと同時に敵の頭上に描画していたHPという文字も
消すとゆう作業をしたいのですが
これを実行してみたんですが、敵キャラは消えても文字は描画されたまま
なります。
Delete[]~ のところにブレークポイントを置いて実行してみると
ちゃんとブレークされます。
何が原因なんでしょうか?
Re: 文字消去について
プログラムのバグもしくは不適切な設計が原因かもしれません。ぴーらの さんが書きました:何が原因なんでしょうか?
現在のソースコードを提示できますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 文字消去について
質問文の表現が漠然としているので,もっと具体的な言葉で質問すると良いのではないでしょうか.
(「消す」みたいな言葉で書くと,いろいろな意味に取られる可能性がある.
まぁ,だいたい↓のようなことを言ってるんだろうな,とわかりますけども,
そこを(わざと,あるいは読み違い等で)違う意味に取らてしまう場合があるのが掲示板.)
ここでいう「消す」とは,
「ある状況下で表示(描画)していたものを,ある条件を満たして以降は表示(描画)しない」
ということを言っているのだと思いますが,だとすれば最初からそう書けばそう伝わるでしょうし,
自身でもこのように 具体的に文を書いてみれば,
「とにかく無条件に表示していたのを,ある瞬間を境にして何とかして見えなくしたい」 みたいな話ではなくて
「何らかの条件を満たす場合においてのみ表示を行う」ということが本当にやりたいことだとわかるんじゃないかな.
ここでいう条件とはもちろん「HPの値が0より大きいか否か」であり,
「敵の画像と,HPという文字 の両者を表示するための条件 = HP>0」なのでしょうから,
そのようにコードを書けばよいのではないでしょうか.
(「消す」みたいな言葉で書くと,いろいろな意味に取られる可能性がある.
まぁ,だいたい↓のようなことを言ってるんだろうな,とわかりますけども,
そこを(わざと,あるいは読み違い等で)違う意味に取らてしまう場合があるのが掲示板.)
ここでいう「消す」とは,
「ある状況下で表示(描画)していたものを,ある条件を満たして以降は表示(描画)しない」
ということを言っているのだと思いますが,だとすれば最初からそう書けばそう伝わるでしょうし,
自身でもこのように 具体的に文を書いてみれば,
「とにかく無条件に表示していたのを,ある瞬間を境にして何とかして見えなくしたい」 みたいな話ではなくて
「何らかの条件を満たす場合においてのみ表示を行う」ということが本当にやりたいことだとわかるんじゃないかな.
ここでいう条件とはもちろん「HPの値が0より大きいか否か」であり,
「敵の画像と,HPという文字 の両者を表示するための条件 = HP>0」なのでしょうから,
そのようにコードを書けばよいのではないでしょうか.
Re: 文字消去について
「文字を表示されなくする」を「DeleteGraphみたいな感じで消す」と表現しているということは、
DXライブラリを使用しているわけではないということですね。
使用しているOS、言語、ライブラリを教えてください。
DXライブラリを使用しているわけではないということですね。
使用しているOS、言語、ライブラリを教えてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字消去について
結局、私の書いたことなんですよね?softya(ソフト屋) さんが書きました:DXライブラリなら毎フレーム描画するので、描画をやめれば表示は消えます。
と言うことで残る疑問は何でしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。