約 2,455,572 件
https://w.atwiki.jp/tokimeki_dictionary/pages/193.html
人語ゲーム【じんごげーむ】 『1』のドラマシリーズ『旅立ちの詩』のミニゲームの一つ。 指定されたボタンを順番どおり押していくゲーム。 美樹原愛のストーリーを追っていけばプレイ可能になる。 関連項目 ミニゲームetc
https://w.atwiki.jp/tokimeki_dictionary/pages/93.html
分類 ミニゲーム名 登場作品 ミニゲーム 15パズル 『ときめきの放課後』 Dance Dance Revolution-TokimekiMIX 『Dancing Summer Vacation』 編み物ゲーム 『彩のラブソング』 怪しい薬 『1』(SFC版) エアロビゲーム 『旅立ちの詩』 ギターゲーム 『彩のラブソング』、『旅立ちの詩』 ゴーストハウス 『3』 サッカーゲーム 『虹色の青春』、『旅立ちの詩』 人語ゲーム 『旅立ちの詩』 水泳ゲーム 『彩のラブソング』、『旅立ちの詩』 スキーゲーム 『旅立ちの詩』 大富豪 『ONLINE』 台本暗記クイズ 『ときめきの放課後』 ときONポーカー 『ONLINE』 ときめき占い 『1』(SFC版) ときめきカードゲーム ときめき危機一髪 ときめきクエスト ときめき競馬 ときめきスイカ割り ときめきスロット ときメモ打! 『ONLINE』 ときめきハニワ 『1』(SFC版) ときめき福引 配膳ミニゲーム 『Leaping School Festival』 バレンタインチョコ作り GSシリーズ全作品 百人一首 『ときめきの放課後』 ビリヤード 『Memories Ringing On』 振り付けゲーム 『彩のラブソング』 ボーリング 『Memories Ringing On』、『3』 ホッケーゲーム 『3』 弁当詰めゲーム 『旅立ちの詩』 まくら投げ 『3』、GSシリーズ全作品 まぜまぜ! 『ときめきの放課後』 漫才ゲーム 『彩のラブソング』 迷路クイズ 『ときめきの放課後』 メンコゲーム 『Leaping School Festival』 料理ゲーム 『旅立ちの詩』 ワードバスケット 『ONLINE』 縁日 カエル飛ばし 『3』 かたぬき 『2』 金魚すくい 『1』、『2』、『4』 射的 『1』、『4』 スマートボール 『3』 ひもくじ 『1』(SFC版) 輪投げ 『1』(SS版とGB版) 体育祭の競技 100m走 『1』(PC-E版、PS版以外)、『2』、『3』、『4』、『GS1』、『GS2』 アメ食い二人三脚 『ときめきの放課後』 玉転がし 『1』 借り物競走 『1』、『GS1』、『GS2』(DS版) 騎馬戦 『1』(PC-E版)、『2』 スプーンリレー 『1』 玉入れ 『1』、『GS3』、『GS4』 つなひき 『1』(PC-E版、GB版)、『ときめきの放課後』、『3』、『4』、『GS4』 二人三脚 『GS1』PS2版を除く全作品 ハードルリレー 『1』(PC-E版、Windows95版) パン食い競走 『GS1』、『GS2』 封筒ばらまきクイズ 『ときめきの放課後』 棒倒し 『2』 電脳部作成のゲーム内ゲーム PSYTH 『1』(SS版) コンカー 『彩のラブソング』 スタークラッシャー 『彩のラブソング』、『旅立ちの詩』 スターダストシンフォニーEX 『1』(PS版) スペースリングファイター 『2』 ツインビータイムアタック 『1』(PS版ほか) ツインビーりたーんず 『1』(PCE版) フォースギア メルティングポイント 『2』
https://w.atwiki.jp/yaruhara/pages/74.html
D言語ゲーム開発入門 コレは何? D言語勉強中のkenmoが、D言語でのゲーム開発情報をメモしていくページです。 目次 D言語ゲーム開発入門コレは何? D言語の特徴メリット デメリット インストール~Hello, world.コンパイラとリンカのインストール Hello, world. SDLをインストール~動かすSDLを動かす(画面を出す) 画像を表示 マウスイベント取得 マウスイベントの取得方法2 音楽の再生 BGMとSEを同時に鳴らす コンソールを消す EXEファイルにリソースアイコンを埋め込む モジュール分割・ディレクトリ階層を作って配置するJavaランタイムのインストール Antのダウンロード・インストール build.xmlを書く SDL小技 参考(D言語) 参考(SDL) コメント D言語の特徴 メリット ランタイムのいらない、コンパクトな実行ファイルが作れる ⇒JavaとかC#とかRubyとかPythonにはないメリットだぞ。 ガベコレがある ⇒C/C++のメモリ管理に泣かされていた日々とはサヨナラです。 クラスを使わなくても良い ⇒Cライクな書き方でもOK!モダンな書き方もできるぞ! コンパイルが爆速 ⇒スクリプト言語なみに速いぞ デメリット 情報が少ない ⇒ある程度出揃っていますが、まだ初心者向きの情報がないです 未だベータ版 ⇒2006/10/23現在のコンパイラのバージョンは、0.172です。仕様が結構変わる。先は長いぞー(古いサンプルコードがビルドできないことがよくある) ライブラリ作るのがめんどい ⇒SDLなりOpenGLなりを簡単に扱えるライブラリを自作しないと、ゲーム作るのは大変。そこの苦労はC/C++とかと一緒。 統合環境がまだまだ ⇒VisualStudioやEclipseと比べると、デバッガや定義ジャンプ、リファクタリングがやりにくい・できないのが少しつらいです。 今のところ、結局テキストエディタでコード書いて、コマンドプロンプトからビルド、、という流れに落ち着きます。 個人的には、C+SDLとか、C+DirectXとか、C+OpenGLなりやっていないとツライかな、という気がします。 ということで、そこらへんをやったことある人が 「そろそろD言語はじめっかなー?」 と思っている人が対象の内容となっております。 インストール~Hello, world. とりあえず、インストールして「Hello, world.」を出すまで。 コンパイラとリンカのインストール http //www.kmonos.net/alang/d/dcompiler.html ここから、 Win32版 dmd.zip (D コンパイラ) と Win32版 dmc.zip (リンカなどの小物ツール) をダウンロード。 dmd.zipを解凍すると、「dm」と「dmd」ができる。 とりあえず、「C \work\D\」に置いてみます。 (※「デスクトップ」とか「C \Program Files」とかの日本語パス、半角スペースがあるところに置いちゃダメ) dmc.zipを解凍すると、「dm」ができる。 それを先ほどの「dm」に上書き。 これでインストール完了。 Hello, world. void main() { printf("Hello, world."); } こんなプログラムを書いて、「test.d」で保存。 SET PATH=C \work\D\dmd\bin\;C \work\D\dm\bin\;%PATH% dmd test.d pause で、こんなバッチファイル(例えば「build.bat」)を書いて保存。 バッチファイルをダブルクリックで、コンパイル。 「test.exe」ができれば、ビルド完了。 コマンドプロンプトから、「test.exe」を実行すると、 Hello, world. と出れば、OKです。 SDLをインストール~動かす D - portingから、「SDL. Based on DedicateD s.」の「SDL」のリンクをぺちっと押して、「SDL.zip」をダウンロード。 解凍してできた「SDL」フォルダを「C \work\D\」に配置。 「SDL」フォルダ内にある、「SDL.dll」と「SDL.lib」をコピーして、「C \work\D\」に移動します。 これでインストール完了。 SDLを動かす(画面を出す) import SDL; void main() { // 初期化ー if( SDL_Init(SDL_INIT_VIDEO) 0 ) { throw new Error("Couldn t initialize SDL"); } // 640x480で。デフォルトのbpp。ソフトウェアで頑張る SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE); if ( screen == null ) { throw new Error("Couldn t set 640x480 video mode"); } // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent( e) ) { done = e.type == SDL_QUIT; } SDL_Delay(1000/30); } SDL_Quit(); } これを「test.d」で保存。 (※文字コードを「UTF-8」にして保存します) SET PATH=C \work\D\dmd\bin\;C \work\D\dm\bin\;%PATH% dmd test.d -ISDL SDL.lib pause こんなバッチファイルを書いて、ビルド。 ちなみに、 dmd test.d -ISDL SDL.lib の部分は、 「-ISDL」はインポートディレクトリ「SDL」の指定で、 「SDL.lib」はライブラリをスタティックリンクしています。 それで、できたtest.exeを実行して、画面が出れば、とりあえずOKです。 画像を表示 BMPを読み込んで描画します。(エラー処理は省略) import SDL; void main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE); // ビットマップ読込 SDL_Surface *image = SDL_LoadBMP("hell.bmp"); // 転送 SDL_BlitSurface(image, cast(SDL_Rect*)0, screen, cast(SDL_Rect*)0); // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent( e) ) { done = e.type == SDL_QUIT; } SDL_Delay(1000/30); } SDL_Quit(); } マウスイベント取得 import SDL; void main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE); // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent( e) ) { switch (e.type) { // マウス押下イベント取得 case SDL_MOUSEBUTTONDOWN switch (e.button.button) { case SDL_BUTTON_LEFT SDL_WM_SetCaption("push left", null); break; case SDL_BUTTON_RIGHT SDL_WM_SetCaption("push right", null); break; default break; } break; case SDL_QUIT done = true; break; default break; } } SDL_Delay(1000/30); } SDL_Quit(); } マウスイベントの取得方法2 わんきちさんのリクエストにお答えして、マウスのイベントをコールバックで取る方法を。 SDL_SetEventFilterを使ってみる。 import SDL; extern (C) int filterEventsHandler(SDL_Event* e) { if ( e.type == SDL_MOUSEBUTTONDOWN ) { if ( e.button.button == SDL_BUTTON_LEFT ) { printf("MOUSEBUTTONDOWN --- SDL_BUTTON_LEFT\n"); return 0; /* すでに処理が終わったので捨てます */ } } return 1; } void main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE); SDL_SetEventFilter( filterEventsHandler); // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent( e) ) { done = e.type == SDL_QUIT; } SDL_Delay(1000/30); } SDL_Quit(); } 音楽の再生 生SDLだとしんどいので、SDL_mixerを使用します。 やね先生のサイト「http //www.sun-inet.or.jp/~yaneurao/dlang/Chapter-10.html#100100000000」 から、 「http //www.sun-inet.or.jp/~yaneurao/dlang/lib/yaneSDK4D0401280603.zip」をダウンロード。 「yaneSDK4D0401280603\SDL\SDL_mixer.d」を「SDL」フォルダに、 「yaneSDK4D0401280603\import\SDL_mixer.lib」を同一ディレクトリに入れます。 「yaneSDK4D0401280603\SDL_mixer.dll」を同一ディレクトリに入れます。 "chimes.wav"を鳴らします。 import SDL; import SDL_mixer; // SDL_mixerを使うよー void main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE); // 44100Hz, 16bit, ステレオ, バッファサイズ4092byte Mix_OpenAudio(44100, AUDIO_S16, 2, 4092); Mix_Music* music = Mix_LoadMUS("chimes.wav"); // 再生。2つ目の引数に再生回数を指定。-1だと無限ループ if (Mix_PlayMusic(music, -1) != 0) { throw new Error("Couldn t play music"); } // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent( e) ) { done = e.type == SDL_QUIT; } SDL_Delay(1000/30); } // 演奏停止 Mix_HaltMusic(); // 曲データ開放 Mix_FreeMusic(music); // サウンドデバイスクローズ Mix_CloseAudio(); SDL_Quit(); } バッチファイルはこんな感じ。 SET PATH=C \work\D\dmd\bin\;C \work\D\dm\bin\;%PATH% dmd test.d -ISDL SDL.lib SDL_mixer.lib pause 「SDL_mixer.lib」を追加します。 あと、サウンドフォーマットは他に「Ogg」も対応しているみたいです。 BGMとSEを同時に鳴らす チャンクを使います。 import SDL; import SDL_mixer; // SDL_mixerを使うよー void main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE); // 44100Hz, 16bit, ステレオ, バッファサイズ4092byte Mix_OpenAudio(44100, AUDIO_S16, 2, 4092); // BGM Mix_Music* music = Mix_LoadMUS("bgm.ogg"); if (!music) { throw new Error("Couldn t load music"); } // 再生。2つ目の引数に再生回数を指定。-1だと無限ループ if (Mix_PlayMusic(music, -1) != 0) { throw new Error("Couldn t play music"); } // SE Mix_Chunk* chunk = Mix_LoadWAV("chimes.wav"); if (!chunk) { throw new Error("Couldn t load chunk"); } // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent( e) ) { switch (e.type) { case SDL_MOUSEBUTTONDOWN // 再生する。第1引数はチャンネル番号(-1で自動割り当て) // 第3の引数には再生回数(「0」は1 回再生。「-1」 なら無限ループ) Mix_PlayChannel(-1, chunk, 0); break; case SDL_QUIT done = true; break; default break; } } SDL_Delay(1000/30); } // サウンド停止 Mix_HaltChannel(-1); Mix_HaltMusic(); // サウンドデータ開放 Mix_FreeChunk(chunk); Mix_FreeMusic(music); // サウンドデバイスクローズ Mix_CloseAudio(); SDL_Quit(); } ただ、このままビルドしても、 test.obj(test) Error 42 Symbol Undefined _Mix_LoadWAV test.obj(test) Error 42 Symbol Undefined _Mix_PlayChannel --- errorlevel 2 というリンカエラーが出てしまいます。 理由は良く分からないですが、「SDL_mixer.d」のオブジェクトファイルを作ってリンクするとうまくいきます。 SDLフォルダから「SDL_mixer.d」を引っ張ってきて、 dmd -c -ISDL SDL_mixer.d とすると、「SDL_mixer.obj」ファイルができます。 そして、 dmd test.d -ISDL SDL.lib SDL_mixer.lib SDL_mixer.obj こんな感じで「SDL_mixer.obj」をリンクするとビルドできます。 コンソールを消す コンソールを消すには以下のリンカオプションを指定すると消すことができます。 -L/exet nt/su windows 4.0 例えば、こんなバッチファイルでビルドするとコンソールが消えてくれます。 SET PATH=C \work\D\dmd\bin\;C \work\D\dm\bin\;%PATH% dmd -L/exet nt/su windows 4.0 -ISDL test.d SDL.lib pause EXEファイルにリソースアイコンを埋め込む D言語あんまり関係ないですが、念のため。 やり方は、「.res」ファイルを作ってリンクするだけです。 で、「.res」をどうやって作るのかというと、 VisualStudioとか持っていれば、そこからぺちぺち操作すれば作れまする。 「そんなのないよ!」という人はここから、 Borland® C++Compiler 5.5無償ダウンロード Borland C++ Compiler 5.5をダウンロード。 インストーラー形式なので、「OK」⇒「完了」でインストール完了。 リソースをビルドするには、「.rc」が必要なので、 test ICON PRELOAD "test.ico" と書いて、「test.rc」で保存。 SET PATH=C \borland\bcc55\Bin;%PATH% brcc32 test.rc pause こんなバッチファイルを書いて、「brcc32.exe」で「test.rc」をビルドすると、「test.res」ができます。 で、 dmd -ISDL test.d SDL.lib test.res というように、「test.res」をリンクすれば、EXEファイルにアイコンが埋め込まれます。 モジュール分割・ディレクトリ階層を作って配置する 1ファイルで頑張っても良いのですが、 Javaっぽく1ファイル1クラス、ディレクトリ階層を使ったりしたい人のために。 ビルドには「Ant」というツールを使います。 Javaランタイムのインストール ただ、「Ant」を使うには、Javaのランタイム(JRE)をインストールする必要があります。 http //www.java.com/ja/ 「Ant」の機能を全部使うにはJDKを入れなければならないそうですが、とりあえず基本的なタスクしか使わないので、これでOK。 Antのダウンロード・インストール 次にAntをダウンロード。 http //ant.apache.org/bindownload.cgi から、apache-ant-1.6.5-bin.zipをダウンロードします。 解凍したら、フォルダ名を「ant」に変えて、とりあえず「C \work\D\」に置いてみます。 build.xmlを書く 「build.xml」とは、Antを使ってビルドするときの設定ファイルみたいなものです。 !-- Antを使ってビルドするよー(http //www.jajakarta.org/ant/ant-1.6.1/docs/ja/) -- project name="d_build" default="all" basedir="." !-- ターゲット名(実行ファイル名) -- property name="name" value="test"/ property name="prog" value="${name}.exe"/ !-- ライブラリディレクトリ -- property name="libsdir" value="lib\"/ !-- ここに使うライブラリを追加します -- property name="libs" value="${libsdir}SDL.lib"/ !-- 「.d」のあるインポートディレクトリ -- property name="import" location="SDL"/ !-- ソースファイルのディレクトリ -- property name="src" location="src"/ !-- リソースのディレクトリ -- property name="resource" location="resource"/ !-- インポートライブラリのディレクトリ -- property name="builtimport" value="SDL_mixer.d"/ !-- 全部ビルド -- target name="all" depends="compile, link"/ target name="rebuild" depends="clean, compile, link"/ target name="compile" apply executable="dmd" dir="${src}" dest="${src}" parallel="true" failonerror="true" skipemptyfilesets="true" mapper type="glob" from="*.d" to="*.obj"/ fileset dir="${src}" includes="**/*.d"/ arg value="-c"/ arg value="-I${import}"/ arg value="-op"/ arg value="-O"/ arg value="-release"/ arg value="-version=Win32_release"/ srcfile/ /apply /target target name="link" apply executable="dmd" dir="." parallel="true" failonerror="true" fileset dir="${src}" includes="**/*.obj"/ fileset dir="${import}" includes="**/*.obj"/ fileset dir="${resource}" includes="test.RES"/ !-- アイコンリソース -- fileset dir="${resource}" includes="test.def"/ !-- コンソールを表示させない定義ファイル -- arg value="${prog}"/ arg value="${libs}"/ srcfile/ /apply /target !-- クリーン -- target name="clean" delete file="${prog}"/ delete file="${name}.map"/ delete fileset dir="${src}" includes="**/*.obj"/ /delete /target !-- 実行 -- target name="run" exec executable="${name}" dir="." /exec /target !-- インポートディレクトリのモジュールをビルド -- target name="buildlib" apply executable="dmd" dir="${import}" dest="${import}" parallel="false" failonerror="false" mapper type="glob" from="*.d" to="*.obj"/ fileset dir="${import}" includes="${builtimport}"/ arg value="-c"/ arg value="-I${import}"/ arg value="-op"/ srcfile/ /apply /target /project これを「build.xml」という名前で保存します。 さて、この設定ファイルを使う前に以下の準備をしておきます。 ソースコードは「src」ディレクトリに入れる(src\test.d) インポートモジュール(SDL関連)は「SDL」ディレクトリに入れる(そのまま) ライブラリは「lib」ディレクトリに入れる(lib\SDL.libなど) リソース(.def/.res)は「resource」ディレクトリに入れる それで、こんなバッチファイルを実行すると、 SET PATH=C \work\D\ant\bin;%PATH% SET PATH=C \work\D\dmd\bin\;C \work\D\dm\bin\;%PATH% ant pause 「src」以下のディレクトリ内のソースコードを自動でビルドしてくれます。 (※Antはデフォルトで、カレントディレクトリ内の「build.xml」を探しに行ってくれるため) ただ、Antは終了するとpauseしてくれないので、コマンドプロンプトから、 ant と入力した方が良さそうです。 あと、 ant clean と入力すると、「.obj/.map/.exe」を全て削除してくれます。 D言語は.objの依存関係が強すぎるのか、EXEファイルを実行して、不明なエラーが出る場合は、 「ant clean」して、ビルドし直すと、うまくいく場合があります。 ほかにも ant run すると、実行ファイルを実行してくれたり、 ant buildlib すると、インポートディレクトリ内の「.d」をコンパイルしてくれます。(この設定では「SDL_mixer.d」のみ) Antの詳細については、 Apache Ant 1.6.1 マニュアル が参考になると思います。 SDL小技 これもD言語関係ないですが、SDLを使った、あると嬉しい機能のサンプルを。 ESCキー:終了 F5キー:ボスが来た!モード F9キー:フルスクリーン・ウィンドウモード切替 F10キー:マウスカーソル表示切替 F12キー:スクリーンショット保存 フルスクリーン・ウィンドウモード切替の処理については、 リアルタイムゲームだと、毎フレーム再描画するので、 バッファへの書込みは必要ないかもしれません。 import SDL; static int g_width = 640; static int g_height = 480; static int g_videoBpp = 0; static int g_videoFlags = SDL_SWSURFACE; /** * フルスクリーンモード切替 */ void toggleFullScreen(SDL_Surface* screen, SDL_Surface* buffer) { // バッファに保存 SDL_BlitSurface(screen, cast(SDL_Rect*)0, buffer, cast(SDL_Rect*)0); g_videoFlags ^= SDL_FULLSCREEN; // フルスクリーンフラグ反転 // スクリーン生成 screen = SDL_SetVideoMode(g_width, g_height, g_videoBpp, g_videoFlags); // 再描画 SDL_BlitSurface(buffer, cast(SDL_Rect*)0, screen, cast(SDL_Rect*)0); } /** * マウスカーソル表示切替 */ void toggleShowCursor() { if(SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE) SDL_ShowCursor(SDL_DISABLE); else SDL_ShowCursor(SDL_ENABLE); } void main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface* screen = SDL_SetVideoMode(g_width, g_height, g_videoBpp, g_videoFlags); // バックバッファ生成 SDL_Surface* buffer = SDL_ConvertSurface(screen, screen.format, g_videoFlags); // 赤い四角を描いてみる SDL_Rect rect; rect.x = 100; rect.y = 200; rect.w = 200; rect.h = 100; SDL_FillRect(screen, rect, SDL_MapRGB(screen.format, 0xff, 0x00, 0x00)); // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent( e) ) done = e.type == SDL_QUIT; int numkeys; Uint8* keystate = SDL_GetKeyState( numkeys); if(keystate[SDLK_F9]) toggleFullScreen(screen, buffer); // フルスクリーン切替 else if(keystate[SDLK_F10]) toggleShowCursor(); // マウスカーソル表示切替 else if(keystate[SDLK_F12]) SDL_SaveBMP(screen, "screenshot.bmp"); // スクリーンショット保存 else if(keystate[SDLK_F5]) SDL_WM_IconifyWindow(); // ボスが来た! else if(keystate[SDLK_ESCAPE]) done = true; // 終了 SDL_Delay(1000/30); } SDL_Quit(); } 参考(D言語) プログラミング言語 D--D言語リファレンスマニュアルです。 D言語研究室--やね先生のD言語研究室。マニアックな情報がたっぷりあります D言語研究--D言語のWikiページ D言語入門--D言語の文法について細かく書いてあります D Memo--これも、D言語の文法について。情報がやや古いですが、参考になる内容も多いです ABA Games--D言語で作ったゲームがたくさん。ソースコードを公開されているので、それが膨大なドキュメントです。 MacでSDLアプリケーションの作り方MacOSXで動かしたい人向け。基本.app形式を作成することになります。 参考(SDL) SDLドキュメント(日本語訳) コメント なにかあればコメントをどうぞ。 マウスイベント取得はポンプでくみ上げる以外の方法ってあるんですよね?自分で調べればいいんだけど...マウスイベントハンドラの実装例をおねがいします -- わんきち (2006-10-24 13 19 26) 初回コメント特典でやり方を書いておきましたー -- kenmo (2006-10-24 15 20 03) やり方ありがとうございます。続けて質問、SDL_MOUSEBUTTONDOWNにあたる部分が見当たらないのですが、、、あぁ今度こそ自分で探しますよw -- わんきち (2006-10-24 17 04 36) SDL_GetMouseStateするためのトリガーとして最低SDL_MOUSEBUTTONDOWNは拾えってことですね -- わんきち (2006-10-24 17 14 07) 何が言いたかったかっていうと、Javaのイベントリスナーみたいな実装が希望だったんですが、自分でやれってことですね、うん -- わんきち (2006-10-24 17 20 05) あ、勘違いしてました…。うーん、SDL_PeepEventsする処理をSDL_AddTimerすればいいのかなー -- kenmo (2006-10-24 18 16 44) ふー、頑張って取れたよ。>マウスイベントハンドラ -- kenmo (2006-10-24 20 16 34) おぉ、ありがとうございます。タイマースレッドで管理ですね。D言語の精度がどれくらいなのかしらないのでなんともなんですが、ご存知のとおり、タイマーはタイマーイベントをメッセージキューに投げるだけなので緊急度の高いメッセージがキューに投げ込まれると後送りにされてしまいます。できればスレッド制御にしたいですね。あとで調べてみます。スレッド版。 -- わんきち (2006-10-24 21 24 32) yaneSDK4Dはだいぶ古くなってるので http //shinh.skr.jp/ のD言語始めました、からインポートヘッダ取ってきたほうがいいかもしれません。importの仕様とか結構変わったので。 -- みかげ (2006-10-24 22 34 20) あと、SDL.dllもバージョンアップしてるみたいなんで本家から取ってきて上書きするといいかもしれません。SDL_SetVideoMode() の引数で0入れるとウィンドウがデスクトップのサイズになったりとか。 -- みかげ (2006-10-24 22 38 59) あうあー、早とちりだー書いてあるのに・・・申し訳ないです。 -- みかげ (2006-10-24 22 45 31) http //zinnia.dyndns.org/~cvsweb/sdldoc-jp/guideeventexamples.html 試していないのですが、もっとシンプルにSDL_SetEventFilterでマウスイベントを別スレッドでとることができるみたいですね。 -- kenmo (2006-10-25 19 13 58) SDL_SetEventFilterで処理する方法を追加しました。 -- kenmo (2006-10-25 20 11 32) おぉ、まさにハンドラなハンドラ!コレを期待してました。ありがとうございます。 -- わんきち (2006-10-25 21 26 39) 小技便利ですね。実装させて頂きます -- HIZ (2006-10-26 20 38 23) ディレクトリ名にスペースが入っていても、dos形式の方のパスにcdしてからantを起動すればなんとかなるようです(C \Documents and.. - c \docume~1 みたいに) -- zzz (2008-07-20 20 30 06) 名前 コメント
https://w.atwiki.jp/tosyoshitsu/pages/380.html
I C G ICG =小説・漫画を書くことや、PCなりきりごっこ遊びの定義を、アイドレス内にゲームとして組み込みます。 物語ゲーム #物語ゲームに関するライブラリ L:物語ゲーム={ f:物語ゲーム =アイドレスの設定をリソースとして独自の物語を作成すること。他のゲームに対して単独では影響力が発生しない。 f:物語 =見ているものに何らかの心の動きを与える、連続性のある出来事を記述したもの。 f:プレイヤー =追記:このゲームに自らが登場させるPCへの介入権、ならびにオーナーの名誉を守る義務を持つ。 f:オーナー =PCの所有者のこと。 f:設定国民 =追記:このゲームにおいてPCとして扱われる。その際、名称、属性、異名によって基幹データを構成する事が可能である。 f:属性 =設定国民の国人を示す。 f:異名 =設定国民の性質を端的に表わした名称以外での呼び名。 f:概要 =このゲームにおいてイベント記述に用いる言語で、右辺に”r:”からなる自然文を時系列順に記入していくことで発生する現象を網羅する。 } 拡張ルール:なりきりルール(基礎) #物語ゲームの拡張 #いわゆるなりきりチャット、PBC(プレイ・バイ・チャット)を念頭においた拡張ルールです。 #「することがない」「特別な何かなんて出来ない」という人向けの気軽な遊び場の予定。 L:なりきりルール={ f:なりきりルール =物語ゲームの拡張ルールの1つ。BBSやチャット上で複数のプレイヤーによって物語ゲームを遊ぶためにある。 f:ロールプレイヤー =このルールにおいてロールプレイを行うもの。 f:ロールプレイ =PCの台詞と行動ならびにその周辺事象をリアルタイム風に描写すること。 f:プレイヤー発言 =ロールプレイのみでは伝達不可能な情報を発信するためのもの。キャラクターの行動に対してのプレイヤー側からの心理的フォロー、ないし相手がどういう行動を取ったのかわからなかった場合、具体的に状況を確認するためのもの。”(PL発言:~~)”あるいは”(P:~~)”と表記される。 } 拡張ルール:なりきりルール(詳細) #上記下記含め、要するに「藩国チャットなどでのごっこ遊び」をより本格化してアイドレスに生かすためのルール整備です。 L:なりきりルール詳細={ f:なりきりルールの目的 =ロールプレイによってPC及びPCの世界の日常やそれにまつわる設定を、自分達の力で描き、作り上げていくこと。またその過程の中で対話による理解を深めていくこと。 f:なりきりルールの原則 =行為判定をオミット(不使用)、参加するロールプレイヤー同士で「通った」「通らない」をその場で相手の表現、つまり説得力から判断し、明言を省いて自然な対応を返す。評価値や特殊はあくまで「参考」であり、それを有効に生かしているか、発動させているかはロールプレイで表現しなければならない。説得力とは描写の量でも質でもなく、同席している相手に対してどれだけPCの行動に対する理解を得られたかの結果によってのみ判断される。 f:なりきりルールの義務 =すべてのロールプレイヤーは同じ物語を共有するために努力する義務を持つ。 f:なりきりルールの禁則 =すべてのロールプレイは物語を楽しむためにある。性的描写ならびに暴力表現についてはR-15程度を目安とし、設定ならびにあらゆるロールプレイの押し付けと強制を禁止する。また、キャラクターのロールプレイとプレイヤーの人格を混同してはならないが、この条項を悪意を持って恣意的に解釈し、キャラクターを通じてプレイヤーに対する迷惑行為・攻撃行為を行うものは、自己責任の範疇においてプレイヤーとして対応せずとも良い。悪質なものに対しては該当のログを提出、審議にかけることで罰則を課すこととする。 f:なりきりルールの利点 =通常の物語ゲームとは異なり、どこまでも続けることが可能である。 f:なりきりルールの弱点とその解決法 =ロールプレイによって積み重ねられた設定は、積み上げたものにとっては魅力であり誇りだが、それまで物語を共有していない相手にとっては高い敷居となる。i言語によるオブジェクト化や、データベースの作成、ログまとめは強くこれを奨励する。また、新しいロールプレイヤーへの対応をすべての状況下において最優先とし、独特の習慣や用語、施設、その他設定やわかりづらいことについて、ロールプレイ内でもそれとなく伝える義務を、すべての先輩ロールプレイヤーは持つこととする。 } 拡張ルール:物語イベント #Aの魔法陣における公式SDゲームみたいなものです。 L:物語イベント={ f:物語イベント =物語ゲームの拡張ルールの1つ。ある方向性を持ったドラマティックなシナリオを展開するために、有志のプレイヤーが専用PCや特殊なシチュエーションを用意するなどして展開していく。 f:物語イベント =追記:開催するには、必要な書式を満たした上で「1.藩王に申請する」「2.藩王と芝村に申請する」の二つの方法がある。イベントキャラクターや概要がユニバース定義と矛盾しそうな場合、必ず後者を選択し、許容出来る範囲内かチェックを受けなければならない。 f:イベントキャラクター =ユニバース定義に抵触しない限りにおいて、通常の設定国民の枠やPCの枠を超えた能力や設定を持たされた、イベント専用PCのこと。 } 付帯レポート L:物語ゲーム及びその拡張ルールの付帯レポート={ f:物語ルールの導入効果見込 =イベントに提出しない漫画・小説に対してアイドレスへの参加意識が微増。 f:物語ルールの導入デメリット見込 =現状のアイドレス漫画・アイドレス小説に対して形を与えるだけなのでデメリットはない。 f:なりきりルールの導入効果見込 =イベント未発生時のゲーム参加率が向上。また、ゲームにより発生した設定を常時ライブラリ化することで藩国設定の蓄積難易度の低下、ないし新規イグドラシル取得時の設定企画難易度の低下も可能。専用チャットやBBSの設営ないし設定・ログのライブラリ化を国内外の事業にした場合、雇用の増加も。その他ロールプレイすることによるプレイヤー間の相互理解の進展と、それによる諸々の作業効率の向上。 f:なりきりルールの導入デメリット見込 =あくまでプレイヤー間でのゲームであり、リンクする筋道をつけておかないとアイドレスの本筋から遠ざかる可能性が強い。また、プレイヤー間でのやりとりを増やすことで、感情的いさかいの対応や関連罰則の作成といった手間が増える可能性が強い。 } I L G ILG =そもそも持ち込み品なんで通るかどうか不明です。
https://w.atwiki.jp/gameprogramming/pages/16.html
サイト紹介 ブログ 楽しくC言語ゲームプログラム HP ガーディアン オブ ウォーリア (内容は未定です) サイト管理人紹介 名前 ナタク 活動分野 プログラム、イラスト(グラフィック) 備考 なし 使用言語 C言語、C++、DXライブラリ 完成済み・制作中の作品 C言語ロールプレイングゲーム1 ガーディアンオブウォーリアRPG(仮) (制作中) サイト・作品に関するコメント ご自由にメッセージをどうぞ。感想は互いの励みになります。 名前 コメント
https://w.atwiki.jp/tokimeki_dictionary/pages/147.html
Kuro クロ【くろ】 ドラマシリーズの3作目『旅立ちの詩』に登場したカラスのこと。 きらめき高校に居座り、光るものを見つけてはそれを生徒から盗んでいった。 ちなみに主人公は早乙女優美から貰ったバレンタインチョコを 持っていかれる事になる(主人公にとっては幸いだったかもしれないが)。 その後ケガをして美樹原愛に保護され、一時的に学校の体育館裏で飼われることになる。 これが美樹原にとっては大きな意味を持つことになるのだが…続きは『旅立ちの詩』で確認して欲しい。 それにしてもムクといいこのクロといい、どうも美樹原に飼われる動物というのは問題行動が多いようである。 ちなみにクロは人の話す言葉を理解できるらしい。そのことからミニゲームの人語ゲームを楽しむことができる。 関連項目 用語 美樹原 愛
https://w.atwiki.jp/yaruhara/pages/80.html
D言語ゲームライブラリ「dHell2」 これは何? D言語で簡単にゲームが作れるようにライブラリ「dHell」の続編です。 OpenGL使っているのに、2Dゲーム専用だったりします。 謝辞 このアプリはD言語を使ってます。(version 1.0.0) SDL(Simple DirectMedia Layer)を使っています。 OpenGLを使ってます。 shinichiro_hさんのD - porting(http //shinh.skr.jp/d/porting.html)のD言語用SDL/OpenGLヘッダファイルを使っています。 hell.bmpはtaroさんの著作物です(http //www5.atwiki.jp/yaruhara/pages/45.html) おめがさんの「RectWinderNTGL」のコードをかなり使わせていただきました。 フォントにはおめがさんの「font.bmp」を使わせていただきました 目次 D言語ゲームライブラリ「dHell2」これは何? 謝辞 ダウンロード 更新履歴 既知の問題 dHellであった機能 dHell2の新機能 Dコンパイラのインストールなど ビルド方法 使い方 特殊なキーの動作 「dHell2」リファレンスHell_init(char[] caption, int width, int height, bool fullscreen=false) Hell_quit() Hell_setCaption(...) Hell_write(...) Hell_write(Exception e) Hell_loadTexture(char[] key, char[] filepath, int[3] mask=[-1, 0, 0]) Hell_drawTexture(char[] key, float cx, float cy, int ox=0, int oy=0, int ow=0, int oh=0, float dx=1.0f, float dy=1.0f, float rot=0, int r=0xFF, int g=0xFF, int b=0xFF, int a=0xFF) Hell_drawTextureEx(char[] key, float cx, float cy, int ox=0, int oy=0, int ow=0, int oh=0, float dx=1.0f, dy=1.0f, float rot=0, int r=0xFF, int g=0xFF, int b=0xFF, int a=0xFF) Hell_hasTexture(char[] key) Hell_capture(char[] key) Hell_setAlpha(char[] key, int alpha) Hell_getMouseX Hell_getMouseY Hell_isPressMouse Hell_isPushMouse Hell_isPressKey Hell_isPushKey Hell_loadWAV(char[] key, char[] path) Hell_playWAV(char[] key, int loops=0, int channel=-1) Hell_stopWAV() Hell_disposeWAV(char[] key=null) bool Hell_isPressJKey(int id) bool Hell_isPushJKey(int id) bool Hell_isPressJButton(int id) bool Hell_isPushJKey(int id) Hell_isPressEnter()/Hell_isPushEnter() Hell_isPressCancel()/Hell_isPushCancel() Hell_isPressMenu()/Hell_isPushMenu() Hell_isPressUp()/Hell_isPushUp() Hell_isPressLeft()/Hell_isPushLeft() Hell_isPressDown()/Hell_isPushDown() Hell_isPressRight()/Hell_isPushRight() Hell_playBgm(char[] path, int loops=-1, int ms=0) Hell_stopBgm(int ms=0) Hell_isPlayBgm() Hell_drawRect(float x=0, float y=0, float dx=0, float dy=0, float width=0, float rot=0, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) Hell_drawRectEx(float cx=0, float cy=0, float dx=0, float dy=0, float width=0, float rot=0, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) void Hell_drawLine(float x1, float y1, float x2, float y2, int width=1, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) Hell_drawTriangle(float x, float y, float radius, float rot=0, int width=1, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) Hell_drawCircle(float cx, float cy, float radius, int width=1, int r=0x00, int g=0x00, int b=0x00, int a=0xff) Hell_drawFont(char[] msg, float x, float y, float zoom=1.0f, int r=0xff, int g=0xff, int b=0xff, int a=0xff) Hell_drawFontEx(float x, float y, float zoom=1.0f, int r=0xff, int g=0xff, int b=0xff, int a=0xff, ...) Hell_sin(float rad) Hell_cos(float rad) Hell_atan2(float y, float x) Hell_sinEx(float deg) Hell_cosEx(float deg) Hell_atan2Ex(float y, float x) Hell_deg2rad(float deg) Hell_rad2deg(float rad) Hell_randSeed(uint seed, uint index) Hell_rand(uint range) Hell_randf(float range) Hell_randInt(int begin, int end) Hell_choice(int[] array) Hell_shuffle(int[] array) Hell_MessageBox(wchar[] message, wchar[] caption="", uint type=MB_OK) ダウンロード ここからライブラリ一式をダウンロードします。 更新履歴 2010.01.21 -- 1.0.8 色々更新OpenGLのportingを更新にして、最新のDコンパイラでもコンパイルを通るようにした キーユーティリティを追加(Hell_isPressEnter,Hell_isPushEnter,Hell_isPressCancelなど) BGMが再生中かどうか調べる「Hell_isPlayBgm」を追加 線分の描画座標の指定がおかしかった不具合を修正 drawTexture()/drawTextureEx()でα値が指定できなかったので、引数を追加した 現在の描画内容をキャプチャーする「Hell_capture()」を追加 乱数周りのユーティリティ「Hell_rand()」「Hell_randf()」「Hell_choice()」「Hell_shuffle()」を追加 メッセージボックス表示「Hell_MessageBox()」を追加 2007.07.25 -- 1.0.7 drawTexture()/drawTextureEx()でテクスチャを切り取ったときに描画がおかしくなる不具合を修正。 2007.03.07 -- 1.0.6 loadWAV()で既に存在するキーを指定した場合、既存のWAVを破棄して読み込むように修正。 2007.02.22 -- 1.0.5 キャプション文字列の変更関数Hell_setCaption()を追加。数学・乱数関連の関数を追加。 2007.02.21 -- 1.0.4 Hell_write()/Hell_drawFontEx()でprintf()っぽい書式を使えるように 2007.02.20 -- 1.0.3 SDL_FreeSurface()でSurfaceをちゃんと破棄するように修正。F9キーでウィンドウ・フルスクリーン切替。F12でスクリーンショットをBMPで保存。 2007.02.19 -- 1.0.2 loadTexture()で既に存在するキーを指定した場合、既存のテクスチャを破棄して読み込むように修正。「F4」キーで全てのテクスチャを読み込みなおす処理を追加。 2007.02.16 -- 1.0.1 円描画命令「Hell_drawCircle()」の追加 2007.02.13 -- 1.0.0 公開開始 既知の問題 画像ファイルはBMPで、2^nのサイズのみとなっています。 60枚くらいテクスチャを読み込みウィンドウを最小化・元に戻すと、CPU使用率が100%近くなってしまう。 dHellであった機能 dHellではこんな感じでした。 画像読込・描画(BMPのみ) BGM読込・再生(WAV/OGGのみ) 効果音読込・再生(WAVのみ) キーイベント(マウス・キーボード・ジョイスティック)のハンドリング フォントの描画(asciiのみ) dHell2の新機能 こんな機能が追加されました。 画像の拡大縮小・回転(Hell_drawTexture/Hell_drawTextureEx) 画像の加算合成(Hell_setAlpha) 線分/三角形の描画・回転 円の描画 それぞれの描画をRGBAを指定して描画できるように (ようやく、普通のゲームライブラリっぽくなった……?) Dコンパイラのインストールなど 「D言語ゲーム開発入門」 http //www5.atwiki.jp/yaruhara/pages/74.html などを参考にインストールします。 ビルド方法 build.batをテキストファイルで開いて、 D言語コンパイラ・リンカのパスを設定します。 (パスを通してあるのであれば、必要ありません) で、build.batを実行します。 使い方 「test.d」を編集していきます。 なんか色々ありますが、最低限必要なコードはこれだけです。 import hell; void main() { try { // Hellシステム初期化(キャプション"Hell" 640x480) Hell_init("Hell", 640, 480); // ゲームループ開始 while(true) { // 描画エリアの消去 Hell_begin(); // 画面更新 Hell_update(); // 33ms待つ Hell_wait(33); } } catch(Exception e) { // 例外をログに書き込み Hell_write(e); } finally { // Hellシステム終了 Hell_quit(); } } 注意が必要なのは、「try~catch~finally」です。 ウィンドウが閉じられたときには、Hell_wait()が例外を返します。 その場合、catchして、ログの出力をし、Hell_quit()で終了します。 画像ファイルが存在しなかった場合など、「run.log」にエラーが書き込まれるので、 それを参照します。 特殊なキーの動作 F4キー:登録しているテクスチャを全て読み込みし直す F5キー:ボスが来た! ⇒ウィンドウ最小化 F9キー:ウィンドウモード・フルスクリーン切替(たぶん使えます) F10キー:マウスカーソル表示切替 F12キー:スクリーンショットをhell.bmpで保存(たぶん使えます) ESCキー:アプリケーションを終了します。 「dHell2」リファレンス Hell_init(char[] caption, int width, int height, bool fullscreen=false) dHellを初期化します。 パラメータcaption ウィンドウタイトル文字列 width 画面縦サイズ height 画面横サイズ fullscreen フルスクリーンフラグ Hell_quit() dHellの終了処理を行います。 Hell_setCaption(...) キャプション(タイトルバー)の文字列を変更します。 (※ただし日本語は表示できません) C言語のprintf()のような書式で書くことが出来ます。 Hell_write(...) ログファイル「run.log」にメッセージを書き込みます。 C言語のprintf()のような書式で書くことが出来ます。 より詳しい記述方法は、std.format.doFormat http //www.kmonos.net/alang/d/phobos/std_format.html を参考に。 Hell_write(Exception e) ログファイル「run.log」に例外情報の書き込みを行います。 Hell_loadTexture(char[] key, char[] filepath, int[3] mask=[-1, 0, 0]) BMPをテクスチャとして読みこみます。 パラメータkey 画像のキー(Hell_drawTextureで使います) filepath 画像ファイルのパス mask 抜き色(mask[0]に「-1」で抜き色なし。「-2」で座標指定) Hell_drawTexture(char[] key, float cx, float cy, int ox=0, int oy=0, int ow=0, int oh=0, float dx=1.0f, float dy=1.0f, float rot=0, int r=0xFF, int g=0xFF, int b=0xFF, int a=0xFF) BMPを描画します。 ox,oy,ow,ohにそれぞれ「0」を指定すると、BMP全体を描画します。 ※抜き色を有効にする場合、Hell_setAlpha()に「HELL_ALPHA_NORMAL/HELL_ALPHA_ADD」を指定する必要があります。 パラメータkey キー(Hell_loadTextureで読み込み済みのもの) x X座標 y Y座標 ox 切り取り開始X座標 oy 切り取り開始Y座標 ow 切り取る幅 oh 切り取る高さ dx 拡大サイズ(X) dy 拡大サイズ(Y) rot 回転角度(0~360。左回り) r マスク色(赤) g マスク色(緑) b マスク色(青) a α値 Hell_drawTextureEx(char[] key, float cx, float cy, int ox=0, int oy=0, int ow=0, int oh=0, float dx=1.0f, dy=1.0f, float rot=0, int r=0xFF, int g=0xFF, int b=0xFF, int a=0xFF) Hell_drawTexture()は左上座標を指定ですが、これは中心座標を指定して描画する関数です。 Hell_hasTexture(char[] key) 指定のキーのテクスチャが存在するかどうかチェックします パラメータkey 画像のキー 戻り値キーが存在すれば「true」を返します Hell_capture(char[] key) 現在の画面の内容をキャプチャーします。例えば、前の描画内容を半透明で消しながら重ね合わせることでクロスフェードっぽいことができるようになります。 ただし、重たい処理なので毎フレームキャプチャーするのはオススメできません。 Hell_setAlpha(char[] key, int alpha) アルファ値を設定します。 パラメータalpha アルファ値(HELL_ALPHA_DISABLE/HELL_ALPHA_NORMAL/HELL_ALPHA_ADD)HELL_ALPHA_DISABLE αブレンドしない HELL_ALPHA_NORMAL 半透明 HELL_ALPHA_ADD 加算 Hell_getMouseX マウスのX座標を取得します。 戻り値 --- マウス座標X Hell_getMouseY マウスのY座標を取得します。 戻り値 --- マウス座標Y Hell_isPressMouse マウスを押し続けているかどうかを判定するフラグを取得します。 戻り値 --- マウスを押し続けているかどうかのフラグ ●使い方 if(Hell_isPressMouse() HELL_BUTTON_LEFT) { printf("press left"); } if(Hell_isPressMouse() HELL_BUTTON_MIDDLE) { printf("press middle"); } if(Hell_isPressMouse() HELL_BUTTON_RIGHT) { printf("press right"); } Hell_isPushMouse マウスをそのフレームに押したかどうかを判定するフラグを取得します。 戻り値 --- マウスをそのフレームに押したかどうかのフラグ ●使い方 if(Hell_isPushMouse() HELL_BUTTON_LEFT) { printf("push left"); } if(Hell_isPushMouse() HELL_BUTTON_MIDDLE) { printf("push middle"); } if(Hell_isPushMouse() HELL_BUTTON_RIGHT) { printf("push right"); } Hell_isPressKey キーを押し続けているかどうかを判定するフラグを取得します。 戻り値 --- キーを押し続けているかどうかのフラグ ●使い方 if(Hell_isPressMouse(HELL_DOWN)) { printf("press down"); } if(Hell_isPressMouse(HELL_RIGHT)) { printf("press right"); } if(Hell_isPressMouse(HELL_LEFT)) { printf("press left"); } Hell_isPushKey キーをそのフレームに押したかどうかを判定するフラグを取得します。 戻り値 --- キーをそのフレームに押したかどうかのフラグ ●使い方 if(Hell_isPushKey(HELL_RETURN)) { printf("push return"); } if(Hell_isPushKey(SDLK_z)) { printf("push z"); } if(Hell_isPushKey(HELL_UP)) { printf("push up"); } Hell_loadWAV(char[] key, char[] path) SE(WAVファイル)を読み込みます パラメータkey キー(Hell_playWAVで使います) path サウンドファイルのパス Hell_playWAV(char[] key, int loops=0, int channel=-1) SE(WAVファイル)を再生します パラメータkey キー loops ループ回数。0で1回再生。(-1で無限ループ) channel チャンネル番号(-1であいているチャンネルを自動で使う) Hell_stopWAV() SE(WAVファイル)の再生を全て停止します。 パラメータchannel 停止チャンネル番号(-1で全て停止) Hell_disposeWAV(char[] key=null) SE(WAVファイル)を破棄します。 パラメータkey キー(Hell_loadWAVで指定したもの)※nullで全てを破棄します bool Hell_isPressJKey(int id) ジョイスティックの十字キーを押しているかどうかを調べます。 戻り値---ジョイスティックの十字キーを押しているかどうか ●使い方 if(Hell_isPressJKey(HELL_J_UP)) { printf("press up"); } if(Hell_isPressJKey(HELL_J_DOWN)) { printf("press down"); } if(Hell_isPressJKey(HELL_J_LEFT)) { printf("press left"); } if(Hell_isPressJKey(HELL_J_RIGHT)) { printf("press right"); } bool Hell_isPushJKey(int id) ジョイスティックの十字キーを押したかどうかを調べます。 戻り値---ジョイスティックの十字キーを押したかどうか ●使い方 if(Hell_isPushJKey(HELL_J_UP)) { printf("push up"); } if(Hell_isPushJKey(HELL_J_DOWN)) { printf("push down"); } if(Hell_isPushJKey(HELL_J_LEFT)) { printf("push left"); } if(Hell_isPushJKey(HELL_J_RIGHT)) { printf("push right"); } bool Hell_isPressJButton(int id) ジョイスティックのボタンを押しているかどうかを調べます。 戻り値---ジョイスティックのボタンを押しているかどうか ●使い方 if(Hell_isPressJButton(0)) { printf("press 1button"); } if(Hell_isPressJButton(1)) { printf("press 2button"); } if(Hell_isPressJButton(2)) { printf("press 3button"); } if(Hell_isPressJButton(3)) { printf("press 4button"); } bool Hell_isPushJKey(int id) ジョイスティックのボタンを押したかどうかを調べます。 戻り値---ジョイスティックのボタンを押したかどうか ●使い方 if(Hell_isPushJButton(0)) { printf("push 1button"); } if(Hell_isPushJButton(1)) { printf("push 2button"); } if(Hell_isPushJButton(2)) { printf("push 3button"); } if(Hell_isPushJButton(3)) { printf("push 4button"); } Hell_isPressEnter()/Hell_isPushEnter() Zキー、Returnキー、Spaceキー、Joystickの1ボタン、マウスの左クリック のいずれかが押されていれば/そのフレームに押したら「true」を返す Hell_isPressCancel()/Hell_isPushCancel() Xキー、Joystickの2ボタン、マウスの右クリック のいずれかが押されていれば/そのフレームに押したら「true」を返す Hell_isPressMenu()/Hell_isPushMenu() Cキー、Joystickの3ボタン、マウスの真ん中クリック のいずれかが押されていれば/そのフレームに押したら「true」を返す Hell_isPressUp()/Hell_isPushUp() 上キーが押されていれば/そのフレームに押したら「true」を返す Hell_isPressLeft()/Hell_isPushLeft() 左キーが押されていれば/そのフレームに押したら「true」を返す Hell_isPressDown()/Hell_isPushDown() 下キーが押されていれば/そのフレームに押したら「true」を返す Hell_isPressRight()/Hell_isPushRight() 右キーが押されていれば/そのフレームに押したら「true」を返す Hell_playBgm(char[] path, int loops=-1, int ms=0) BGMを再生します パラメータpath ファイルパス loops ループ回数(-1で無限ループ) フェードイン時間(ms) Hell_stopBgm(int ms=0) BGMを停止します パラメータフェードアウト時間(ms) Hell_isPlayBgm() BGMが再生中かどうか 戻り値再生中であれば「true」 Hell_drawRect(float x=0, float y=0, float dx=0, float dy=0, float width=0, float rot=0, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) 矩形の描画 パラメータx,y 左上座標 dx,dy 幅,高さ width 線分の太さ(0で塗りつぶし) r,g,b,a RGBA値 Hell_drawRectEx(float cx=0, float cy=0, float dx=0, float dy=0, float width=0, float rot=0, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) 矩形の描画(中心座標を指定) パラメータcx,cy 中心の座標 それ以外はHell_drawRectと同じ void Hell_drawLine(float x1, float y1, float x2, float y2, int width=1, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) 線分の描画 パラメータx1,y1 開始座標 x2,y2 終端座標 width 線の太さ r,g,b,a RGBA値 Hell_drawTriangle(float x, float y, float radius, float rot=0, int width=1, int r=0x00, int g=0x00, int b=0x00, int a=0xFF) 三角形を描画します。 パラメータx X座標(中心) y Y座標(中心) radius 半径 rot 回転角度(0~360) width 線の太さ(0で塗りつぶし) r R成分 g G成分 b B成分 a A成分 Hell_drawCircle(float cx, float cy, float radius, int width=1, int r=0x00, int g=0x00, int b=0x00, int a=0xff) 円を描画します。 パラメータcx 中心座標X cy 中心座標Y radius 半径 width 線の太さ(0で塗りつぶし) r R成分 g G成分 b B成分 a A成分 Hell_drawFont(char[] msg, float x, float y, float zoom=1.0f, int r=0xff, int g=0xff, int b=0xff, int a=0xff) フォントの描画(asciiのみです) パラメータmsg ascii文字列 x,y 描画開始位置 zoom 拡大サイズ(1.0fで32x48) r R成分 g G成分 b B成分 a A成分 Hell_drawFontEx(float x, float y, float zoom=1.0f, int r=0xff, int g=0xff, int b=0xff, int a=0xff, ...) Hell_drawFont()をC言語のprintf()のような書式で書くことが出来ます。 より詳しい記述方法は、std.format.doFormat http //www.kmonos.net/alang/d/phobos/std_format.html を参考に。 Hell_sin(float rad) サインを求めます。パラメータはラジアンです。 Hell_cos(float rad) コサインを求めます。パラメータはラジアンです。 Hell_atan2(float y, float x) アークタンジェントを求めます。戻り値はラジアンです。 Hell_sinEx(float deg) サインを求めます。パラメータは度を指定します。 Hell_cosEx(float deg) サインを求めます。パラメータは度を指定します。 Hell_atan2Ex(float y, float x) アークタンジェントを求めます。戻り値は度になります。 Hell_deg2rad(float deg) 度をラジアンに変換します。 Hell_rad2deg(float rad) ラジアンを度に変換します。 Hell_randSeed(uint seed, uint index) 乱数を初期化します。 わざわざ呼ばなくてもプログラム開始時に乱数は初期化されます。 再現性のある乱数を生成したい場合にコールします。 パラメータseed 種 index 次の乱数インデックスへの増分 Hell_rand(uint range) 0~(range-1)の範囲で乱数を生成する Hell_randf(float range) 0~rangeの範囲で乱数を生成する(float版) Hell_randInt(int begin, int end) begin = x endの範囲で乱数を生成します。 パラメータbegin 開始値 end 終了値 Hell_choice(int[] array) 指定の配列からランダムで値を取り出す パラメータ配列 戻り値配列の中のランダムな値 Hell_shuffle(int[] array) 指定の配列の値をランダムに入れ替える パラメータ配列 Hell_MessageBox(wchar[] message, wchar[] caption="", uint type=MB_OK) Windowsダイアログを表示する パラメータmessage メッセージ文字列 caption キャプション文字列 type メッセージボックスの種類
https://w.atwiki.jp/asato/pages/338.html
Language Games, A Foundation for Semantics and Ontology, Game Theory and Linguistic Meaning 2007
https://w.atwiki.jp/yaruhara/pages/76.html
これは何? D言語で簡単にゲームが作れるようにライブラリを作ってみました。 ただし、プリミティブな機能しかありません。が。 D言語のお試しとして、使ってみるのもいいかもしれません。 目次 これは何? ダウンロード 関連陸 変更履歴 機能 ビルド方法フォントの補足 使い方 特殊なキーの動作 サンプルゲーム 「dHell」リファレンスHell_init(char[] caption, int width, int height, bool fullscreen=false) Hell_quit() Hell_write(...) Hell_write(Exception e) Hell_update() Hell_wait(int ms) Hell_setCaption(...) Hell_setOffset(int x, int y) Hell_drawPoint(int x, int y, int r=0x00, int g=0x00, int b=0x00) Hell_drawLine(int x1, int y1, int x2, int y2, int r=0x00, int g=0x00, int b=0x00) Hell_fillRect(int x=0, int y=0, int w=0, int h=0, int r=0x00, int g=0x00, int b=0x00) Hell_fillRectEx(int cx=0, int cy=0, int w=0, int h=0, int r=0x00, int g=0x00, int b=0x00) Hell_loadBMP(char[] key, char[] filepath, int r=-2, int g=0, int b=0) Hell_draw(char[] key, int px, int py, int ox=0, int oy=0, int ow=0, int oh=0) Hell_drawEx(char[] key, int cx, int cy, int ox=0, int oy=0, int ow=0, int oh=0) Hell_setAlpha(char[] key, int alpha) Hell_getMouseX Hell_getMouseY Hell_isPressMouse Hell_isPushMouse Hell_isPressKey Hell_isPushKey Hell_loadWAV(char[] key, char[] path) Hell_playWAV(char[] key, int loops=0, int channel=-1) Hell_playWAVEx(char[] key, int channel) Hell_stopWAV(int channel=-1) Hell_isPressJKey(int id) Hell_isPushJKey(int id) Hell_isPressJButton(int id) Hell_isPushJKey(int id) 入力ユーティリティHell_isPressEnter / Hell_isPushEnter Hell_isPressCancel / Hell_isPushCancel Hell_isPressMenu / Hell_isPushMenu Hell_getBgmVolume() Hell_setBgmVolume(int volume=128) Hell_playBgm(char[] path, int loops=-1, int ms=0) Hell_stopBgm(int ms=0) Hell_drawFont(char[] msg, int x, int y, int alpha=0xff) Hell_drawFontEx(int x, int y, int alpha, ...) Hell_openFont(char[] key="MSGOTHIC18", int size=18, char[] path="msgothic.ttc") Hell_setFont(char[] key) Hell_setFontColor(int r, int g, int b) Hell_getFPS() Hell_drawFPS(int x=-1, int y=-1) Hell_sin(float rad) Hell_cos(float rad) Hell_atan2(float y, float x) Hell_sinEx(float rad) Hell_cosEx(float rad) Hell_atan2Ex(float y, float x) Hell_deg2rad(float deg) Hell_rad2deg(float rad) Hell_abs(float a) Hell_abs(int a) Hell_log10(float a) Hell_distance(float dx, float dy) Hell_randseed(uint seed, uint index) Hell_rand(int range) Hell_randint(int begin, int end) Hell_choice(int[] array) Hell_shuffle(int[] array) ダウンロード http //www5f.biglobe.ne.jp/~kenmo/dest/d/dhell.zipからライブラリ一式をダウンロードします。 関連陸 VisualDでdHellを使う方法 変更履歴 2007.10.8 - 中心座標を指定して描画、描画オフセット座標の指定、キー入力のユーティリティ、SEのワンショット再生、数学関連などの機能を追加 2007.10.7 - フォント読み込み処理を追加(※コンパイルスイッチに「-version=use_ttf」を指定する必要があります) 2007.8.5 - 垂直の線分描画がおかしかったのを修正(指摘ありがとうございます>meiteiさん)。SDL_Delay(1)にしてCPU使用率を減らしてみた。 2007.7.18 - 点/線分描画、三角関数、乱数取得処理を追加 2007.6.25 - DMD 2.000に対応。(※コンソール消すおまじないコードを消しただけ(´∀`; 2007.1.23 - DMD 1.00に対応。makefileを添付。 2007.12.1 - おめがさんのFPS安定処理を取り込む 2007.11.1 - とりあえず公開してみる 機能 今のところこんな感じです。 画像読込・描画(BMPのみ) BGM読込・再生(OGGのみ) 効果音読込・再生(WAV/OGG) キーイベント(マウス・キーボード・ジョイスティック)のハンドリング フォントの描画(標準はasciiのみ。Hell_openFontでフォントファイルを指定) まー、最低限の機能しかありませねー。 ビルド方法 build.batをテキストファイルで開いて、 D言語コンパイラ・リンカのパスを設定します。 (パスを通してあるのであれば、必要ありません) で、build.batを実行します。 フォントの補足 フォントを読み込む場合、コンパイルスイッチに「-version=use_ttf」を指定する必要があります。 フォントを読み込まない場合(ascii文字のみで充分な場合)、「SDL_ttf.lib」と「SDL_ttf.dll」は不要となります。 使い方 「test.d」を編集していきます。 なんか色々ありますが、最低限必要なコードはこれだけです。 import hell; void main() { try { // Hellシステム初期化(キャプション"Hell" 640x480) Hell_init("Hell", 640, 480); // ゲームループ開始 while(true) { // 画面更新 Hell_update(); // 33ms待つ Hell_wait(33); } } catch(Exception e) { // 例外をログに書き込み Hell_write(e); } finally { // Hellシステム終了 Hell_quit(); } } 注意が必要なのは、「try~catch~finally」です。 ウィンドウが閉じられたときには、Hell_wait()が例外を返します。 その場合、catchして、ログの出力をし、Hell_quit()で終了します。 画像ファイルが存在しなかった場合など、「run.log」にエラーが書き込まれるので、 それを参照します。 特殊なキーの動作 F5キー:ボスが来た! ⇒ウィンドウ最小化 F9キー:ウィンドウモード・フルスクリーン切替 F10キー:マウスカーソル表示切替 F12キー:スクリーンショットをscreenshot.bmpで保存 ESCキー:アプリケーションを終了します。 サンプルゲーム 散歩ゲー2---あの散歩ゲー2がパワーアップして帰ってきた!! 「dHell」リファレンス Hell_init(char[] caption, int width, int height, bool fullscreen=false) dHellを初期化します。 パラメータcaption ウィンドウタイトル文字列 width 画面縦サイズ height 画面横サイズ fullscreen フルスクリーンフラグ Hell_quit() dHellの終了処理を行います。 Hell_write(...) ログファイル「run.log」に書式文字を書き込みます。 Hell_write(Exception e) ログファイル「run.log」に例外情報の書き込みを行います。 Hell_update() 画面を更新します。 この関数を呼ばないと描画内容は更新されません。 Hell_wait(int ms) プログラムの実行を停止します。このタイミングでキー入力が更新されます パラメータ停止時間(1/1000秒) Hell_setCaption(...) キャプション設定(※日本語不可) パラメータ書式文字列 Hell_setOffset(int x, int y) 描画オフセットを設定します。 パラメータx オフセット座標(X) y オフセット座標(Y) Hell_drawPoint(int x, int y, int r=0x00, int g=0x00, int b=0x00) 点の描画 パラメータ x,y 座標 r,g,b 色 Hell_drawLine(int x1, int y1, int x2, int y2, int r=0x00, int g=0x00, int b=0x00) 線分描画 パラメータ x1,y1 開始座標 x2,y2 終了座標 r,g,b 色 Hell_fillRect(int x=0, int y=0, int w=0, int h=0, int r=0x00, int g=0x00, int b=0x00) 矩形を描画します。 パラメータ x,y 左上座標 w,h 幅・高さ r,g,b 描画色 Hell_fillRectEx(int cx=0, int cy=0, int w=0, int h=0, int r=0x00, int g=0x00, int b=0x00) 中心座標を指定して矩形を描画します。 パラメータ cx,cy 中心座標 w,h 中心からの幅・中心からの高さ r,g,b 描画色 Hell_loadBMP(char[] key, char[] filepath, int r=-2, int g=0, int b=0) BMPを読みこみます。 パラメータkey 画像のキー(Hell_drawで使います) filepath 画像ファイルのパス r,g,b カラーキー(r=-2のとき抜き色なし。r=-1のとき左上(0, 0)を抜き色にする Hell_draw(char[] key, int px, int py, int ox=0, int oy=0, int ow=0, int oh=0) BMPを描画します。 ox,oy,ow,ohを省略すると、BMP全体を描画します。 パラメータkey 画像のキー(Hell_loadBMPで指定したkey) px,py 左上座標 ox,oy 切り取り開始座標(左上)※省略可 ow,oh 切り取りする幅・高さ※省略可 Hell_drawEx(char[] key, int cx, int cy, int ox=0, int oy=0, int ow=0, int oh=0) 中心座標を指定してBMPを描画します パラメータkey 画像のキー(Hell_loadBMPで指定したkey) cx,cy 中心座標 ox,oy 切り取り開始座標(左上)※省略可 ow,oh 切り取りする幅・高さ※省略可 Hell_setAlpha(char[] key, int alpha) 画像にアルファ値を設定します パラメータkey 画像のキー(Hell_loadBMPで指定したkey) alpha アルファ値 Hell_getMouseX マウスのX座標を取得します。 戻り値 --- マウス座標X Hell_getMouseY マウスのY座標を取得します。 戻り値 --- マウス座標Y Hell_isPressMouse マウスを押し続けているかどうかを判定するフラグを取得します。 戻り値 --- マウスを押し続けているかどうかのフラグ ●使い方 if(Hell_isPressMouse() HELL_BUTTON_LEFT) { printf("press left"); } if(Hell_isPressMouse() HELL_BUTTON_MIDDLE) { printf("press middle"); } if(Hell_isPressMouse() HELL_BUTTON_RIGHT) { printf("press right"); } Hell_isPushMouse マウスをそのフレームに押したかどうかを判定するフラグを取得します。 戻り値 --- マウスをそのフレームに押したかどうかのフラグ ●使い方 if(Hell_isPushMouse() HELL_BUTTON_LEFT) { printf("push left"); } if(Hell_isPushMouse() HELL_BUTTON_MIDDLE) { printf("push middle"); } if(Hell_isPushMouse() HELL_BUTTON_RIGHT) { printf("push right"); } Hell_isPressKey キーを押し続けているかどうかを判定するフラグを取得します。 戻り値 --- キーを押し続けているかどうかのフラグ ●使い方 if(Hell_isPressMouse(HELL_DOWN)) { printf("press down"); } if(Hell_isPressMouse(HELL_RIGHT)) { printf("press right"); } if(Hell_isPressMouse(HELL_LEFT)) { printf("press left"); } Hell_isPushKey キーをそのフレームに押したかどうかを判定するフラグを取得します。 戻り値 --- キーをそのフレームに押したかどうかのフラグ ●使い方 if(Hell_isPushKey(HELL_RETURN)) { printf("push return"); } if(Hell_isPushKey(SDLK_z)) { printf("push z"); } if(Hell_isPushKey(HELL_UP)) { printf("push up"); } Hell_loadWAV(char[] key, char[] path) SE(WAVファイル)を読み込みます パラメータkey キー(Hell_playWAVで使います) path サウンドファイルのパス Hell_playWAV(char[] key, int loops=0, int channel=-1) SE(WAVファイル)を再生します パラメータkey キー loops ループ回数。0で1回再生。(-1で無限ループ) channel チャンネル(0~7番までを使うことができます。-1で自動割当) Hell_playWAVEx(char[] key, int channel) SEをワンショットで鳴らします。 特定のチャンネルを割り当てることで、重複して再生されないようにします。 パラメータkey キー channel 使用するチャンネル Hell_stopWAV(int channel=-1) SE(WAVファイル)を停止します。 パラメータchannel 停止するチャンネル番号(-1で全て停止) Hell_isPressJKey(int id) ジョイスティックの十字キーを押しているかどうかを調べます。 戻り値---ジョイスティックの十字キーを押しているかどうか ●使い方 if(Hell_isPressJKey(HELL_J_UP)) { printf("press up"); } if(Hell_isPressJKey(HELL_J_DOWN)) { printf("press down"); } if(Hell_isPressJKey(HELL_J_LEFT)) { printf("press left"); } if(Hell_isPressJKey(HELL_J_RIGHT)) { printf("press right"); } Hell_isPushJKey(int id) ジョイスティックの十字キーを押したかどうかを調べます。 戻り値---ジョイスティックの十字キーを押したかどうか ●使い方 if(Hell_isPushJKey(HELL_J_UP)) { printf("push up"); } if(Hell_isPushJKey(HELL_J_DOWN)) { printf("push down"); } if(Hell_isPushJKey(HELL_J_LEFT)) { printf("push left"); } if(Hell_isPushJKey(HELL_J_RIGHT)) { printf("push right"); } Hell_isPressJButton(int id) ジョイスティックのボタンを押しているかどうかを調べます。 戻り値---ジョイスティックのボタンを押しているかどうか ●使い方 if(Hell_isPressJButton(0)) { printf("press 1button"); } if(Hell_isPressJButton(1)) { printf("press 2button"); } if(Hell_isPressJButton(2)) { printf("press 3button"); } if(Hell_isPressJButton(3)) { printf("press 4button"); } Hell_isPushJKey(int id) ジョイスティックのボタンを押したかどうかを調べます。 戻り値---ジョイスティックのボタンを押したかどうか ●使い方 if(Hell_isPushJButton(0)) { printf("push 1button"); } if(Hell_isPushJButton(1)) { printf("push 2button"); } if(Hell_isPushJButton(2)) { printf("push 3button"); } if(Hell_isPushJButton(3)) { printf("push 4button"); } 入力ユーティリティ Hell_isPressEnter / Hell_isPushEnter キーボードの「Z」「Return」「Space」 ジョイスティックの「0」ボタン マウスの左ボタン Hell_isPressCancel / Hell_isPushCancel キーボードの「X」 ジョイスティックの「1」ボタン マウスの右ボタン のいずれかが押されたかどうか Hell_isPressMenu / Hell_isPushMenu キーボードの「C」 ジョイスティックの「2」ボタン マウスの真ん中ボタン のいずれかが押されたかどうか Hell_getBgmVolume() BGM音量の取得 戻り値音量(0~128) Hell_setBgmVolume(int volume=128) BGM音量を設定 ※Windows2000の場合、BGM音量設定直後にHell_playBgmを呼ぶとフリーズする可能性があります 回避するには、Hell_setBgmVolumeの後に、Hell_wait(100)を入れてからBGMの再生を行うようにします パラメータ音量(0~128) Hell_playBgm(char[] path, int loops=-1, int ms=0) BGMを再生します パラメータpath ファイルパス loops ループ回数(-1で無限ループ) フェードイン時間(ms) Hell_stopBgm(int ms=0) BGMを停止します パラメータフェードアウト時間(ms) Hell_drawFont(char[] msg, int x, int y, int alpha=0xff) フォントの描画(標準はasciiのみ。Hell_openFontすると日本語もイケます) パラメータmsg 文字列 x,y 描画開始位置 Hell_drawFontEx(int x, int y, int alpha, ...) フォーマットを指定して描画 Hell_openFont(char[] key="MSGOTHIC18", int size=18, char[] path="msgothic.ttc") 指定したフォントを開きます。 フォントは、まずカレントディレクトリを探し、存在しなければシステムフォントのディレクトリを探しに行きます。 フォントを開くと標準フォント(たれフォント)は使えなくなります。 パラメータkey キー size フォントのサイズ path フォントのパス Hell_setFont(char[] key) 使用するフォントを変更します パラメータkey フォントのキー Hell_openFontで指定したもの Hell_setFontColor(int r, int g, int b) 描画するフォントの色を変えます(標準フォントの場合は無効) パラメータ r 赤成分 g 緑成分 b 青成分 Hell_getFPS() 現在のFPSを取得します Hell_drawFPS(int x=-1, int y=-1) FPSを描画します パラメータx 描画座標(X) y 描画座標(Y) Hell_sin(float rad) サインを求めます。パラメータはラジアンです。 Hell_cos(float rad) コサインを求めます。パラメータはラジアンです。 Hell_atan2(float y, float x) アークタンジェントを求めます。戻り値はラジアンです。 Hell_sinEx(float rad) サインを求めます。パラメータは度を指定します。 Hell_cosEx(float rad) サインを求めます。パラメータは度を指定します。 Hell_atan2Ex(float y, float x) アークタンジェントを求めます。戻り値は度になります。 Hell_deg2rad(float deg) 度をラジアンに変換します。 Hell_rad2deg(float rad) ラジアンを度に変換します。 Hell_abs(float a) Hell_abs(int a) 絶対値を求めます。 Hell_log10(float a) 常用対数を計算します。 Hell_distance(float dx, float dy) 距離を求めます。- sqrt(dx*dx + dy*dy) Hell_randseed(uint seed, uint index) 乱数を初期化します。 わざわざ呼ばなくてもプログラム開始時に乱数は初期化されます。 再現性のある乱数を生成したい場合にコールします。 パラメータseed 種 index 次の乱数インデックスへの増分 Hell_rand(int range) 0~rangeの範囲で乱数を生成します。 Hell_randint(int begin, int end) begin = x endの範囲で乱数を生成します。 パラメータbegin 開始値 end 終了値 Hell_choice(int[] array) 配列からランダムで値を取り出します Hell_shuffle(int[] array) 配列の値をランダムに入れ替えます
https://w.atwiki.jp/eroscape_bibouroku/pages/113.html
『卑語のあるゲーム』の議事録 【提案内容】 2010年08月19日 19時12分 1. 題名 卑語のあるゲーム 2. 説明文 おま○こやおち○ぽなどの卑語がある場合に登録してください。 3. 該当するゲーム 姫騎士アンジェリカ、こっすこす!など 4. 既存POVとの重複の可能性 該当なし 5. ご提案者以外にこのPOVで検索してくれそうな方がいることの証明(2chのスレッドやリンク集の存在など) 卑語ゲーDateBase(現在は消えてます。管理人いわく鯖の契約更新を忘れたため)、卑語を喋るエロゲースレ 6. 補足・その他 卑語(隠語)ってAVかエロゲーでしか聞けないものだと思うので、こういうPOVがあると便利だと思います。 【審議】 2011年01月16日 ~ 2011年02月11日 内容 問題点 卑語の有無だけであれば、属性で良いのではないか。 →(反論)卑語を発する頻度や卑猥さ等、千差万別だが、軽度な物を入れれば過半数のゲームが該当するので、属性では情報価値が低い。 ランクやコメントの基準が不明POVらしさがない。 →(改案)卑語が多い 卑語ゲーDataBaseという、より仔細な情報を持つ外部データベースが存在する。 →(反論)卑語ゲーDataBaseは情報量が多い分、登録作業の敷居がやや高い。もう少し気軽に扱えるPOVでの実装を希望。 →(反論)“外部”のデータベースであり、反対理由には成り得ないのでは? 登録者側の評価を登録できる内容の方がよい。(卑語表現がウリになっている作品、卑語の数とエロさに満足できるゲーム 等) →(反論)「表の名義がある声優のレアな卑語」や「数回、卑語を言うだけのゲーム」等が混在する。抜きゲーとシナリオゲーでは、登録者の絶対数の差が影響する恐れも。 →(反論)卑語の多さという情報を優先したい。エロさは投票数や、他の情報でフォローできている。 具体的なランクの基準を設けたが、ケースバイケースで順位が逆転するなど、使い辛い。 →(改案)ランクの基準から「数値」を廃し、頻度の基準に利用者判断の余裕を持たせた。 【結果】 2011年02月11日 可決されました。 1. 題名 卑語が多い 2. 説明文 セリフ中におま○こやおち○ぽなどの卑語が多い場合に登録してください。 また、できましたら音声修正についてコメントしてください。 ABC基準は以下の通りです。 A:Hシーンの随所に卑語がある B:随所とは言わないが、それなりにある C:ゲームの一部に卑語が多めのHシーンがある 【注意】声優さんによる音声のないゲームは対象外です。 タグ一覧: