2

これはSOの私の最初の投稿です^_^

QT フレームワークで文字スクランブル ゲームを実装しようとしています。本編は終わったのですが、ゲーム中にボタンが押されるのを待つプログラムの作り方が分からなくてビックリです。

それを手伝ってください。前もって感謝します

これが私のゲームサイクルの疑似コードです:

//initialize grid, score, time

// accept words until timer expires
while (true)    {

    // draw the current state of the grid

    // log board

    // get current time

    // report score

    // check for game's end

    // report time remaining

    // prompt for word and converting it to char*
    //HOW TO WAIT UNTILL BUTTON PRESSED????!!!!

    // check whether to scramble grid

    // or to look for word on grid and in dictionary
}

PS 初めての投稿なので、質問をより正確に作成する方法についての提案をいただければ幸いです。

4

1 に答える 1

3

あなたが見逃しているのは、Qt がイベント駆動型プログラミングに基づいていることです。Qt は、ユーザーに表示するボタン、ウィンドウ、コントローラーなどのウィジェット/オブジェクトを提供します。たとえば、QPushButton オブジェクトは、マウス ボタンのクリックやキーボード キーの押下など、さまざまなイベントを受け取ることができます。

イベントでは、Qt はそれらのイベントを受け取り、それらに反応するためのスロット/シグナル メカニズムを提供します。例として、QPushButton の場合、「押された」という信号があります。ユーザーがボタンをクリックすると、押された信号が送信されます。開発者は、押された信号を、定義した関数であるスロットに接続できます。

たとえば、QObject から派生した MyClass というクラスの場合: -

QPushButton button("Select"); // create a QPushButton object
connect(button, SIGNAL(pressed()), this, SLOT(buttonPressed()));

connect ステートメントは、ボタンの「押された」信号を「buttonPressed」というスロット関数に接続します。次に、その関数を定義します: -

void MyClass::buttonPressed()
{
    // handle the button pressed event....
}

したがって、フレームワークとしてボタンが押されるのを待つ呼び出しは実際にはありません。そのアーキテクチャはこのように設計されており、すべてを while(true) ループに入れる必要はありません。

于 2013-07-25T13:27:38.477 に答える