ゲーム画面外の演出

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
aptherus

ゲーム画面外の演出

#1

投稿記事 by aptherus » 14年前

初めまして。こちらの動画のゲームのように、画面外の演出をするにはどうすればいいのでしょうか?

http://www.nicovideo.jp/watch/sm5018088

このゲームはDXライブラリを使って作られているそうです。しかし全くやり方が分かりません。自分でスクリプトを組んでいるのでしょうか?

詳しい方、ご教授お願いいたします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: ゲーム画面外の演出

#2

投稿記事 by h2so5 » 14年前

Win32APIを使ってDXライブラリの主画面とは別に、もうひとつウィンドウを作って透過させていると思われます。
「いりす症候群!」はDXライブラリ+D言語というちょっと変わった構成だったと思いますが、C/C++でも同様です。

参考になるかもしれません↓
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=2275
http://hpcgi2.nifty.com/natupaji/bbs/pa ... o=1616&p=1

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: ゲーム画面外の演出

#3

投稿記事 by ISLe » 14年前

面白そうなので作ってみました。

なるべくDXライブラリだけでやるとしたらこんな感じですかね。
ひとつ目のプログラムを起動してから、ふたつ目のプログラムを起動してください。

コード:

#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	SetMainWindowText("ユニークな名前");
	SetWindowStyleMode(2);
	ChangeWindowMode(TRUE);
	SetDrawScreen(DX_SCREEN_BACK);
	SetGraphMode(200, 200, 32);
	SetUseBackBufferTransColorFlag(TRUE);
	SetBackgroundColor(0, 255, 0);
	if (DxLib_Init() != 0) return 0;
	SetTransColor(0, 255, 0);
	
	while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0) {
		DrawBox(0, 0, 200, 200, GetColor(0,255,0), TRUE);
		DrawCircle(100, 100, 100, GetColor(0,0,255), TRUE);
	}
 
	DxLib_End();
	return 0;
}

コード:

#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(TRUE);
	if (DxLib_Init() != 0) return 0;

	HWND hWnd = FindWindow("ユニークな名前", NULL); // なぜかクラス名に

	while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0) {
		int MouseX, MouseY;
		GetMousePoint(&MouseX, &MouseY);
		DrawCircle(MouseX, MouseY, 100, GetColor(255,0,0), TRUE);
		if (hWnd) {
			POINT pt = {MouseX, MouseY};
			ClientToScreen(GetMainWindowHandle(), &pt);
			int x = pt.x - 100;
			int y = pt.y - 100;
			SetWindowPos(hWnd, GetMainWindowHandle(), x, y, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
		}
	}
 
	DxLib_End();
	return 0;
}

aptherus

Re:Re: ゲーム画面外の演出

#4

投稿記事 by aptherus » 14年前

透過を使えばこんなこともできるのですね!お二人とも、大変ありがとうございました。ソースコードを書いてくれた方、お手本にさせていただきます!リンクの方も参考にさせていただきます!

閉鎖

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