C#のコンソールアプリケーションとDXLibでノベルゲームを作ってますが

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

C#のコンソールアプリケーションとDXLibでノベルゲームを作ってますが

#1

投稿記事 by サジール » 11年前

私は今中2で最近プログラミングを始めました
ノベルゲームを作っていて
文章を流す際に必要となる キーの押した瞬間だけ反応する関数 を作ろうとしてます
このサイトを参考にしましたが、C++を扱ったことがなくまたC#歴も浅いためC#風に書き換えることができませんでした…
どなたか教えてください…

ソーン

Re: C#のコンソールアプリケーションとDXLibでノベルゲームを作ってますが

#2

投稿記事 by ソーン » 11年前

ほとんどの人はタイトルがよくわからないと思います。
DxLibは基本的にC++用のライブラリですし、コンソールアプリケーションならば文字だけなので描画用のライブラリはいらないはずですし...
そもそもキーの押した瞬間だけ反応する関数は抜きにして基本的な形は出来ているのでしょうか。

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

Re: C#のコンソールアプリケーションとDXLibでノベルゲームを作ってますが

#3

投稿記事 by Hiragi(GKUTH) » 11年前

DxLibには一応C#版が存在します(機械的に中身を変換しているだけのようですが。)
私はまだC#版DxLibを見ていないので分かりませんが、
質問者様がやりたいのはコンソールアプリケーションで、キーボード入力だけDxLibのモノを使いたいという事ではないでしょうか?
(ノベルゲーならば勿論画像の表示や音楽の再生が必要なのでコンソールで出来るとは思いませんが、)
そうでないとしてもキー入力された瞬間だけを判定するソースコードはこちらのサイトのモノからほんの少し変えるだけでいいと思いますが。
だいがくせい!

Bull
記事: 149
登録日時: 11年前

Re: C#のコンソールアプリケーションとDXLibでノベルゲームを作ってますが

#4

投稿記事 by Bull » 11年前

ノベルゲームなら、Console.KeyAvailable と Console.ReadKey() で間にあうような気もしますが、
DxLib 風のキー入力関数って、こういうことでしょうか?

コード:

using System;
using System.Threading;
using System.Runtime.InteropServices;

class prog
{
    [DllImport("user32.dll")]
    public static extern short GetAsyncKeyState(int key);

    static void GetHitKeyStateAll(int[] key)
    {
        for (int i = 0; i < 256; ++i)
        {
            if ((GetAsyncKeyState(i) & 0x8000) != 0)
                key[i] = 1;
            else
                key[i] = 0;
        }
    }

    static void Main(string[] args)
    {
        int[]   key = new int[256];
        do
        {
            GetHitKeyStateAll(key);
            if (key[0x20] == 1)
            {
                Console.WriteLine("スペースキー入力");
                Thread.Sleep(500);
                continue;
            }
            if (key[0x58] == 1)
            {
                Console.WriteLine("X キー入力");
                Thread.Sleep(500);
                continue;
            }
            if (key[0x5A] == 1)
            {
                Console.WriteLine("Z キー入力");
                Thread.Sleep(500);
                continue;
            }

            Thread.Sleep(10);

        } while (key[0x1b] == 0);
    }
}

閉鎖

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