Ubuntu Touch [QML]用のアプリの作成-[パート3]

UbuntuTouch用のアプリを作成する

この投稿シリーズの第XNUMX部(第一部, 第二部)アプリケーションを構築している場所 Ubuntuのタッチ または同じために Ubuntuの デスクトップ。 前回の投稿で起こった部分を追加します。つまり、失敗、ヒット、ポイントの変数を増やしても、変更しなかったため、画面に表示されませんでした。ラベルのテキストプロパティ:

                ラベル{id:失敗テキスト: "失敗:" + nfaults色: "赤"}ラベル{id:ヒットテキスト: "ヒット:" +生まれ}ラベル{id:ポイントテキスト: "ポイント:" + npoints fontSize: "中"}

ゲームロジックの継続

時間

すでに知っているように、progressBarは質問に答える時間を示しています。 タイマーを使用する時間を管理するために、タイマーはxミリ秒の間隔で繰り返される要素です。この場合、各間隔でProgressBarの進行状況を上げるように指示します。 しかし、それが時間の終わりに達したかどうかを見る前に、それが終わりに達した場合、私たちは人生を差し引く必要があります。

まだ実装していないコード行を見ることができます(PopupUtils.open(ダイアログ))、この行は、ライフがなくなった場合(3つのバグが削除された場合)にエンドゲームダイアログを開くためのものです。この投稿の後半で、このダイアログの実行方法を説明します。

タイマーコード(ProgressBarの下に置くことができます):

       ProgressBar {id:時間anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter minimumValue:0 maximumValue:300}タイマー{id:simpletimer c:100繰り返し:true実行中:true onTriggered:{if(time.value <time.maximumValue)time.value + = 1.0 else {nfaults = nfaults + 1 if(nfaults <3){num = num + 1 Logic.nextQuestion(num)time.value = time.minimumValue} else {simpletimer.stop()PopupUtils.open(ダイアログ)}} }}

ご覧のとおり、onTriggeredに、プログレスバーを1ごとに100ユニット追加するコードを配置します(インターバル)ミリ秒。 ProgressBarにminimumValueとmaximumValueのXNUMXつの属性を追加したことに注意してください。これらは、ご覧のとおり、最大値と最小値です。

タイマーを開始および停止するには:

simpletimer.start()simpletimer.stop()

オプション(50%、フリーズおよび次へ)

まず、オプションを1回だけ使用できるように制御するXNUMXつの変数を作成しましょう。

    property intパーセント:0 property int with:0 property int next:0

50%

ボタン{id:b50 text: "50%" onClicked:{if(percent == 0){varcorrect = aDocument.contents.questions [num] .correcta if(correct == 1){resp2.enabled = falseresp3。 enabled = false} else if(correct == 2){resp1.enabled = false resp4.enabled = false} else if(correct == 3){resp1.enabled = false resp4.enabled = false} else {resp2.enabled = false resp1.enabled = false}パーセント= 1}}

enabled = falseの場合、aDocument.contents.questions [num]で正しい答えが得られるように、ボタンを押せないようにボタンを配置します。正しいものと、ここから正しいものに応じて«we排除»そうでないXNUMXつのボタン。

氷結

                ボタン{id:bCon text: "Freeze" onClicked:{if(with == 0)simpletimer.stop()with = 1}}

これは簡単なものの0つです。simpletimer.stop()でタイマーを停止する必要があります。はい、質問を通過するときにタイマーを再度オンにする(そしてprogressBarをXNUMXに設定する)必要があります。

                 ボタン{id:bNext text: "Next" onClicked:{if(next == 0){num = num + 1 Logic.nextQuestion(num)next = 1}}}

すでに作成した関数を使用して、質問を渡します(nextQuestion)。

対話

ゲームを終了するには、勝った(質問がない)か負けた(3回間違えた)ためにダイアログを使用し、ダイアログを使用するにはモジュールをインポートする必要があります。

Ubuntu.Components.Popups0.1をインポートします

失ったことを知らせるダイアログを作成します。

        コンポーネント{id:ダイアログダイアログ{id:ダイアログタイトル: "ゲームオーバー!" テキスト: "あなたはすべての命を失った:("ボタン{テキスト: "終了" onClicked:Qt.quit()}ボタン{テキスト: "最初からやり直す"色:UbuntuColors.orange onClicked:{num = 0; Logica.nextQuestion(num )npoints = 0 births = 0 PopupUtils.close(ダイアログ)}}}}

0つのボタンがあります。XNUMXつはアプリケーションを閉じるためのボタン(Qt.quit())で、もうXNUMXつはゲームを最初からやり直すためのボタンです。 変数をXNUMXに初期化し、ダイアログを閉じます。

ダイアログを開くには:

PopupUtils.open(ダイアログ)

それを閉じるには:

PopupUtils.close(ダイアログ)

ゲーム終了時の会話を見てみましょう。

Ubuntuのタッチ

勝ったことを示す識別子とテキストを変更することで、まったく同じダイアログを作成できます。

質問集計の設計

私たちがそれを設計するとき GTK、ダイアログを作成しますが、今回はタブで作成します。とにかく、同じ構造になります。

ご覧のとおり、Label、TextAreaを使用して質問を記述し、4TextFieldと4Switchを使用します。 最後に、質問を追加するためのボタン。 コードを見てみましょう:

import QtQuick 2.0 import Ubuntu.Components 0.1 Tab {title:i18n.tr( "+ Questions")Page {id:pageAdd Column {anchors.top:pageAdd.topアンカー.topMargin:50間隔:15幅:parent.width高さ: parent.height-50ラベル{id:質問テキスト: "データベースに質問を追加:" archives.horizo​​ntalCenter:parent.horizo​​ntalCenter fontSize: "large"} TextArea {幅:parent.width-20高さ:units.gu(12 )contentWidth:units.gu(30)contentHeight:units.gu(60)anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter}行{間隔:15アンカー.horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {placeholderText: "Response 1" width:300}スイッチ{チェック済み:false}}行{間隔:15アンカー。horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {プレースホルダーテキスト: "応答2"幅:300}スイッチ{チェック済み:false}}行{間隔:15アンカー.horizo​​ntalCenter:親。 horizo​​ntalCenter TextField {placeholderText: "Response 3" width:300} Switch {checked:false}} Row {spacing:15アンカー.horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {placeholderText: "Response 4" width:300} Switch {チェック済み:false}}ボタン{テキスト: "追加+" anchors.horizo​​ntalCenter:parent.horizo​​ntalCenter width:parent.width-20}}}}
あなたがすでに知っているコードについて疑問がある場合はコメント

それがどのように見えるか見てみましょう:

2014-07-24:16:54からキャプチャ

ここでスイッチをテストすると、それらすべてを正しい質問としてマークできることがわかります。当然、XNUMXつしかマークできないため、次のようにします。各スイッチに(また、あなたの答えに従って、コンテンツを取得してデータベースに保存する必要があるため、テキストフィールド)、それをクリックすると、他のすべてがチェック済み= falseモードになります。

             行{間隔:15アンカー.horizo​​ntalCenter:parent.horizo​​ntalCenter TextField {id:res1 placeholderText: "Response 1" width:300}スイッチ{id:sw1チェック済み:false onClicked:{if(sw1.checked == true){sw2。チェック済み= false sw3.checked = false sw4.checked = false}}}}

今試してみると、XNUMXつしかマークできないことがわかります。


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

4コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   vr_rv

    非常によく説明された記事。
    ちなみに、Ubuntu用のQMLで開発する方法を学ぶために、スペイン語の本、YouTubeチャンネル、またはブログをお勧めしますか。

    1.    ロンビンボ

      ええと、スペイン語では確かにYouTubeや奇妙なブログにいくつかのチュートリアルがありますが、真実はほとんど資料がないということです。

      最後のシンビアンであれば、ノキアを介して接続しているようです。QMLを使用してアプリケーションを作成することもできます。実際、これが私が学んだ方法です。ノキアの開発Webサイトは次のとおりです。 http://developer.nokia.com/ (チュートリアル、完全なプロジェクトがあります...)

  2.   ネスター

    素晴らしい投稿シリーズ、入力ありがとうございます。

  3.   マルティ

    チュートリアルをありがとう、
    しかし、質問と回答がデータベースにどのように追加されるのかわかりません。
    追加ボタン付き。
    いろいろとありがとうございました。